Lesson 05 · Applied LLM Engineering

Evals That Prove It Works

A demo shows the system worked once. An eval proves it keeps working — and building that proof is the deliverable customers actually pay for.

FDE skill · turn "it seems fine" into evidence a customer can trust
🎧 Listen to this lesson · ~9 min · narrated audiobook edition

⏱ ~10 min read · 🎧 9 min listen · ✎ 3 quizzes · 🧪 ~120 min lab

Here's the moment this lesson is built for: your demo landed, the customer is excited, and someone asks, "how do we know it'll still work next month?" A demo shows the system worked once, on inputs you picked, on a good day. An eval proves it keeps working — on inputs you didn't pick, after every prompt tweak, model upgrade, and data change. The market is explicit about this: Anthropic's FDE posting requires production LLM experience including "evaluation frameworks"4, and Databricks demands "expertise in deploying production-grade GenAI applications, including evaluation and optimizations."5 Evals aren't a QA afterthought. They're a named hiring bar.

The deliverable nobody asks for — until it's missing

Hamel Husain's field observation, from consulting across dozens of AI teams: unsuccessful AI products almost always share one root cause — a failure to create robust evaluation systems.1 The demo-to-production gap you met in Lesson 01 is, mechanically, an eval gap. Without evals, every change to the system is a gamble: you improve one case and silently break three others, and nobody notices until the customer does. For an FDE this has a sharper edge — the eval harness is often the artifact that survives you. You leave the site in six weeks; the harness is how the customer's own team keeps trusting, and safely changing, what you built.

Evals start before code, with success criteria. Anthropic's guidance: make criteria specific, measurable, and tied to the use case — not "the summaries should be good" but "the summarizer achieves an F1 score of at least 0.85 on the held-out set, and never includes patient-identifying information."3 The FDE move is to extract these numbers from the customer in discovery: what would make you trust this? What failure would make you switch it off? Those two answers become your first eval criteria.

Vibe checks Eyeballing a few outputs after each change is called "vibe checking". It's not worthless — it's Level 3 intuition running without Level 1 rigour. The trap is that vibes don't scale past ~10 test cases, and enterprise trust is built on hundreds.

The three-level framework

Hamel Husain's framework organises evaluation into three levels, distinguished by who or what does the judging and how often it runs.1 You don't graduate from one level to the next — a healthy system runs all three at different frequencies:

LevelWhat it isJudgeRuns
1 · Unit testsFast assertions on outputs — format checks, forbidden strings, must-contain factsCodeEvery change (cheap, seconds)
2 · Human & model evalGrading real traces — humans review logs; an LLM judge scales the reviewingHumans + LLM judgeRegular cadence (hours)
3 · A/B testsMeasuring real user outcomes in productionUsersLate stage, high traffic

Choosing a grader

Every eval case is a pairing of an input with a grader. Anthropic's test-development guide names the main grader families, and the skill is matching the grader to the claim you're trying to prove3 — exact match for claims with one right answer, similarity scoring for claims about meaning, and an LLM judge for claims about quality that resist mechanical definition:

GraderUse whenWatch out for
Exact match / code assertionOne right answer: a classification label, valid JSON, a required field, a forbidden stringBrittle on phrasing; useless for open-ended text
Embedding / similarity (cosine, ROUGE)Output should mean the same as a reference answer, wording freeHigh similarity can mask a wrong critical detail
LLM-as-judgeQuality is real but fuzzy: faithfulness, tone, completeness against a rubricThe judge is a model too — persuasive when wrong, and it drifts. Must be validated

Never ship an unvalidated judge

The LLM judge is the most powerful grader and the most dangerous, because an unvalidated judge just automates your blind spots — you've replaced "the model seems fine" with "the judge says the model is fine", and proven nothing. Hamel's fix is critique shadowing: a domain expert writes pass/fail judgments with critiques on real examples, you iterate the judge's prompt until its judgments agree with the expert's, and you keep measuring that agreement over time.2 The judge earns trust the same way a new team member does — by being checked against someone who knows. And critically, the expert must be the domain expert (the nurse, the claims assessor), not you.

Where do eval cases come from? The best ones are harvested from real failures. Every bug report, every "the AI got this wrong" complaint, every weird trace you notice in the logs becomes a permanent test case — this is how your eval set grows teeth over time. Hamel calls the habit "looking at your data": most teams skip it, and it's the single highest-leverage eval activity there is.1 Until real users arrive, seed the set with synthetic cases — enumerate the dimensions of your inputs (note type, specialty, messiness) and generate combinations with an LLM.1

Regression gates Once the harness exists, wire it into the customer's CI as a regression gate: prompt or model changes only merge if the eval score doesn't drop. That single rule converts your harness from a report into a guardrail.
⚠️ Cautionary tale: don't marry the platform OpenAI's hosted Evals platform — the dashboard many teams built their whole evaluation practice on — was deprecated in 2026: read-only from October 31, shut down November 30.6 Teams that kept eval data and logic in portable form (YAML configs, plain Python, exportable datasets) migrated in a day; teams that lived in the dashboard rebuilt from scratch. The FDE lesson: own your eval cases as files in the customer's repo. Platforms like promptfoo or Braintrust are fine as runners — just never as the only home of the data.
The mental model in one line A demo is one anecdote; an eval is evidence that survives change — versioned cases from real failures, graders matched to claims, and a judge that has itself been judged.

🧪 Practical steps: an eval harness for your summarizer (~120 min)

In Lesson 02 you built a clinical-note summarizer and checked it by hand against five criteria. Time to industrialise those hand checks into a harness that catches regressions automatically — the single most quoted artifact type in FDE job postings. Full instructions live in labs/0005-eval-harness.md; you can hand-roll it in Python (shown, recommended first time) or use promptfoo7 — the lab supports both.

  1. Curate an eval set — take your Lesson 02 test notes and grow the set to 10–12 cases (synthetic generation is fine), each saved as JSON with the input note and the facts that must and must not appear. This file is the portable asset.
  2. Turn your 5 hand checks into Level-1 assertions — plain Python functions: output parses, required fields present, no invented medications, no patient identifiers, length within bounds.
  3. Add an LLM judge with a written rubric — a second API call that grades each summary pass/fail on faithfulness and completeness, returning structured JSON with a critique.
  4. Validate the judge — hand-grade 5 outputs yourself before looking at the judge's opinion, then measure agreement. Below 4/5, fix the rubric and rerun — that's critique shadowing in miniature.
  5. Plant a regression — deliberately degrade the summarizer prompt (delete the grounding instructions from Lesson 04, or the "say only what's in the note" rule) and rerun.
  6. Produce the before/after report — a markdown table of scores per case for the good and degraded prompts. The harness must visibly catch the plant.
  7. Save everything to D:\Projects\FDE-Portfolio\l05-eval-harness\ — eval set, harness code, judge rubric, validation notes, and the report.

Feedback loop: bring your before/after report and your judge-validation notes back to me in chat, and I'll review them like a customer's tech lead would — do the assertions test real failure modes or just formatting, was the judge validated against human judgment honestly, and does the report prove the harness catches regressions? This artifact feeds the Lesson 11 capstone engagement and is tracked in the course's artifact tracker.

🤖 Get your work reviewed

No chat here — this box replaces it. Copy the prompt into any AI assistant (Claude, ChatGPT, Gemini…), then paste your harness code, judge rubric, validation notes and before/after report after it.

You are a senior Forward Deployed Engineer reviewing my work: an eval harness for a clinical-note summarizer. It contains an eval set of ~10 cases, coded assertions, an LLM judge with a written rubric, notes validating the judge against 5 of my own human judgments, and a before/after report showing the harness catching a deliberately planted prompt regression.

Grade each criterion as Strong / Adequate / Missing, with one sentence of evidence:
- Assertion quality: the coded assertions test real clinical failure modes (invented medications, leaked identifiers, missing critical facts), not just output formatting.
- Judge-validation rigor: I graded outputs myself BEFORE seeing the judge's opinion, measured agreement explicitly, and iterated the rubric when agreement was low — not just "the judge looks right".
- Regression-catch demonstration: the planted degradation is realistic, and the before/after report shows the harness flagging it clearly, with scores per case rather than a single vague number.

Be skeptical — probe whether my judge could be agreeing with me for the wrong reasons, and whether any assertion would pass on garbage output. Then ask me 2–3 questions a customer's tech lead would ask before wiring this harness into their CI. Finish with the single highest-leverage improvement.

My eval harness materials follow below.
🧭 Field practice this week

Check yourself — think like an FDE

Scenarios, not recall. Diagnose from the mental model — don't scroll up. Wrong picks stay live.

Scenario A

A health-insurer customer says: "the claims classifier must always output one of our 14 approved category codes, and its explanations must be professional in tone." You're designing the eval. Which grader pairing fits this requirement?

Scenario B

A teammate proudly demos their eval pipeline: an LLM judge grades every summarizer output against a rubric, and the dashboard shows 96% pass. Nobody has ever compared the judge's grades to a human's. The customer asks if they can rely on that number. What's the honest answer?

Scenario C

Mid-engagement, a customer ops manager says: "honestly, the triage assistant just feels off lately — the answers seem worse than last month." The logs show nothing obviously broken. What's the FDE move that turns this into something actionable?

Primary source — read this
The essay that defined how practitioners talk about evals: the three-level framework, harvesting cases from real traces, and why unsuccessful AI products share one root cause. Pair it with his follow-up, "Using LLM-as-a-Judge" — the critique-shadowing method this lesson's lab miniaturises. Both predate today's models; the method is what's durable.
Your one tangible win You can now answer "how do we know it'll still work?" with evidence instead of confidence: your summarizer has a versioned eval set, graders matched to claims, a judge validated against your own judgment — and a report proving the harness catches a planted regression. That before/after report is an interview story in itself.
Questions? Any AI assistant is your teacher. Unsure which grader fits a criterion, or whether your judge rubric is too vague? Paste the relevant section of this lesson into your AI assistant along with your question — and for harness feedback, the review box above has you covered.

Recommended learning

Hand-picked follow-ups. None are required — the primary source above comes first.

References

  1. Hamel Husain, "Your AI Product Needs Evals" (2024) — the three-level framework; failed products share a missing evaluation system; looking at your data; synthetic case generation.
  2. Hamel Husain, "Using LLM-as-a-Judge to Drive Business Results" (2024) — the Critique Shadowing method for validating an LLM judge against domain-expert judgments.
  3. Anthropic, "Define success criteria and develop tests" (current) — measurable success criteria; grader types: exact match, similarity/ROUGE, LLM-graded.
  4. Anthropic, Forward Deployed Engineer, Applied AI — job posting (2026) — "Production experience with LLMs including advanced prompt engineering, agent development, evaluation frameworks".
  5. Databricks, AI Engineer, FDE — job posting (2026) — "Expertise in deploying production-grade GenAI applications, including evaluation and optimizations".
  6. OpenAI, Evals platform guide (2026) — platform deprecated: read-only Oct 31, 2026; shutdown Nov 30, 2026. Cited as a portability case study.
  7. promptfoo, documentation (current) — open-source eval and red-team CLI; the lab's optional tooling path.