Skip to content

Back to blog

Behind The Build

We wrote a rule against upgrade banners, then broke it

A decision record that argued against nagging users, the ruling that overturned it, and what we kept from the argument we lost.

UTTER IN3 min read

A paper wireframe of a page layout, with a flat blue banner strip laid across the middle of it.

Every product you have ever used has a strip at the top of a screen telling you what a paid plan would give you. We wrote a decision record specifically to stop ourselves from building one, and then we built one anyway. Both halves of that are worth explaining, because the second half is not the failure it looks like.

The rule

UTTER IN is meant to be calm. That is not a tone of voice, it is the whole proposition: you say a thing, it is caught, and you stop carrying it. So we wrote down where the product is allowed to ask you for money, and the answer was only where you have just hit a limit.

The reasoning was that a payment prompt is only honest at the moment it answers a problem you actually have. You have used your last capture for the month, and here is what a bigger plan includes — that is information. The same words on a day you were not thinking about capacity is just pressure.

We also banned the usual mechanics outright, and that list still stands:

  • No countdown timers
  • No "limited time" or scarcity language
  • No streak-loss framing
  • No invented social proof
  • No prompt whose dismissal is not permanent for that period

And one rule that outranks all of them: nothing may appear between the thought and the catch. No prompt before a capture is saved, ever. The product exists to protect that moment.

Then it lost

The record was written but never actually ruled on. When it was, the ruling went the other way: there is now a permanent promotion slot at the top of the inbox.

The argument against it is not withdrawn, and that matters. It reads, roughly: continuous pressure on someone who has not hit a problem is corrosive in a product whose value proposition is calm.

Here is the counter-argument, which we think is the stronger one right now:

A calm product with no revenue and no users is not yet a product. The limits that promotion was restricted to are reached by almost nobody at current volume. A surface that converts nobody is not calm, it is absent.

Both of those can be true. What changed was not the principle but the weighting, and writing down which one moved is the difference between a decision and drift.

What we kept

The slot is bound by everything the original argument established, and this is where a lost argument still does real work:

  1. It sits above the page title, outside the capture path. A placement under

each result card was proposed and rejected — it fires once per capture rather than once per page, and it lands on the exact beat the product is built around.

  1. Every allowance figure is read from the pricing table, never typed. A test

asserts that no number appears as a literal anywhere in the component or its copy, so a promise cannot go stale the day pricing moves.

  1. The banned list survives intact. No countdowns, no scarcity, no fake anyone.

The part worth taking away

Keeping the argument you lost is not sentimentality. It is the thing you measure against later. If the slot turns out to cost more in trust than it earns in revenue, we will not have to reconstruct why anyone objected — it is written down, in full, next to the ruling that overruled it.

That is what a decision record is for. Not to be right, but to be legible when you turn out to be wrong.

Something to add, or something we got wrong? Tell us.

Get new posts by email

Occasional, and only when there is something worth reading. One click to leave, in every email we send.