AI Evaluation

LLM-as-a-Judge: When It Works and When It Lies

We built an LLM-as-a-Judge system processing 100K+ evaluations daily with 0.89 Spearman correlation to expert labels. Here's what we learned about when automated judges are reliable and when they're dangerously wrong.

Fazeel Usmani
March 27, 2026Updated July 28, 202611 min read
LLM-as-a-Judge
Evaluation
Bias
Rubric Scoring

Using one LLM to evaluate another sounds elegant. And sometimes it is. We built an LLM-as-a-Judge system processing 100K+ evaluations daily with 0.89 Spearman correlation to expert human labels.

But getting there required understanding exactly where automated judges fail — and they fail in ways that are subtle, systematic, and dangerous if you don't catch them.

The core problem: a judge model doesn't fail randomly. Random noise averages out at scale. Judge biases don't. They point in consistent directions — toward the first answer, the longer answer, the answer that sounds like the judge — and at 100K evaluations a day, a consistent 5% tilt quietly rewrites your leaderboard. This post covers where judges are reliable, where they lie, and the mitigations that got us to production-grade numbers.

What LLM-as-a-Judge Actually Means

The concept is simple: instead of paying human evaluators to rate AI outputs, you use a language model to score them. Give the judge model a rubric, a prompt, a response, and ask it to rate quality on a scale.

At scale, this is transformative. Human evaluation costs $2-5 per judgment. LLM evaluation costs $0.002-0.01. That's a 200-500x cost reduction, which means you can evaluate everything instead of sampling.

That last part matters more than the raw savings. With human eval, you sample a few hundred outputs a week and pray they're representative. With an LLM judge, every output gets scored — you catch regressions the day they ship and run prompt A/B tests with real statistical power. The judge doesn't need to match a human. It needs to be good enough and cheap enough to run on everything, with humans reserved for the cases that need them.

There are three common setups:

  • Reference-free scoring: the judge sees the prompt and the response, and rates quality against a rubric. Cheapest, most fragile.
  • Reference-based scoring: the judge also sees a ground-truth answer or gold reference and scores agreement. Much more reliable for factual tasks.
  • Pairwise comparison: the judge sees two responses and picks the better one. Best signal-to-noise for model comparisons.

Which one you pick determines half your reliability. More on that below.

When It Works

Structured, Objective Criteria

LLM judges excel when the rubric is concrete:

  • Does the response contain a SQL query? (Yes/No)
  • Is the code syntactically valid? (Yes/No)
  • Does the summary mention all 5 key points? (Count)
  • Is the response under 200 words? (Measure)

For these tasks, we see 0.92+ correlation with human labels. The judge is essentially doing pattern matching, and LLMs are very good at pattern matching.

The pattern: the closer your criterion is to a checkable fact, the more you can trust the judge. "Is there a code block?" is nearly deterministic. "Is the code idiomatic?" is where drift begins. "Is this helpful?" is where judges hallucinate standards. I now decompose every fuzzy question into the most binary sub-questions I can get away with, leaving only genuinely subjective dimensions as scaled scores.

Relative Comparisons

"Is Response A better than Response B?" is easier for judges than "Rate this response from 1-5." Pairwise comparison reduces the calibration problem and typically improves inter-rater agreement by 15-20%.

Why? Absolute scales force the judge to hold a stable internal standard for what "3 out of 5" means — and LLMs don't have one. Score 1,000 responses on a 1-5 scale and the distribution piles up on 4s regardless of quality. Comparisons sidestep this: the judge only needs to detect a difference, not anchor a standard. Humans share the asymmetry — it's why Elo-style arenas produce cleaner rankings than Likert surveys.

High-Volume, Moderate-Stakes

When you need to evaluate thousands of outputs daily and the cost of a wrong judgment is moderate (not catastrophic), LLM-as-a-Judge is the right tool. It's fast, cheap, and consistent.

The inverse is the rule I actually enforce: if a single wrong judgment can cause real damage — medical guidance, legal content, anything customer-facing where one bad output is a churn event — the judge is a filter, not a decider. It routes; a human signs off.

Pairwise vs Rubric Scoring: Choosing the Right Mode

This choice comes up in every eval design conversation, so here's my decision rule.

Use pairwise comparison when you're comparing systems: model A vs model B, prompt v2 vs prompt v3, this week's build vs last week's. Pairwise gives you the cleanest relative signal, and relative signal is all you need for a ship/no-ship decision. The cost is that pairwise results don't tell you whether either response is actually *good* — only which is better. Two bad answers still produce a winner.

Use rubric (absolute) scoring when you need a quality floor: production monitoring, SLA-style thresholds, "alert me if quality drops below X." You can't run pairwise against production traffic — there's no second response to compare. Here you accept the calibration problem and manage it: decompose the rubric into concrete dimensions, use a small scale (1-3 or 1-5, never 1-100 — the extra resolution is fake), and anchor each score level with an explicit description.

Use both when you can afford it. We run rubric scoring on live traffic for monitoring and pairwise for every model or prompt change. They catch different failures.

When It Lies

Position Bias

LLM judges systematically prefer the first response in a pair. In our testing, swapping the order of two identical responses changed the judgment 12-18% of the time.

Sit with that number: identical responses, and the verdict flips on ordering alone in roughly one of every six judgments. In a close A/B comparison, position bias can fully determine the outcome. And it isn't constant — it varies by judge model, prompt length, and framing, so you can't just subtract a known offset.

Fix: Always evaluate in both orders and average. Yes, it doubles the cost. It's worth it. When the two orderings disagree, don't average silently — record it as a tie or route it for review. Disagreement between orderings is itself a signal that the responses are close.

Verbosity Bias

Longer responses get higher scores, even when the extra length adds no value. A 300-word response that repeats itself scores higher than a 100-word response that's perfectly concise.

This one is insidious because it compounds. If your judge rewards length and you use judge scores to select prompts, fine-tune models, or pick few-shot examples, you are actively training your system to pad. I've watched eval-driven iteration loops make outputs 40% longer with zero added information, purely because the judge kept handing out higher scores for bulk.

Fix: Include explicit length-awareness in the rubric. "Penalize unnecessary repetition. Concise and complete is better than long and padded." Beyond the rubric, monitor the correlation between response length and judge score. Some positive correlation is legitimate — harder questions need longer answers — but if length predicts score better than your quality dimensions do, your judge is measuring word count.

Self-Preference Bias

GPT judges prefer GPT outputs. Claude judges prefer Claude outputs. This isn't a conspiracy — it's a distributional similarity effect. Models rate text that matches their own style as higher quality.

The practical consequence: if you use the same model family to both generate and judge, your eval numbers are inflated in a way you cannot see from inside the loop. Every comparison against a competitor model is tilted in your favor, and you'll only find out when human preference data disagrees with your dashboard.

Fix: Use a different model family as judge than the one you're evaluating. Or use multiple judges and take consensus. If you must judge a model with itself — sometimes the strongest available judge is the model under test — at minimum verify on a held-out human-labeled set that the self-judged rankings match human rankings.

Sycophancy Toward Confident Wrong Answers

This is the most dangerous failure mode. When a response is confidently wrong — clear, well-structured, but factually incorrect — LLM judges rate it higher than a hesitant correct answer.

Judges score surface features: structure, fluency, confidence, formatting. A wrong answer with clean headings and assertive prose has all of those; a correct answer that hedges appropriately has fewer. Without ground truth, the judge grades the performance, not the content — and confidently wrong is exactly the failure mode you most need evals to catch, because it's the one that fools your users too.

Fix: For factual evaluation, always include ground truth in the rubric. Don't ask "is this a good response?" Ask "does this response match the ground truth?" Separate factuality from style as distinct scored dimensions so a beautifully formatted wrong answer can score 5 on presentation and 1 on accuracy, instead of a misleading 4 overall.

What a Working Judge Prompt Looks Like

The single biggest lever after mode selection is the judge prompt itself. The skeleton we converged on:

You are evaluating a response against the rubric below.

[TASK CONTEXT]
The original user request: {prompt}
Ground truth / reference (if available): {reference}

[RESPONSE TO EVALUATE]
{response}

[RUBRIC]
Score each dimension independently from 1-5:
1. Factual accuracy — does every claim match the reference?
   (5 = fully consistent, 3 = minor unsupported claims, 1 = contradicts reference)
2. Completeness — are all required points covered?
3. Conciseness — penalize repetition and padding.
   Concise and complete beats long and padded.
4. Instruction-following — does it obey format/length constraints?

[OUTPUT FORMAT]
For each dimension: one sentence of evidence quoting the response,
then the score. Reasoning first, score last.
Return JSON: {"accuracy": n, "completeness": n, "conciseness": n,
"instructions": n}

The details that matter: per-dimension scores instead of one overall number, anchored descriptions for score levels, an explicit anti-verbosity instruction, required evidence quotes (which suppress lazy pattern-matched scores), and reasoning *before* the score — once a judge emits a number, its explanation is post-hoc rationalization. Low temperature, structured output, always.

Calibrating Against Human Labels

A judge without calibration data is an opinion, not a measurement. The process that got us to a trustworthy 0.89:

  1. Build a labeled set. A few hundred examples covering your real difficulty distribution — including deliberately hard cases like confident-wrong answers and padded responses. Get 2-3 expert labels per example and resolve disagreements; your ceiling is the quality of these labels.
  2. Measure correlation, not accuracy. Spearman for scalar scores, agreement rate for pairwise. Exact score matching is too strict; what matters is whether the judge *ranks* outputs the way experts do.
  3. Slice the errors. Aggregate correlation hides systematic failure. Break disagreements out by category, response length, and position. That's how we caught our verbosity problem — overall correlation looked fine while long responses were consistently over-scored.
  4. Re-check on a schedule. Model updates, prompt tweaks, and data drift all silently move judge behavior. We re-run the calibration set weekly and alert if correlation drops.
  5. Spot-check in production. Continuously sample a small slice of live judgments — a few percent, weighted toward low-agreement cases — for human review. This catches drift the frozen calibration set can't, because production traffic changes in ways your fixed set doesn't.

Our Architecture

After extensive iteration, here's what works for us:

  1. Multi-judge consensus: 3 different model families evaluate each output
  2. Bidirectional comparison: Every pairwise judgment is run in both orders
  3. Rubric decomposition: Instead of one overall score, we score 4-6 specific dimensions
  4. Calibration set: 200 human-labeled examples that we use to detect judge drift weekly
  5. Confidence thresholds: Low-agreement judgments get flagged for human review

This gives us 0.89 Spearman correlation with expert labels at roughly 1/100th the cost of full human evaluation.

Each component maps to a specific failure mode: multi-family consensus neutralizes self-preference, bidirectional runs neutralize position bias, decomposition stops style from bleeding into factuality, the calibration set catches drift, and confidence routing sends humans exactly the cases where judges are least trustworthy. Remove one piece and the corresponding bias comes back.

FAQ

How large a quality difference can an LLM judge reliably detect? In our experience, pairwise judges reliably detect differences humans agree on at roughly 70/30 or stronger preference rates. Below that, judge noise and residual position bias dominate — you need more samples, bidirectional evaluation, and honest tie-handling, or the "winner" is a coin flip with extra steps.

Should the judge be a bigger model than the one being evaluated? Usually, yes — judging benefits from capability headroom, and evaluation is cheap relative to generation. But a strong smaller judge with ground truth in context beats a frontier judge working reference-free. Context beats capability for factual evaluation.

Do I still need human evaluation once the judge is calibrated? Yes, permanently — but the role changes. Humans stop scoring everything and do three jobs: labeling the calibration set, reviewing flagged low-agreement cases, and spot-checking random samples. That's the difference between using a judge and blindly trusting one.

Can I use judge scores as training rewards? Carefully. Any judge bias becomes an optimization target — verbosity bias is how you end up training a padding machine. If judge scores feed training or automated selection, calibrate more often, cap length effects explicitly, and audit what the optimized outputs actually look like, not just their scores.

The Takeaway

LLM-as-a-Judge is not a replacement for human evaluation. It's an amplifier. Used correctly, it lets you evaluate 100x more outputs with 80-90% of the accuracy of human judges.

Used incorrectly, it gives you false confidence that your AI is better than it actually is.

Know the failure modes. Build for them. Verify continuously.

---

*Building an evaluation pipeline and wondering if LLM-as-a-Judge fits? Book a call — I'll walk you through the tradeoffs for your specific use case.*

Is this the problem you are staring at right now?

Building evaluation systems for LLM products is what I do for a living — eval datasets, judge rubrics, and launch-quality gates.

New to agent evals? Start with the AI Agent Evaluation Handbook.

Double opt-in · one-click unsubscribe · privacy