Eval-Driven Development for LLM Applications (2024-2026)

Eval-Driven Development for LLM Applications (2024-2026)

Research date: 2026-05-31 Scope: The BUILD-TIME eval-driven-development discipline — the analyze->measure->improve loop, error analysis as the engine, eval levels (assertions / LLM-as-judge / human), golden datasets, judge calibration, CI/CD eval gating, and agent/trajectory evaluation. Scope boundary: Production runtime tracing/monitoring -> llm-observability. Academic benchmark harnesses (HELM/MMLU) -> da-7-machine-learning. This report flags those overlaps explicitly.


1. Eval-Driven Development as a discipline

The core thesis (Hamel Husain, “Your AI Product Needs Evals”, hamel.dev): the single largest distinguishing factor between reliable AI systems and “YOLO cross-fingers” development is a robust eval system. In his consulting work, 60-80% of development time was spent on error analysis and evaluation, not prompt-writing. Evaluation is treated as part of the development inner loop, the way debugging is part of software development — not a separate line item.

The loop: Analyze (look at data / error analysis) -> Measure (write evaluators for real failures) -> Improve (fix prompts/retrieval/architecture) -> repeat. Error analysis is the engine — you look at real traces, categorize the kinds of errors, and for each error write a test/evaluator. “Write evaluators for errors you discover, not errors you imagine.”

The “Three Gulfs” framing (Shankar & Husain)

A mental model for where LLM-pipeline failures originate:

Building evals FROM error analysis (qualitative coding)

Borrowed from grounded-theory qualitative research:

Criteria drift (Shankar et al., “Who Validates the Validators?”, UIST 2024). A foundational empirical finding: users need criteria to grade outputs, but grading outputs is what helps users define criteria. Evaluation criteria are often not definable a priori — they emerge from looking at real model outputs. This validates the error-analysis-first stance (you cannot write the right rubric until you’ve read the data) and warns against any method that assumes evaluation is independent of observing outputs. The companion systems are EvalGen (mixed-initiative: generates candidate Python assertions + LLM-grader prompts, asks the human to grade a subset, then selects the implementations that best align with the human grades) and SPADE (synthesizes data-quality assertion functions from prompt-version history). The recursive problem these name — who validates the validators? — is the theoretical core of judge calibration (Section 3).

Rule of thumb on effort/volume (corroborated across Husain, Pragmatic Engineer): spend ~30 min reading 20-50 outputs after any significant change; 60-80% of build effort goes to understanding failures and looking at data, not writing automated checks or prompts.


2. Eval levels and the offline/online split

Level What it is When
Code/assertion-based Deterministic checks: exact match, regex, JSON-schema valid, contains/not-contains, latency, cost. Cheap, fast, no model call. First line; CI gating.
LLM-as-judge (model-graded) A model scores an output against a rubric/criteria, or picks a winner in a pairwise comparison. For subjective/open-ended quality. When no deterministic check exists. Must be validated.
Human eval Domain expert labels. The gold standard and the source of truth that judges are calibrated against. Build golden set; validate judges; adjudicate disagreements.

Offline (dev-time) eval — run against a fixed/golden dataset in CI or the inner loop, before deploy. Online (production) eval — sample live traffic, run judges/guardrails on real outputs, feed failures back into the dataset. The two form a flywheel; online failures become offline test cases. [NOTE: online/production monitoring itself is llm-observability scope — EDD’s interest is the feedback loop into the dataset.]


3. LLM-as-judge depth

Known biases

Judge calibration / validation against humans


4. Tooling landscape

Convergence pattern: teams end up with two tools — a lightweight CI/CD-gating framework (DeepEval / Ragas / promptfoo) + a platform for human annotation, regression tracking, dashboards (Braintrust / LangSmith / Arize Phoenix).


5. Metric design


6. CI/CD, regression testing, eval-gated deploys


7. Agent / trajectory evaluation


8. Anti-patterns


Additional notes on the golden dataset / synthetic data sub-area:


9. Sources

Primary / practitioner-canonical:

  1. Hamel Husain, “Your AI Product Needs Evals” — https://hamel.dev/blog/posts/evals/ (the founding essay; 60-80% time on error analysis; vibes vs systematic).
  2. Hamel Husain & Shreya Shankar, “LLM Evals: Everything You Need to Know” (FAQ, 2026-01-15) — https://hamel.dev/blog/posts/evals-faq/ (canonical reference; binary-beats-Likert, judge calibration, error analysis, three gulfs). [Deep-fetch timed out during this run; cited via search summaries + corroborating sources.]
  3. Shreya Shankar et al., “Who Validates the Validators? Aligning LLM-Assisted Evaluation of LLM Outputs with Human Preferences” (UIST 2024) — https://arxiv.org/abs/2404.12272 (criteria drift; EvalGen).
  4. Shankar et al., “SPADE: Synthesizing Data Quality Assertions for LLM Pipelines” — https://arxiv.org/pdf/2401.03038.
  5. Pragmatic Engineer, “A pragmatic guide to LLM evals for devs” (2025-12) — https://newsletter.pragmaticengineer.com/p/evals (golden set as unit tests; 30-min/20-50-output rule).
  6. Vadim’s blog, “Eval Driven Development” — https://vadim.blog/eval-driven-development (build the harness before the first prompt; 5s inner loop vs 30s pipeline; multi-layer agent/prompt/integration evals).

Vendor / framework engineering guidance: 7. OpenAI, “Eval-Driven System Design — From Prototype to Production” (cookbook) — https://developers.openai.com/cookbook/examples/partners/eval_driven_system_design/receipt_inspection 8. OpenAI, “Evaluation best practices” / “Working with evals” — https://developers.openai.com/api/docs/guides/evaluation-best-practices ; OpenAI Evals — https://evals.openai.com/ 9. Langfuse, “Error analysis to evaluate LLM applications” (2025-08) — https://langfuse.com/blog/2025-08-29-error-analysis-to-evaluate-llm-applications ; “Evaluating LLM Applications: A Comprehensive Roadmap” (2025-11) — https://langfuse.com/blog/2025-11-12-evals 10. DeepEval (Confident AI), Synthesizer / Golden Synthesizer / Datasets docs — https://deepeval.com/guides/guides-using-synthesizer ; alternatives comparison — https://deepeval.com/blog/deepeval-alternatives-compared 11. Arize, “Comparing LLM Evaluation Platforms: Top Frameworks for 2025” — https://arize.com/llm-evaluation-platforms-top-frameworks/ ; Phoenix synthetic datasets — https://phoenix.arize.com/creating-and-validating-synthetic-datasets-for-llm-evaluation-experimentation/ 12. Braintrust, “DeepEval alternatives (2026)” — https://www.braintrust.dev/articles/deepeval-alternatives-2026 13. genai.qa, “Promptfoo vs DeepEval vs RAGAS (2026)” — https://genai.qa/blog/promptfoo-vs-deepeval-vs-ragas/

LLM-as-judge depth: 14. Eugene Yan, “Evaluating the Effectiveness of LLM-Evaluators (LLM-as-Judge)” — https://eugeneyan.com/writing/llm-evaluators/ (position/verbosity/self-enhancement bias; numbers). 15. Evidently AI, “LLM-as-a-judge: a complete guide” — https://www.evidentlyai.com/llm-guide/llm-as-a-judge 16. “Judge’s Verdict: … LLM Judge Capability Through Human Agreement” — https://arxiv.org/pdf/2510.09738 ; “Am I More Pointwise or Pairwise? … Position Bias in Rubric-Based LLM-as-a-Judge” — https://arxiv.org/pdf/2602.02219 ; FutureAGI, “LLM-as-Judge Best Practices 2026: Calibration, Bias, Cost” — https://futureagi.com/blog/llm-as-judge-best-practices-2026

Academic / process-model: 17. Xia, Lu, Zhu, Xing et al., “Evaluation-Driven Development and Operations of LLM Agents: A Process Model and Reference Architecture” (arXiv 2411.13768, v3 2025-11) — https://arxiv.org/abs/2411.13768 (EDDOps; unifies offline dev-time + online runtime eval in one closed feedback loop). 18. “Evaluation and Benchmarking of LLM Agents: A Survey” (arXiv 2507.21504) — https://arxiv.org/html/2507.21504v1 (agent/trajectory eval landscape).

Strongest source domains: hamel.dev (Husain — the practitioner canon), arxiv.org (Shankar UIST/SPADE, EDDOps process model, judge-bias papers), eugeneyan.com (judge-bias depth), the framework vendors’ own engineering docs (OpenAI / Langfuse / DeepEval / Arize / Braintrust), and newsletter.pragmaticengineer.com (engineering-audience synthesis).


10. Contested / low-confidence areas

  1. Is “eval-driven development” literally test-first (TDD analogy), or error-analysis-first? Genuinely contested. Vadim and parts of the OpenAI guidance say build the eval harness before you write a single prompt (strict EDD). Other practitioners argue writing evaluators before implementation “creates more problems than it solves,” and the Shankar criteria-drift finding gives this theoretical teeth: you often can’t specify correct criteria a priori because criteria emerge from observing outputs. The reconciling synthesis most experts converge on: set up the harness/plumbing early, but derive the specific evaluators from error analysis on real outputs, not upfront imagination. Confidence: medium-high on the synthesis, but the framing is actively debated.

  2. Three Gulfs exact definitions and gulf->fix mapping. The names (Specification / Generalization / Comprehension) are well-attested as Shankar/Husain framing, but the precise wording and which remedy attacks which gulf should be verified against the primary essay before being stated authoritatively — the canonical evals-faq deep-read timed out this run, so Section 1’s mapping is reconstructed from secondary summaries. Confidence: medium on exact mapping, high that the three-gulf framing exists.

  3. Binary-beats-Likert universality. Strongly advocated (Husain) and well-supported for calibration ease, but rubric-based / ordinal scoring is itself a growing 2025-2026 research area with empirical validation in domain-specific contexts — so “always binary” is an over-simplification. The defensible claim: binary is the better default and far easier to calibrate; well-validated rubrics have a place for nuanced/domain quality. Confidence: high on the nuance, the absolutist version is contested.

  4. Tooling objectivity / churn. The tool landscape is moving fast and many comparisons are written by vendors (DeepEval, Braintrust, Arize all publish “alternatives” pieces ranking themselves well). promptfoo’s acquisition by OpenAI (2026-03-09) adds an objectivity caveat for OpenAI-vs-promptfoo comparisons. Treat any single-vendor ranking as directional, not neutral. Confidence on individual tool capabilities: high; on comparative rankings: low.


Scope-overlap notes (for concept-tree placement)