Jev and System One models: a plain guide / How it works
Calibrated probabilities and confidence, explained
A calibrated probability is one you can read as a frequency: when the model says 0.8, it should be right 8 times in 10 across many such answers. TypeSafe trains Jev for this with a method it calls Reinforcement Learning for Calibrated Decisions. Confidence is a separate number, for Choice and Score only, computed from how spread out the probabilities are. TypeSafe suggests acting automatically at 0.9 and above and routing to a person below 0.5, and says different actions in the same system should be gated at different levels depending on the consequences.
Published September 22, 2026. Editorial.
Key takeaways
- Calibration means the probability is a frequency you can plan around: across all the answers where the model said 0.8, 8 in 10 should be right.
- Confidence is computed from the spread of the probabilities. For three options TypeSafe gives the formula (3 x largest probability - 1) / 2, so a top probability of 0.9 gives confidence 0.85 and 0.5 gives 0.25.
- TypeSafe's bands are 0.9 and above to act automatically, below 0.5 to route to a person or fall back, and the middle to proceed with caution.
- Noul returns no confidence number because one probability over two outcomes already says how sure the model is.
- Set a stricter threshold for any action that is expensive to undo. Reveneau fails a change below one value and sends the band above it to a person.
The number that comes back with every Jev answer is worth more than the answer. An answer tells you what the model thinks. The probability tells you how much to trust it, and if the probability is calibrated, it tells you that in a form you can plan around. This page explains what calibration means, how TypeSafe's confidence number is computed, what the docs recommend for thresholds, and how we set ours.
What calibrated means
A probability is calibrated when it matches the frequency of being right. Take every answer where the model said 0.8. If the model is calibrated, 8 in 10 of those answers are correct. Take every answer where it said 0.55, and 55 in 100 are correct. The number is a promise about frequency, and it holds across many answers rather than for any single one.
That is different from a probability that is merely ordered. An ordered probability tells you that a 0.8 is more likely right than a 0.6, without telling you how often either is right. Ordering is enough to rank cases. Calibration is what you need to set a threshold, because a threshold is a decision about how many mistakes you will accept, and only a calibrated number lets you compute that.
TypeSafe says it trains Jev for calibration with a method it names Reinforcement Learning for Calibrated Decisions, or RLCD [1]. It has not disclosed the architecture, as MarkTechPost reported on 19 September 2026 [2], so what a team can verify is the output: whether the probabilities on its own data behave as frequencies. We say how to check that below.
What confidence is, and how it is computed
Confidence is a second number, separate from the probabilities, that TypeSafe returns for Choice and Score questions. The docs describe it as "a single number from 0 to 1" computed from how spread out the probabilities are [3]. If one option holds almost all of the probability, confidence is high. If the probability is shared across several options, confidence is low.
For three options the docs give the formula (3 x largest probability - 1) / 2 [3]. Work through it. If the largest probability is 0.9, confidence is (2.7 - 1) / 2, which is 0.85. If the largest is 0.5, confidence is (1.5 - 1) / 2, which is 0.25. If the largest is 0.34, which is barely above an even split across three options, confidence is (1.02 - 1) / 2, which is 0.01. The formula maps "no better than a guess" to 0 and "certain" to 1, and the shape generalises to other option counts.
The Score example in the docs shows what a middling confidence looks like. Probabilities of 0.0, 0.57 and 0.43 across three levels give a score of 1.43 and a confidence of 0.35 [4]. The model is sure the text is above level 0 and split between levels 1 and 2, and the confidence number reports that split as a single figure.
Why Noul has no confidence number
A Noul question returns one probability from 0 to 1 and no confidence number [5]. The reason is arithmetic. With two outcomes, the probability is the spread. A 0.95 is concentrated on yes, a 0.05 on no, and a 0.5 is the even split. Adding a confidence number would repeat what the probability already says.
So for Noul, the threshold goes on the probability directly. For Choice and Score, you have a choice of what to threshold: the probability of the chosen option, or the confidence number. In most cases they move together. The difference shows up when the second-best option is close to the best, which is exactly the situation confidence is designed to flag.
TypeSafe's recommended bands
The confidence docs give three bands. At 0.9 and above, "Act automatically". Below 0.5, "Route to a human, request clarification, or fall back to a different system". In between, "Proceed with caution" [3]. Those are starting points rather than rules, and the same page adds the line that matters most: "Different actions within the same system should be gated at different levels depending on the consequences" [3].
That line is the whole discipline of using a decision model. The band belongs to the action. A 0.8 is the same 0.8 whether the action is adding a tag to a ticket or issuing a refund, and the two should be gated differently because a wrong tag costs a click to fix and a wrong refund costs money. TypeSafe's guardrails cookbook shows a worked policy: on a 0 to 3 severity score, review at 0.35 and act at 0.70 under a strict policy or 0.85 under a permissive one, with the route precedence support, block, review, pass [6]. The two policies differ only in where the action threshold sits, and that is a product decision about how many false blocks the team will accept.
How to set a threshold for each consequence
We use a three-step method, and it works for any decision model that returns calibrated probabilities.
First, name the two mistakes. Every yes/no decision can be wrong in two directions: acting when you should not, and holding back when you should have acted. Write down what each costs in your product. For a spam filter, a false block hides a real message and a false pass shows a spam one. For an eval grader, a false pass releases a broken change and a false fail delays a good one.
Second, price the two mistakes against each other. If a false pass costs ten times what a false fail costs, you want a threshold that produces at most one false pass per ten false fails. That ratio, applied to calibrated probabilities on a labelled sample, gives you a threshold rather than a feeling. It is the same reasoning behind how to decide if a feature needs a human in the loop.
Third, set two thresholds rather than one. Above the upper threshold, act. Below the lower one, take the safe default. Between them, send the case to a person and keep that person's label. The middle band is where the model has told you it is unsure, and it is the cheapest labelled data you will ever collect, because the model has already sorted out the easy cases.
This is what Reveneau does in its eval suite. Checks with a deterministic answer never touch a model. For the checks that used to need a language model judge, each is a Noul or Score question to Jev with the rubric written into the criteria. A grade below the threshold fails the change. A grade in the uncertain band goes to a person, and that person's label is kept so we can re-check the grader later. On our own suite the run is ten times faster than it was with the previous grader. How Reveneau uses Jev has the detail, and evals with Jev turns it into a how-to.
How to check calibration on your own data
Calibration is a claim you can test, and you should, because the claim is TypeSafe's and the data is yours. Take a labelled sample of a few hundred cases. Send each through the question you plan to use. Sort the answers into bins by probability: 0.5 to 0.6, 0.6 to 0.7, and so on. For each bin, count how many were correct. If the 0.8 to 0.9 bin is right 85 percent of the time, the model is calibrated there. If it is right 60 percent of the time, it is overconfident on your data, and your threshold has to move up to compensate.
Two things make this test more useful. Run it per question, because calibration on one question says nothing about another. And re-run it when you change the question text or when TypeSafe releases a new model version, because either can move the curve. The current version is jev-1.13.0 and the jev-latest alias tracks whatever is newest [7], so a team that uses the alias should expect the curve to move without warning and should pin a version for anything with a tight threshold.
Two limits from TypeSafe's own jaggedness page bear on this. Score levels "are weak in numerical calibration", so a Score's between-level value is less reliable than its ordering [8]. And "Accuracy falls as the state grows with content unrelated to the decision" [8], which means a question that is calibrated on short, clean states may be less so on long, noisy ones. Test on the states you will actually send.
What confidence cannot tell you
A confidence number reports how concentrated the model's belief is, and the question itself can still be the wrong question. If you ask "Is this message spam?" and the model returns 0.96 for yes, that is a confident answer to a question TypeSafe itself names as too broad [9]. Confident and correct are different properties, and DataCamp's report of TypeSafe's own evaluation shows the gap: 0 percent structured-output errors and 67.8 percent agreement with the reference answer on the same workflows [10]. Every one of the wrong answers had a well-formed probability attached to it.
Nor does confidence protect against hostile input. TypeSafe documents that adversarial content in the state "can move the answer" [8]. A message written to look like a legitimate request will get a confident answer that it is one. Confidence gating reduces the damage from the model's uncertainty, and a separate check on the input is what catches certainty that was manufactured; where Jev is weak covers it.
The one rule to keep
Gate every action on its own consequences. The probabilities are the model's, and the thresholds are yours. A team that sets one threshold for everything has decided that a wrong tag and a wrong refund cost the same, and no team believes that once it is written down. The pillar page, Jev and System One models, puts this in context, and Jev in production covers what happens to thresholds once the system is live.
Best for
- Any action whose cost of being wrong you can write down, because that cost sets the threshold
- Pipelines where the uncertain middle band can go to a person and that person's label is kept
- Teams willing to test calibration on a labelled sample per question before trusting it
Avoid if
- Do not use one threshold for every action in a system, since a wrong tag and a wrong refund cost different amounts
- Do not read a high confidence as proof the question was the right one
- Do not rely on the jev-latest alias for a decision with a tight threshold, because a new version can move the curve
Check before you decide
- Confirm calibration per question on a few hundred labelled cases, binned by probability
- Confirm the cost of a false pass and a false fail for each action, and derive the threshold from their ratio
- Confirm the middle band goes to a person and that the labels are stored for re-checking
Common questions
What does calibrated mean for a probability?
A calibrated probability matches the frequency of being right. Across every answer where the model said 0.8, 8 in 10 should be correct; where it said 0.55, 55 in 100. That is stronger than an ordered probability, which only says a 0.8 is more likely right than a 0.6. Calibration is what lets you turn a threshold into a planned error rate rather than a feeling, and it is a claim you can test on your own labelled data.
How does TypeSafe train Jev to be calibrated?
TypeSafe names the method Reinforcement Learning for Calibrated Decisions, or RLCD, in its 15 September 2026 launch post, and has not disclosed the architecture behind it, as MarkTechPost reported on 19 September. Because the method is the vendor's and the architecture is private, the thing a team can verify is the output: bin a few hundred labelled answers by probability and count how many in each bin are correct.
How is the confidence number computed?
From how spread out the probabilities are across the options. For three options TypeSafe gives the formula (3 x largest probability - 1) / 2. A top probability of 0.9 gives confidence 0.85; 0.5 gives 0.25; 0.34, which is barely above an even split, gives 0.01. The formula maps a guess to 0 and certainty to 1. It is returned for Choice and Score questions only.
Why does Noul return no confidence number?
Because with two outcomes the single probability already describes the spread. A Noul of 0.95 is a confident yes, 0.05 a confident no, and 0.5 an even split, so a second number would repeat the first. TypeSafe's Noul documentation states that no separate confidence is returned. For Noul, put the threshold on the probability directly; for Choice and Score, threshold either the top probability or the confidence number.
What thresholds does TypeSafe recommend?
Three bands on the confidence docs: at 0.9 and above, act automatically; below 0.5, route to a person, request clarification, or fall back to a different system; in between, proceed with caution. TypeSafe adds that different actions within the same system should be gated at different levels depending on the consequences, which means the bands are starting points and each action needs its own.
How should a team set a threshold for a specific action?
Name the two mistakes, acting wrongly and holding back wrongly, and write down what each costs. Price them against each other: if a false pass costs ten times a false fail, choose a threshold on a labelled sample that yields at most one false pass per ten false fails. Then set two thresholds: act above the upper one, take the safe default below the lower one, and send the middle band to a person.
What does TypeSafe's guardrails example look like?
The cookbook screens a message in one request with questions such as jailbreak, harmful request, medical advice and self-harm plus a 0 to 3 severity score. Two policies share a review threshold of 0.35 and differ in the action threshold: 0.70 under the strict policy and 0.85 under the permissive one. Routes take precedence in the order support, block, review, pass. The gap between 0.70 and 0.85 is a product decision about false blocks.
How do you check calibration on your own data?
Send a few hundred labelled cases through the exact question you plan to use. Sort the answers into bins by probability, such as 0.6 to 0.7 and 0.7 to 0.8, and count the correct ones in each bin. If the 0.8 to 0.9 bin is right 85 percent of the time the model is calibrated there; if 60 percent, it is overconfident and the threshold must move up. Repeat per question and after any model version change.
Does a high confidence mean the answer is right?
No. Confidence reports how concentrated the model's belief is, and a wrong belief can be concentrated. DataCamp reports TypeSafe's own evaluation at 0 percent structured-output errors and 67.8 percent agreement with the reference, so every wrong answer came with a well-formed probability. TypeSafe also documents that adversarial text in the state can move the answer, so a confident answer to a manipulated input is still a manipulated answer.
Should a team use the jev-latest alias?
Not for a decision with a tight threshold. The alias tracks the newest model, currently jev-1.13.0, and a new version can shift the calibration curve without any change on your side. Pin a version for any action where the threshold was set from labelled data, re-run the calibration check when you move to a new version, and use the alias only where you are willing to re-check thresholds after every release.
Why keep the labels from the uncertain band?
Because the middle band is where the model has said it is unsure, so a person's label there is the most informative data you can collect for re-checking the grader. Reveneau fails a change below the threshold, sends the uncertain band to a person, and keeps that label. Over time the stored labels show whether the question text needs rewriting, whether the threshold has drifted, and whether a new model version changed the curve.
Where does calibration fail on Jev?
TypeSafe's jaggedness page for jev-1.13 names two places. Score levels are weak in numerical calibration, so the ordering of two scores is reliable and the exact distance between them is less so. And accuracy falls as the state grows with unrelated content, so a question calibrated on short, clean inputs may be less calibrated on long, noisy ones. Test calibration on the states you will actually send, at the lengths you will actually send them.
References
- [1] TypeSafe AI, Introducing System One models and Jev (15 September 2026): training method named as Reinforcement Learning for Calibrated Decisions (RLCD).
- [2] MarkTechPost, TypeSafe AI releases Jev (19 September 2026): TypeSafe has not disclosed the architecture.
- [3] TypeSafe docs, Confidence: "a single number from 0 to 1" computed from the spread of probabilities; for three options (3 x largest probability - 1) / 2; 0.9 and above "Act automatically", below 0.5 "Route to a human, request clarification, or fall back to a different system", the middle "Proceed with caution"; "Different actions within the same system should be gated at different levels depending on the consequences."
- [4] TypeSafe docs, Score primitive: example score 1.43, confidence 0.35, probabilities {0: 0.0, 1: 0.57, 2: 0.43}.
- [5] TypeSafe docs, Noul primitive: one probability from 0 to 1; no separate confidence number.
- [6] TypeSafe docs, LLM guardrails cookbook: 0 to 3 severity score; review threshold 0.35; action threshold 0.70 (strict) or 0.85 (permissive); route precedence support, block, review, pass.
- [7] TypeSafe docs, Models: current model jev-1.13.0; aliases jev-latest and jev-preview point to it.
- [8] TypeSafe docs, Model jaggedness for jev-1.13: Score levels "are weak in numerical calibration"; "Accuracy falls as the state grows with content unrelated to the decision"; adversarial content "can move the answer".
- [9] TypeSafe docs, How to build with System One: "Is this spam?" named as a broad-question anti-pattern.
- [10] DataCamp, Jev: TypeSafe's System One model explained: 0% structured-output errors and 67.8% agreement with the reference answer for Jev on TypeSafe's own workflow evaluation.
Related reading
How to decide if a feature needs a human in the loop
Most teams answer this based on how they feel, then discover the rule in an incident review. Four questions decide it properly, and only one of them is about accuracy.
What to do with a grader that gives no reason
A Jev grade is a probability with no paragraph. That is enough for a check you wrote and calibrated yourself, and wrong for a new kind of failure, a design judgment, or anything a regulator wants explained in words.
AI evaluation and guardrails for production: how to know your AI actually works
"It seems to work" is not a production standard. Here is how we turn that feeling into a number, and how we stop the system from doing damage on the days the number is bad.
What a decision model changes about agent safety
A safety check that answers in under half a second and costs a fraction of a cent can run on every message and every tool call. Here is what that changes for an agent in front of real users, and the one thing it does not change.
More in How it works
What Jev returns: Choice, Score and Noul
Jev answers three kinds of question. Choice picks one option from a list of up to 255 and returns a probability per option plus a confidence number. Score places the text on an ordered scale of 2 to 10 levels you describe in words and returns a probability-weighted value that can land between levels. Noul is a yes/no statement that returns a single probability from 0 to 1 with no separate confidence number. Each maps to a structure your code already has: a switch, a threshold, an if.
How to write the state and the questions
A Jev request has two parts: the state, which is the text the model reads, and the questions, which are what you ask about it. The state can be a string, a JSON object, or an array of text values, text only, up to 32k tokens inside a 64k-token request. The questions should each ask one thing, in one clause, with no negation, because TypeSafe documents that Jev answers the question you wrote rather than the one you meant. This page is the practical guide to both.
Many questions in one call: speculative fan-out
Every question in a Jev request is evaluated in parallel, and TypeSafe's docs state that adding questions barely changes the response time. Its batching cookbook measured 13 questions against the Wikipedia GDPR article on jev-1.12: one batched request cost $0.000497 and took 0.27 seconds, while 13 single requests cost $0.006090 and took 2.71 seconds. TypeSafe reports that as 12.2 times cheaper and 10.0 times faster, and says the answers did not depend on what else was in the request. This page explains the pattern, called speculative fan-out, and when it wastes tokens.