Skip to content

AI, decoded

What is LLM-as-a-judge, and when can you trust it?

LLM-as-a-judge uses one language model to score the output of another against a rubric — is this answer relevant, grounded, complete, safe. It scales evaluation past what humans can read by hand. You can trust it when you've calibrated it against human judgments on your own data, given it a concrete rubric, and kept a person in the loop for the high-stakes calls. Used blind, it inherits the same biases as the model doing the grading. Scaled Cognition CTO Dan Klein told Chain of Thought that a model and its checker fail on exactly the same hard cases, so an 80%-right model checking an 80%-right model gets to about 82%.

· Updated · Chain of Thought

Level 4: How AI systems are built · 4.4 Evaluation and observability in practice

AI Evaluation & ReliabilityAI Observability

  • 5 episodes
  • 4 guest clips
  • 8 glossary terms
A rubric sheet with checkboxes for grounded, relevant and complete, an unfilled score of question-mark out of 10, and a gavel, beside the question: who judges the judge? Calibrate it against people.

In detail

The problem it solves

You cannot have humans read every response an AI system produces in production. There are too many, and they arrive too fast. LLM-as-a-judge fills that gap: a second model reads each output and scores it against a rubric — relevance, factual grounding, completeness, tone, safety — so you can score more outputs or sample systematically. The judge’s score still needs validation.

Why a rubric matters more than the model

A judge is only as good as what you ask it to check. “Rate this 1-10” produces noise. A judge that checks specific, named criteria — “is every claim supported by the retrieved context,” “does it answer the question that was asked” — produces a signal you can act on. The rubric is where your definition of “good” lives.

Where it breaks, and the guardrail

A judge model carries its own biases. It can favor longer answers, prefer its own phrasing, or wave through a fluent answer that is wrong. The fix is calibration: score a batch by hand, compare to the judge, and adjust until they agree on your data. Then keep humans on the decisions that matter most. The judge handles volume; people handle the cases where being wrong is costly.

Who calibrates matters when the domain is specialized. MongoDB’s Rachelle Palmer used medical applications as the high-risk example in episode 14 at 27:27. An engineering team can’t tell whether a diagnosis is right, so it needs a partnership with a doctor, nurse or physician assistant to prove the application is accurate (27:57). From there, she says, teams can have the LLM “act as a judge against itself with that subject matter expertise,” for example through fine-tuning or repair loops in which models play different roles (28:24). MongoDB’s own repair loop, described at 40:52, keeps fixing generated code against a custom evaluation metric, and a human steps in when it can’t reach the score (41:20). The episode aired in season two, which Galileo sponsored while Conor worked there; Galileo CTO Atindriyo Sanyal co-hosted (0:22).

Try it: a minimal judge and calibration loop

For a retrieval-based assistant, a workable start is two separate checks: is every factual claim supported by the retrieved context, and does the answer address the question asked. Keeping them separate tells you which part failed. Then:

  1. Write the failures into the rubric first. Collect answers your system could get wrong on your data: one that invents a detail missing from the context, one that is accurate but misses the question, and an honest “I can’t answer from this.” Decide how a reviewer should label each, including whether that abstention passes.
  2. Ask for a pass/fail decision and a reason per criterion. A binary call is easier to check against people than a 1-10 score, and the reason shows you where the judge misread the rubric.
  3. Calibrate against people. Have qualified reviewers label a batch without seeing the judge’s verdicts. Measure agreement per criterion, and read every case where the judge passed an answer a human failed.
  4. Keep the labeled batch. Re-run it whenever the judge model, the prompt, or the rubric changes.

Illustrative sketch, not production code. The first function builds the judge prompt. The second compares the judge with human labels, where judge stands in for a function that sends that prompt to a model and parses the JSON it returns.

def judge_prompt(question, context, answer):
    return f"""Grade the answer using the question and retrieved context.

grounded: Pass only if every factual claim in the answer is
supported by the context. Do not fill gaps from your own knowledge.

answers_question: Pass if the answer addresses the question asked.
When the context is insufficient, an explicit abstention may pass.

Ignore answer length and phrasing unless they change the meaning.
Return only JSON with keys "grounded" and "answers_question".
Each value must contain "pass" (boolean) and "reason" (string).

Question: {question}
Retrieved context: {context}
Answer: {answer}"""


CRITERIA = ("grounded", "answers_question")

def calibrate(rows, judge):
    # rows: labeled cases, with a human pass/fail per criterion
    if not rows:
        raise ValueError("Provide human-labeled rows")
    tally = {name: {"agree": 0, "false_pass": 0} for name in CRITERIA}

    for row in rows:
        verdict = judge(row["question"], row["context"], row["answer"])
        for name in CRITERIA:
            judge_pass = verdict[name]["pass"]
            human_pass = row["human"][name]
            tally[name]["agree"] += judge_pass == human_pass
            tally[name]["false_pass"] += judge_pass and not human_pass

    return {
        name: {
            "agreement": counts["agree"] / len(rows),
            "false_passes": counts["false_pass"],
        }
        for name, counts in tally.items()
    }

Pick the agreement bar that fits the cost of a mistake, and write down why you chose it. Watch false passes, where the judge approves an answer a person rejected: in many applications they cost more than false alarms.

Chip Huyen’s example from the GenAI evals panel shows why the rubric needs more than correctness. She pointed to a LinkedIn case study of a job-fit assistant: asked whether a candidate was a good fit for a role, the bot could reply “No, you’re a terrible fit.” The answer was correct, and it was still a bad response. She also warned that judge scores like coherence and relevancy get reported as if they were exact, when they are “very highly dependent on the models you use, on the prompt you use for the judge.” (28:00)

The last stretch of accuracy depends on context only you have. Galileo CEO Vikram Chatterji calls taking an LLM judge from 75% to 95% accuracy the “last mile measurement problem.” The missing accuracy comes from context the model never saw in training: that “CC” means credit card in your company’s parlance, say, or a bank’s internal policies. Have someone who knows the domain review the ambiguous labels and write those rules into the rubric.

Agreement alone can hide the dangerous mistakes

Illustrative calibration set: people label 80 answers acceptable and 20 unacceptable. A judge that passes every answer achieves 80% agreement while missing every bad answer. On those labels, its bad-answer detection rate is zero. That is why the calibration sketch above tracks false passes, rather than reporting agreement alone.

Inspect false passes and false alarms separately for each criterion and failure category. Keep a held-out labeled set that was not used to revise the rubric. A judge that works for tone may still miss wrong policy exceptions. An abstention rule also needs both missing-context cases and answerable cases; otherwise “I don’t know” can win by avoiding the task.

Probe the judge’s shortcuts

The MT-Bench judge study documents position, verbosity and self-enhancement biases in the studied models. For a pairwise comparison, swap the presentation order and inspect changed verdicts. For a groundedness check, include a fluent unsupported answer and a short accurate one. The research does not establish that every current judge has the same error rate; run these probes on your own judge.

Treat the candidate answer as untrusted content. Include an answer that tells the evaluator to award a pass. Delimit the evidence and answer, but verify resistance through testing; formatting alone does not create a security boundary. Use deterministic checks for permissions and recorded actions before asking a judge about communication quality.

Check yourself

Which is more useful for your release: a judge’s 90% agreement score or the list of cases it falsely approved? You need both, plus the cost of those errors. Choose the gate from the product’s requirements before tuning to it, and recheck when the model, rubric or dataset changes. Continue with testing an AI system to separate exact contracts from language judgments.

How LLM-as-a-judge works, and when you can trust it Every output from your AI system goes to a judge model that scores it against a rubric of specific, named criteria, such as whether every claim is supported by the retrieved context and whether it answers the question that was asked, so you get a quality signal on everything. A vague "Rate this 1-10" produces noise. Trust comes from a calibration loop: score a batch by hand, compare with the judge, and adjust until they agree on your data. High-stakes calls still go to a person. Used blind, a judge can favor longer answers, prefer its own phrasing, or wave through a fluent answer that is wrong. A model that grades a model The judge handles the volume. Calibration and people decide whether to trust it. EVERY OUTPUT Too many responses, arriving too fast for humans to read them all by hand. JUDGE MODEL + RUBRIC The rubric is where "good" lives Is every claim supported by the retrieved context? Does it answer the question that was asked? A SCORE on everything, not just a sample vs. "Rate this 1-10", which produces noise CALIBRATE IT ON YOUR DATA Score a batchby hand Compare withthe judge Adjust untilthey agree repeat HIGH-STAKES CALL? A person decides. Where wrong is costly Used blind, the judge inherits its own biases. It can favor longer answers, prefer its own phrasing, or wave through a fluent answer that is wrong. Episodes 5, 46 and 57 on GenAI evals.
The judge handles the volume; a concrete rubric, calibration against human scores on your own data, and a person on the high-stakes calls are what make it trustworthy. Download the image

Hear it from the guest

“Sometimes we just get lazy because we have to explain what it is and we'll just skip the step and hoping AI judges will figure it out and it doesn't quite go that way.”
“But instead it's the last mile context, which you have as an organization. It's about your use case, your organization, your context, and no LLM on the planet can have all of that.”
“When you have a hard instance, the model and the checker are going to fail in exactly the same cases. So 80% checking 80% is going to be like 82%.”
Watch on YouTube
“What is needed in these areas of very high risk is a tight partnership between engineering that's building the applications and the subject matter experts who can proof the outputs of an LLM.”

Quotes lightly edited to remove filler words.

Go deeper

From the conversation

This explainer is drawn from these episodes — each carries its full transcript.

Concepts in this explainer

Pairwise EvaluationLLM as a JudgeLarge Language ModelAccuracyAI EvaluationGenerative AIFaithfulnessFine-Tuning