LLM-as-judge reliability, calibration, and bias
A calibration protocol for LLM-as-judge systems that treats judges as fallible measurement instruments rather than neutral truth sources.
Whether automated judges can produce stable, calibrated, and bias-aware scores for assurance tasks when compared against objective checks and small human review samples.
- Judge rubric
- Bias test suite
- Human agreement sample
- Disagreement heatmap
Evaluate one rubric with swapped candidate order, controlled answer length, and a small expert-labelled sample to measure position and verbosity bias. The note should also include a disagreement table and calibration summary so the judge can be treated as a measured instrument rather than a black box.
LLM judges are useful for scalable evaluation when their rubrics, biases, calibration, disagreement patterns, and failure modes are measured explicitly against human or objective references.
A judge model is an instrument, not an oracle
LLM judges can reduce evaluation cost and make qualitative scoring repeatable, but they introduce their own measurement error. A judge can prefer longer answers, be sensitive to candidate order, over-reward confident style, miss domain-specific constraints, or share blind spots with the model being evaluated.
The engineering posture should be calibration, not blind trust. Treat the judge as an instrument whose bias, variance, and operating envelope must be measured before its scores are used for deployment decisions.
Minimum checks before using automated judging
| Check | Method | Risk addressed |
|---|---|---|
| Position bias | Swap candidate A/B order and compare outcomes | Judge favors first or second answer |
| Verbosity bias | Control answer length while preserving correctness | Judge rewards length over quality |
| Rubric adherence | Use answers that violate one criterion at a time | Judge ignores explicit scoring instructions |
| Human agreement | Sample expert labels for high-impact tasks | Judge diverges from domain judgment |
| Self-preference | Judge outputs from same-family and different-family models | Judge favors familiar style |
| Uncertainty behavior | Require confidence and abstention on ambiguous cases | Judge overstates weak decisions |
Store judge decisions as auditable records
type JudgeRecord = {
sampleId: string;
rubricVersion: string;
judgeModel: string;
candidateOrder: string[];
scores: Record<string, number>;
rationale: string;
confidence: "low" | "medium" | "high";
requiresHumanReview: boolean;
};
function requiresReview(record: JudgeRecord) {
return (
record.confidence === "low" ||
Math.max(...Object.values(record.scores)) - Math.min(...Object.values(record.scores)) < 0.1
);
}Related research
View allBenchmark contamination and evaluation leakage
How can AI evaluations avoid overstating performance because the model, prompt, or team has already seen the test?
A measurement model for AI deployment readiness
How should teams measure whether an AI system is ready for controlled production deployment?
RAG evaluation under domain shift
How should retrieval-augmented generation be evaluated when source documents, user questions, and domain language shift over time?