How to Build an LLM Evaluation Set That Is Worth Trusting
The practical method — where the cases come from, how to adjudicate them, and how to validate a model-as-judge before you trust its numbers.
In short
A useful evaluation set comes from your own history, not from synthetic examples. The method is: sample real cases to match your actual distribution, adjudicate correct outcomes with someone who knows the domain, break scores out by category rather than reporting one average, pick a scoring method per case type, and validate any model-as-judge against human labels before trusting it. Two to three hundred cases is usually enough to start, and the whole exercise takes about a week.
If we could enforce one practice on every AI project, it would be this one. An evaluation set is what turns “this feels better” into a number, and without it a system cannot be improved deliberately — only changed and hoped about.
Here is the method we use, which takes roughly a week.
Step 1: Take the cases from your own history
Your company already has a labelled dataset. It is just not formatted as one.
Support transcripts with their resolutions. Tickets that were closed. Applications that were approved or declined. Documents that were coded. Cases that were adjudicated. Each of these is an input with a known outcome, produced by a human who was accountable for it.
Pull from that. Specifically:
- Sample to match your real distribution. If 40% of your tickets are order status, 40% of your evaluation set should be too. A set weighted toward interesting cases produces numbers that do not predict production behaviour.
- Include the tail. The awkward, ambiguous, multi-issue cases are where systems fail, and they are exactly what a hand-picked set omits.
- Include cases a human got wrong, labelled with what the right answer was. These are disproportionately valuable, because they are the cases where the process itself is hard.
- Include cases with no answer. Questions your corpus does not cover, requests outside scope. Refusal has to be scored as a correct outcome or the system learns to always answer.
Step 2: Adjudicate with someone who knows the domain
An engineer cannot decide what the correct outcome is for a clinical coding question or a credit exception. Sit with the person who does this work and agree, case by case, what a correct response looks like.
Two things reliably happen during this exercise, and both are valuable beyond the evaluation set:
You discover cases where two experienced people disagree. Those are not evaluation cases — they are a signal that the process has no defined correct answer, and automating them means automating inconsistency. We have recommended excluding whole categories on this basis.
You discover the criteria that were never written down. Someone explains why this case resolves differently from that one, and you are hearing policy that exists only in practice.
Step 3: Break the scores out by category
A single aggregate accuracy number is close to useless. It hides the thing you need to see.
If your set has eight categories and one of them regresses badly while the others improve slightly, the average moves a fraction of a point and you learn nothing. Report per category, and set thresholds per category.
Step 4: Pick the scoring method per case type
Not everything needs the same scorer:
- Structured extraction — exact match or schema validation. Deterministic, cheap, unambiguous.
- Retrieval — recall and precision at k, scored against the passages that genuinely contain the answer. Measured independently of the final answer.
- Refusal — did the system correctly decline when it should have.
- Open-ended text — a model-as-judge against a rubric, which needs the next step.
Step 5: Validate the judge before trusting it
This is the step most often skipped, and skipping it invalidates everything downstream.
An unvalidated judge produces numbers that look like measurement and correlate with nothing. Before relying on one:
- Have humans label a sample of outputs against the same rubric.
- Measure the judge’s agreement with those labels.
- If agreement is poor, the rubric is ambiguous — rewrite it and repeat.
When the judge disagrees with your domain experts, the rubric is wrong, not the experts. Fix it until agreement is high enough that you would act on the judge’s verdict.
Step 6: Gate the deploy with it
Evaluation that runs manually gets skipped under deadline pressure. Make it run on every pull request and block the merge when a category score drops past threshold.
This is not a novel practice. It is how you already treat unit tests. The only reason AI changes are commonly exempt is that the tooling arrived later.
Step 7: Keep feeding it from production
The set reflects the traffic that existed when you built it. Six months on, real usage has moved.
Sample live traffic continuously, score it, and feed the interesting cases — especially the failures — back into the set. An evaluation suite nobody maintains stops being true within a quarter, which is why we insist on naming an owner for it before handover.
What this costs and what it returns
A week of work, mostly adjudication time from a domain expert.
What it returns: the ability to compare two prompts, evaluate a new model version in an afternoon, detect a regression before a customer does, give a compliance reviewer a number instead of a reassurance, and improve the system deliberately rather than by trial and error. It is the cheapest leverage available in an AI project.
Written by
Leverge Engineering
The engineers who build and operate Leverge's client systems. Everything published under this byline comes out of work that shipped to production, including the parts that did not go to plan the first time.
- Agent architecture and orchestration
- Retrieval-augmented generation
- LLM evaluation and regression testing
- Production LLM observability
- Cost and latency optimisation
Topics
- evaluation
- LLMOps
- testing
- quality
Frequently asked questions
How many evaluation cases do we need?
Can we use synthetic data for evaluation?
How do we validate a model-as-judge?
How often should the evaluation set be updated?
Related reading
- Evaluation & observabilityEvaluation suites, regression gates and production tracing that turn AI quality from an opinion into a number you can defend.
- RAG developmentRetrieval systems that answer over your own data with a citation for every claim, and a retrieval score you can actually measure.
- Why AI Agents Fail in ProductionSix failure modes that account for almost every agent project we have been called in to rescue, and what actually prevents each one.