Jev, in plain terms
Jev is a System One model from TypeSafe AI. You send it the state of your application plus typed questions, and it answers each question with a decision and a calibrated probability, in a few hundred milliseconds, without generating a single word of text.
Not a chat model
A language model writes an answer token by token, and you parse the prose afterwards. Jev skips the writing. You define every possible output up front, and it returns one of those outputs together with how sure it is. That single difference explains most of its properties.
| Typical LLM call | Jev | |
|---|---|---|
| Output | Free text you must parse | Typed values matching your question |
| Latency | Seconds | 70 to 500 ms per request |
| Price | Input and output tokens | $0.042 per million input tokens, output free |
| Hallucination | Possible, needs validation | Impossible by construction: it can only pick from your options |
| Uncertainty | Hidden in the wording | A probability on every answer |
What it gives up is prose. Jev cannot explain, summarize, or write. It decides, classifies, routes, and scores. TypeSafe calls this class of model System One, after the fast, intuitive mode of thinking.
State: what Jev looks at
Every request carries a state: the thing to evaluate. It can be a plain string, a JSON object with named fields, or an array of text values such as a chat transcript. Jev is text-only. Images, audio, and video are not supported, so a perception step has to turn them into text first.
"state": { "message": "My card was charged twice", "order_id": "A-104" }
Questions: the three primitives
Alongside the state you send one or more named questions. Each has a type, a line of instructions, and, for two of the types, criteria that define the allowed answers. Jev answers all of them in one pass.
noul: a yes or no question
Returns the probability that the answer is yes, from 0 to 1.
"is_urgent": { "type": "noul", "instructions": "Does this convey urgency?" }
→ { "type": "noul", "noul": 0.95 }
choice: pick one option
You give a map of option keys to descriptions, up to 255 of them. Jev returns the winning key, a probability for every option, and a confidence score.
"department": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": { "returns": "Exchanges, wrong or damaged items",
"billing": "Charges, invoices, payment problems" }
}
→ { "type": "choice", "choice": "returns", "confidence": 0.98,
"probabilities": { "returns": 0.99, "billing": 0.01 } }
score: position on an ordered scale
You give 2 to 10 level descriptions, lowest first. Jev returns a position on that scale as a decimal, the probability of each level, and a confidence score. A score of 1.43 means "mostly level 1, leaning toward 2".
"severity": {
"type": "score",
"instructions": "How severe is the reported issue?",
"criteria": [ "Cosmetic", "Degraded, workaround exists", "Blocking" ]
}
→ { "type": "score", "score": 1.43, "confidence": 0.35,
"probabilities": { "0": 0.0, "1": 0.57, "2": 0.43 } }
Confidence and calibration
Every answer comes with a probability distribution, and choice and score answers add a confidence from 0 to 1 that reflects how concentrated that distribution is. A confidence of 0.98 means one option dominates. A confidence of 0.35 means Jev is torn.
The point of calibration is that these numbers are meant to be trusted literally. When Jev says 0.7, it should be right about seven times in ten. That is what lets you write code such as "auto-approve above 0.9, send to a human below 0.6". TypeSafe describes the training as reinforcement learning aimed at calibrated decisions rather than at fluent text.
Where it fits
- Routing and triage. Which team, which queue, which model, which workflow branch.
- Guardrails. Check an LLM's draft before it ships: is this on topic, is it safe, does it answer the question.
- Scoring at scale. Sentiment, urgency, quality, and risk over millions of records, at a price where you can afford to score everything.
- Confidence-gated automation. Act automatically when confidence is high, escalate when it is low.
- Real-time loops. Games, robots, and agents that need a decision every few hundred milliseconds.
How this site calls it
The examples here go through OpenRouter's Decisions API, which hosts Jev under the id typesafe/jev-1.13. The API key stays on this site's server. Every run shows a panel with the time and cost of each step, so you can see what a decision actually costs: a typical request is a few hundred tokens, which is a few thousandths of a cent.
Jev was released on 15 September 2026. An open-weights alternative called Laya, from Convai Innovations, answers the same three question types and can be self-hosted.