LLM-as-a-Judge

When there's no reference answer and no rule to check, you can ask a strong model to grade the output — LLM-as-a-judge. It's the technique that made open-ended evaluation practical at scale, and it's also a minefield: judges have systematic biases, can be gamed, and agree with humans only when you design the grading carefully. Used well it's indispensable; used naively it produces confident numbers that mean nothing.

The previous post ran out of road at open-ended tasks: for a summary, an explanation, a chatbot reply, there’s no reference to match and no regex to fire. The dominant modern answer is to use another LLM as the evaluator — the “LLM-as-a-judge” pattern. This post covers how it works, why it’s powerful, and the biases that will wreck it if you don’t design around them.

The idea

An LLM judge is a model prompted to evaluate an output rather than produce one. You give it the input, the response (or two responses), and a rubric, and ask it to score or choose. Because a capable model understands language, it can assess qualities that surface metrics can’t: coherence, helpfulness, whether an answer actually addresses the question, tone, reasoning quality. It approximates human judgment at a fraction of the cost and time — you can grade thousands of open-ended outputs in minutes.

There are two main modes, and the difference matters more than people expect:

Why it works — and the catch

The research that popularized this — the Judging LLM-as-a-Judge work behind MT-Bench and Chatbot Arena — found that strong judge models agree with human preferences at roughly the rate humans agree with each other, which is a strikingly good result. That’s the promise: a scalable, cheap stand-in for human evaluation on open-ended tasks.

The catch is that this only holds when the grading is designed carefully. A judge is still a language model, which means it inherits language-model failure modes and adds a few of its own. Treat its output as ground truth without accounting for these and you get numbers that look rigorous and are quietly wrong.

The biases you must design around

LLM judges have systematic, repeatable biases — not random noise, but consistent tilts that skew results in one direction:

None of these are dealbreakers. They’re known biases, which means you can control for them. The teams that get value from LLM judges are the ones that treat these as first-class design constraints, not footnotes.

Designing a judge that works

A reliable judge is mostly a matter of disciplined prompt and protocol design:

Validate the judge itself

The step almost everyone skips: the judge is a measurement instrument, so calibrate it against ground truth. Take a sample of outputs, have humans grade them, then check how well the LLM judge’s verdicts agree with the humans (using an agreement statistic like Cohen’s kappa, not raw accuracy, so chance agreement is accounted for). If agreement is high, you can trust the judge to scale; if it’s low, your judge is measuring something other than what you intended, and any downstream number built on it is fiction.

This closes the loop: you use humans to validate the judge on a small sample, then use the validated judge to evaluate at scale. The judge doesn’t replace human evaluation — it amortizes it. And you should re-validate whenever the task or the judge model changes, because a judge calibrated for one domain can silently drift on another. An LLM judge you’ve never checked against humans is not an eval; it’s a vibe with a number attached.

Key takeaways

Further reading

Sources & References

LLM judges' agreement with humans and their biases