All insights
Engineering·April 23, 2025·8 min

Evals are the part nobody wants to build

Ask a team how they know their AI feature still works after a prompt change, a model swap, or a new edge case in production, and the honest answer is often 'someone tried a few examples and it looked fine.' That's not testing, that's vibes, and it's how regressions ship silently. Evals, a structured, repeatable way to score model output against known-good answers, are the least glamorous part of building with AI and the part that separates systems people trust from systems that quietly get worse over time.

Why 'it looked fine' isn't good enough

Traditional software has deterministic tests: same input, same output, pass or fail. AI output isn't deterministic, and 'looks reasonable' is a standard that degrades without anyone noticing, because each individual change seems small. A prompt tweak that fixes one complaint can quietly break three other cases nobody thought to check. Without a standing set of test cases you re-run on every change, you're flying on the last person's memory of what good output looked like, and that memory is a lot less reliable than anyone likes to admit under deadline pressure.

There's also a social dynamic that makes this worse. Once a feature is live and mostly working, changing the prompt starts to feel risky in a way that's hard to justify with data, because there's no data. So teams either freeze the prompt out of fear, which means real bugs never get fixed, or they change it and hope, which means real regressions ship. Evals resolve that tension entirely: a change either improves the score or it doesn't, and the decision to ship stops being a guess.

  • Build a golden set: real examples with known-correct answers, pulled from actual usage, not invented ones.
  • Score automatically where you can, exact match, structural checks, or a second model as judge for open-ended output.
  • Track the score over time, a graph, not a one-off number from launch week.
  • Gate changes on it, a prompt or model change doesn't ship if it drops the score below the line.

Using a model to judge a model, carefully

For open-ended output, a support reply, a summary, a drafted email, exact-match scoring doesn't work, because there's no single correct string. The common approach is to use a second model as a judge, scoring the output against a rubric: did it answer the question, was it accurate against the source material, was the tone right. This works, but it needs its own calibration. Judge models have their own biases, they tend to prefer longer answers and confident phrasing regardless of correctness, so the rubric needs to explicitly correct for that, and the judge's scores should be spot-checked against human judgment periodically, not trusted blindly forever.

Start small, not perfect

You don't need a hundred test cases on day one. Twenty real examples that cover your actual edge cases, scored consistently, beats a hundred synthetic ones that don't reflect real usage. The habit matters more than the volume at first: every time a customer or teammate finds a bad output, that becomes a new eval case, not just a one-off fix. Over a few months this becomes the thing that lets you change prompts and models with confidence instead of dread.

The discipline of turning every bug into a permanent test case is the same one that made unit testing valuable in traditional software, and it transfers directly. The difference is that most teams building with AI haven't internalized it yet, because the field is newer and the instinct to just try it and see hasn't been replaced with the instinct to measure it and prove it. That replacement is overdue, and the teams that make it early have a real, compounding advantage over the ones that don't.

If you can't measure whether the last change made it better or worse, you're not iterating, you're guessing with extra steps.

Who owns the eval set matters as much as the tooling

A golden set that only the original developer maintains has the same fragility problem as a codebase only one person understands. When a support lead or a domain expert reviews and adds to the eval cases, the set stays grounded in what actually matters to the business rather than drifting toward whatever's easy to test programmatically. This is also where evals earn their keep beyond catching regressions: they become a shared, concrete definition of quality that a non-technical stakeholder can review and argue with directly, instead of trusting an engineer's word that the system is working well.

The payoff shows up later, not immediately

Evals don't make the first version ship faster. They make the fifth version safe to ship at all. Teams that skip this step tend to freeze their prompts out of fear once something is working, because nobody can prove a change won't break something else. Teams with an eval harness keep improving the system for years, because they can see, in minutes, whether a change actually helped, and that visibility is worth more over the life of a product than any single prompt tweak ever will be.

Engineering

Got a workflow like this?

Tell us what's eating your team's time, we'll tell you honestly whether automation is worth it.

Book a Consultation

We typically respond within 24 hours