How to evaluate an LLM system

Without evals you are shipping on impressions. Here is how to build a measurement loop that tells you whether a change helped, and why teams now hire for this specifically.

JobsDart Editorial6 min read

Key takeaways

  • Without evals every change is a coin flip whose result is invisible until a user reports it.
  • Cases must come from real traffic — synthetic examples miss the inputs that actually break systems.
  • Prefer deterministic checks; use model grading only where the property is genuinely a judgement.
  • Run them on every change to prompts, context, retrieval or model version, not as a launch ritual.
  • Track pass rate alongside cost and latency, or you will ship correct decisions that are commercially unviable.

Why impressions are not enough

A team without evals ships a prompt change, tries five examples, sees them look better and deploys. Two weeks later a user reports something broken that used to work. Nobody can say when it broke, because nothing was measuring it.

This is the default state of most LLM products, and it is why teams plateau. Every change is a coin flip whose result is invisible. The first evaluation set a team builds usually finds a regression that has been live for a month.

The deeper cost is organisational. Without a number, disagreements about quality are settled by whoever is most senior or most confident, and the team loses the ability to make a decision it can later defend.

What an evaluation set actually is

It is a versioned collection of cases with something checkable about each expected result. Not necessarily an exact expected string — often a property: contains this figure, cites a source, refuses this request, stays under this length, returns valid JSON.

The cases should come from reality. Synthetic examples invented at a desk miss the messy inputs that break systems. Pull from real usage — the awkward phrasings, the ambiguous requests, the ones that previously went wrong.

Include the boring cases as well as the interesting ones. A suite composed entirely of edge cases tells you nothing about whether the ordinary path still works, and the ordinary path is the overwhelming majority of what users experience.

  • Cases drawn from real traffic, including past failures
  • A checkable property per case rather than an exact match
  • Coverage of the boring majority, not only edge cases
  • Version controlled and reviewed like source code
  • Large enough that a single fluke does not move the number

Three ways to grade, in order of preference

Prefer deterministic checks wherever the property can be stated precisely. They are fast, free and unambiguous. A surprising share of what matters is checkable this way: valid structure, presence of a required field, absence of a forbidden claim, length, latency.

Where the property is genuinely a judgement, model-graded evaluation is the practical option — another model scores the output against a rubric. It is useful and imperfect, and it needs its own calibration: periodically check the grader against human judgement on the same cases.

Human review stays necessary for a sample. It is slow and expensive, which is exactly why it should be spent on calibrating the cheaper methods rather than on grading everything.

  • Deterministic — schema, keywords, numbers, structure, latency
  • Model-graded — rubric scoring for tone, relevance, faithfulness
  • Human — a small sample, used to keep the other two honest
Choosing a grading method by what you are checking
PropertyMethodNote
Returns valid JSONDeterministicFree and unambiguous
Cites a source present in contextDeterministicCheck the identifier exists
Refuses an out-of-scope requestDeterministic or gradedDepends how varied refusals are
Answer is faithful to the sourceModel-gradedCalibrate the grader on a sample
Tone is appropriateModel-gradedRubric must be specific
Genuinely useful to a userHumanSample only, to calibrate the rest

Run them as regression tests, not as a launch ritual

The value compounds when evals run automatically on every change to prompts, context assembly, retrieval or model version. Treated as a one-off pre-launch exercise, they tell you about a system that no longer exists.

Wire them into the same pipeline as your tests, keep the history, and look at the trend rather than a single run. A change that improves the average while breaking three previously passing cases is usually not the change you want, and only the per-case view shows that.

Keep the runs cheap enough that nobody is tempted to skip them. A suite that takes forty minutes and costs meaningfully per run gets disabled during a busy week, and a disabled suite protects nothing.

How to start when you have nothing

The blocking belief is usually that a proper evaluation framework is needed first. It is not. Thirty cases in a file, a script that runs them, and a printed score is a working evaluation suite, and it will find something within a day.

Collect the cases from what already exists: the bug reports, the awkward questions from your own testing, the three examples someone pasted in a channel when they said the output looked wrong. Those are real failures and they are already written down.

Add a case every time something goes wrong in production. That single habit is what turns a small suite into a good one over a few months, and it costs nothing at the moment of discovery when the example is in front of you anyway.

The metrics worth tracking alongside quality

Quality alone leads to decisions that are technically correct and commercially unviable. A change that raises accuracy by one point and doubles cost per request needs both numbers visible to be judged properly.

The useful dashboard is small: pass rate on the eval set, cost per request, latency at the tail, and refusal or fallback rate. Four numbers that move together tell you more than twenty that nobody reads.

Refusal rate is the one most often omitted and the most diagnostic. A system that quietly becomes more willing to guess looks better on every other metric while getting worse in the way users actually notice.

Why this is becoming its own job

Evaluation work is unglamorous and decisive, which is a reliable recipe for specialisation. Teams are now hiring people whose primary responsibility is knowing whether the system is getting better — designing eval sets, calibrating graders, investigating regressions.

It is an unusually good entry point. It needs judgement and rigour more than deep ML background, and it puts you at the centre of every shipping decision. If you want into AI engineering without a research CV, this is the most accessible serious door.

It also builds unusual leverage. The person who can say whether a change helped is consulted on every release, learns the whole system quickly, and accumulates the context that later makes them the obvious choice to own a larger part of it.

Frequently asked questions

What are LLM evals in simple terms?

A versioned set of test cases for an AI system, each with something checkable about the expected result, run automatically so you can tell whether a change improved things or broke something that previously worked.

How many cases should an evaluation set have?

Enough that one unusual result does not move the number — typically at least fifty to a few hundred for a focused feature. Coverage of real, ordinary inputs matters more than raw count.

Is it reliable to have a model grade another model?

Usefully reliable when the rubric is specific and the grader is calibrated against human judgement on a sample. It is not a substitute for deterministic checks where a property can be stated precisely.

Is AI evaluation a good career entry point?

Yes, and an underrated one. It rewards rigour rather than research background, and it places you in every release decision — which builds influence and system knowledge quickly.

Do I need an evaluation framework to start?

No. Thirty cases in a file, a script that runs them and a printed score is a working suite, and it will usually find something on the first day.

Which metric do teams most often forget?

Refusal rate. A system that quietly becomes more willing to guess improves on every other number while getting worse in the way users actually notice.

Further reading

Check this against your own resume

Scan your CV against a real job description, or build a parse-safe one from scratch. Your first scan costs nothing.

Keep reading

Referenced in these guides

All career guides