
In the last note, we landed on an uncomfortable truth. The demand was there. The system wasn't. Advertisers were already showing up; the hard part was everything that happened after someone said, "We want to buy an ad."
So the next question was simple. What do we build first?
They didn't need another ad network
We didn't see this cleanly at first. For a while we kept reaching for the wrong shape. A marketplace to bring them advertisers? An ad network to resell their inventory? Each one quietly put us back in the middle of the deal. What publishers actually lacked was simpler, and less glamorous: their own place to receive demand and turn it into campaigns — their own selling layer.
Our founders spent years building apps, so we'd lived the pain — an advertiser reaches out directly, and acting on it means long email threads while the dev team stops shipping; and because buying was clumsy, the advertiser rarely came back. The largest ad platforms had solved their side of this long ago: advertisers were used to polished, self-serve systems. Smaller publishers never got that layer for their own inventory. That's the gap. Not a smarter targeting machine — a place to receive, price, and run the demand they already have.
The ROI didn't work — so we changed the cost of trying
I brought the question to Angie on our team, because she'd seen the other end of the market up close — inside Google's ads org. I expected her to help us scope the product. Instead, she challenged the premise: for most small developers, building this in-house would almost never pay off. The core product is already overwhelming, and an ad platform is more complex than the product itself.
The more we sat with that, the more it pointed at the real problem. It wasn't that publishers couldn't sell ads. It was that the infrastructure to sell them — an ad server, a booking flow, targeting, reporting, settlement — cost more than the ads would earn. The infrastructure had become bigger than the opportunity itself. So the move wasn't to convince each publisher to pay for it. It was to standardize that layer once, and let anyone switch it on. If the in-house path is a year and a six-figure budget, the core setup should feel closer to minutes than months.
We started with the most boring thing possible
We had a long list of formats we wanted to support — video, native, rewarded, sponsorship packages. But every new format made the first version harder to trust. So we started with the most boring unit possible: one banner. If we couldn't deliver one banner reliably, we had no right to call it an ad platform.
And the more we built, the less glamorous the product became. The thing publishers needed most wasn't another beautiful dashboard. It was the boring stuff no one wants to rebuild: pacing so a budget spends evenly, frequency caps, invalid-click safeguards, creative handling, reports, settlements. If any one of those broke, the advertiser didn't blame the system — they blamed the publisher. So we obsessed over the boring parts first.
What a publisher actually gets
Only once that foundation held did the rest take shape — and it's worth being concrete, because "ad platform" can mean almost anything. A publisher ends up with two things, both branded as their own: a console to run operations, and a platform where advertisers can browse their products and book campaigns themselves. They set their own prices — by impression, click, or fixed-period package — apply first-party-data targeting only they can offer, and the system paces delivery and handles the rest. In plain terms: the system that turns ad inquiries into booked campaigns, instead of into another email thread.
The customers made it real
The first sign it could work came in a sales meeting we expected to spend convincing people. Instead, we heard, "thanks for building this." It was a rough beta, but teams adopted it saying they'd been waiting for it — and then they made it real. The moment it became a daily tool, feedback poured in, and we ran flat out to keep up. The product that exists today was shaped as much by those early customers as by us.
What we chose not to build
We were tempted to make it bigger — more formats, more automation, more knobs. Every new format made us feel like the product was becoming more complete; in practice, it made the product harder to trust, and less likely to be used by the teams we were building for.
The clearest example was the AI auto-targeting the big platforms run. The question wasn't whether it sounded impressive — it was whether it matched why advertisers come to a smaller publisher in the first place. They don't come for automated matching across giant inventory; they come to reach a specific audience, in a specific context, with first-party data only that publisher owns. So we didn't chase the big-platform playbook. We made that kind of targeting sharp and flexible instead.
The principle
The principle we kept was simple: the publisher approves; the system handles the rest. That's Ad Control — the operating layer behind a publisher's own direct ad sales, built once and shared as a standard, so no one has to re-carve it.
Next time
What happened when a real publisher switched it on — and how the demand they'd been losing finally had somewhere to land.