TypeSafe announced Jev on 15 September 2026 as the first of what it calls System One models: models built to make fast, structured decisions that software can use directly, rather than to write text1. That one design choice changes how you call it, how it is billed and which jobs it suits. This guide covers what TypeSafe documents about Jev 1.13, read on 6 October 2026, and how to decide whether a workload belongs on it.
What Jev does, and what it does not
A chat model answers in text. When software needs a decision — which queue, is this urgent, how severe — the usual approach is to ask a chat model for JSON, validate it, and parse it back into values. TypeSafe positions Jev as the alternative: you send content and typed questions, and get back typed values with probability distributions that code can branch on, sort by and route with, with no text to parse2.
The name System One comes from the fast, intuitive mode of thinking Daniel Kahneman described in Thinking, Fast and Slow3. Jev itself is named after the economist William Stanley Jevons: TypeSafe expects that each fall in the cost of a decision will raise demand for decisions, as more efficient steam engines once raised demand for coal1. TypeSafe says Jev is trained with a method it calls reinforcement learning for calibrated decisions (RLCD), and that the same weights serve every account, with no fine-tuning on customer data4. Beyond describing a new architecture and a parallel sampler, TypeSafe publishes no architecture details1, so this article makes no claims about them.
What Jev is not for is stated just as clearly. System One models do not write replies, produce code or generate explanations3. For anything a person will read as prose, TypeSafe's own advice is to use a generative model5.
One state, many typed questions
Every call goes to one endpoint, POST https://api.typesafe.ai/v1/systemone, with a bearer key6. The body has three fields:
state— the content to judge: a string, a JSON object or an array.model— the model name, such as the aliasjev-latestor the pinnedjev-1.13.0.questions— a map of ids you choose to typed questions. The ids are not sent to the model; each answer comes back under its question's id.
you send
stateThe content to judge: a string, a JSON object or an array of text values. Jev reads it once for every question in the request.you send
questionsA map of ids you choose to typed questions: noul (yes/no), choice (one of up to 255 options) or score (a rubric of up to 10 levels).Jev returns
answersOne typed answer per id: a probability, a chosen option with every option's probability, or a weighted score. Choice and score carry a confidence.you decide
Your codeThresholds, branching, arithmetic and anything with consequences stay in code, where they can be tested and changed.
Jev ingests the state once and evaluates every question against it in parallel4, so one request can carry many judgments about the same content. Most of the cost arithmetic in the companion cost article depends on that property.
{
"model": "jev-1.13.0",
"state": {
"ticket": "Help! My payouts have been failing for 3 days and payroll runs on Friday.",
"plan": "business"
},
"questions": {
"team": {
"type": "choice",
"instructions": "Which team should handle `ticket`?",
"criteria": {
"billing": "Payments, invoicing, refunds",
"technical": "Bugs, outages, integrations",
"sales": "Pricing, upgrades, new accounts",
"other": "A request that fits none of the above"
}
},
"urgent": { "type": "noul", "instructions": "Is `ticket` explicitly time-sensitive?" },
"refund": { "type": "noul", "instructions": "Does `ticket` ask for a refund?" },
"frustration": {
"type": "score",
"instructions": "How frustrated is the customer in `ticket`?",
"criteria": ["Calm", "Frustrated", "Very angry"]
}
}
}Backticks point a question at a field of the state. TypeSafe recommends an object state for exactly this reason, and recommends filtering out content the questions do not need before the call7.
Noul, Choice and Score
| docs.typesafe.ai, 2026-10-06 | Noul | Choice | Score |
|---|---|---|---|
| Asks | A yes/no question, or whether a statement is true | Which one of your options applies | Where the state sits on your ordered rubric |
| You define | instructions; optional criteria for true and false | instructions; criteria: option to description, up to 255 | instructions; criteria: ordered levels, up to 10 |
| Returns | noul: probability of yes, 0 to 1 | choice, plus probabilities that sum to 1 | score (weighted mean of levels), legend, probabilities |
| Confidence field | ○derive from the probability | ●Yes | ●Yes |
| Typical use | Detection: urgency, jailbreak, clause present | Classification and routing: team, intent, model tier | Severity, relevance, quality, frustration |
- Noul is a yes/no question, or a statement to judge. The answer,
noul, is the probability that the answer is yes: near 0 for no, near 1 for yes, near 0.5 for uncertain. Optionalcriteriadescribe what counts as true and what counts as false6. - Choice picks one of the options you define in
criteria, up to 255 of them. The answer carries the winningchoice, the probability of every option (they sum to 1) and aconfidence6. - Score places the state on an ordered rubric of up to 10 levels. The
scoreis the probability-weighted mean of the level numbers, so it can fall between levels; the answer also carries alegend, the per-level probabilities and aconfidence6.
Two pieces of TypeSafe's guidance shape good questions. Score levels should describe situations, not degrees: "broken feature, workaround exists" gives the model something to match, "moderately severe" does not8. And a Choice should include an other or "none of the above" option whenever the list might not cover every input, so content that fits nothing is not forced into the nearest category9.
Probabilities and confidence are what you act on
The answer says what; the distribution says whether to act on it. TypeSafe computes confidence for Choice and Score from how the probability is spread: all of it on one option gives 1.0, an even spread gives 0. For a Noul it suggests |2p − 1|, so a probability of 0.5 has no confidence and 0 or 1 has full confidence10. Because every answer carries its full probabilities, you can compute a different measure if your application needs one10.
TypeSafe's calibration claim is specific: across many predictions from a well-calibrated model, stated probabilities match observed rates, and those rates describe groups of predictions, not a guarantee about any single answer11. In practice a threshold is a policy you set, test and tune per decision. TypeSafe's voice-banking example sends anything below 0.6 confidence to a person, and requires more than 0.85 before a money transfer goes ahead without asking the user to confirm12. A label that only changes a queue can run at a lower threshold than one that moves money.
Limits, versions and pinning
Input rate
$0.042
per million input tokens, jev-1.13.0
Output
$0
output tokens are not charged
Context
64k
tokens per request; 32k for state plus the longest question
Rate limits
80 req/s
and 100K tokens/s; TypeSafe says they change without notice
The current model is Jev 1.13, id jev-1.13.0. A request may hold 64k tokens across the state and all questions, and the state plus the single longest question must fit in 32k. Rate limits are 100K tokens and 80 requests per second, with a warning that they are being adjusted without notice while TypeSafe adds capacity; higher limits come with custom and enterprise plans4. Input is text only, and English is where accuracy is currently best; other languages, including CJK scripts, work less well4.
Two aliases exist. jev-latest points to the most recent stable release and is the default in TypeSafe's SDKs; jev-preview points to the newest release, official or not, and currently resolves to the same model4. Each response's model field reports the versioned id that answered. TypeSafe's advice is direct: once you have tuned confidence thresholds against a version, pin that version's id and move to the next on your own schedule4. A threshold tuned on one version is not guaranteed to mean the same thing on the next.
How Jev is billed
TypeSafe charges per input token, $0.042 per million for jev-1.13.0 ($42 per billion), and does not charge for output tokens4. The API reference's own examples show what a small request reports: one short sentence of state and one question come to about 300 input tokens6. So each request carries a fixed overhead, which makes many tiny requests relatively expensive and rewards putting several questions about the same content into one call.
TypeSafe's homepage compares Jev with frontier LLMs on its own workflow evaluations and reports large multiples in speed and cost; it also says those multiples are probably the high end of real gains13. Treat them as the vendor's claim. The cost article works the arithmetic against chat models at their list rates, including where the gap is small.
Where Jev 1.13 is weak
TypeSafe publishes a list of Jev 1.13's known failure modes, last reviewed on 2 October 20265. It is worth reading before any design review:
- Literal reading. It answers the question as written, not as meant. State the exact condition and put boundary cases in the criteria.
- Numbers, counting and dates. It is not a calculator and does not count reliably. Extract values with a question and compute in code.
- Indirection. Several hops of reasoning cost accuracy. Point the question at the relevant field instead.
- Large, irrelevant state. Accuracy falls as unrelated content grows. Filter before the call.
- Adversarial content. Text written to steer the answer can move it. Test with hostile inputs before deploying widely.
- Choice option order. Jev 1.13 leans toward the first option listed. Reorder the options and check that answers hold.
The list doubles as the design rules for any Jev integration: atomic questions, filtered state, arithmetic in code, and a test set with hostile inputs in it.
Jev or a chat model with structured outputs?
Chat models with structured outputs can return the same labels, so the decision is less about capability than about the shape of the work.
Will code consume the answer as a value from a set you can write down?
- Yes, and the judgment is a quick read of the contentA System One model such as Jev fits
- Yes, but it needs arithmetic, dates or countingExtract with the model, compute in code
- It needs several hops of reasoning or planningA reasoning LLM, or split into atomic questions
- No: a person reads the output as textA generative LLM
Jev fits when code consumes the answer as a value from a set you can write down, the judgment is a quick read of the content, and the volume is high enough for per-call cost and latency to matter. A generative or reasoning model fits when a person reads the answer as text, or when the decision needs planning, multi-step reasoning or arithmetic that cannot move into code. Many systems end up with both: Jev for the many small judgments, a larger LLM for the few that need it. The use-case guide and the cost article both come back to that cascade.
Evaluating Jev on your own decisions
TypeSafe deliberately publishes no public benchmark scores and tells users to evaluate on their own work14. Its one public comparison is a set of four workflow evaluations that score every model against the average answers of GPT-6 Astra and Claude Fable 5.1 at high thinking. TypeSafe states that its own team built the workflows and that the reference favours those two vendors' models15. On that harness it reports Jev matching the reference 67.8% of the time on average, at $0.0004 and 0.4 seconds per case; on the same chart, Claude Sonnet 5 run as a workflow also scores 67.8%, at $0.1174 and 78.1 seconds per case15. That is a useful prior about where Jev sits, not an answer for your workload.
A practical evaluation uses a few hundred decisions you already know the outcome of:
- Build the labelled set from past tickets, moderated posts or reviewed claims, and keep the hard cases in it.
- Write atomic questions and run them over the set with a pinned version.
- Plot accuracy against confidence. The useful result is not one accuracy figure but the threshold above which Jev is right often enough to act on alone.
- Price the remainder. Whatever falls below the threshold goes to a person or a larger model. Cost per successful task is the number that compares one design with another.
Running Jev through INFRO
TypeSafe is one of the provider kinds INFRO added in September 2026. The gateway implements TypeSafe's endpoint at the same path, POST /v1/systemone, with the same request body, and forwards each request to TypeSafe over the customer's own TypeSafe connection, so TypeSafe bills the customer's account directly. TypeSafe connections are available in production: Jev through INFRO shows the setup, and the System One reference the request, the response and the errors.
With a TypeSafe connection in place, the request above goes to https://api.infro.io/v1/systemone with an INFRO gateway key, and model names the catalog id typesafe/jev-1.13, which INFRO sends to TypeSafe as jev-1.13.0: a pinned version, as TypeSafe advises. TypeSafe's SDKs send jev-latest by default, which INFRO passes to TypeSafe as typed; each response names the version that answered, and pinning a version remains TypeSafe's advice. Pointing an SDK at INFRO takes two environment variables: TYPESAFE_BASE_URL=https://api.infro.io, and TYPESAFE_API_KEY set to an INFRO gateway key.
curl https://api.infro.io/v1/systemone \
-H "Authorization: Bearer $INFRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "typesafe/jev-1.13",
"state": "Help! My payouts have been failing for 3 days.",
"questions": {
"urgent": { "type": "noul", "instructions": "Is this explicitly time-sensitive?" }
},
"metadata": { "workflow": "support-triage" }
}'Before the call, the gateway checks the request against the key's scope and any spend limit, using the request's size in bytes as an upper bound on its input tokens, since output is free. The response returns TypeSafe's answers unchanged, with usage.input_tokens, usage.cost — the estimated TypeSafe charge at the catalog rate, or at a rate you have entered for your organization — and the route and connection that served it. The metadata stays in INFRO: it is not forwarded to TypeSafe, and it lets Jev decisions be grouped by workflow in usage and traces, next to the rest of the organization's AI traffic.
