AI coding

Setting a Minimum Agreement Rate Before an LLM Judge Gates

Antonio Evans9 min read

A release gate dashboard split into four rows labeled relevance, toxicity, factuality, and format.
Key points

Key points

  1. 1Choose the smallest judge-human agreement rate you will accept for each criterion, measure it against human-labeled examples, and block the release if any criterion misses its bar.
  2. 2Report raw agreement alongside Cohen's kappa, because kappa removes the agreement two raters would reach by guessing.
  3. 3Set each threshold from the cost of a false pass versus a false block, not from a single universal number.
  4. 4Treat a missed threshold as a rubric or labeling problem to diagnose and fix, not as a judge to override by hand.

The gate you are actually buying

An LLM judge used as a release gate is a classifier, and a classifier deserves the same evidence any other classifier gets before it can block a deploy. The question is not "does the judge sound right?" It is "how often does the judge reach the same verdict a trained human would on the same input, on the criteria that decide the release?" That framing has a practical consequence: you cannot evaluate a judge in the abstract. You evaluate it against a held-out set of examples that humans have labeled under the rubric the judge is asked to apply. Arize's field guide to judge alignment treats the judge explicitly as a classifier and recommends reporting precision, recall, F1 and a confusion matrix against a human reference, not a single accuracy figure.

Two things follow. First, the reference has to be built before the judge runs, or you will unconsciously grade the judge against itself. Second, the gate has to be criterion-specific. A single overall pass rate hides the case that matters, where the judge is fine on tone, fine on format, and wrong on the one safety rule that triggered the release gate in the first place. Raters should label each criterion independently, which is the only way per-criterion agreement can be computed at all. A QA workflow guide for rubric grading makes the same point: split the decision into independently scorable criteria and calculate agreement per criterion before scaling the judge.

A useful decision rule before you write any threshold: a judge is only usable as a gate if its agreement is close to the agreement two trained humans already reach on the same task. If humans agree with each other at 78 percent and the judge agrees with the adjudicated reference at 74 percent, the judge is roughly as consistent as the panel. If humans agree at 92 percent and the judge sits at 68 percent, the null hypothesis should be that the rubric is underspecified, not that the judge is bad.

Pick the metric: raw agreement and Cohen's kappa

Raw agreement is the fraction of cases where the judge and the human reference pick the same label. It is easy to compute, easy to explain to a release committee, and easy to game by a judge that always predicts the majority class. A comparison of percent agreement and kappa in LLM evaluation puts it directly: percent agreement counts matches but ignores the agreement that would happen by chance, which matters most when one label dominates the dataset.

Cohen's kappa corrects for that. It compares observed agreement with the agreement expected from each rater's label distribution, and the standard formula is kappa = (Po - Pe) / (1 - Pe), where Po is observed agreement and Pe is chance agreement. McHugh's overview of the kappa statistic explains why Cohen introduced it in 1960 as a critique of percent agreement, and notes the statistic ranges from -1 to +1. A walkthrough of kappa with a worked matrix gives the arithmetic: with 100 items, 40 agreements on "yes", 35 on "no", and 25 disagreements, observed agreement is 0.75, expected agreement is 0.50, and kappa is 0.50, which sits in the moderate band.

The worked example in the AWS grounded-evals guide shows why this matters for a gate: if 80 percent of responses are correct and the judge always says "correct," it scores 80 percent accuracy and a kappa of zero. It has learned nothing about the failures the gate exists to catch. Report both numbers, then gate on the stricter of the two. An LLM judge that correlates strongly with humans can still be systematically lenient, which is exactly the bias a correlation coefficient will not reveal; the Judge's Verdict study makes this argument and moves from correlation analysis to kappa precisely to catch systematic bias.

Two practical cautions. Kappa is affected by prevalence, so compute it per criterion rather than pooling criteria with very different base rates. And sample size matters: tightening a confidence interval around kappa gets expensive fast, and the calculation sizes on whichever bound lies nearer the expected value, so a target of 0.60 with a lower bound of 0.55 needs 1,625 cases regardless of how wide the upper bound is. Worked guidance from Bujang and Baharum on minimum sample sizes for kappa shows the same shape: when the two raters' marginal frequencies differ, the required sample is often more than double the balanced case. In practice, an evaluation set of a few hundred labeled cases per criterion is enough to detect a gross miss, and a deliberate doubling gives you margin for skewed label distributions.

Compute agreement per criterion: a worked table

Suppose a support-answer assistant is being gated on three criteria: groundedness (every policy claim is supported by the supplied policy text), policy compliance (the response does not promise an outcome the policy forbids), and actionability (the response names a next step available under the policy). Two human labelers annotate 300 held-out cases, disagreements are adjudicated to a reference label, and the judge scores the same 300 cases blind to the human labels. The table below is the kind of output that should sit in the release review.

CriterionHuman-human raw agreementHuman-human kappaJudge-human raw agreementJudge-human kappaMinimum barVerdict
Groundedness0.910.820.880.74raw 0.85, kappa 0.70Pass
Policy compliance0.960.710.930.48raw 0.95, kappa 0.70Block: kappa miss
Actionability0.840.660.790.58raw 0.75, kappa 0.55Pass, watch

Read the policy compliance row closely, because it is the one that matters. Raw agreement of 0.93 looks reassuring, but the base rate of compliant answers is high, so chance agreement is high too and kappa collapses to 0.48. The judge is passing almost everything, including the small number of forbidden promises that the criterion exists to catch. Kappa catches that; raw agreement does not.

Here is the same computation in a few lines you can drop into a test harness, using the reference labels and the judge's verdicts for one criterion.

from sklearn.metrics import cohen_kappa_score, confusion_matrix

# labels: 0 = fail, 1 = pass
ref = [1, 0, 1, 1, 1, 0, 1, 1, 1, 0]   # adjudicated human reference
judge = [1, 1, 1, 1, 1, 0, 1, 1, 1, 1] # judge verdicts on the same cases

raw = sum(a == b for a, b in zip(ref, judge)) / len(ref)
kappa = cohen_kappa_score(ref, judge)
print(f"raw={raw:.2f} kappa={kappa:.2f}")
print(confusion_matrix(ref, judge))  # rows = human, cols = judge

The confusion matrix is not decoration. If the judge misses a whole class, the matrix shows it as an empty column while raw agreement and kappa both look tolerable. The Arize alignment guide recommends reporting class counts and the confusion matrix alongside any agreement figure, and ensuring each important class has enough examples, not just the dataset overall.

Setting each threshold from the cost of a wrong decision

There is no universal acceptable kappa. What matters is which error is worse. A false pass lets a bad answer through the gate and into production, which might mean a wrong refund promise or a fabricated deadline. A false block stops a release that would have been fine, which costs a day of engineering time and some patience. Those two costs are rarely equal, so the threshold on each criterion should not be equal either.

As a rough starting point, be explicit about which error the gate most needs to prevent, and set the bar so that the observed rate of that error cannot exceed what the organization tolerates.

Error directionWhere it matters mostWhat the threshold should protect againstHow to check it
False passPolicy compliance, safety, billingJudge approves a case humans would rejectRecall on the fail class, plus kappa
False blockGroundedness on informational answersJudge rejects answers humans acceptPrecision on the pass class
Either, roughly equalTone, format, readabilityNo systematic bias in the judgeBalanced accuracy, raw agreement

The general convention for the higher-stakes criteria is substantial agreement. Interpretation bands place 0.61 to 0.80 as substantial and 0.81 to 1.00 as almost perfect, and the AWS guide maps those bands onto judge actions, treating 0.80 and above as the point where a judge can run autonomously in CI and 0.41 to 0.60 as usable only with human review on flagged cases. That mapping gives you a defensible default: set the bar at 0.70 or above for any criterion where a false pass is expensive, and accept lower kappa (with higher raw agreement) only where the cost of a false block dominates and a human sees the output anyway.

Also budget the sample. If a criterion's human-human kappa is only 0.66, the criterion itself is the weak link. The judge's 0.58 is measured against a reference that two humans only agree on 84 percent of the time, and confidence intervals at that label volume are wide. Tightening the bar without tightening the rubric first just produces a louder signal about the same ambiguity.

When a criterion falls short: four responses, ranked

A miss is information. The worst reaction is to allowlist the failing cases and move on, because that converts a measurement gate into a negotiation. Rank the responses by how much of the remaining risk they remove.

  1. Relabel. Check whether the human reference is solid before blaming the judge. Multiple human annotations serve three purposes: constructing a defensible reference, improving the criteria, and exposing ambiguity that a single labeler would have hidden. If two humans disagreed and the adjudication went the wrong way, the judge's kappa can move materially after relabeling. The one rule that matters: do not change past labels after seeing the judge's verdict, or the agreement number becomes a mirror. The reproducibility guidance applies the same principle to runs: fix the inputs and parameters so the measurement can be repeated.

  2. Rewrite the rubric. Low human-human agreement is the signal that the criterion is underspecified. Words like "helpful" or "appropriate" need to become an observable question with anchored labels per score. The rubric design workflow sets out the five fields a strong criterion needs: name, question, scale, anchors, and a blocking rule that connects a score to the release decision. Oracle's prompt practices for agent systems make the related point for tool and agent descriptions: treat them like legal documents and define every term precisely, because vague descriptions flow straight into what the model reasons over.

  3. Narrow the judge. If the rubric is solid and humans agree, but the judge still misses, cut scope. Use binary or a few named categories rather than a 1 to 10 scale, because judges are poorly calibrated on arbitrary numeric scales and a similar response can score 7 on one run and 9 on another. Narrowing also means one judge per criterion instead of one judge asked to weigh everything at once, and grounding checks that require the judge to quote the supporting policy text rather than assert that support exists. Arize's agent debugging walkthrough shows a grounding-check judge as a concrete pattern and reports a pass rate climbing from 40 to 90 percent as the harness is iterated, which is the kind of movement you should expect from rubric and prompt fixes rather than from threshold tweaks.

  4. Block the release. If relabeling, rewriting, and narrowing still leave the criterion below its bar, the judge does not gate that criterion. Either the release waits, or the criterion ships with human review on every flagged case and no automated pass, or the product ships with that behavior removed. What you do not do is lower the bar to match the measurement.

The order matters because rewriting the rubric first and relabeling second wastes a cycle; you cannot tell whether a label is wrong until the rubric says what right means. Relabel against a fixed rubric, then rewrite if the criterion still wavers.

Keep the gate honest after it ships

A judge is not a static artifact. Once it gates releases, the data it sees drifts, the rubric gets edited, and the model behind it changes underneath you. The Netflix LLM-judge lifecycle paper frames the judge as something that must be built, aligned, deployed and continuously monitored, with a human-in-the-loop alignment process that detects drift and triggers re-tuning behind a human review gate. The lesson for a smaller team is proportionate: re-run the agreement study on a fresh holdout every time the rubric, the judge prompt, or the underlying model changes, and treat a drop below the bar as a blocked gate, not a soft alert.

Monitoring also supplies the evidence for the next threshold decision. Log the judge verdict, the criterion, the confidence, and the human adjudication for every flagged case, so the next agreement run has a reference that was not built from the same samples used to set the bar. Persisting judge outputs and review traces is what makes agreement figures auditable and reproducible later, a point the NHI management group's guidance ties to audit log management controls.

If you are running several judges across several model providers, the plumbing starts to matter as much as the statistics: same prompt, same rubric, same logging, whatever model is behind the judge. That is a good place to consolidate model access behind one key rather than a client per provider, which is what Quanta Inference provides.

FAQ

FAQ

What is a reasonable minimum agreement rate for an LLM judge?

It depends on which error is more expensive. For a criterion where a false pass is costly, such as safety or billing policy, set the bar at substantial agreement or better (kappa around 0.70 to 0.80) and also check recall on the fail class. For a low-stakes criterion where a human reviews the output anyway, a lower bar with strong raw agreement is defensible. The rule is to write the number down before you measure, per criterion, and not to move it after seeing results.

Should I gate on raw agreement or Cohen's kappa?

Gate on both, and block if either misses. Raw agreement is intuitive and catches gross mismatches; kappa catches the case where one label dominates and the judge is passing everything by predicting the majority class. The comparison from NHI frames raw agreement as a fast sanity check and kappa as the defensible reliability claim. A judge with 0.93 raw agreement and 0.48 kappa is not ready to gate a high-stakes criterion.

How many labeled examples do I need before I trust the agreement number?

Enough that the confidence interval cannot straddle your threshold. Statistically, kappa intervals tighten slowly: the sample size walkthrough shows that narrowing the nearer bound from 0.05 to 0.01 of the expected value takes the requirement from 1,625 to 38,203 subjects. For release-gating decisions, a few hundred cases per criterion, with at least a modest number in each class, is a workable starting point, and you should double it when the two raters' label distributions differ.

What if humans disagree with each other more than the judge disagrees with them?

Then the rubric is the problem, not the judge. A criterion two trained humans agree on only 70 percent of the time cannot support a strict judge threshold, because there is no stable target to hit. Rewrite the criterion with observable anchors and explicit examples, re-annotate, and re-measure human-human agreement first. Only when humans agree consistently does judge-human agreement become a meaningful gate.

What should I do when one criterion fails but the release is otherwise ready?

Block that criterion, not the whole release, if the other criteria are independent and passing. Options are to block the specific behavior, require human review on every case the judge flags for that criterion, or remove the capability from the release. What you should not do is hand-pick exceptions or lower the bar. Log the failing cases as the reference set for the next rubric revision, then re-run the full agreement study before re-enabling the automated gate.

Sources

Sources

  1. How to Measure Human-LLM Judge Alignment
  2. LLM Eval Rubric Design Interrater Agreement: A Reliable ...
  3. What is the difference between percent agreement and ...
  4. Interrater reliability: the kappa statistic - PMC - NIH
  5. Enhancing AI Evaluation with Cohen's Kappa Metric
  6. cohens-kappa-for-llm-judges.md - sample-GEDD
  7. A Comprehensive Analysis of LLM Judge Capability ...
  8. Sample Size Calculations for Interobserver Agreement Studies
  9. Guidelines of the minimum sample size requirements for Kappa ...
  10. Proven Strategies for Reproducible AI Outputs
  11. Best Practices for Prompts in AI Agent Studio | fusioncoe
  12. F.A.Q on LLM judges: 7 questions we often get
  13. How To Debug AI Agents: Tracing, Observability & Evals
  14. The Lifecycle of LLM-as-a-Judge for Large-Scale ...
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