← Field Notes

Product managers ship prompts by feel because nothing shows the change

Confidence is the product. A comparison a product manager can read, a judge they can question, and a baseline that moves only when they say so.

The question no one can answer

Most prompt authors are not researchers. They are product managers, designers, solutions engineers and admins, and the prompts they write drive behavior real humans see. They iterate by feel: change a word, read three outputs, ship. The question they cannot answer is the only one that matters. Did my change make this better, worse, or different, and for whom?

The reasons it is hard are real. Outputs vary run to run. Quality has several dimensions at once: is the answer right, is the tone right, is it safe, what did it cost, how long did it take. “Good” is specific to the product and lives in someone’s head. And the tools on offer either dump raw scores with no judgment attached or hide the scoring so well that no one trusts it.

how a prompt ships today · the loop with no test in it
change a word read three outputs ship find the regression in production

The failures follow from the loop. Regressions turn up in production. Test sets rot as the product changes. Rubrics exist that only one person can apply. And when a number does move, no one can say which edit moved it.

Running a test should feel like running tests

The experience we want turns evaluation from a project into a habit. Running an eval, a repeatable test of a prompt against a set of examples, should feel like running the unit tests, not like commissioning a study. That sets five requirements, and each one rules something out.

It answers “better or worse than what?” each time, so the baseline is on screen at all times and the change is the primary unit. That rules out the score dashboard with no link to the edit. It makes the rubric, the plain-language statement of what a good answer does, a first-class object that the team edits and versions beside the prompt. That rules out the rubric that lives in one person’s head. It shows evidence, not only scores: each number opens to the actual outputs and the reasoning of the judge that scored them. That rules out the black box. It keeps quality as a profile, quality and cost and speed and safety side by side, and does not add them up. That rules out the overall score. And it closes the loop: a failure becomes a new test case in one action.

five requirements · what each one rules out

The experience does

  • show the change beside the result
  • grow from 5 cases to 500 in one place
  • show the judge’s reasoning and prompt
  • show quality, cost, speed, safety as four changes
  • calibrate the judge with a few human labels

So it rules out

  • a dashboard with no link to the edit
  • a separate “advanced mode” for real tests
  • a score you cannot open
  • one overall number
  • labeling everything, or labeling nothing

Visual testing solved the review loop years ago

Chromatic reviews visual change in component libraries, and its loop is the closest thing to a solved version of this problem. It takes a snapshot of each story, compares each one to a baseline, the last known good state of that story, and shows the reviewer only the stories that changed. The reviewer accepts or denies each change. Accepting makes the new snapshot the baseline. Denying keeps the old one and fails the build. Leaving a change unreviewed leaves the original baseline in force, and the build does not pass until each change has a decision. Once the branch merges, the accepted baselines carry over, so no one accepts the same change twice.

Swap snapshots for answers and the loop transfers almost whole. Each test case is a story. The baseline is the last accepted answer to that case, not whatever the previous prompt version produced. A run shows only the cases whose answers changed. The reviewer accepts a change, denies it, or leaves it, and the release check reads “9 changes, 3 unreviewed” until the count reaches zero.

the review loop · the baseline moves only when a person accepts
changed case accept deny unreviewed new answer becomes the baseline old answer stays · run fails old answer stays · run pending

Two things do not transfer. Outputs vary run to run, so a changed answer is not a changed behavior in each case. The comparison needs repeat runs and a judge to separate noise from regression, where a pixel diff needs neither. And a reviewer cannot read forty changed answers the way they can glance at forty thumbnails, so severity ranking and the judge’s reasoning have to carry the load the thumbnail grid carries in Chromatic.

The hero screen is a comparison, not a dashboard

Each flow in the experience is a pattern with a page in the library: writing the eval set, setting up the run, comparing versions, opening one case, deciding to release, and watching production. The comparison is the hero, because it is where the confidence question gets answered.

Two columns: the baseline prompt version and the candidate, with the two changed lines in view. A header with four changes and no total. A body of cases sorted worst first, each one opening to both answers and the judge’s reasoning. Four actions on a row: accept the change as the new baseline, deny it, overrule the judge’s label with a note, or promote the case to the permanent regression set. A footer that counts changes, decisions and disagreements between the judge and the humans.

the delta profile · four changes, no total
quality cost speed safety +3 points +18% per answer unchanged 1 new failure baseline v12

Here is the worked example the component ships with. A support team edits the reply prompt for a returns flow. Version 13 differs from version 12 by two lines: offer store credit before the refund, and a shorter sign-off. The eval set holds 40 real conversations and a rubric of five rules, each with one passing and one failing example. The run costs $1.80 and takes four minutes, and the setup screen said so before the person pressed run. Of 40 cases, 31 are unchanged and folded away. Nine changed: one safety failure, two quality regressions, four improvements, two neutral rewordings. The safety case is a customer who mentioned a medical device; version 13 offered store credit before checking the recall policy the rubric requires. The reviewer reads the judge’s reasoning, agrees, denies the change, and promotes the case so it runs on each future version. One of the quality regressions is overruled: the judge marked a shorter answer as worse, and the reviewer marks it pass with the note “shorter is the point of this change”. The disagreement counter reads 1. The check on the pull request reads “9 changes: 8 accepted, 1 denied” and fails. The author fixes the recall line, version 14 runs, the denied case passes against its baseline, and the release goes out with the run attached.

The vendors, flow by flow

The pattern pages carry the sightings; this is the summary. Braintrust, Langfuse and Confident AI have converged on the comparison table with a named baseline and red or green deltas per row, and Langfuse shows score, cost and latency as separate changes. Google reports win and tie rates instead. Anthropic’s Console shows versions side by side and leaves the ranking to the reader, with human grades and no judge. No product ranks regressions by severity as the default view, and no source describes a cost or time estimate before a run starts.

On the judge, the field is moving fastest. LangSmith’s Align Evals shows human and model scores side by side, sorted to the disagreements, and keeps an alignment score per judge version. Freeplay asks the reviewer to agree or disagree ten cases at a time and switches the judge on when its alignment score clears a bar. DeepEval returns a reason beside each metric and reports how often each metric agrees with humans. Two 2026 papers explain why this matters. One found judges that agree with themselves above 0.95 and still carry position bias. Another gives the number of human labels a judge needs before the rest can be trusted.

six flows · where the field has converged and where it has not
write the set run compare investigate release monitor 9 of 12 ship it 10, none with a cost estimate 10, none ranked by severity 7, reasoning visible in 5 4, all by a threshold in a config file 6, same rubric online in 5

The release step is where the interaction is thinnest. Promptfoo, Langfuse and Confident AI can fail a check on a threshold, and Braintrust posts a table and leaves the call to the team. In each case the decision to block or warn lives in a workflow file, written once by whoever set up the check. No product asks, at the moment of release, whether this regression should hold the change. That is the open question in the brief, and Chromatic’s loop answers it: the check follows the review, and the review is an interaction a person lives through.

The measures, and the open questions

An experience like this is working on five measures. The time from a prompt edit to a confident decision drops. Most prompt changes ship with a test attached. Regressions are caught before release rather than after. The judge and the humans agree most of the time, and the team can see when they do not. And the eval set grows from production failures rather than from a one-time authoring push.

Three questions stay open, and the pattern pages say so. The brief frames this for prompt authors inside a builder product rather than for research teams running benchmarks, and the sightings support that default. Convergence claims stop where the evidence stops: the coverage table on each page names which vendor ships which flow, and nothing is claimed beyond it. And the release decision is in the library as an interaction, with its plumbing left to the deploy system, because the moment a person decides whether a regression ships is a moment worth designing.

Confidence is the product. A comparison a product manager can read, a judge they can question, and a baseline that moves only when they say so is what turns a prompt change from a guess into a decision.