← Playbook

Calibration, not accuracy, decides what you can hand to a machine.

TypeSafe's Jev puts a confidence number on every decision it makes, and the argument about whether that number can be trusted is the most useful AI argument of the month. A model that says how sure it is turns adoption from "is it good enough?" into two questions a manager can actually own: where does the line go, and who works the queue below it.

2026-09-24/11 min read/Levelbrook AI Practice

White tiles flowing toward a tall orange gauge with a horizontal bar; some pass through a gate, the rest drop into a tray under a lamp.

The sentence worth stealing from a launch post

Most launch posts are forgettable by Friday. The one TypeSafe AI published on 15 September has a sentence in it that will outlive the product, whatever happens to the product.

TypeSafe’s pitch for Jev, which it calls the first “System One Model”, is that it does not write text. You give it some state and a question with the possible answers defined in advance, and it returns a typed decision with a probability attached to every option, in well under a second, for a price the company describes as too cheap to meter. It says the model was trained with a method it calls Reinforcement Learning for Calibrated Decisions (RLCD), and that the probabilities are calibrated: higher confidence means higher accuracy. The sentence is in the comparison table, under “Confidence”: if a model can do a task 95% of the time but doesn’t say when it’s in the 5%, it can’t automate that task.

That is correct, and it is the most useful thing anyone selling a model has said this year. The launch thread on Hacker News went to nearly two thousand points, much of it scepticism about the speed numbers and the Doom demo. The argument that matters to a manager started a week later, when Alex Molas published “Jev can’t be calibrated”. Both sides are right, and the combination tells you exactly how to adopt this kind of model.

What calibration actually promises

A model is calibrated when its numbers mean what they say. Gather every case where it reported 0.8 and roughly 80% of them should turn out correct. Gather the 0.95s and roughly 95% should be correct. Accuracy describes the whole pile; calibration is a promise about every slice.

This sounds academic until you try to automate something. A model that is 95% accurate with no usable confidence gives you two options: check everything, which saves nothing, or check nothing, which ships the 5% straight to your customers, your ledger or your regulator. A model that is 90% accurate but calibrated gives you a third option. You pick a number, let everything above it through, and send everything below it to a person. You get to choose how much you automate and how many mistakes you accept, and the model tells you, case by case, which pile each item belongs in.

A calibrated score turns “is the model good enough?” into “where do we put the line, and who owns the queue under it?” The first question has no answer; every model is good enough for something and not good enough for something else. The second pair of questions has answers, they are business decisions, and they belong to the person who owns the process.

The gate. A calibrated score splits the work into an automated lane and a human queue; outcomes from the queue keep the score honest. Percentages are **illustrative** and come from the worked example below.
The gate. A calibrated score splits the work into an automated lane and a human queue; outcomes from the queue keep the score honest. Percentages are illustrative and come from the worked example below.

Molas’s objection, and why it is right

Molas does not argue that Jev is useless; he calls it a universal classifier you can point at a problem without collecting training data first. His point is narrower. Calibration is a property of a model and a data distribution together. Two companies can define spam identically and still see different mixes of email. Jev gives both of them the same probability for the same input and prompt, so at most one of them can be getting calibrated numbers. Even if RLCD calibrated the model beautifully on TypeSafe’s own training and evaluation data, that says little about yours.

A commenter in the thread made the same argument with pull requests. Ask “will this PR be merged?” and two projects with different standards, and different base rates of acceptance, need different answers for the same PR. No single number can be calibrated for both. The same commenter reported feeding the model irrelevant state and asking about sporting results, and getting probabilities that were close neither to the obvious no-information answer nor to 0.5.

Then there were the dice. Another commenter asked Jev, 400 times, which face a fair die would show, without giving it the result. It picked face one every time and reported roughly 83% confidence, against a true 1 in 6; a fair coin got 0.92. Molas cites a similar coin test in his post. There is a reasonable reply in the thread (the model may be reporting its confidence that “1” is the best answer to give rather than the chance of the event), and TypeSafe’s own documentation, as quoted there, promises the second meaning: outcomes assigned 0.2 should occur about 20% of the time. The dice test fails that promise, and it fails it on a question where the true answer was sitting in the prompt.

The JevBench thread supplied the adversarial version. A commenter keysmashed into a demo AI-slop detector built on Jev and got 86% confidence that the gibberish was AI-written; another fed it essays written to fool detectors and got a confident pass. Confident and wrong on inputs an adversary controls is the failure that matters for fraud and abuse.

And why it does not matter as much as the title suggests

Read to the end of Molas’s post and the title softens. His recommendation is to treat Jev’s outputs as good scores, meaning they rank cases well, and to recalibrate them on your own data before you rely on the actual number. He adds that this is cheap: a few hundred labelled examples from your real traffic can be enough to fit Platt scaling on top. A commenter pointed out that the post therefore says Jev can be calibrated, just not out of the box, and Molas agreed: the claim he disputes is calibration for everyone, by default.

That is the whole adoption story in one exchange. Nobody who has run a classifier in production expected a universal model to arrive calibrated on their invoices. A cheap, fast model with a decent ranking is something you can calibrate in an afternoon, which is more than you can say for a chat model asked to rate its confidence from 1 to 10. Another commenter noted that labelled data also lets you use conformal methods to pick thresholds that hit a stated error rate directly, which is often what an operator actually wants.

So the honest position is this. “Calibrated on their eval” means the vendor’s numbers were meaningful on the vendor’s data. For your data, treat the probability as a ranking until you have measured it. Every other model, from any vendor, deserves the same treatment.

The afternoon test

You do not need a data science team to check calibration. You need 200 to 500 of your own cases with known right answers, pulled from recent real traffic and not cherry-picked. Run them through the model, keep the top answer and its probability, and do three things.

First, draw a reliability diagram. Sort predictions into bins by reported confidence (0.5 to 0.6, 0.6 to 0.7 and so on up to 1.0), and for each bin compare the average reported confidence with the share that was actually right. A calibrated model sits on the diagonal; an overconfident one sags at the top.

What an overconfident model looks like on a reliability check: in each confidence bin, the average it reported against how often it was actually right. The gap widens exactly where you would want to set a threshold. Numbers are **illustrative**, not a Jev measurement.
What an overconfident model looks like on a reliability check: in each confidence bin, the average it reported against how often it was actually right. The gap widens exactly where you would want to set a threshold. Numbers are illustrative, not a Jev measurement.

Second, compute expected calibration error: for each bin, take the gap between reported confidence and observed accuracy, weight it by the share of cases in the bin, and add them up. It is one number you can put in a status report and track month to month. Anything above a few points means the raw probability should not be used as a threshold without recalibration.

Third, and most important for the business, read off coverage at a threshold. For each candidate line (0.8, 0.9, 0.95, 0.99), what share of cases lands above it, and what is the error rate among those? That table is the thing you are actually buying. If the model is miscalibrated, fit Platt scaling or isotonic regression on half your labels, check it on the other half, and redo the table. Scikit-learn’s calibration page covers all of it, and a commenter in the Molas thread linked it for exactly this reason.

Two cautions from the threads belong in the test plan. Include inputs that should produce “I don’t know”, because the schema may give the model no way to say so. And write the options carefully: one commenter reported vague labels giving mediocre results until each option carried an explicit “not for” list and a couple of examples.

The threshold is a price, and the owner sets it

The model debate skips this part. Once you have a coverage table, the threshold is a plain cost trade, and the numbers that decide it are not in the model at all.

Composite worked example

An accounts-payable team approving supplier invoices. Every number here is illustrative; the shape of the arithmetic is the point.

Take 10,000 invoices a month. A person checking one takes about three minutes; call it $4 fully loaded. A wrong automatic approval (a duplicate, a changed bank detail, a quantity that does not match the goods receipt) costs about $400 on average by the time someone finds it and claws it back. After recalibrating on 400 labelled invoices, the coverage table reads like this:

68%auto-approved at 0.90, 1.6% of those wrong
52%auto-approved at 0.97, 0.6% wrong
38%auto-approved at 0.99, 0.2% wrong
$40,000a month to have a person check everything

At 0.90 the monthly bill is 3,200 human checks ($12,800) plus about 109 bad approvals ($43,500): roughly $56,000, which is more than checking everything by hand. The model is 98% right on what it automates and the automation still loses money. At 0.97 the total falls to about $31,700. At 0.99 it is 6,200 checks ($24,800) plus about 8 bad approvals ($3,000), roughly $27,800, a saving of about $12,000 a month on a model that only automates 38% of the work.

The rule underneath is one line. Automate a case when the chance it is wrong, times the cost of it being wrong, is less than the cost of a person looking. With a $400 mistake and a $4 look, the break-even confidence is 0.99, not the 0.9 that sounds reassuring in a meeting. Change the cost of a mistake and the line moves: triaging support tickets, where a misroute costs a minute of someone’s time, might sit comfortably at 0.8. That is why the threshold belongs to the process owner and not to the engineer who wired up the model. The engineer knows the curve. The owner knows what a mistake costs.

The queue below the line is a product

The worked example has a second lesson hiding in it. At the right threshold, 62% of the work still goes to a person. That queue is where most of the value is protected, and it is usually designed by nobody.

Give it an owner, a staffing number and a service level. At 6,200 items and three minutes each, it is about 310 hours a month, close to two full-time people; if that is not budgeted, the threshold is fiction. Give reviewers the model’s top answer and its confidence so they are confirming or correcting, which is faster than starting cold, and record every verdict, because those verdicts are your next batch of labels. Sample a small, fixed share of the automated lane (say 1 in 100) for audit as well, or you will only ever learn about the errors you were already catching.

Then watch it drift. Suppliers change, and vendors ship new model versions under the same name. Redraw the reliability diagram monthly from the queue verdicts and the audit sample. If the curve sags, or the share landing below the line jumps, that is the early warning that the numbers have stopped meaning what they meant in the afternoon you measured them. As a commenter on the launch thread put it for chained systems, one low-confidence answer passed downstream can break the whole chain. The gate is where you stop errors compounding.

Where this argument is weak

Three honest limits. First, all of this needs labels, and some decisions only reveal their right answer months later (a credit decision, a hire), which makes the afternoon test an afternoon plus a quarter. Second, the adversarial case does not go away with recalibration. If someone benefits from getting past the gate, a few hundred labels drawn from honest traffic will not tell you how the model behaves on inputs built to fool it, and the keysmash result suggests that it can be fooled cheaply. Keep hard rules (bank-detail changes always go to a person) outside the model. Third, independent numbers on Jev are thin: one run on 770 Reddit posts put it second of seven setups and about six times faster than the leader, against the 40 to 200 times TypeSafe quotes, on one laptop in one evening. Treat every figure from this month, theirs and the critics’, as reported.

None of that changes the shape of the decision. The interesting thing Jev puts on the table has less to do with Jev than with the interface: a number per decision that you can set a line on. Whichever model wins, the teams that get value from it will be the ones who measured that number on their own work, priced the line, and gave the queue below it an owner. We build systems where the model is allowed to act inside a gate a person owns, and this is the gate.

You do not hand a machine a task. You hand it the cases above a line you chose, and you own the rest.

Sources and things reacted to
  1. Introducing System One Models and Jev (TypeSafe AI) launch post, 15 Sep 2026; all Jev capability claims below are TypeSafe's own
  2. HN thread on the Jev launch 1,979 points
  3. Jev can't be calibrated (Alex Molas) 23 Sep 2026
  4. HN thread on Jev can't be calibrated the dice and coin tests, the PR-merge example and the conformal-sets suggestion come from commenters there
  5. What Is RLCD? The Secret Behind Jev (Di Zhang) 21 Sep 2026; an outside reading of the training method, not TypeSafe's
  6. Jev and System One Models: Calibration Beats Accuracy (HN thread)
  7. Jev vs. LLMs on 770 Am I the Asshole posts (HN thread) one independent run, one laptop, one evening, as its author says
  8. Show HN: JevBench (HN thread) 145 points; the keysmash result is a commenter's test of a demo built on Jev
  9. Probability calibration (scikit-learn documentation) linked by a commenter; the reference for Platt scaling, isotonic regression and reliability curves
Keep reading

This is what we do all day.

Support automation, AI phone agents, n8n back-office work, and the engineering loop itself — always behind a gate you control.