Vibe Engines
YouTube

Vibe Engines is free, interactive AI engineering & system design — runs in your browser. Pick a learning path

System Design

Design an Eval Pipeline

Step 1 / 9

Learn system design by building the evaluation pipeline an enterprise AI deployment is judged on.

The numbers to beat100–300casesstratifiednot uniformfrozenversion-controlled

The whole design, in writing

Every step of the build above, written out: the problem each piece solves, the option that was taken and the ones that were not, the numbers, and how it fails in production.

The big idea

What is an enterprise eval pipeline?

A customer says the system “should be accurate”. That sentence is not a specification — it is the opening of a negotiation you will have again in six months, under worse conditions, when they are unhappy and you are holding a number nobody agreed to.

Build the measurement before you build the promise: a frozen golden set, a ceiling derived from how often the customer’s own experts agree with each other, a calibrated judge to grade at volume, a CI gate that blocks merges, and a drift monitor so the whole thing stays true after launch.

Step 1 · The skeleton

Run the system on some cases

The naive version: an engineer changes a prompt, tries five examples by hand, decides it looks better, and merges. It works until the change that improved those five broke forty others — and nobody finds out until the customer does.

Engineeropens a PREval Runnerruns the set
New in this step: Engineer, Eval Runner.

Stand up an Eval Runner that executes the system against a fixed set of cases and records what happened. Everything after this makes those runs comparable, trustworthy, and consequential.

Why this piece earns its place

The first thing this runner will tell you is that the system does not give the same answer twice. Sampling, retrieval order, a provider that quietly reroutes you — run the same cases against an unchanged system and a handful of results flip. That variance is the noise floor, and until somebody measures it every difference in score is ambiguous: you cannot tell a real improvement from a rerun. So before anything depends on these numbers, pin what can be pinned — sampling down, seeds where they exist, the retrieval index frozen — then run the unchanged system against the set repeatedly and record how far the overall score and the per-case results move. That band is what the later steps are allowed to call a change. It also fixes the honest resolution of the whole pipeline: if an unchanged system swings further between runs than the improvement someone is claiming, no threshold can defend that claim, and the fix is more cases or less sampling rather than a stricter rule.

What the new pieces do

Engineerclient
Anyone changing the system — a prompt edit, a retrieval tweak, a model upgrade. Every one of those is a measurement change, and none of them feels like one at the time.
Eval Runnerbackend
Executes the system under test against every case, deterministically, recording the output, the retrieved sources, the model version, the prompt version, latency and cost per case.

Step 2 · The set

Golden set: real, stratified, frozen

If the cases change between runs, no two numbers can be compared. And if you sample them uniformly, the rare high-cost cases — the ones that actually cost the customer money — barely appear, so the score is dominated by the easy majority.

Golden Setfrozen · stratifiedEval Runnerruns the set
New in this step: Golden Set.

You have 9,000 real cases and want a golden set. What do you build?

  1. Random sampling under-represents the rare, expensive cases, and refreshing it means no two runs are comparable. You would have built a number that moves for reasons nobody can attribute.

  2. Cost and latency per run make this unusable in CI, and — more importantly — most of those cases have never been checked by anyone who knew the right answer. Volume is not the constraint; label quality is.

  3. Small enough to run on every PR, stratified so the expensive tail is visible, and frozen so scores mean the same thing next quarter. Every case checked by someone who knew what they were doing.

Build a Golden Set of 100–300 real cases, stratified so rare high-cost classes are over-represented, frozen under version control, with every case labelled by someone who knew the answer.

Why this piece earns its place

Stratification is the right call, and it quietly breaks the headline number. Once the rare high-cost classes are over-represented, the overall score stops being an estimate of what the customer will experience in production — it is the score on a set deliberately built to be harder than reality. That is fine right up until someone reads it as an accuracy claim, which someone always does, usually in a slide. So keep the strata visible: report each class as its own number, and when a production-like figure is genuinely needed, reweight the classes back to their real frequencies rather than averaging the set as it stands. The tilt is a knob with a cost in both directions. Too little and the expensive tail is averaged away by the easy majority, which is the failure this step exists to fix. Too much and the rare class dominates a score that barely moves for real users — at which point engineers learn the number is not about them and stop reading it. Tilt until the expensive class can visibly move the result, then stop.

  • 100–300cases
  • stratifiednot uniform
  • frozenversion-controlled

What the new pieces do

Golden Setdata
Real, agreed-correct cases under version control, stratified so rare high-cost cases are over-represented. Typically 100–300. Changing it is a decision with a reviewer, not a fix for a failing test.

Back of the envelope

real cases
from work the customer already did
stratified
rare high-cost classes over-represented
frozen
edits are reviewed decisions

Step 3 · The ceiling

Measure how often two experts agree

Someone in a sales meeting said 95%. Nobody knows whether 95% is easy, hard, or impossible for this task — because nobody has measured how often two humans doing the job give the same answer. Without that, every later conversation about quality is an argument between opinions.

Golden Setfrozen · stratifiedHuman Ceilingexpert agreement
New in this step: Human Ceiling.

Before promising an accuracy target, what is the single cheapest thing to measure?

  1. Public benchmarks measure a different distribution with different labelling conventions. They tell you nothing about whether 95% is achievable on this customer’s cases, which is the only question that matters here.

  2. One afternoon of work, and it establishes the practical ceiling. It also produces something more valuable: the cases they disagree on are the rules nobody had written down.

  3. Useful for the ROI story later, and it says nothing about achievable quality. You would still be promising a number with no evidence that it is reachable.

Have two experts label the same 40 cases independently, then measure agreement. That rate is your ceiling, and the targets go into the contract relative to it: “match or exceed the 72% expert baseline, with under 2% in the high-cost error class”.

Why this piece earns its place

The cheaper version of this is one senior expert writing the answer key alone, and it loses for a reason that is easy to miss. One labeller produces labels but no ceiling — and no way to separate a genuinely ambiguous case from a clear one. Afterwards every case the system failed looks identical: wrong. Two people labelling the same cases independently produce a third category, the cases that experienced practitioners genuinely split on, and that category is where most of the later argument about quality actually lives. A second labeller also protects you from the specific failure of one person having house rules nobody else follows, which turns the whole exercise into a measurement of that person rather than of the task. The cost is real — two experts’ time on the same cases instead of twice the coverage — but it is an afternoon, and it is the only version that produces a number you can defend in a contract instead of an opinion you have to keep re-arguing.

  • 40 casesone afternoon
  • 2 expertsindependently
  • the ceilingnot 100%

What the new pieces do

Human Ceilingservice
Two of the customer’s own experts label the same 40 cases independently. The rate at which they agree is the practical ceiling — and the number every later quality argument rests on.

Back of the envelope

target relative to the human baseline
not a round number
separate cap on high-cost errors
costs are asymmetric
disagreements resolved
become the written rule

Step 4 · Grade at volume

An LLM judge, reported with its calibration

Humans cannot grade 300 cases on every pull request. An LLM judge can — and an uncalibrated judge produces confident numbers that nobody should act on, because you cannot tell a real regression from a judge quirk.

Golden Setfrozen · stratifiedEval Runnerruns the setHuman Ceilingexpert agreementLLM Judgegraded + calibrated
New in this step: LLM Judge.

Add an LLM Judge that receives the rubric verbatim, is blind to which system produced the output, uses a small discrete scale, and is pinned to a model version. Then grade the same cases with humans and report the agreement rate beside every score.

Why this piece earns its place

Agreement is not a property the judge has once. It is measured on outputs from the system as it was on the day you measured it, and the system under test is precisely the thing that keeps changing — a rewritten prompt moves the outputs into shapes the calibration sample never contained. So treat the figure as perishable: re-measure it against a fresh human-graded sample on a cadence, and always after a judge model change or a substantial change to the system being graded. The second rule is to refuse to report it as a single number. Judges tend to agree with humans almost perfectly on the easy majority and worst on exactly the rare, contested, expensive cases, so a healthy overall agreement rate can sit on top of a judge that is close to guessing where it matters most. Report agreement per case class, because the high-cost class is the one the gate’s error budget rests on, and that is the number that has to be trustworthy.

  • rubric verbatimnot paraphrased
  • blindto system identity
  • pinned versionupgrades are changes

What the new pieces do

LLM Judgeservice
Grades at volume against the rubric verbatim, blind to which system produced the output, pinned to a model version. Its agreement with human grades is reported beside every score it emits.

Back of the envelope

judge agreement reported
beside every score
blind and rubric-faithful
small discrete scale
version pinned
a judge upgrade is a re-baseline

Step 5 · Make it a control

The gate that blocks the merge

Everything so far produces a number. A number in a dashboard changes nothing — the prompt still gets edited on a Friday, the model still gets upgraded, and the regression still ships.

Results Storeper-case historyCI Gateblocks the merge
New in this step: Results Store, CI Gate.

Which assertion catches the failure an overall average hides?

  1. Necessary and insufficient. The average can rise while the rare expensive cases break — which is precisely the failure the customer notices first.

  2. Both belong in the gate, and neither is about correctness. A fast, cheap, wrong system passes this assertion comfortably.

  3. Per-case regression tracking. It is the assertion that earns its keep, because it detects the specific silent breakages that any aggregate metric averages away.

Add a CI Gate backed by a Results Store of per-case history. It asserts the overall score, a high-cost error budget, an empty regression list, and the latency and cost ceilings — on every PR, including every prompt change.

Why this piece earns its place

The interesting failure of a gate is social rather than technical. The first time it blocks something a customer is waiting for, someone asks how to turn it off, and whatever answer exists in that moment becomes the real policy. If there is no override, it gets commented out of the CI config at six in the evening and nobody turns it back on. If the override is one click and leaves no record, the gate is advisory again within a quarter. So design the override deliberately: it exists, it requires a named approver, it records which cases were failing and why shipping anyway was acceptable, and it expires — the failing cases come back as work instead of silently becoming the new baseline. The record is also the most useful signal this whole pipeline produces. Repeated overrides on the same case class rarely mean the team is undisciplined; they usually mean the budget was set against cases the business does not actually consider expensive, and it is the budget that should move.

  • every PRincl. prompt edits
  • regressionsmust be empty
  • error budgethigh-cost class

What the new pieces do

Results Storedata
Every run, every case, every version. This is what makes "which cases used to pass and now fail?" answerable — the question that catches the failures an average hides.
CI Gatecache
Asserts overall score against the human baseline, a high-cost error budget, an empty regression list, and the latency and cost ceilings. Until an eval blocks a merge it is a document, not a control.

Back of the envelope

overall ≥ human baseline
agreed in the contract
high-cost error rate ≤ budget
asymmetric costs
zero per-case regressions
the assertion that saves you
p95 latency + cost per case
quality is not only correctness

Step 6 · Stay true

Drift: the world moves away from your test set

The golden set is a snapshot. Six months later the customer’s document mix has changed, a new vendor sends a different format, and the model provider shipped an update. The gate is still green and the users are still unhappy.

ProductionDrift Monitor
New in this step: Production, Drift Monitor. · swipe to pan the diagram

Sample production continuously and score it. Alert separately on input-distribution drift (the cases changed) and score drift (the answers got worse) — different causes, different fixes. Promote new failure classes back into the golden set as a reviewed decision.

Why this piece earns its place

There is one thing production cannot hand you, and it is the answer key. On the golden set a score compares an output against something a person agreed was correct; on live traffic there is nothing to compare against, so scoring a sample means asking the judge to rate an answer against the rubric with no reference — a weaker measurement that inherits every calibration caveat the judge already carries. That is why the two alerts deserve to be trusted differently, not just separated. Input-distribution drift needs no labels at all: it compares this week’s incoming cases against the production mix recorded at launch — the real class frequencies the golden set is deliberately tilted away from, the same ones you keep in order to reweight a score back to production-like. Baseline it on the golden set’s own stratified shape instead and the first run reports a designed-in gap that never clears. Measured against the launch mix it is cheap, it is solid, and it usually fires first, because the cases change before the answers get worse. Score drift on unlabelled traffic is the softer of the two, and I would treat it as a prompt to go and get real labels on a sample rather than as something to page on directly — which is what makes the one-click correction control in the product a monitoring component, not a nicety.

  • sampledcontinuously
  • two alertsdistribution vs score
  • new classespromoted to golden

What the new pieces do

Productionclient
The customer’s live workload. It is the only source of the cases you did not think of, and the distribution it produces moves away from your test set continuously.
Drift Monitorservice
Scores a continuous sample of live traffic, alerting separately on input-distribution drift and on score drift — they have different causes and different fixes.

Back of the envelope

production sampling
the only source of unknown cases
distribution drift ≠ score drift
separate alerts
user correction control
labels for free

Step 7 · The number that decides

The business view

Your dashboards show F1, judge agreement and p95 latency. The person deciding the renewal does not know what any of those are, and will make the decision anyway — on whatever they can remember.

Results Storeper-case historyCI Gateblocks the mergeBusiness Viewthe agreed number
New in this step: Business View.

Publish one agreed business metric on a fixed cadence, traceable back to eval runs and adoption telemetry rather than to anecdote. Exception-resolution rate. Hours returned. Deflection rate. Whatever they agreed to in step 3.

Why this piece earns its place

The caveat worth saying out loud the first time this number is presented is that it moves for reasons the system does not own. Adoption climbs, a team reorganises, a seasonal peak arrives, a process upstream changes — and the metric moves without anything changing in the model. If the first time that is discussed is the quarter the number falls, it reads as an excuse. So agree the definition in writing before the first report: what is in the numerator, what is in the denominator, which cases are excluded, and what the comparison is — the period before launch, or a group still working the old way. Almost every fight about a business metric turns out to be a fight about the denominator, and it is far cheaper to have that one while everybody is still optimistic. Then keep attribution and correlation separate in the report itself: here is the number, here is the part traceable to eval runs, and here is the part that is not mine to claim.

  • one numberthey agreed to
  • fixed cadencenot at renewal
  • traceableto eval runs

What the new pieces do

Business Viewdata
One metric the customer agreed to, on a cadence, traceable to eval runs and adoption telemetry. This is the artefact the renewal conversation actually turns on.

Back of the envelope

one agreed business metric
in their language
delivered on a cadence
a first review at renewal reads as a sales meeting
traceable to runs
evidence, not assertion

You did it

You just designed an enterprise eval pipeline.

EngineerProductionGolden SetEval RunnerHuman CeilingLLM JudgeDrift MonitorResults StoreCI GateBusiness View
The finished design, end to end. · swipe to pan the diagram

Everything you assembled, in order

  • Measure the human ceiling first — the target is relative to expert agreement, never a round number.
  • Golden set: real, stratified toward high-cost cases, frozen, edited only by reviewed decision.
  • A judge without a reported human-agreement rate is an instrument without a calibration.
  • The gate must assert per-case regressions, not just an average — averages hide the expensive failures.
  • Sample production continuously; alert separately on distribution drift and score drift.
  • Report one agreed business metric on a cadence, traceable to the runs behind it.

Where an interviewer pokes next

Getting the boxes right is the easy half. These are the questions that separate a candidate who drew the diagram from one who has run the thing. Answer each one out loud before you open it.

  1. Why measure inter-expert agreement before promising an accuracy target?

    Because it establishes the practical ceiling, and almost nobody measures it. If two of the customer’s own senior people, labelling the same forty cases independently, agree only 72% of the time, then a promise of 95% is a promise to exceed human performance on a task where the humans themselves do not have a consistent answer — and you will be held to it. Measuring the ceiling costs one afternoon and changes every subsequent conversation: targets become defensible ("match or exceed the 72% baseline, with under 2% in the high-cost class") rather than aspirational. The disagreements are worth as much as the number: the cases the experts split on are the business rules nobody had written down, and resolving them produces the labelling guide, the judge rubric and the acceptance criteria simultaneously.

  2. Why must the golden set be frozen and stratified?

    Frozen, because a set that changes between runs makes every comparison meaningless — the score moves for reasons nobody can attribute, the trend line becomes fiction, and per-case regression tracking stops working entirely. The failure mode is rarely deliberate; it is a case being quietly edited because it was failing, on the reasonable-sounding grounds that it was wrong anyway. Treat any change as a reviewed decision with a recorded reason, exactly like a schema migration. Stratified, because uniform sampling reproduces the production distribution, in which the rare high-cost cases are rare — so the score is dominated by the easy majority and stays green while exactly the cases that cost the customer money break. Over-represent the expensive tail deliberately, and report it as its own number.

  3. What does judge calibration actually mean, and why report it?

    Calibration is the measured rate at which the LLM judge agrees with human graders on the same cases. Without it you have a number with unknown accuracy: you cannot distinguish a real regression from a judge quirk, and the first time a customer disputes a score you have no answer. So grade a subset with humans, publish the agreement rate beside every score the judge produces, and inspect every disagreement — the disagreements usually reveal an ambiguous rubric rather than a bad judge. Practical rules follow from treating the judge as an instrument: give it the rubric verbatim, keep it blind to which system produced the output, use a small discrete scale rather than a continuous one, and pin the model version, because upgrading the judge is a measurement change that re-baselines every historical score.

  4. Why is per-case regression tracking the assertion that matters?

    Because an aggregate can improve while specific cases silently break, and in a domain with asymmetric error costs those specific cases are usually the expensive ones. A prompt change might raise the overall score by two points by handling common cases slightly better, while breaking the handful of rare cases that carry real financial or regulatory consequence — and the average absorbs it invisibly. Keeping per-case history in a results store makes "which cases used to pass and now fail?" answerable, and asserting that list is empty catches the class of failure no aggregate metric can. It is also the assertion that makes engineers trust the gate, because when it fires it points at something concrete rather than at a number that moved.

  5. What breaks first after launch, and how do you detect it?

    The assumption that the test set still resembles reality. The customer’s document mix shifts, a new vendor sends a different format, users start asking questions the system was never evaluated on, and the model provider ships an update — all while the gate stays green. Detection means sampling production continuously and scoring it, with two separate alerts: input-distribution drift (the cases changed) and score drift (the answers got worse). They have different causes and different fixes, and collapsing them into one alert makes both harder to act on. New failure classes found this way get promoted into the golden set as a reviewed decision, which is how the set stays honest without becoming a moving target. In a disconnected or air-gapped deployment none of this telemetry can leave, so the equivalent design is a golden set that lives inside the boundary and is run by the customer’s own operators, with only aggregate scores coming back out.

Check yourself — the answers, and why

Eight steps in, these are the calls you should be able to make cold. Pick one, then read why.

  1. The right accuracy target for a client deployment is set against…

    Promising more than two of their own experts agree with each other guarantees a fight you lose later.

  2. A golden set should be…

    Frozen so scores are comparable; stratified so the expensive tail is visible rather than averaged away.

  3. An LLM judge’s score should always be reported with…

    A judge is a measuring instrument; without a calibration figure the number is not evidence.

  4. Which CI assertion catches the failure an average hides?

    Per-case regression tracking — an average can rise while the rare expensive cases break.

  5. Drift monitoring should alert separately on…

    The cases changing and the answers getting worse have different causes and different fixes.

How you’d open this design in an interview

Before any boxes: agree what it must do, pin the qualities that shape everything, then build — naming each trade-off as you make it. The walkthrough above is that exact order.

What it must do

Agree on these before drawing a single box.

  • Golden set: real, stratified, frozen cases with agreed-correct answers — changed by decision, not by convenience.
  • Ceiling: measure how often two of the customer’s own experts agree, and set the target relative to that.
  • Judge: grade at volume with an LLM, and report the judge’s agreement with humans beside every score.
  • Gate: block the merge on overall score, a high-cost error budget, and per-case regressions.
  • Drift: sample production, detect the distribution moving away from the golden set, and feed new cases back.
  • Report: one number the business agreed to, on a cadence, in the customer’s language.

The qualities that shape everything

Each one names the mechanism that buys it.

A target anyone can defend
Inter-expert agreement measured on 40 real cases before anything is promised — the practical ceiling, and the number every later argument rests on.
Scores that mean the same thing next quarter
A frozen, version-controlled golden set: stratified so rare high-cost cases are over-represented, and changed only by an explicit, reviewed decision.
Grading at volume without lying
An LLM judge pinned to a model version, blind to which system produced the output, with its human-agreement rate reported next to every score it produces.
Regressions cannot merge
A CI gate asserting overall score, a high-cost error budget, and an empty regression list — the third assertion is what catches an average that improved while the expensive cases broke.
Reality moving away from the test set
Sampled production traffic scored continuously, with distribution drift and score drift alerting separately, and new failure classes promoted into the golden set.
The renewal conversation has evidence
One agreed business metric on a fixed cadence, traceable to eval runs and adoption telemetry rather than to anecdote.

The trade-offs you say out loud

Senior signal isn’t the boxes — it’s naming what you gave up and why it was the right price.

A target set against inter-expert agreement over a round number like 95%

Promising accuracy above the rate at which two of the customer’s own experts agree with each other guarantees a fight you cannot win. Measuring the ceiling first costs one afternoon and reframes every subsequent quality conversation — including the ones in the contract.

A frozen, stratified golden set over sampling fresh cases each run

A set that changes between runs makes every comparison meaningless, and uniform sampling under-represents exactly the rare, expensive cases that matter. Freeze it, stratify it, and treat editing it as a decision with a reviewer — not as a fix for a failing test.

An LLM judge with a reported calibration over an LLM judge with a score

A judge is a measuring instrument, and an uncalibrated instrument produces confident numbers that nobody should act on. Grading the same cases with humans and publishing the agreement rate beside every score is what makes the judge’s output evidence rather than decoration.

Per-case regression assertions over an overall average threshold

An average can improve while the rare, high-cost cases silently break — and those are the failures a customer notices. Tracking which specific cases used to pass and now fail is the assertion that earns its keep in a real deployment.

Sampling production continuously over trusting the pre-launch eval

The golden set is a snapshot of a distribution that moves. Without continuous sampling you learn about drift from an unhappy customer, months after the model, the data or the users changed — and by then the argument is about blame rather than about the number.

The answer, out loud

What a strong answer to “Design an Enterprise Eval Pipeline” sounds like, first question to last trade-off. It is about 7 minutes of talking; the whiteboard and the interviewer fill the rest of the 45. Read it aloud once, then close the page and give it yourself.

  1. 0–4 min

    What I am actually building

    The thing I want to avoid is the conversation six months in where the customer says it is not accurate enough and neither of us has a number we both agreed to. So I would build the measurement before I build the promise: a fixed set of real cases, a target that came from evidence rather than from a sales meeting, a way to grade at volume, something that can actually stop a change from shipping, and a way to notice when the world has moved away from the test set. In that order, because each one only makes sense on top of the last.

  2. 4–9 min

    Start with a runner

    The skeleton is a runner. It takes the system exactly as it is right now, executes it against a fixed list of cases, and records what came out — the answer, what got retrieved, which model and which prompt version, the latency and the cost per case. That is all it does, and it already beats what usually happens, which is that someone edits a prompt, tries five examples by hand, decides it reads better and merges. Those five are the cases they were already thinking about, so the change that improved them is the one most likely to have broken the ones they were not.

    Built in step 1: Run the system on some cases
  3. 9–15 min

    The cases, frozen

    Then the cases. If they change between runs nothing is comparable, so the set is frozen and version controlled, and editing it is a reviewed decision with a recorded reason, not a fix for a failing test. Something like a hundred to three hundred real cases the customer has already worked, each one checked by somebody who knew the right answer. Not all nine thousand they have, because the constraint here is label quality rather than volume. And not sampled uniformly — I want the rare expensive cases over-represented on purpose, because a uniform sample is dominated by the easy majority.

    Built in step 2: Golden set: real, stratified, frozen
  4. 15–21 min

    Where the target comes from

    Now the target, and this is the part I would push hardest on. Someone has usually said ninety-five percent in a meeting, and nobody knows whether that is easy, hard or impossible here. So before anything goes near a contract I would take forty real cases and have two of the customer’s own experts label them independently, then measure how often they agree. That rate is the practical ceiling. If it comes back at seventy-two percent, then ninety-five is a promise to beat the humans at a job the humans themselves do not answer consistently. Targets get written relative to that number, with a separate cap on the high-cost errors.

    Built in step 3: Measure how often two experts agree
  5. 21–28 min

    Grading at volume

    Humans cannot grade three hundred cases on every pull request, so an LLM does the grading. I would give the judge the rubric word for word, keep it blind to which system produced the output, use a small discrete scale rather than a continuous score, and pin the model version. Then the part people skip: grade a subset with humans too, and publish how often the judge and the humans agreed right beside every score it emits. Without that figure the pipeline still produces numbers and the dashboards still render, and nobody can tell a real regression from a quirk of the grader.

    Built in step 4: An LLM judge, reported with its calibration
  6. 28–34 min

    The part that can say no

    None of this changes anything until it can refuse something. So the gate runs on every pull request, prompt edits included, asserting the overall score against the baseline we agreed, the high-cost error rate inside its budget, the latency and cost ceilings, and — the one that earns its keep — that the list of cases which used to pass and now fail is empty. An average can climb while the rare expensive cases quietly break, and those are what a customer notices first. Until a pull request actually gets blocked, what you have is reporting, not a control.

    Built in step 5: The gate that blocks the merge
  7. 34–39 min

    After launch the risk moves

    Once it is live the risk shifts. The golden set is a snapshot, and six months later the document mix has changed, a new vendor is sending a different format, users are asking things nobody evaluated, and the provider has shipped a model update — all while the gate stays green and the users are unhappy. So I would sample production continuously and alert separately on the cases changing and on the answers getting worse, since those have different causes and different fixes. New failure classes found that way get promoted into the golden set as a reviewed decision, and I would build the one-click this-was-wrong control into the product on day one.

    Built in step 6: Drift: the world moves away from your test set
  8. 39–43 min

    The number the renewal turns on

    The last piece decides the renewal. Whoever signs it does not know what F1 or p95 latency are and will make the call anyway, on whatever they can remember. So alongside the technical dashboards there is one business metric they agreed to, in their own language — exception-resolution rate, hours returned, whatever it is — on a fixed cadence rather than produced for the first time at the renewal meeting, and traceable back to specific eval runs so that when it is challenged the answer is evidence rather than assertion.

    Built in step 7: The business view
  9. 43–45 min

    The trade-off, and what is left

    So the trade-off. All of this costs delivery speed up front — measuring the ceiling, labelling the set, an eval run on every pull request — and it buys the ability to argue about quality with evidence instead of anecdote later. If a team could only do one piece, I would tell them to measure the expert ceiling, because it is an afternoon of work and it reframes every conversation after it. With more time I would work on making the gate cheap enough that nobody thinks about the cost of running it, and on the tension between a set frozen so scores stay comparable and a world that keeps moving, which I do not think has a clean answer.

What this teaches

Learn system design by building the evaluation pipeline an enterprise AI deployment is judged on. An interactive guide covering a stratified frozen golden set, the inter-expert agreement ceiling that sets the target, an LLM judge reported with its calibration, a CI gate with per-case regression and an error budget, drift monitoring from production, and the executive view that decides the renewal.

Key takeaways

  • Measure the human ceiling first — the target is relative to expert agreement, never a round number.
  • Golden set: real, stratified toward high-cost cases, frozen, edited only by reviewed decision.
  • A judge without a reported human-agreement rate is an instrument without a calibration.
  • The gate must assert per-case regressions, not just an average — averages hide the expensive failures.
  • Sample production continuously; alert separately on distribution drift and score drift.
  • Report one agreed business metric on a cadence, traceable to the runs behind it.

Concepts covered

  • What is an enterprise eval pipeline?
  • Run the system on some cases
  • Golden set: real, stratified, frozen
  • Measure how often two experts agree
  • An LLM judge, reported with its calibration
  • The gate that blocks the merge
  • Drift: the world moves away from your test set
  • The business view
built to turn "it should be accurate" into a gate that blocks a merge — ceiling, judge, gate, drift.
Finished this one? 0 / 65 System Designs done
NextDesign an Agent Harness (AI-Supervised Delivery) Next in “Become a Forward Deployed Engineer” · step 46 of 63

Explore the topic

See this alongside everything else on the same subject — handbooks, system designs, challenges and tools, in one place.

More System Designs