Ad tech · 2024

Five products, six ad surfaces, one auction. Every product call was mine.

Advertising had to become a primary revenue line. I ran the product from nothing to a live marketplace: the engine, the advertiser studio, and every placement across all five products.

RoleProduct lead, 0→1 · seven-person team
When2024
OwnedThe engine, the studio, the placements, the pricing, the guardrail
ResultSix surfaces live, forty advertisers, zero ad ops headcount
01 · The mandate

Ads had to carry the company, so I got the whole surface.

We ran five products. Streaming, social, marketplace, payments and cloud. Leadership decided advertising should become a primary revenue line, and handed me the product from nothing.

Three pieces had to exist at once. The engine that decides and serves the ad. The studio where an advertiser builds, funds and manages a campaign without us. The placements, six ad surfaces spread across all five products.

None of them is worth anything alone. An engine without a studio needs an ad ops team to operate it. A studio without placements sells nothing. So it shipped as one product, and leadership had to agree to that first.

The studio is the piece an advertiser actually touches. Campaign, ad sets, creative, copy, destination and a live preview, with nobody on our side in the loop.

The advertiser studio
The advertiser studio. A campaign tree on the left holding three ad sets and six ads, the selected ad being edited in the middle with its creative, headline, caption and call to action, and a live preview of the ad on the right.

What the frame does not show is the research underneath it. Advertisers do not build one ad, they test. Similar creatives against unique audiences, or unique campaigns against a similar audience. Every one of those is a small edit to something that already exists, made dozens of times in a week.

That is why the left rail is an accordion. Campaign, ad set and ad stay open together, so moving between assets costs one click and never loses your place. Research put that ahead of everything else on this screen.

02 · Build versus rent

I built the ad server instead of renting it, and it cost us time.

The fast path was a third-party ad server. Plug into something like Google Ad Manager and serve a real ad in weeks. I turned it down for three reasons.

Inventory
Ads inside a live stream, a social feed and a marketplace listing, sold to the same advertiser in the same session. No vendor models that. We would have spent the time we saved bending their schema instead of writing ours.
Control
Renting the ad server means renting the yield logic and the experimentation surface with it. Those two layers were exactly the ones I needed our own teams to open and change.
The P&L
This was a business unit.

It cost us real time to the first impression. I would make the call again, and section five is the reason.

03 · Ownership

I owned the product. Engineering owned the build.

Seven people, total. An engineering lead ran the build with four engineers and a data scientist. I was the only product person on it, across all three pieces.

Mine

  • Build versus rent.
  • The six surfaces, which opened first, and what each one was worth.
  • The studio, from an advertiser's first login to a live campaign.
  • Pricing, and how money entered the system.
  • The guardrail that could stop a launch, including one of mine.

Not mine

  • The implementation, from the auction to the delivery path.

Seven people can only build a two-sided marketplace if the product creates no manual work.

The auction is the half I did not build. Floors and frequency caps clear before price decides anything, and this is it running.

This was an auction over inventory we owned, sold to advertisers who bought through our own interface. Every bidder in it held an account with us.

04 · How I ran it

Paying advertisers redrew the roadmap, weekly.

Every stall in the funnel came back to me. Where advertisers dropped out, what they asked support for, and what they asked for that we did not have. I aggregated it every week and worked the list with design and engineering directly, shipping against it while the platform was live and growing. The people spending money set the order.

That only works if the product can absorb the changes, which is why self-serve was the harder build and the whole point. An advertiser sets their own targeting, budget, pacing and creative, and nobody on our side touches a spreadsheet to get it live. Demand scaled against a four million member base with no ad ops function. Managed service was the alternative, and it turns every new advertiser into a fraction of a person you have to hire.

Money worked the same way. Prepay, by top-up. A campaign cannot be submitted unless the balance covers it, and at submission that budget is committed. Credit decisions, collections and chargeback exposure never reached the build list.

The minimum was $50, deliberately low. The first thing to prove was that a stranger could fund an account and get a campaign live without us. A high minimum hides that failure behind a sales call.

I partnered with the sales and marketing team on our go-to-market strategy and its implementation. The first forty advertisers arrived in three waves. Ten through relationships leadership already had. Ten from businesses already using our other products. Only the last twenty came through sales. What the product had to do was make sure that once a warm introduction landed, nothing on our side stood between that advertiser and a live campaign.

05 · The money decision

I gave a holdout a veto over my own revenue number.

We tested a heavier ad load and it worked, briefly. Click-through rose. Short-term yield rose. Then the long-term holdout came back and said the retention cost outweighed the gain, so we did not ship it.

We set the threshold before the test ran, on long-run retention.

eCPM and ARPU move in the direction everyone in the room wants. A holdout has nothing to gain from the answer, so it gets the veto.

The revenue number will always argue for more advertising. Something in the system has to be able to say no, and it has to be able to say it to me.

That is the payoff on section two: with a rented ad server, the holdout is a feature on somebody else's roadmap.

06 · What I got wrong

I planned the engine and underplanned the people around it.

The engine could take a campaign from a stranger and serve it the same day. What I did not size was the manual work that still sat around it. Our moderation tools caught inappropriate creative. They could not tell us whether an advertiser was legitimate, whether a campaign fit the audience it was buying, or whether a first-time buyer would get through setup without someone on the phone.

Advertisers arrived expecting Meta. That meant reviewing accounts and campaigns above the line of “acceptable,” building relationships with each advertiser, and walking them through the system one at a time. None of that time was in the plan, and a seven-person team with no ad ops role absorbed it.

I would estimate the operational work on day one, next to the engineering: an advertiser review step above content moderation, an owner for advertiser relationships, and hours against both. We fixed it. It should have been in the plan.