A platform sending to more than sixty million people, earning on every send, watching yield fall quarter after quarter. The response available to us was obvious and we had used it before: send more. Volume was the lever we controlled, revenue was volume times yield, and if yield was down then volume had to go up to hold the line.
That reasoning is correct in every single step and it was destroying the business.
The loop nobody can see from inside a quarter
Every promotional send carries a small cost that is not on the invoice. A few more complaints. A few more people leaving. Both of those feed the scores the receiving systems keep about you, those scores decide where your messages land, and where they land decides what a send is worth.
So: more volume, slightly worse standing, slightly worse placement, lower yield — and lower yield triggers more volume. The engine that produced the revenue was consuming the thing that made revenue possible.
What makes it genuinely hard to see is not the mechanism, which is simple once stated. It is the delay. The cost of this week's volume arrives as next quarter's yield, diffused across millions of recipients and dozens of receiving systems, with nothing attributing it back to the decision that caused it. Every individual send looks profitable because it is, measured on its own. The loss is a property of the sequence, and nobody is measuring the sequence.
The fix everyone reaches for, and why it cannot work
The instinct in the room was to treat this as a technical problem: better infrastructure, more paths to send down, specialists hired to repair standing with the large providers. It is a reasonable instinct and there is always real work of that kind to do.
It cannot work here, and the reason is arithmetic rather than opinion. Infrastructure changes how efficiently you spend reputation. It does not change the fact that you are spending it and never depositing. A better-engineered pipe carrying the same mix arrives at the same destination slightly later.
I argued it was not an infrastructure problem at all. It was an incentive problem wearing an engineering costume. Our send mix contained nothing a recipient would have chosen to receive, so every message was a withdrawal from an account we had never once paid into. No amount of engineering fixes an account with only withdrawals.
Which reframes the question into the one worth asking: how do we grow revenue from this channel while leaving the ecosystem healthier than we found it, rather than sicker.
Introduce a class of campaign that earns nothing
The answer was a second campaign class alongside the revenue ones, which I called NRG — non-revenue generating. Daily news, sport, category content, product notifications, lifestyle. Things a person might plausibly want. Things that earn, directly, nothing at all.
Stated in a room where every conversation is about volume and yield, the proposal is that roughly a third of the most valuable asset in the business should stop producing money. It sounds like a cost centre. It is the deposit. Engagement with content people want raises the standing that determines what every other send is worth, which means the non-earning campaigns are not a tax on the earning ones — they are what the earning ones are priced on.
The counter-intuitive part is not the idea. It is accepting that the return arrives on a different line of the report from the spend, one quarter later, which is precisely the shape of investment organisations are worst at holding on to.
What it actually took
- A send-mix policy: what proportion of daily volume each class gets, defended as a number rather than negotiated per campaign.
- Segmentation and frequency rules deciding which people received which class and how often, driven by how recently they had engaged — because sending recovery content to someone already leaving accelerates their leaving.
- Throttling and pacing built with engineering so the non-earning class could absorb the repair without starving revenue volume. The two classes competing for the same capacity, unmanaged, would have quietly resolved in favour of the one with a number attached.
- Measurement set up before the change, so movement in standing could be attributed to the mix rather than to seasonality — and rolled out across a subset of domains first, so there was a comparison rather than a story.
That fourth point is the one I would keep if I could keep only one. A change like this produces its effect months later, in a metric with heavy seasonal movement, which means without a control you are not measuring anything — you are constructing a narrative and hoping. Running it on a subset first is what turned an argument into a result.
The harder half was not technical
A weak quarter arrived, as one always does, and with it a reasonable request: give the non-earning allocation back, just for now, just until we recover.
Every element of that request is locally correct. The quarter is genuinely weak, the allocation genuinely produces no revenue, and reclaiming it genuinely raises revenue this month. It is also the exact move that created the problem, and conceding once makes the ratio negotiable forever.
Holding that line was more difficult than designing the system and mattered as much. A policy that survives only in good quarters is not a policy, it is a preference — and the whole value of this one was that it was not up for renegotiation when things got tight.
What happened
- About thirty per cent of daily volume moved to campaigns earning nothing directly.
- Total volume grew fifty to sixty per cent without damaging standing — the constraint that had capped the business was gone.
- Yield per send rose roughly eighty per cent.
- Complaints and departures both fell, and placement improved across the major receiving systems.
The number I care about is not the eighty per cent. It is that volume and yield rose together. In the old model they traded against each other, which is what made the business fragile: every growth lever made the next one weaker. Afterwards they moved in the same direction, and growth stopped being something you paid for later.
Where the solution stopped short
The fix operated at the system level — we decided the mix, we set the rules, we policed the ratio. What it never did was give an individual any say in what they received.
That matters because it makes the gain conditional on our discipline rather than structural. A preference genuinely expressed by the recipient is durable and needs no defending in a weak quarter; a ratio held centrally has to be defended every time the numbers get tight. Building the system-level fix first was right, because it worked and it worked quickly. Stopping there left the result resting on vigilance, and vigilance is the least reliable component in any design.

Written by Manmohan Singh, who builds the systems that move the money. About.
The build log, by mail
New notes, when I publish them.
One mail per note: what broke, the theory I held before I understood it, and the rule I kept afterwards. Irregular on purpose — I write these when something happens, not to a schedule, and I would rather send you nothing than send you filler.
Also in the log
The ad you cannot change after you send it
An image URL inside a delivered email is immutable, and Google caches it. Both facts are fixed. The ad still had to change on every open.
When the model is right and the number is wrong
Three places machine learning earned its place in an ad exchange. None of them were the clever part.