Product1 distinct publisher3 min readPublished
The worked example is a made-up houseplant app and 15 synthetic interview transcripts. Its useful lesson is that the bookkeeping behind a baseline belongs in a script long before anyone debates the metric.
The Product Desk · Product desk

Compiled by The Product DeskSomething wrong?How this is made
One of the transcripts in the repo describes a participant who opens the app every single morning and has already decided to cancel at the end of the month. The baseline prompt gets her status wrong [5]. The story it writes about her reads fine. You only catch the error because a golden dataset eval holds a label the story disagrees with [6].
Most teams say they agree on what quality means before they measure it. In practice, they open four or five outputs, find one bad quote, edit the prompt, and move on. That is not laziness. A real baseline means running every input through the prompt, saving each output, running every eval against every output, tallying the results, and then repeating the lot for each variant, which producttalk.org says you can do by hand until it gets tedious [11].
Count the tedium. Fifteen transcripts through two prompts is 30 stories [15]. Thirty stories against four evals is 120 scored checks for one before-and-after [16]. In the repo, that is three commands, because each of the three steps is a single one [19].
The reported effect of adding grounding rules and status definitions to the prompt: fabricated quotes went from 12.5% to 1.7% [8], a relative drop of about 86% [17], and ungrounded claims went from 8.4% to 3.2% [9]. The second number matters more, because 3.2% still works out to roughly one claim in every 31 [18]. Whether that residue is trivial or the kind that ends up quoted back at you in a readout is not something the summary table answers, which is why the harness also writes a failures file per eval in prose a person can read [12].
Order your own checks by what each one costs to trust. Two of the four here are code assertions: quotes must appear word for word, and the model must produce the number of quotes the prompt asked for [6]. Those need no labeling and no faith. The status eval needs a correct answer for each transcript. The fact-checking judge needs the most, and it arrives with a calibration set of 29 hand-labeled claims precisely because the judge is an LLM too [6]. Teams reach for the judge first, since it feels closest to measuring quality. It is also the only one of the four whose own output you have to audit.
The honest caveat is that the transcripts are synthetic [4], so every trap in them is one the author knew to set: the sister paying for the annual plan, the roommate with 20 plants [4]. Real inputs will surface failure modes the harness's author never anticipated. That is an argument for cheap re-runs, not against the example.
So the forcing function, before anyone in the room argues about which metric matters. Two artifacts on the table: a number attached to a fixed input set, and a failures file that someone who was not in the room can read. Then the rule producttalk.org applies to its own experiment, which is that a change fixing one error while making another worse is not an improvement [13].
Ranked by verification strength, evidence, and original report placement.
The author of producttalk.org built a simple test harness to run evals for their customer-facing products, then cleaned it up and put it in a repo along with a complete worked example that lets you watch the whole loop run on a small example before swapping in your own inputs, prompts and evals.
You do not need an API key to follow along: the repo includes a complete run with the outputs from both prompts, the results from every eval, and the comparison between the two, so readers can either read the existing results or generate their own.
The worked example is Sprout, a made-up houseplant care app; the workflow under test takes a customer interview transcript, writes a short story about that person's first month with the app, and labels the participant's status as still using it, stopped, or undecided.
The repo includes 15 interview transcripts that are synthetic but contain messy details: in one the participant's sister pays for the annual plan, in another the roommate has 20 plants rather than the participant, one participant reaches the payment screen and backs out, and in another the interviewer misstates a number and the participant corrects it.
Three of the transcripts were designed specifically to make the status label hard to get right, including one participant who opens the app every single morning but has already decided to cancel at the end of the month; the baseline prompt picks the wrong status for her.
The repo carries four evals: a code assertion that every quote appears word for word in the transcript, an LLM-as-a-Judge fact-check of each claim against the transcript that comes with a calibration set of 29 hand-labeled claims because the judge is an LLM too, a golden dataset eval that checks the status label, and a second code assertion that checks whether the model used the number of quotes the prompt asked for.
Distinct publishers with included, body-backed reporting in this cluster.
1 article · September 2, 2026
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
One author, one run, homework attached
Everything in this story comes from the person who wrote the harness, which would normally cap the evidence low — except this post ships its homework. The repo carries both prompt runs, every eval result and the comparison, so a skeptic can read the failures without an API key or a token of trust. What is absent is the part that would make the numbers portable: no model or version is named, no second run, no variance, and the test bed is 15 synthetic transcripts on an invented app built by the same hand that grades them.
Published, uptake unobserved
The only event that has actually happened is publication. No download or fork count, no third party reporting that they swapped in their own inputs, no team saying they run it — and with Product Talk as the sole voice, any uptake would be invisible here anyway. The score marks a real, complete artifact with nothing yet built on it.
Modest overreach on small denominators
The arithmetic in the framing holds up: 15 transcripts through two prompts scored by four evals genuinely is 120 checks, and the loop genuinely is three commands. The stretch is inferential. A fall from 12.5 percent to 1.7 percent in fabricated quotes across 15 short stories is a handful of incidents, and 'every error rate went down' is a lot of weight for one pass over a set deliberately seeded with the errors being counted. Restrained prose, fragile denominators.
Author reviewing his own tool
This post is a distribution channel for its author's evals guide and now his harness: same author, same tool, same numbers, and the artifact being praised is his. None of it is concealed — the guide is cited in the first line — and handing over the complete run works against cherry-picking, since anyone can read the failures. Still, no one else appears in this story to disagree with him.
Solid on mechanics, thin on numbers
What the repo contains is close to certain: it is inspectable, and the author has staked his teaching material on it being reproducible. What the percentages mean outside Sprout is close to unknown, since nothing here names the model, the cost or whether a rerun lands in the same place. Read the harness as a working pattern with confidence; hold the error rates loosely.
Follow any of these and your For You feed starts watching them — no settings page required.
build
Lovable's next product is your app's tool surface, served by a hosted MCP server1 distinct publisher
product
amber's 7mn-euro bet: the AI cost centre has moved upstream of the model1 distinct publisher
build
Logs behind a fluent RAG demo showed the correct chunk arriving 30% of the time1 distinct publisher
build
Grok Build's real product is the X timeline, not the code generator1 distinct publisher