Guide

The set of examples that decides what ships

July 25, 2026

A golden dataset is real inputs paired with outputs a human confirmed are correct. It is the fixed reference every prompt change gets scored against, and without one you cannot say whether today's edit made the system better or worse. This guide covers what counts as verified, how many rows are enough, what a verified set is measurably worth, and which features genuinely do not need one.

What it actually is

Two properties, and both of them do work. The inputs are real, taken from traffic your system already handled, because inputs you write yourself test the cases you thought of. The outputs are human-verified, because the set exists to judge a model and a model cannot be the judge of itself.

That second property is the one teams quietly drop, and it is the one that matters. The useful way to think about a row is to ask what confirmed it. That answer sorts every row you have into three tiers, and each tier can carry a different weight of decision.

What confirmed the row, and what that lets you do

Raw

Captured from production, or generated from a task description.

Nothing on its own. It is the queue a human works through.

Silver

A curated file someone uploaded, or output that passed deterministic checks.

Prompt optimization can score against it, alongside gold.

Gold

A person who knows the task confirmed this exact output is correct.

Training a model, and every gate that decides what serves traffic.

The tiers Apprentice uses. Only the gold tier gates a decision about production traffic. Rows move up one at a time, by review, and never automatically.

The names are not ours. The silver-to-gold promotion pattern, where machine-produced rows wait in a lower tier until a subject-matter expert signs off, is roughly where the evaluation tooling ecosystem landed. What differs between products is how strictly the line is held. Ours is held in code: the training endpoint reads gold rows only, and a silver row cannot reach it no matter how confident anyone is about the file it came in on.

What a verified set is worth

One number makes the case better than any argument. In our public benchmark, receipt extraction on 200 real scanned receipts scored by field-level F1 on a 60-row held-out slice, the same 4B open model scores twice as well with a verified set behind it as without one.

Qwen3.5-4B, no fine-tunethe honest raw floor42.5
GPT-4o-mini, the prompt a developer would write72.9
GPT-4o-mini, prompt optimized against verified rowsthe prompt changed, the model did not84.2
Qwen3.5-4B, fine-tuned on 140 verified examplessame 4B model as the first row89.2

First and last rows are the same model. The difference between them is 140 verified examples. The middle pair is the same model twice with a different prompt, where the verified rows bought +11.3 without touching the model at all. Sixty held-out rows is a modest eval, so treat the exact figures as directional and rerun them yourself from the benchmark repo. The point is not the decimal places. It is that the leverage sat in the data, not in the model choice.

This is the part that surprises people. The instinct when quality is short is to reach for a bigger model. The measured answer on a repeatable task is usually that a small model plus verified examples beats a large model plus a hand-written prompt, and costs a fraction of it.

The features that genuinely do not need one

Almost every article on this subject tells you everyone needs a golden dataset. That is not true, and the exceptions are worth naming because trying to build one for the wrong feature wastes a quarter.

  • Anything with no correct answer. Creative writing, brainstorming, open-ended chat, tone rewriting. There is no output a reviewer could mark "correct", so a set of correct outputs cannot exist. These need preference data instead: a human choosing between two outputs. That is a different instrument measuring a different thing, and calling it a golden dataset confuses both.
  • Genuinely one-off work. A prompt you will run twice does not justify the review effort. The threshold is repetition, not importance.
  • Features still being explored. Before you know what the task is, a verified set locks in a definition of correct that you are about to change. Explore first, then capture.

Everything else needs one. Classification, extraction, routing, moderation, triage, tagging, data cleaning, structured generation: all of them have a right answer, all of them run repeatedly, and for all of them the alternative to a verified set is somebody reading a handful of outputs and forming an impression. That is the loop the industry has taken to calling a vibe check, and it fails in a specific way. It does not miss the outputs that are obviously broken. It misses the ones that are confident, well-formed, parseable, and wrong.

How many rows

The honest answer is that it depends on what the set has to decide, and the range is narrower than most teams fear.

  • To move a prompt: a few dozen. Enough to see whether a change helped. A hosted Apprentice run requires at least 20 verified rows, and that floor is deliberately low so a team can get a first real number in an afternoon rather than a quarter.
  • To trust a comparison: one to five hundred. Published guidance clusters here. Below about a hundred the confidence interval is wide enough that small differences mean nothing; above five hundred each extra row buys less than it costs to maintain.
  • To let something else serve traffic: hundreds, all gold. Hosted training requires at least 500 human-verified gold rows, and the promotion gate reads gold rows only. Silver never counts here. The gap between the two floors, 20 and 500, is the difference between improving something and replacing it.

Those two floors are what the hosted API enforces. The keyless local CLI is looser on purpose so you can try the loop in ten minutes: optimize --local runs on as few as two rows. It will give you a number. Two rows cannot give you a trustworthy one, so read the floors above as the honest guidance rather than as the only thing stopping you.

Coverage matters more than count. A hundred rows spanning every failure mode you know about is worth more than a thousand rows of the same easy case, and it is cheaper to review.

Building one without stopping the world

The reason most teams do not have a golden dataset is not that they disagree with any of the above. It is that building one sounds like a labeling project, and nobody has a quarter for a labeling project. It is not one. Five steps, and the third is the one that makes it possible.

  1. Capture real traffic, not test cases. Log the exact input and output of the LLM calls you already run in production. This costs nothing in judgment: no one has to decide anything yet. Invented test cases test your imagination; captured traffic tests your task.
  2. Have the right person verify, not the available person. The reviewer has to be someone who can tell a correct output from a plausible one. Often that is the support lead or the analyst downstream, not the engineer who wrote the prompt. The engineer knows what the prompt was supposed to do, which is exactly the wrong knowledge for this job.
  3. Verify a few dozen rows, then stop and measure. Do not book a labeling project. Verify enough to run one scored comparison, look at the result, and let the result tell you whether more rows are worth it. Teams that plan a thousand-row effort up front usually deliver zero rows.
  4. Hold a slice out and lock it. Split before you tune, not after. The held-out slice is the only part of the set that can honestly answer whether a change helped, and it stops being able to answer the moment anything trains on it.
  5. Top it up from the failures. The rows worth adding next are the ones your current setup got wrong. A verified set that grows along its own failure modes gets sharper per row; one that grows randomly mostly gets bigger.

Four ways teams fool themselves

Each of these produces a number. That is what makes them dangerous: a number that feels like measurement but is not.

01

Grading the model with a model

A judge model scoring the outputs of another model is convenient and it is circular. Both share training data, blind spots, and a taste for confident prose. Use a deterministic metric where the task allows one: exact field match, JSON field F1, accuracy per class. Apprentice will not let a judge metric gate a model promotion for exactly this reason; it accepts one as advisory and blocks it at the gate.

02

Treating the file you uploaded as verified

The spreadsheet was assembled by a careful person, so it feels verified. It is not. Nobody confirmed these outputs against this task, and hand-assembled files skew toward remembered cases rather than the boring middle of production traffic. That is a fine set to tune a prompt on and a bad set to bet a rollout on.

03

Scoring on the rows you tuned on

The most common way to report a gain that does not exist. If the optimizer saw the row, the score on that row is a measure of memory. Hold a slice out before any tuning starts and never let anything touch it. Every number on this site comes from a held-out slice for this reason.

04

Building it once

Your inputs move. New customers write differently, a new document layout appears, a provider revises the model behind the same API name. A set built last quarter slowly stops representing the task. Top it up from real traffic on a schedule, and treat a set nobody has touched in six months as evidence about last quarter.

Where Apprentice fits

Apprentice is the loop above as a product. Two lines of SDK capture your production calls, and captured rows land as raw. Your team verifies rows in a review queue, and a verified row becomes gold. You can invite the person who actually knows the task, a support lead or an analyst, to review without giving them anything else. If you are starting from nothing, Apprentice can generate a starter set from your task description and prompt, and those rows land as raw like everything else: generated data never counts until a human confirms it.

From there, verified rows drive the two things worth doing with them. Prompt optimization scores rewrites against gold and silver and reports the before and after on a held-out slice. Training reads gold only, and the promotion gate reads gold only. A run that does not improve the score is reported exactly as it came out.

Two things we are careful to state plainly. Promotion is currently recorded rather than routed: the gateway that moves live traffic to a promoted model is being built, and every surface says so until it ships. And if you run the CLI locally with your own CSV, those rows are treated as gold because you asserted they are. That escape hatch exists so you can try the loop in ten minutes without an account, and it moves the responsibility for the word "verified" onto you.

Next: which surface to start with, and why prompts get worse over time. Or see every guide.

Common questions

What is a golden dataset?

A golden dataset is a set of real inputs paired with outputs a human has confirmed are correct. Real inputs, because inputs you invent test your imagination rather than your task. Human-confirmed outputs, because the whole point is to have one thing in the loop that was not produced by the model you are trying to judge. It is the fixed reference every prompt change, model swap, and fine-tune gets scored against.

How many examples does a golden dataset need?

It depends on what decision the set has to carry. A few dozen verified rows is enough to move a prompt and see whether the change helped. A promotion decision, meaning you are about to let something else serve real traffic, needs hundreds. Published guidance clusters around 100 to 500 verified examples, and Langfuse suggests 100 to 1000 for a continuous integration gate. Apprentice enforces this split in code on its hosted runs: prompt optimization needs at least 20 verified rows, and training a model needs at least 500 human-verified gold rows. The keyless local CLI is deliberately looser so you can experiment, which means it will happily score a set too small to trust.

Can I use synthetic or LLM-generated data as a golden dataset?

You can use it to fill coverage gaps, never as the ground truth itself. If a model generated both the answer and the grade, the score measures the model's self-consistency and nothing else. Generated rows have to pass through a human before they count. In Apprentice, rows generated from a task description land in the raw tier and become gold only after a person reviews them, which is the same silver-to-gold promotion pattern the industry converged on.

Is a spreadsheet of examples a golden dataset?

Not yet. A curated spreadsheet is a strong starting point, but nobody has confirmed those specific outputs are right for this specific task, and curated files usually carry the cases someone remembered rather than the cases production actually sends. Apprentice files uploaded rows as silver: good enough to optimize a prompt against, not good enough to gate a promotion. They become gold one at a time as a human confirms them.

Which AI features do not need a golden dataset?

Ones where no correct answer exists. Open-ended chat, creative writing, brainstorming, and anything judged on taste cannot have a set of verified correct outputs, because correctness is not the property being measured. Those need preference data, meaning humans ranking one output against another, which is a different instrument. Genuinely one-off prompts do not need one either. Everything with a right answer, which is most production AI work, does.

What is the difference between a golden dataset and a training set?

Purpose, and how strictly each is guarded. A training set optimizes for volume and coverage and can tolerate some noise. A golden dataset optimizes for correctness, because it is the thing that decides what ships. The critical rule is that a slice of it is held out and never used for tuning. A score measured on rows the prompt was tuned on flatters; a score on rows it has never seen informs.

Sources

  • Langfuse, "Golden dataset evaluation: build and maintain LLM test sets" (dataset size for CI gates, expert review as the source of gold). langfuse.com
  • Klu, "What is a Golden Dataset?" (definition, expert labeling, 100 to 500 range). klu.ai/glossary/golden-dataset
  • Ma et al., "(Why) Is My Prompt Getting Worse? Rethinking Regression Testing for Evolving LLM APIs" (prompts regressing across provider model updates). arxiv.org/abs/2311.11123
  • Apprentice public benchmark (data prep, optimization and fine-tuning runs, all scores on this page). github.com/singhabhishekkk/apprentice-benchmark
Apprentice
© 2026 Apprentice · Eval-gated LLM replacement