← BlogRemote
Dispatch № 003August MMXXVI

Evals before prompts.

You cannot improve what you cannot measure, and prompt tuning without a golden set is just moving the failures around.

Lede

There is a stage in every agent project where someone is editing a prompt, running one example, deciding it looks better, and moving on. It feels like progress. It is not measurable, and about a third of the time it makes something else worse in a way nobody discovers for weeks.

The fix is unglamorous: write the answers down first.

Building a golden set

A golden set is a list of real cases with agreed correct outputs. Fifty is enough to start; two hundred is comfortable. The rules we work by:

Use real inputs. Synthetic examples are clean in ways your production data never is. The messy scan, the duplicate line item, the vendor who writes dates backwards — those are the cases that decide whether the thing works.

Get the answers from the people who currently do the job. Not from the project sponsor, and not from an engineer's reading of a policy document. The person doing the work knows the exceptions that never made it into the policy, and those exceptions are the specification.

Include the ones that should escalate. A golden set that only contains cases the agent should handle teaches you nothing about the judgement you actually care about. Roughly a fifth of ours are cases where the correct answer is "stop and ask a person."

Write down disagreements. When two experts give different answers to the same case, you have found a policy gap. That is worth more to the client than anything the agent will do, and it should go in the report either way.

The regression that saves you

Once the set exists, every change runs against it. Prompt edits, model upgrades, a new extraction library, a vendor changing their invoice template — all of it goes through the same gate before it reaches production.

This is the part that pays for itself. Model providers deprecate and update; your accuracy can move several points without a single line of your code changing. Without a regression suite you find out from a customer complaint, weeks later, with no way to tell what changed. With one, you find out in CI on the day.

It is the least exciting artifact of the whole engagement and it is the one we would keep if we could only keep one.

Where it goes wrong

The usual failure is building the golden set once and never growing it. Production surfaces cases you did not imagine, and every one of those is a candidate. We treat the exception queue as the intake pipeline for the eval set — a handled exception that is not fed back is a lesson thrown away.