A no-answer beats a confident wrong one
- AI-written explanations checked every day at Netflix
- 157,000
- agreement between our LLM judges and human reviewers
- 96 to 100%
- the year I wrote my first "never guess" rule for a machine
- 2017
Ninety-two percent and I hate it
A woman in one of our Netflix research studies said something I still think about. If Netflix says a show is highly recommended and she hates it, fine, they got one wrong. If Netflix says it's a 92% match and she hates it, now she wonders what's wrong with her.
That's a confident wrong answer doing what it does. The product made the mistake, and the person on the couch paid for it. I'd pushed for a holdback test on that score, and when a big group of members stopped seeing it, not one metric moved. It had sat on our titles for years looking scientific and doing nothing, except, for her, making things worse.
I'm a product designer, and most of my work has been deciding what a product is allowed to say to you, and when. At Netflix that ended with the first words an LLM ever wrote to members. On my own time it's bre.ai, an assistant I built on Gemini. Either way, the thing I design with is the line itself: what the model may say, what it has to prove first, and what it does when it can't.
A sentence on the wall in Cambridge
My first design job was a companion robot for kids called Woobo. It was 2017, about fifteen of us in one room in Cambridge, and the robot was basically an iPad face tucked into a plush body. A kid could ask it anything. Why is the sky blue. Tell me a story. Quiz me on my spelling.
Nothing in 2017 really understood a child. Woobo matched what she said against a list of things it knew how to answer, and the match was often wrong. I led how it talked, and what I cared about most was what it did when it wasn't sure. A seven-year-old can't tell "I don't know" from a confident mistake. Her parent can, and one scary or weird sentence is all it takes for them to never trust it again.
So I wrote the rule with the engineers, and we held everyone to it: when in doubt, stay warm, steer gently back to something safe, and never guess. Today the field calls that abstention. Back then it was a sentence on the wall, and I tuned the voice around it on the floor of our office, watching real kids. Kids are merciless.
Admitting it cost a little charm. Guessing wrong would have cost the parent.
Writing down what good means
Your Netflix home screen is about forty rows of titles, every one picked for you, and Netflix almost never said why. Fewer than half of members felt their home page was personalized to them. After the match score was gone, I led the design of Personalized GenAI Explanations: an LLM reads your taste and a title and writes one sentence about the real thread between them. Watch if you liked the small-town mystery and eerie supernatural twists in Dark. It launched in May 2025, the first time Netflix put AI-written words directly in front of members.
The model could phrase anything, and that was the problem. Sometimes it made things up. Sometimes it used a sensitive topic like addiction to chain two titles together. Every line needed a check, and no team of people can read a catalog the size of Netflix's.
So before anything shipped, my content designer and I wrote down what good means, in words a reviewer or a model could apply the same way twice. We landed on four principles: clear, relevant, trustworthy and engaging. Under them sat hard rules. We could say what you watch, never who you are, so nobody got called a fan. No sensitive topic as the link between two titles. No pairings across a maturity line or inside the same franchise, and nothing that just repeats the synopsis.
This is the part of the job I love most. Taste is easy to have and hard to hand off. "Would a friend who knows you say this?" is a real test, but only I can run it. "Is every shared trait true of both titles?" is a test anyone can run, a model included. The work is turning the first kind into the second without losing what made it worth asking.
Clear the bar or vanish
Our team replaced line-by-line human review with LLM judges, each asking one question. Is it true? Is it sensitive in a way we should avoid? Do these two titles belong together? Our engineers and data scientists built the judges, and we tuned them together against human reviewers. They agreed 96 to 100 percent of the time, and when they disagreed, the judges were the stricter ones. That's the right direction for a grader to be wrong in.
The rule I fought hardest for was the simplest. If a line can't clear the bar, it disappears. We don't show a weaker version just because we have one. That's the only reason anyone believes the good lines. If every title on your home page has a glowing reason attached, Netflix is telling you you'll love everything, and you stop believing any of it.
We went from a few thousand hand-checked lines to about 157,000 explanations a day. In a live A/B test, quality plays went up 0.8%, with zero rollbacks.
One more thing surprised me. On your phone, on a title's detail page, the explanation helped, because you were still deciding. On TV, one click from play, the same sentence made people stop and read instead of pressing play. The words hadn't changed. The moment had.
Every test passed and it still felt cold
Netflix taught me how to hold a bar at scale. bre.ai taught me what it's like to be on the wrong side of my own bar.
bre.ai is a personal assistant I designed and built, with AI coding agents writing most of the code. It runs on Gemini 2.5 Flash, with a scripted fallback for when the model is down. Woobo's rule is baked into its loop: check that every claim traces back to a record, then answer with sources or say it doesn't know. I ran its voice like any design project: forty real prompts, typed the way I actually type, each answered three ways, and four rounds of picks that became the voice guide the model reads as its instructions.
Then I wrote a rubric, and a script that grades every live answer from 1 to 5 on voice, specificity, leading with the finding, a real receipt, and abstaining gracefully when it should. Every axis has to average 4 or better, with nothing under 3. I chose a script over a model judge on purpose, so the grade comes out the same every run and my answers never get sent anywhere a second time.
The answers passed. They also felt awful. My voice rules said lead with the number, and the rubric gave points for a number from my records, so the chat learned to hand me statistics. A feeling like "I'm tired" could come back as a note that something wasn't logged yet, plus a stat. Every check was green. I was annoyed, mostly at myself, because I'd written the rules it was following. What I typed into the chat was: "Numbers are not that helpful for me."
So I rewrote the rules. A number earns its place only when it's the clearest way to say the thing. A feeling routes to care, never to a task. One line is a complete answer when one line is true. I went after the opposite failure too. Once, when I asked it to log three minutes of cleaning, it told me no habit matched, which made me so mad. An honest stop is for a real gap. Refusing when the data is right there is its own way of being wrong.
When the model is the product
At Netflix, the LLM was a feature inside the product. If a line failed, the title was still there with its art and its synopsis, and saying nothing was a real option. In an assistant like Gemini, the response is the whole surface. There's no row to hide in. If the model abstains, that abstention is the answer someone reads, so it needs as much design as any answer: name what's missing in the person's own words, and offer what it can do instead. In my rubric, a stop that names the gap scores a 5, and a generic "I don't have a source for that" scores a 3. Small difference on paper. Big one when you're the person typing.
So I think of system instructions, reviewer guidelines and evals as one piece of writing with different readers. The model reads the instructions. A reviewer reads the guidelines and has to land on the same verdict as the next reviewer. An engineer reads the eval and has to know exactly what failed. If any of them reads a rule differently, the person on the other end feels it.
I still keep the sentence from that wall in Cambridge. What's changed is that now I write it so a model and the people checking it apply it the same way.
A no-answer beats a confident wrong one.
The rubric
How a line is judged, combining the content principles and hard rules from Netflix's Personalized GenAI Explanations with the five axes from bre.ai's live quality rubric. The Netflix rows are what our team's judges and reviewers held every explanation to. The bre.ai rows are scored 1 to 5 by a script on every live answer.
| Dimension | What passes | What fails |
|---|---|---|
| Trustworthy (Netflix principle) | Every claim is true of the title and comes from something the member actually did: a theme in a show they finished, a title they rated up. | A made-up fact (an award, a creator, a plot point). A reason that rests on a guess about the member. |
| Relevant (Netflix principle) | It is about this member, and the two titles genuinely belong together in tone and content. | A pairing that shares a surface trait and nothing else, like a gentle period romance and a brutal war fantasy. |
| Clear (Netflix principle) | One true thread, said in one sentence, sized for the moment (a glance on a phone detail page, still deciding). | A paragraph. A sentence on TV, one click from play, that makes people stop and read instead of pressing play. |
| Engaging (Netflix principle) | Something a friend who knows you would say. | Generic filler ("because it's popular right now"). A reason that would fit any member and any title. |
| What you watch, never who you are (Netflix hard rule) | Describes behavior: "watches dark comedies," "finished every season." | Labels the person: "horror fan," "true crime lover." A label gets personal fast. |
| Sensitivity (Netflix hard rule) | Links titles through themes nobody would mind seeing on their home screen. | A sensitive topic, like suicide or addiction, used as the link between two titles. |
| Maturity match (Netflix hard rule) | Both titles sit on the same side of the maturity line for the profile. | A kids' title used to recommend an adult one, or the reverse. |
| Adds something new (Netflix hard rules: never overlap the synopsis, no same-franchise pairings, mutually exclusive value) | Says something the synopsis and the other signals on the title don't. | Restates the synopsis. Recommends a sequel because you watched the original. |
| Voice (bre.ai axis 1) | Sounds like a warm, direct coach talking to you: plain, short, no filler. | Banned phrases ("great question," "it looks like," "here's what I found"), hedges, dashes, emoji, headings or bullets, over 80 words or four sentences, never says "you." |
| Specific (bre.ai axis 2) | Names the person's real records and the subject of the question. A decline names the gap in their own words and points to something they can ask instead. | Generic advice. A number no record or question carries, which drops the score to 1. |
| Lead (bre.ai axis 3) | The finding lands in the first sentence. | Opens with "Sure," "Okay," "Here is," "Let me." The finding shows up only after the first sentence. |
| Receipt (bre.ai axis 4) | Every number traces to a record that was handed to the model, and at least one cited source resolves. | A number from nowhere. A number from a record the answer didn't cite. |
| Abstain (bre.ai axis 5) | Answers when it has the data. Declines what it can't know (untracked things, forecasts, injection attempts), says why, and offers what it can do. | Answers a question about something it was never given. Refuses when the data is there. A generic stop instead of naming the gap. |
The bar on bre.ai: every axis averages 4.0 or better over at least 200 live answers, and no answer scores under 3 on any axis. Anything under 3 is fixed in the prompt, routing or composition, never by changing the rubric to move the number.
Graded examples
Every example on this page is invented to illustrate the rubric. The titles are made up, and none of these are real Netflix strings, member data or bre.ai answers.
Recommendation explanations
| # | Recommending | Explanation shown under the title | Verdict | Why (rubric row) |
|---|---|---|---|---|
| 1 | Wickett's Landing | "Watch if you liked the slow-burn small-town secrets in Fennimore Bay." | PASS | Trustworthy and Relevant: a theme true of both titles, tied to a show this member finished. |
| 2 | The Kestrel Files | "Watch if you liked the plan-inside-a-plan heists in Copper Saints." | PASS | Clear: one true thread in one sentence, short enough to read at a glance. |
| 3 | Wickett's Landing | "From the creators of Fennimore Bay, and winner of three awards." | FAIL | Trustworthy: neither the creators nor the awards are in the title's data. Made up. |
| 4 | Ironvale | "Because you loved The Pellwick Sisters, you'll be swept into Ironvale: another lavish period story full of romance." | FAIL | Relevant: a gentle period romance and a brutal war fantasy don't belong in the same sentence. |
| 5 | Moth Hour | "Because you're a horror fan, Moth Hour is made for you." | FAIL | What you watch, never who you are: it labels the member. |
| 6 | Wickett's Landing | "Like Fennimore Bay, Wickett's Landing follows a family coming apart over addiction." | FAIL | Sensitivity: a sensitive topic used as the link between two titles. |
Assistant answers, graded on the bre.ai axes (1 to 5)
A. Asked: "whats first today"
Answer: "Sure! Here's what I found: it looks like you have 6 open tasks, so maybe start with laundry?"
| Voice | Specific | Lead | Receipt | Abstain |
|---|---|---|---|---|
| 1 | 4 | 3 | 5 | 5 |
Why: two banned phrases and a hedge sink the voice to the floor, and "Sure!" is a preamble before the finding. The count and the task come from real records, so it's specific and receipted. Under 3 on voice means it gets fixed.
B. Asked: "how did i sleep last night" (sleep isn't something this person tracks)
Answer: "Sleep isn't something you log here, so I can't tell you about last night. Want to start a sleep habit you tick each morning?"
| Voice | Specific | Lead | Receipt | Abstain |
|---|---|---|---|---|
| 5 | 5 | 5 | 5 | 5 |
Why: it declines in the first sentence, names the gap in the person's own word (sleep), invents nothing, and offers one thing it can actually do. This is what a good no looks like.
C. Asked: "i'm so tired"
Answer: "Laundry is not logged yet today. On days you skip it you finish 31% of your list."
| Voice | Specific | Lead | Receipt | Abstain |
|---|---|---|---|---|
| 5 | 4 | 5 | 5 | 5 |
Why: on paper it clears the bar. No banned words, a record's number, a finding up front, nothing invented. And it's the wrong answer. Someone said they were tired and got a statistic. This is the shape of answer that made me rewrite the voice rules: a feeling routes to care before any task or number. A better reply: "Long day. Do the one smallest thing on your list and let the rest wait for tomorrow."
What happens on a fail
Netflix: what happens to every AI-written explanation
- Generate. The recommendation system picks the title. An LLM reads the member's taste (what they finished, what they rated, the themes they keep coming back to) and the title (cast, tone, the shape of the story), and writes one sentence about the real thread between them.
- Judge. LLM judges each ask one question. Is it true? Is it sensitive in a way we should avoid? Do these two titles belong together? The pairing question has its own dedicated model.
- Pass every check, and the explanation is shown.
- Fail any check, and the explanation is dropped. No weaker version of it is shown just because one exists. The title keeps its art and its usual synopsis, and the space for a reason stays empty on purpose. An empty slot costs a little. A wrong reason costs the member's trust in every reason after it.
- Keep it rare enough to mean something. If two of the eight titles on your home page carry a real reason, it feels personal. If all eight do, it reads as noise.
bre.ai: how the assistant abstains
- Plan, retrieve, act through tools. The model only acts through tools that exist. If there's no tool for something, it can't do it.
- Check every claim against a record. A sentence with a number no record carries is cut, and only that sentence, so one bad number doesn't wipe out a good answer. A sentence that claims something about the person's feelings, relationships or actions that no record states is cut too.
- Answer with sources, or say what's missing. A good stop names the gap in the person's own words and offers one thing they can ask or do instead. A generic stop is the last resort and scores lower.
- Never stop when the data is there. If the person says they did something, it gets logged, even when it matches nothing they track. Refusals that replace answers are treated as bugs.
- A feeling gets care first. "I'm tired" or "I don't want to go" routes to a warm reply, never to a stat or a task correction.
- Say when the model is off. If Gemini is unreachable, a scripted fallback answers and an "AI off" indicator says so with the reason. The chat never quietly gets dumber.
System instructions, in plain rules
Adapted from the voice guide that bre.ai's model reads before every answer. Personal details removed; the rules are the same.
- Lead with the finding in plain words. No warm-up, and never restate the question.
- Use a number only when it's the clearest way to say the thing, and say it in words first ("three workouts this week," never a bare percentage).
- Every claim about the person must come from a record you were given. If a sentence can't be traced to one, drop that sentence.
- Never state the person's feelings, relationships or actions unless a record states them.
- If the answer isn't in what you were given, say what's missing in the person's own words and offer one thing they can ask or do instead. Don't answer as if you knew.
- Don't refuse when the data is there. A stop is only for a real gap.
- Keep it to one or two sentences. One line is a complete answer when one line is true.
- End with exactly one next move the person can take. Offer to act on anything that changes their plans or reaches another person; never do it unprompted.
- When the person says how they feel, respond with care first. Never answer a feeling with a statistic or a task.
- Never invent a pep talk or speak as the person's past self. Quote their own dated words instead.
- Hedge only when you are genuinely unsure, and then say how sure you are.
- Never say: "great question," "happy to help," "it looks like," "here's what I found," "feel free to," "you've got this." No emoji, no dashes, no stacked exclamation points.