Rubrics and human grading
Write rubrics that make AI output gradeable, run human grading sessions, and measure agreement between graders before trusting the scores.
On this page
Why this matters
Many of the qualities users care most about can’t be checked with code: is the answer correct, is it complete enough to act on, is the tone right, does it stay faithful to the sources? Someone has to judge them. Human grading is how you do that, and it’s also the reference standard every automated grader is measured against.
But human judgment is only useful when it’s consistent. If two graders look at the same output and one says “pass” while the other says “fail”, the score measures the graders, not the feature. A good rubric fixes that, and a simple agreement check tells you whether it worked. This article covers both.
What makes a rubric gradeable
A rubric is a list of criteria, each with a clear definition of what passes. Good criteria share four properties:
- Specific: “states the refund window from the policy” rather than “is accurate”.
- Observable: a grader can point to the part of the output that passes or fails it.
- Independent: each criterion measures one thing. “Correct and concise” is two criteria.
- Anchored with examples: a passing example, a failing example, and guidance for borderline cases.
Show text descriptionHide text description
4 parts, in order:
- Criterion: One specific, observable quality Example: Grounded: every factual claim is supported by the provided articles.
- Pass: What a passing output looks like Example: All claims appear in the articles, possibly reworded.
- Fail: What a failing output looks like Example: States a refund timeline the articles do not mention.
- Borderline: How to decide the cases in between Example: General courtesy ("we're sorry") is not a factual claim: ignore it.
Start with three to six criteria per feature. More than that and graders get slow and inconsistent; fewer and you may miss what matters. Mark any criterion that must never fail, like “doesn’t promise anything outside the policy”, so it’s graded and reported separately.
Pass/fail or scales?
Two common scoring formats:
| Format | Example | Strengths | Weaknesses |
|---|---|---|---|
| Pass/fail per criterion | Grounded: pass | Fast, consistent, easy to aggregate | Loses nuance between “fine” and “excellent” |
| Scale (1 to 5) | Helpfulness: 4 | Captures degrees of quality | Graders disagree more, especially in the middle |
Prefer pass/fail per criterion for most product evals. It’s faster to grade, graders agree more often, and the result, “92% of outputs are grounded”, is easy to act on. If you need nuance, split a criterion in two rather than adding a scale: “answers the question” and “answers it completely” instead of “helpfulness 1 to 5”.
Running a grading session
A grading session can be an hour with two people and a spreadsheet:
- Choose graders who know the domain. Support leads for support replies, clinicians for medical summaries. Engineers can grade format; they shouldn’t be the only judges of correctness in a specialist domain.
- Calibrate first. Grade five outputs together, discuss every disagreement, and refine the rubric’s examples and borderline rules.
- Grade independently. Each grader scores the same set without seeing the other’s scores.
- Grade blind. Hide which prompt version or model produced each output, and shuffle the order, so graders can’t favor the version they expect to win.
- Measure agreement on the overlap (next section).
- Resolve disagreements by discussion, and update the rubric so the same disagreement doesn’t recur.
Keep the graded outputs. They become the reference labels for calibrating an LLM judge, and the baseline for later comparisons.
Measuring agreement
Before trusting human grades, check that two graders would score the same output the same way. Two numbers are useful:
- Percent agreement: how often both graders gave the same verdict. Simple, but inflated when most outputs pass, because graders agree by chance.
- Cohen’s kappa: agreement corrected for chance. 1 means perfect agreement, 0 means no better than chance. A widely used rule of thumb (Landis and Koch, 1977) treats values above about 0.6 as substantial agreement and above 0.8 as almost perfect, though what’s acceptable depends on the stakes.
This function computes both for pass/fail grades on the same outputs:
type Verdict = 'pass' | 'fail';
/** Percent agreement and Cohen's kappa for two graders' verdicts on the same outputs, in the same order. */
export function agreement(a: Verdict[], b: Verdict[]) {
if (a.length !== b.length || a.length === 0) throw new Error('Both graders must grade the same, non-empty set.');
const n = a.length;
const observed = a.filter((v, i) => v === b[i]).length / n;
// Agreement expected by chance, from each grader's own pass rate.
const passA = a.filter((v) => v === 'pass').length / n;
const passB = b.filter((v) => v === 'pass').length / n;
const expected = passA * passB + (1 - passA) * (1 - passB);
const kappa = expected === 1 ? 1 : (observed - expected) / (1 - expected);
return { percentAgreement: observed, kappa };
}
// Two graders, ten outputs, one criterion ("grounded").
const graderA: Verdict[] = ['pass', 'pass', 'fail', 'pass', 'pass', 'fail', 'pass', 'pass', 'pass', 'fail'];
const graderB: Verdict[] = ['pass', 'pass', 'fail', 'pass', 'fail', 'fail', 'pass', 'pass', 'pass', 'pass'];
const { percentAgreement, kappa } = agreement(graderA, graderB);
console.log(`Agreement ${(percentAgreement * 100).toFixed(0)}%, kappa ${kappa.toFixed(2)}`);
// Agreement 80%, kappa 0.52: the graders agree often, but less than it seems once chance is removed. The example shows why kappa matters. 80% agreement sounds good, but because both graders pass most outputs, much of that agreement would happen by chance. A kappa of 0.52 says the criterion needs clearer examples or a better borderline rule before its grades can be trusted.
Compute agreement per criterion, not overall: one vague criterion can hide behind several clear ones.
Common mistakes
- Vague criteria. “High quality” or “helpful” produce inconsistent grades. Make each criterion specific and observable, with examples.
- Combining qualities in one criterion. “Correct and concise” hides which one failed. One quality per criterion.
- Grading with the version visible. Graders favor the version they expect to win. Hide the source and shuffle the order.
- Trusting percent agreement alone. When most outputs pass, chance inflates agreement. Check kappa.
- Engineers grading specialist correctness. Domain experts should judge domain correctness.
Try it
Exercise
About 90 min
Write a rubric and grade ten outputs with a colleague
- Write three to five pass/fail criteria for your feature, each with a pass example, a fail example and a borderline rule.
- Grade five outputs together to calibrate, and refine the rubric.
- Grade ten more outputs independently and blind.
- Compute agreement and kappa per criterion with the function above, and rewrite any criterion with kappa below about 0.6.
Show a hint
If one criterion has low agreement, look at the specific outputs you disagreed on. The disagreement almost always points to a missing borderline rule.
Show a worked solution
Example results for a support-reply rubric (illustrative):
- Grounded: 90% agreement, kappa 0.74. Good.
- Answers the question: 90%, kappa 0.78. Good.
- Tone matches guide: 70%, kappa 0.35. Too vague. Disagreements were about exclamation marks and apologies. Fix: add the rule “at most one exclamation mark; apologize once if the customer reports a problem, never otherwise”, plus two examples.
- After revising, a second round on ten new outputs gives tone a kappa of 0.69.
Check your understanding
Key takeaways
- Good criteria are specific, observable, independent and anchored with examples and a borderline rule.
- Prefer pass/fail per criterion; split criteria rather than adding scales.
- Grade with domain experts, independently, blind and in shuffled order.
- Measure percent agreement and Cohen’s kappa per criterion, and fix criteria graders don’t agree on.
Progress is saved in this browser and lights up the roadmap.
Related articles
- Communicating confidence and uncertainty Communicate uncertainty in AI features honestly: when to hedge, when to abstain, and why raw confidence scores usually confuse users more than they help. Level: Intermediate
- Why evals are product metrics Evals measure how often an AI feature is good enough for users. Learn why they belong with product metrics, not only in an ML notebook. Level: Advanced
- Regression eval suites in CI Run evals in CI so prompt and model changes can't silently make an AI feature worse, with thresholds, flakiness handling, cost control and reporting. Level: Advanced