BXUP Track progress & test yourself — free
Data Science & ML/AI · Playbook · Advanced · ~6 min read
DATA SCIENCE & ML/AI · PLAYBOOK · ADVANCED

Calibrated LLM-as-Judge: Rubrics, Bias Audits, and Human Agreement

An uncalibrated LLM judge is a random-number generator with good grammar — and it is grading your product. Judges systematically prefer the first answer shown, the longer answer, the better-formatted answer, and answers from their own model family.

Tier: Advanced · Workflow area: Evaluation Engineering

The 2026 best-practice literature is unambiguous: randomize order, take dual-order verdicts, length-match when needed, and continuously re-grade a human sample. This playbook builds a judge you can trust: rubric design, a formal bias audit, judge↔human agreement on a gold set (~200 traces), and the annotation ops — labeling guidelines, inter-annotator agreement, drift monitoring — that keep it trustworthy over time.

When to use

  • A quality dimension resists deterministic checks (helpfulness, tone, reasoning quality, instruction adherence) and you need it scored at scale — after exhausting code-based checks (pb-37's hierarchy: assertions before judges).
  • You are comparing models/prompts pairwise (pb-30's win-rates, pb-33's arms) and need verdicts that survive scrutiny.
  • An existing judge's scores drive decisions and nobody has ever measured its agreement with humans — that is an incident waiting to happen.

Skip for anything checkable by code: schema validity, exact answers, executable SQL. Judges are the fallback, not the default.

Prerequisites

  • The pb-34 golden dataset and taxonomy; expert judgments from critique shadowing as your seed gold labels.
  • A strong judge model (different family from the system under test, if at all possible) plus a cheap-tier model for volume.
  • Argilla or Label Studio (or disciplined spreadsheets) for human labeling; ~200 traces' worth of human labeling time — budget 2 focused hours per labeler.

The workflow

  1. Write labeling guidelines before any prompt. A 1–2 page document humans can follow: the quality dimensions, a 1–5 (or pass/fail) scale with an anchored description and a real example per level, explicit edge-case rulings ("partially correct but confident → 2"), and what to ignore (formatting, unless formatting is the dimension). If humans cannot apply it consistently, no judge prompt will.

  2. Build the human gold set with agreement stats. Two or more labelers independently label ~200 traces (stratified: all failure modes, all slices, ~30% clear passes). Compute inter-annotator agreement — Cohen's κ for two labelers (Krippendorff's α beyond two). κ < 0.6 means your guidelines are ambiguous: run a disagreement-resolution session, tighten the guidelines, relabel the disputed cases. Adjudicated labels = the gold set; final κ goes in the report.

  3. Write the judge prompt from the guidelines. Structure: role + task; the rubric verbatim (same anchors as the human doc); the inputs (question, context if RAG, answer); required output — {"reasoning": "...", "verdict": ...} with reasoning before verdict; and 2–4 few-shot examples including at least one from each extreme level. For pairwise use, the same skeleton with responses A and B and verdict ∈ {A, B, tie}.

  4. Run the bias audit. Four checks, each on 50+ items:

    • Position bias (pairwise): judge every pair in both orders (A/B and B/A). Verdicts that flip with order = positional inconsistency; report the flip rate. Aggregate rule: only count a win when both orders agree, else record a tie.
    • Verbosity bias: correlate verdicts with answer length across the gold set; then spot-check with length-matched variants (same content, padded vs terse) — a judge that rewards the padded version needs an explicit "do not reward length" instruction and re-audit.
    • Format bias: re-judge 20 answers with markdown stripped/added; verdict shifts = format bias, same mitigation pattern.
    • Self-preference: if judge and judged share a model family, compare against a second-family judge on 50 items; systematic favoritism → switch families or dual-judge.
  5. Measure judge↔human agreement and set the bar. Run the calibrated judge over the 200-trace gold set: report agreement rate and κ vs adjudicated labels, plus the confusion pattern (where does it disagree — which rubric levels, which failure modes?). Working bar: judge↔human κ within ~0.1 of human↔human κ. Below the bar, iterate the judge prompt against the confusion pattern (not against overall accuracy) — e.g., merge rubric levels the judge cannot distinguish.

  6. Deploy with drift monitoring. In steady state: route 5–10% of judge-graded traces to human re-grade every cycle; track rolling judge↔human agreement on a dashboard; alert when it drops (judge-model version change, data drift, or your product drifting outside the rubric). Re-calibrate on the gold set whenever the judge model or prompt changes — a judge change is a metric change (pb-35's pin discipline).

  7. Document the judge card. Model + version pin, prompt hash, rubric version, gold-set version, κ numbers, bias-audit results with dates, known blind spots, re-calibration triggers. This travels with every metric the judge produces.

Key Takeaway:

A judge is calibrated when you can state its agreement with adjudicated human labels, its measured biases, and its blind spots — with numbers. Anything less is an opinion with an API bill.

Tool variants

  • Any strong API judge + your own harness: maximum control; the audit steps above are provider-agnostic.
  • Phoenix / Evidently judge templates (OSS, self-hosted): pre-built judge prompts and eval runners — still run your bias audit and gold-set agreement; templates are starting points, not calibration.
  • Argilla or Label Studio: annotation queues, multi-labeler workflows, and disagreement views for steps 2 and 6; a spreadsheet plus a κ script is the zero-infra fallback.

Verification

  • Labeling guidelines exist; human↔human κ ≥ 0.6 after adjudication, with the number reported.
  • Bias audit table: position flip rate, length correlation, format sensitivity, self-preference check — each with the measured value and mitigation applied.
  • Judge↔human agreement and κ on the 200-trace gold set, with the confusion pattern analyzed.
  • Pairwise pipelines aggregate dual-order verdicts (both-orders-agree rule) — verified in code, not in intention.
  • Drift monitoring live: human re-grade sample flowing, rolling agreement charted, re-calibration trigger defined.

Pitfalls

  • Calibrating the judge on vibes. "The verdicts look reasonable" is exactly how position and verbosity bias survive; only the gold-set κ counts.
  • Single-order pairwise judging. Position bias flips a meaningful fraction of verdicts; dual-order with agreement-or-tie is the floor, not a refinement.
  • Rubric levels humans cannot separate. If labelers confuse 3 vs 4, the judge will too — κ diagnostics tell you to merge levels, not to prompt harder.
  • Verdict before reasoning. Judges that emit the score first rationalize it after; reasoning-first output measurably improves consistency.
  • Silent judge-model upgrades. A provider-side model update shifts every score; pin versions, and treat unpinned managed judges as unversioned dependencies.
  • Letting the gold set go stale. Product drift makes 200 old traces unrepresentative; refresh with pb-34's quarterly cycle and re-run calibration.

Restricted-environment variant

  • Client traces cannot reach an external judge API: use a self-hosted judge (8B-class instruct via vLLM/Ollama). Expect lower judge↔human κ — compensate by simplifying the rubric (pass/fail beats 1–5 for small judges), doubling the human re-grade sample to 15–20%, and reserving pairwise (easier than absolute scoring) for the small judge where possible.
  • Annotation stays inside the boundary: self-hosted Argilla/Label Studio; labeler identities and labels are also sensitive HR-adjacent data — restrict access.
  • The judge card, κ numbers, and bias-audit table are shareable artifacts; the gold traces are not.
Warning

Never bootstrap gold labels by having the judge label its own calibration set — circular calibration produces beautiful agreement with itself and none with reality.

Success criteria

  • A judge whose agreement with adjudicated human labels is measured, meets the bar, and is re-checked continuously via the 5–10% re-grade loop.
  • A bias-audit table with dated, quantified results for position, verbosity, format, and self-preference — mitigations verified by re-audit.
  • Annotation ops running: guidelines versioned, κ tracked per labeling round, disagreements feeding guideline updates.
  • Every downstream consumer (pb-30 win-rates, pb-33 verdicts, pb-37 gates, pb-38 graders) cites the judge card, not "the LLM said so."
This is the free reading view. Open BXUP to track your progress, run the hands-on labs, and prove it with original, exam-pattern assessments.
© Anvi Innovate · BXUP — Be Exponentially Upskilled · BXUP is an independent learning platform, not affiliated with or endorsed by AWS, Microsoft, Google, NVIDIA, IBM, Salesforce, Databricks, Oracle or Anthropic. All trademarks belong to their respective owners. · bxup.in