🚧 Under construction β€” I'm migrating this site from Framer to Next.js and publishing it early for testing, so a lot of the content is still in flux.🚧 Under construction β€” I'm migrating this site from Framer to Next.js and publishing it early for testing, so a lot of the content is still in flux.🚧 Under construction β€” I'm migrating this site from Framer to Next.js and publishing it early for testing, so a lot of the content is still in flux.🚧 Under construction β€” I'm migrating this site from Framer to Next.js and publishing it early for testing, so a lot of the content is still in flux.🚧 Under construction β€” I'm migrating this site from Framer to Next.js and publishing it early for testing, so a lot of the content is still in flux.🚧 Under construction β€” I'm migrating this site from Framer to Next.js and publishing it early for testing, so a lot of the content is still in flux.
Open menu
Switch to Darkhello@product.inc
AIUX patterns

Evaluation loops

Tags: evals, measurement, process

Keep a fixed set of real cases, run the product against all of them after every change, and look at the results side by side. Twenty cases in a spreadsheet is enough to start and better than anything you'll reason your way to. Without something like it, a team building on a model is tuning by anecdote and calling it iteration.

Why the usual method stops working

In deterministic software you can reason about whether a fix worked. You changed the validation rule, you can see the new rule, the old bug is gone by construction.

A product built on a model doesn't give you that. The same input produces different output tomorrow, so a single try tells you almost nothing β€” you saw one sample from a distribution and it happened to be good. Worse, improving one case routinely degrades another, and the degradation is silent because nobody was looking at that case when the change went in.

So "did that change help?" cannot be answered by looking at the thing you just changed. It can only be answered by looking at a set of cases you fixed in advance.

What the loop actually is

Three parts, none of which needs a platform.

Rendering diagram…

What a designer should be judging

Most writing about evaluation is about model accuracy β€” did the answer contain the right fact. That is not the design question, and a design team that borrows the engineering metric ends up measuring something it can't act on.

The useful version is: for each of these twenty outputs, what does the screen look like?

Run the set and capture the interface state, not just the text. Then ask the questions that belong to design:

That's a design evaluation. It happens to require running the model, but what it grades is whether the interface survives the distribution.

Judge the thing you care about

Two failure modes, pulling in opposite directions.

Grading a proxy because it's easy to grade. "Did the response mention the policy number" is checkable and almost never the thing that mattered. If what you care about is whether someone could act on the answer, that's what the rubric should say, even though it needs a human read.

A rubric so vague two people score the same output differently. The fix isn't more precision in the wording β€” it's grading a few together until the disagreements surface, then writing down what the disagreement was about. That written note is worth more than the score.

A three-point scale is enough for most teams: it did the job, it half did the job, it failed. Finer scales invite arguments about whether something is a 6 or a 7, which is time spent on the instrument rather than the product.

Grounded in

The smallest version worth building, and the four ways it goes wrong in practice β€” written because the loop had been referenced twice in other pieces without ever being explained.

Anti-patterns

The smallest version worth building

A document with twenty inputs. A column for what the product produced. A column for a screenshot. A three-point score and a sentence of reasoning. Re-run it after anything meaningful changes, and keep the old runs.

That is an afternoon of setup, and it moves a team from "this feels better" to "eleven cases improved, three got worse, and here's the screenshot of one that got worse" β€” which is a conversation you can actually have.

The full argument: Evaluation loops: telling whether a design change helped.