Start, screen 1 of 2
Start from the agent
Selecting an agent shows its datasets, each with machine and human progress, so curation begins from context instead of a blank form.
5Show the seam3Empty isn't broken
Agent evaluation could prove an agent finished its task, not that its answer was right. I designed how AI practitioners create ground truth, the answer key every score is checked against: an agent drafts it, a person verifies it, and only then does anything depend on it.
Five stages. Each one left behind something the next was built on.
01Understand
Our metrics checked that a task completed, which tools ran and the path the agent took. None of that says whether the outcome was correct, because there was nothing to compare it against.
Resolve incident INC0001"Low""High"Nothing to compareChecked by hand. Business units compared agent output against ground truth manually, for their top customers.
Built one-off. Implementation teams had written ground truth generators for single enterprise customers.
First customers named. Leadership review confirmed aviation and banking accounts would use it first.
Three ground truth metrics went live for internal users in Q4 2025. A script wrote the records; people edited them as raw JSON.
{"expected_outcome": "Priority raised to High, work no{"tools": [{"name": "Get incident details", "inp{"fields": {"priority": "High", "state": "In ProgPayload
{
"expected_outcome": "…",
"tools": [ … ],
"fields": { … }
}
Written by a script, from a run that already happened
Edited by hand, as raw JSON
To reach customers, three things had to change
02Define
The person who needs ground truth builds agents for a living. If authoring feels like a second job, they'll skip it, so it had to fit work they were already doing.
Sam
AI practitionerBuilds agents and skills, creates datasets, iterates. Ground truth is one task among many.
Not a dedicated data labellerAfter the agent roughly works, before anyone trusts a number.
A run looks right? Nudge to capture it as ground truth.
Back here only if the use case changes
Improve, re-run, reuse the same ground truth
Authoring is paid once per use case. That's what makes a required review affordable.
03Decide
Manual curation is accurate but slow. Automated curation is fast but leans toward the model that wrote it. Picking one meant giving up either scale or trust.
What settled it
Low scores get blamed on the agent. Look closer and the ground truth is often what was wrong. If the reference is wrong, every score built on it is a confident lie.
So: automate for speed, and make review a step nobody can skip.
Each traces back to the problem analysis or the leadership review. The screens cite them by number.
04Design
Curation touches three tools, so the real risk was getting lost. Everything lives under one destination, and the flow has a single gate.
Orientation Select data Generate Review Evaluate
One fork for records with no history, one gate before anything is trusted, and a loop that reuses ground truth instead of rebuilding it.
The breadcrumb, the stepper and the primary action stay put on every step, so moving forward never feels like switching products.
Start, screen 1 of 2
Selecting an agent shows its datasets, each with machine and human progress, so curation begins from context instead of a blank form.
5Show the seam3Empty isn't broken
Start, screen 2 of 2
Ground truth only holds for the agent version it was written for, so the version is a required first choice, not a setting found later.
6Traceable
Step 1, screen 1 of 4
Input type and a pre-filled, editable name, answering feedback that names were cryptic. A suggested set, a pattern borrowed from another team, pre-selects runs fit for ground truth.
4Human names
Step 1, screen 2 of 4
The selection count stays visible while the detail pane pages through records, showing the utterance each run was tested with.
2One destination
Step 1, screen 3 of 4
Execution plan, conversation log, related record and status, each linked, so a failed run doesn't quietly become the reference.
6Traceable
Step 1, screen 4 of 4
Pick table records instead of runs. Utterance and context can be autogenerated, then copied to every record, which the old script couldn't do at all.
3Empty isn't broken
Step 2, screen 1 of 3
Each aspect states what it is, how it's checked and what it looks like, so the toggle explains its own consequence: what you'll review next, and which metrics can use it.
1Never auto-trust
Step 2, screen 2 of 3
Expected tool sequence joins the set instead of hiding behind a custom metric. Sequencing proved hard to engineer, so its metric comes later.
Step 2, screen 3 of 3
Starting curation locks the selections, and says so before the machine takes over. For now, curated sets are create-only.
1Never auto-trust
Step 3, screen 1 of 4
Generated and verified are tracked apart, so machine progress is never mistaken for sign-off. Each record keeps its status, and review can wait: exit and verify later.
5Show the seam
Step 3, screen 2 of 4
Each field picks exact, semantic or contains. Values the AI suggested carry a tag, so reviewers know which cells deserve a second look.
5Show the seam
Step 3, screen 3 of 4
Agent, tool, order, match and expected output in one dialog, with the raw JSON a tab away for anyone who wants it.
Step 3, screen 4 of 4
The execution plan, the conversation and related records travel with each reference, so a surprising score can be argued instead of just regretted.
6Traceable
It doesn't throw an error. It just makes every score built on it wrong. These are the moments I designed for, shown where they're handled on the real screens.
Build from table records instead. Utterance and context are autogenerated, then copied to every record, so new records aren't stranded.
Check the run before it's promoted. Its plan, conversation and status are one click away, and suggested sets pre-select suitable runs.
Version is required up front. A dataset stays tied to the agent version it was authored for.
Progress is split, and nothing is lost. Generated and verified are tracked apart, every record keeps its status, and you can exit and verify later.
Guesses are flagged. AI-suggested values carry a tag, and each field sets its own match: exact, semantic or contains.
The reference can be traced. Every record keeps its execution plan, conversation and source, so the score can be checked and argued.
05Validate
Three ground truth metrics already run for internal users. Reaching customers takes a standalone data model, a curation agent, and testing this flow with the people it's for.
The curation agent reads
Agent definition Base record context Similar past records Prior execution outputoptionalDrafts
Curation agentGround truth aspects
Expected outcome Record field updates Tool outputs Tool sequenceCan't be skipped
A person reviews and verifiesStored as
A standalone ground truth tableUse case, source record, payload. No internal tables.Metrics it unlocks
Overall outcome correctnessLive Record field correctnessLive Tool correctnessLive Tool sequence correctnessLaterPage views over the last three full months, before customer release. They count arrivals, not authoring: no ground truth actions are recorded yet.
One production user reached the review page, in August. This is the number the customer experience has to move.
Next:Heuristic evaluationInternal usability testsCustomer research
Questions the next round of testing and review has to answer.
Evaluation is only as right as its answer key. This flow lets an agent draft the key, and makes sure a person signs it before anything is graded against it.