Case No. 04  ·  Ground truth & offline evals  ·  Intuit Intelligence · quality program

The definition of what good looks like.

No skill shipped until it cleared the quality bar. The program decided what went live, what got blocked, and what rolled back, and it ran on ground truth: the definition of a good answer for a given customer question, scored by LLM judges. That definition was written by hand, one row at a time, by a relay of experts. I built the system that produces it at scale.

Problem

Every launch was gated on ground truth, and ground truth was hand-made, one row at a time.

What I did

Built a generator and pipeline that draft each row to spec, so experts validate and correct instead of authoring.

Outcome

Offline evals ran across every skill; a large batch went from about three weeks to about one.

Role

The standard, the generator prompt, the pipeline, the simulator instructions, and the expert review loop it feeds.

01 · The problem

The bar was real. The answer key behind it was hand-made.

The quality program was the gate. It decided what went live, what got blocked, and what rolled back, and every eval compared a skill's answer to ground truth: the ideal response for a given customer question, scored by an LLM judge across six dimensions. Getting one row right was a relay. A conversation designer drafted the ideal answer, shaped turn by turn. Domain experts checked it against the product, flagged what was wrong, and rewrote it. Then it came back to the designer to repair the voice, tone, and turns the rewrite had flattened. Every row, by hand, before it ever reached the judge.

01
Seed question
a real question a customer asked
02
Designer drafts
the ideal answer, turn by turn
03
Experts validate
check the product, flag, rewrite
04
Back to the designer
repair voice, tone, and turns
05
Judge scores
the skill's answer against the row
↻ every row, by hand, before it ever reached the judge
What the judge scoredSix dimensions
correctness · factually right against the ground truth
no hallucination · nothing fabricated
completeness · every part of the question addressed
relevance · on topic, no padding
content compliance · nothing disallowed, no prompt leaks
voice and tone · conversational, at the right reading level
The weight sat on accuracy. That was the part everyone could agree on, and the part a judge could check most confidently.
02 · What changed

Accurate wasn't the same as good.

Internal dogfooding and voice-of-customer told a different story than the scores did: answers were right and still falling short. Customers didn't want a correct paragraph about their own account. They wanted the assistant to know them, and to do the work rather than narrate it. Personalized, and do-it-for-me: take the action on my behalf. That broke the answer key. A row could no longer hold only the words a skill should say. It had to carry which action to take, the steps it required, the entities to capture before acting, and, when the action would change or move account data, whether the agent asked permission and confirmed before executing. Evaluating prose became evaluating behavior, and the relay that already couldn't keep up now had several times as much to get right.

What the row had to carryThen and now
Then · the answer
The words a skill should say. One field held the whole standard, and the judge mostly asked whether it was accurate.
Now · the behavior
Was the right action taken, in the right steps? Were the entities captured first? Was permission asked, and confirmation given, before anything changed?
The answer · the words the skill should say
The action · the operation, its inputs, and its steps
The widget or chart · the structured spec a system scores, not the picture
The permission · ask and confirm before account data changes
Routine · reversible
  • Create an invoice, add a vendor
  • Collect the inputs, act, confirm it's done
  • No confirmation turn required
Impactful · changes or moves money
  • ×Run payroll, delete records, send a payment reminder
  • ×State what will happen, then wait
  • ×Execute only after the customer confirms

That rule is the behavior design, and the ground truth is where it gets written down. If the answer key doesn't say the agent should ask first, nothing downstream will ever catch it when the agent doesn't.

03 · The build

Agents draft. Human judgment validates and corrects.

A relay of specialists, one row at a time, was never going to cover a platform of dozens of skills. So I encoded the standard: a generator prompt that distills how the best labeler works, the rules for the answer, the actions, and the chart and widget specs, built on judgment over rules. When a row doesn't fit a pattern, do what the best labeler would do. Running a whole dataset through one model would be slow and lossy, so I wrote a pipeline that splits the sheet into fifty-row chunks, drafts each with a parallel agent, and glues the results back into one sheet. The draft lands about seventy percent complete. Experts validate and correct from there, which is where their judgment belongs, including the calls on escalation and handoff. I pre-filled the simulator instructions too, teaching the bot how to ask the follow-up questions a real customer would, so multi-turn behavior gets exercised instead of assumed. It shipped as platform code, reviewed like any other engineering work on the team.

01
Encode the standard
the generator prompt: how the best labeler works
02
Draft the sheet
split into chunks, parallel agents, glue back
03
Human validation
experts validate and correct, judge escalation and handoff
04
Simulator instructions
teach the bot to ask the follow-ups
05
Offline eval
bot runs the script, judge scores against ground truth
↻ the same process, for any skill
Caught in review
The silent overwrite
A fallback path could write a model's draft straight into a validated answer, leaving no trace that a human's work had been replaced. Every judge downstream would then be scoring against a machine's guess and calling it truth.
The fix: delete the path, and add a check that fails the run if it is ever attempted. Originals stay intact, on every code path.
04 · The row

What the generator hands the expert.

Every rule in this case lands in a field somebody can check. The tinted cells are what the generator drafts: the answer, the action and its inputs, whether the agent has to ask first, and the instruction that teaches the simulator how to behave like a real customer. The expert reads down the row, corrects what's wrong, and signs it off. That is the whole trade: the machine does the filling, the human does the judging.

A pre-filled golden-dataset rowRepresentative · mock data
Customer question Ground-truth answer Expected action Ask first? Simulator instruction Turns
How do I add a contractor? Go to Payroll, then Contractors, then Add contractor. none, this is a how-to n/a none 1
Add a contractor I've added [CONTRACTOR_NAME] as a contractor. create_contractor
inputs: name
status: success
No, reversible If agent asks for the name, say [CONTRACTOR_NAME] 2
Run payroll for this period States what will happen and what it will cost, then asks the customer to confirm before running. run_payroll
executes only after confirmation
Yes, confirmation widget If agent asks to confirm, say yes 3
drafted by the generator, about 70% of the rowthe expert validates, corrects, and signs off

The payroll row is the one I care about. A machine can draft the words. Whether an agent is allowed to move money without asking is a judgment call, and it belongs to a person, written down where an eval can hold the agent to it.

05 · Where it landed

The bar kept pace with the platform.

~70%
The draft

Of each row arrives filled to spec, so experts spend their time validating and correcting instead of authoring from empty.

3 → 1 wk
The throughput

A large batch that had taken about three weeks came down to about one, without adding headcount.

+8 to 13
The quality

Points of conversation-quality lift across three skills, measured against the ground truth this work produced.

Every skill
The coverage

Offline evals ran across the platform instead of stalling behind a manual relay, and the same process runs for any new skill.

What this settled

An agent is only as trustworthy as the standard it gets measured against, and that standard is a design artifact, not a spreadsheet chore. Writing down what good looks like, including when an agent must stop and ask, is how it earns the right to touch money. Building the system that keeps that definition current is how it earns that right at scale.