AI agents
Key points

Key points

  1. 1A false pass (bad output accepted) costs the value lost when that output ships; a false fail (good output rejected) costs the reviewer minutes spent rechecking it.
  2. 2At each candidate threshold, multiply the false pass rate and false fail rate by their dollar costs and add the two; the lowest total is your threshold.
  3. 3Judge agreement statistics (kappa, precision, recall) tell you where the confusion sits, but only the cost matrix tells you which side to lean toward.
  4. 4Freeze the threshold and the two dollar figures in one written sheet, and revisit it only when a dollar figure changes or the judge's confusion pattern drifts.

Start with a confusion matrix, not a score

Before any dollar figure makes sense, you need to know what your judge actually gets wrong. Treat the judge as a binary classifier. Put the human-adjudicated label on one axis and the judge verdict on the other, and count four cells: true pass, true fail, false pass, false fail. The general layout of these four cells, called a confusion matrix, is standard in classification work (Wikipedia), and the practical reading of the cells (what each error actually means for the application) is set out in classification guides (Evidently AI).

Two rules make the matrix trustworthy. First, build the calibration set from the same workflows the judge will score, including rare high-risk cases and borderline items, and label it independently before anyone sees the judge's answer (OneUptime). Second, do not silently drop parse failures or refusals. A judge that is right on the 90% of items where it returns a label is only 81% right end to end if it fails on the other 10%, so keep invalid outputs in the denominator (OneUptime).

Once the matrix is stable, check that it is not degenerate. Percent agreement flatters judges that mostly predict the majority label. The "Judging the Judges" study of nine judge models found that judges with high percent agreement can still assign very different scores, and it recommends Cohen's kappa over raw agreement for this reason (arXiv; Arize summary). The AWS grounded-evals guide gives the same example from the other direction: if 70% of outputs are correct and the judge always says "correct," it scores 70% accuracy and a kappa of zero (aws-samples). Kappa is not a quality score you optimize against, though. It must be read next to the confusion pattern and the risk of the use case (Arize).

One further caution on the numbers you feed into the sheet: if you are comparing candidate thresholds, make sure the underlying estimates are not too noisy. Agreement between human raters is itself imperfect (the same study reports human kappa at 96 in its setup, against 79 and 84 for the two strongest judge models), so rates you compute from a few dozen items have wide uncertainty (arXiv).

Price the two errors separately

The core move is to stop asking "is the judge accurate?" and start asking "which mistake is more expensive, and by how much?"

False pass. The judge says pass, the output is bad, and it ships. The cost is whatever badness costs you in that workflow: a refund, a re-run of a downstream job, an incident, a customer who leaves. Estimate it as a per-incident figure and multiply by incident frequency if you have that history. If you do not, use the most defensible internal number you can and write down its basis.

False fail. The judge says fail, the output is fine, and a person rechecks it. The cost is reviewer minutes times the loaded hourly rate, plus any delay. This one is usually easy to measure: time a reviewer on a sample of 20 items, divide, multiply.

There is a multiplier worth knowing before you set the false pass figure. In a pipeline where every layer is validated by a model with its own error rate, errors compound: a 5% error rate validated by another 5% judge gives roughly 0.95 x 0.95, an error rate of about 9.75% (GovTech AI Practice). If your judge sits inside a chain of automated checks, charge the false pass cost accordingly.

The other reason to price these separately rather than reach for one accuracy number: the choice of reported metric can move a headline accuracy figure from 0.551 to 0.899 on the same verdicts purely through protocol choices (arXiv:2606.00093). A metric that sensitive cannot drive a spending decision. A dollar figure can.

Work out expected cost per thousand items

Here is the arithmetic, with a worked example. Suppose:

  • False pass cost: $40 per bad output shipped (support time plus a partial refund).
  • False fail cost: $6 per good output rechecked (10 reviewer minutes at $36 an hour).
  • The underlying data: 20% of outputs are genuinely bad.

A judge at a given threshold produces two rates: the share of all items that are false passes (bad items it waved through) and the share that are false fails (good items it rejected). At a threshold where the judge catches three quarters of bad outputs and rejects 5% of good ones:

QuantityValueWorking
Items per 1,0001,000n/a
Genuinely bad it
false pass rate5.0%200 x 25% = 50 bad waved through
false fail rate4.0%800 x 5% = 40 good rejected
False pass spend$2,00050 x $40
False fail spend$24040 x $6
Total per 1,000$2,240

Now move the threshold in the stricter direction: catch 95% of bad outputs, but reject 18% of good ones.

QuantityValueWorking
false pass rate1.0%200 x 5% = 10
false fail rate14.4%800 x 18% = 144
False pass spend$40010 x $40
False fail spend$864144 x $6
Total per 1,000$1,264

Stricter wins here, by $976 per thousand. Loosen it further in the other direction and the answer flips: catch 50% of bad outputs, reject only 1% of good ones, and you get 100 false passes at $4,000 against 8 false fails at $48, a total of $4,048. So the shape of the curve is what matters: false pass spend falls as you tighten, false fail spend rises, and the minimum sits where the two lines cross. That crossing point is your threshold.

The formula you can put in a sheet:

expected_cost_per_1000 =
    (false_pass_rate * 1000 * cost_false_pass)
  + (false_fail_rate * 1000 * cost_false_fail)

Note how much the answer is driven by the ratio of the two costs. At $40 versus $6, the ratio is about 6.7 to 1, so the optimum tolerates roughly six or seven wasted reviews to prevent one bad ship. Halve the false pass cost to $20 and the optimum moves back toward the middle. This is why the short answer says to leave the threshold fixed until one of the dollar figures changes: a threshold is only optimal relative to a cost ratio.

Make the sheet reusable

A threshold written into a prompt gets overwritten by the next person who tunes the rubric. A threshold written into a sheet with its inputs survives. Keep one page per judge with five blocks.

Block 1: scope. Judge name, what it scores, the unit of judgment (single response, whole turn, or full session), and the positive class you are detecting. Arize's alignment guide recommends pinning these four things, plus which error is worse, before choosing any metric (Arize).

Block 2: the frozen judge. Model identity, full prompt, examples, output schema, decoding settings, and the rubric version string. Also record the handling rule for invalid outputs, since a judge that returns nothing must land in a cell of the matrix rather than vanish (OneUptime).

Block 3: the two dollar figures, each with the date it was set, the person who set it, and the basis. "Customer support ticket average $18, three tickets per bad ship, source: support dashboard export" beats "$40" alone.

Block 4: the threshold table. One row per candidate threshold with the four raw cells, the two rates, the two spends, and the total. Pick the minimum and bold it.

Block 5: the sampling note. How many annotated items the rates came from. A minimum viable annotation set is 15 to 20 per error code, and below about 10 the confidence interval on kappa is wider than plus or minus 0.30, which makes the number statistically meaningless (aws-samples). If your false pass rate rests on four observed bad items, say so and treat the threshold as provisional.

If your evaluation set is not representative of traffic, the rates in block 4 are wrong no matter how good the arithmetic is. Stratified sampling, splitting data by risk tier or usage segment so each group is fairly represented, keeps precision and recall honest for minority groups that would otherwise be swamped (Statsig). Rate your false passes by stratum if you can, because a bad ship in a high-risk segment may cost far more than $40.

A candid comparison: judge plus threshold versus human review

Teams often frame this as a binary choice. The cost model makes it a three-way comparison, and the middle option usually wins.

OptionWhat you pay per 1,000 items (example figures above)What you getMain risk
Judge only, loose thresholdAbout $4,048 (100 bad ships)Full coverage, no review costBad outputs reach users at scale
Judge only, strict thresholdAbout $1,264 (10 bad ships, 144 reviews of good items)Low bad-ship countReview queue grows; delay
Human reviews everything1,000 x $6 = $6,000Highest accuracy availableSlow, expensive, does not scale
Judge plus human review of rejects (strict)$1,264, of which $864 is reviewSame as strict judge row; the review is the false fail costReviewer throughput becomes the constraint
Judge plus human spot checks on passes$1,264 plus a sample, say 50 passes x $6 = $300Adds a check on the false passes that did get throughSampling misses rare failures

The lesson is in the last two rows. In this example, reviewing the 144 rejects costs $864, less than the $6,000 to review everything, and the total is still less than a loose threshold. The judge is not replacing humans; it is routing to them.

Neither judges nor humans are unbiased, and the biases are systematic rather than random: judges show self-preference, verbosity bias, and sensitivity to prompt wording, while human annotators drift in interpretation across a long day (GovTech AI Practice). A hybrid with targeted human calibration is what practitioners describe as the reliable setup, and treating evaluation as ongoing engineering rather than a one-time configuration is the difference between teams that trust their numbers and teams that abandon them (Splunk).

For a fuller picture of where human labels come from, and why ground truth is itself a construct, the human-to-judge alignment workflow (measure human-to-human agreement first, then compare the judge against the same reference on the same items) is the right frame (Arize).

When the threshold should move

Write down the triggers now, while the sheet is fresh, so nobody moves the threshold on a hunch.

Move it when a dollar figure changes. A refund policy changes, review rates change, or a new high-risk segment enters the traffic mix. Recompute; do not re-tune the prompt as a shortcut.

Move it when the judge changes. A new model version, a new rubric version, or a new few-shot example set is a different judge. Re-run the calibration set and rebuild block 4.

Move it when the confusion pattern drifts without the judge changing. Production data shifts. Monitoring for drift and deciding between recalibration and retraining is the standard practice in classification systems, and the same logic applies to judges (Adnan Masood). The article is paywalled beyond the summary, but the decision list in the preview is the useful part: thresholding tied to cost, tier-specific thresholds, and a high-recall filter feeding a high-precision verifier.

Do not move it because the reported accuracy moved. As the agreement-metrics analysis shows, protocol choices alone can swing reported accuracy without changing a single verdict (arXiv:2606.00093). If the number moved and the verdicts did not, the sheet did not change either.

If you are running judges across several models or several vendors, the practical friction is usually plumbing rather than statistics: one key, one schema, consistent logging of verdicts and costs. Quanta Inference puts text, image, video, audio and embedding models behind a single OpenAI-compatible API with prepaid dollar pricing, which keeps the per-item cost side of the sheet in one currency (https://quantaintelligence.ai/inference).

Common traps in the arithmetic

Pricing the false pass at zero because "the judge will catch it." It will not; that is what a false pass means. If a downstream human catches it, the cost is that catch, not zero.

Pricing the false fail as only the judge call. The judge call is cheap and roughly constant across thresholds. The false fail cost is dominated by reviewer time, which is what actually moves with the threshold.

Forgetting the base rate. If only 2% of outputs are genuinely bad, even a low false pass rate produces few bad ships, and the false fail side dominates the total. Run the sheet at your real prevalence, not at 50/50.

Treating the threshold as a quality setting. It is a spending setting. A lower threshold does not make the judge better; it changes which error you pay for.

Ignoring the number of ratings per item. If you plan to compare two judge configurations and claim one is better, one rating per item is often not enough to make that claim reliably; research on rating counts finds that even 5 to 10 responses per item can be insufficient for significance testing on common metrics (arXiv). That does not block a cost calculation, but it should stop you from declaring a threshold "significantly better" on thin data.

Skipping the adjudication step. If two reviewers disagree on an item, that disagreement is signal about your rubric, not noise to be averaged away. Preserve ties and low-consensus cases rather than assigning an arbitrary label (Arize).

One last framing point from the broader evaluation literature: percent agreement tells you whether raters matched, while a chance-adjusted metric tells you whether the match is meaningful enough to support a decision, and the right choice depends on the decision you are supporting (NHI Mgmt Group). Your decision is a spending decision. That is why the sheet's output is dollars and a threshold, with kappa reported beside it as a health check rather than a target.

FAQ

FAQ

Why not just optimize for accuracy?

Accuracy treats a bad ship and a wasted review as equally bad, and they rarely are. In the worked example, a $40 false pass against a $6 false fail meant the cost-minimizing threshold deliberately accepted about six wasted reviews to prevent each bad ship. The right metric is expected spend, with accuracy reported as context.

How many annotated items do I need before I trust the rates?

At least 15 to 20 per error code, and below about 10 the kappa estimate is too uncertain to act on (aws-samples). If your false pass rate rests on very few observed bad items, mark the threshold provisional and collect more before you lock it.

What if I cannot estimate the false pass cost?

Start with the most defensible internal number you have and write down its basis: a support ticket average, a refund rate, a re-run cost. Then run the sheet at half and double that figure. If the chosen threshold does not move, the uncertainty does not matter; if it does, that is the number worth measuring properly.

Does a good kappa mean the judge is safe to deploy?

No. Kappa measures agreement beyond chance, not fitness for your decision. A judge can show excellent kappa and still be wrong in ways that matter most in your highest-risk segment. Read kappa alongside the confusion matrix, class counts, and the cost of each error (Arize).

How often should the sheet be revisited?

On a fixed calendar cadence and on any of three triggers: a dollar figure changes, the judge or rubric changes, or the production confusion pattern drifts. Revisiting because a reported accuracy number moved, with the same verdicts underneath, is usually a waste of time.

Sources

Sources

  1. Confusion matrix
  2. How to interpret a confusion matrix for a machine learning model
  3. How to Calibrate an LLM-as-a-Judge Against Human ...
  4. Evaluating Alignment and Vulnerabilities in LLMs-as-Judges
  5. Evaluating Alignment and Vulnerabilities in LLMs-as-Judges
  6. cohens-kappa-for-llm-judges.md - sample-GEDD
  7. How to Measure Human-LLM Judge Alignment
  8. Validating Annotation Agreement between Humans and ...
  9. Agreement Metrics for LLM-as-Judge Evaluation
  10. Stratified Sampling for AI Evaluation: Improve Metrics ...
  11. LLM-as-Judge vs. Human Evaluation: When to Use Each ...
  12. False Positives: The Hidden Cost Center in Production AI
  13. How Many Ratings per Item are Necessaryfor Reliable ...
  14. What is the difference between percent agreement and ...
About the author

About the author

Antonio Evans
Antonio Evans

Antonio Evans is the founder of Quanta Intelligence and a fractional CTO who builds HIPAA-ready AI systems for health and life-science companies. Before that he was technical co-founder of FriendsEAT for twenty years, CEO of Socialdraft, and a data engineer at IBM. Antonio lives with his dog Santino in Lisbon, Portugal.

All articles