Volume only pays because the return on an ad is a power law
Cliff Weitzman wrote a rap song about his own dyslexia and ADHD, put it into Meta's auction, and it brought Speechify around $3 million in revenue. The ad he expected to win, an Old Spice-style production number with real money behind it, got 300,000 views. His other famous winner came out of a separate exercise: he took the 100 best-performing ads in history, rewrote each script to be about Speechify, tested dozens of variations, and the survivor was Weitzman in a suit and red headphones sitting in a hot tub.
I would have backed the production number too.
Meta now decides who sees an ad before the ad has earned an impression. Andromeda, the retrieval stage announced in December 2024 and finished rolling out to every account over the last few months, filters tens of millions of eligible ads down to a few thousand candidates per person before ranking or the auction begins. The creative does most of that filtering. Interest targeting has become a soft bias the system overrides the moment the creative signals a better match elsewhere, so the audience an ad reaches is decided by what it looks and sounds like, on the semantic fingerprint Meta assigns it at upload.
The output of that system is a power law. About half of all Meta ads receive minimal or no spend: the retrieval index never picks them, so they never enter the auction, so the platform never explains why. A handful of ads at the other end take most of the budget and most of the return. When one ad pays for the several hundred around it, you run wide enough that the batch contains the one. Weitzman: "No matter how smart you are, you're not going to know ahead of time which thing is going to convert."
Which is how you arrive at 1,300. Speechify tests around 1,300 machine-made ads a day across Meta, TikTok and YouTube, a figure Weitzman rounds down to a thousand on some days, with about $500,000 a month behind the experimentation. Generation is the cheap part: a model writes a hook and cuts a variant for cents. The concepts underneath, the rule that kills a variant, and the plumbing that finds the winner afterwards each cost more than the generation does. The concept layer alone is 8,000 human pieces a month.
The ad nobody believed in against the one everybody did
The production number bought reach and the rap song bought revenue, and the person who made both had them ranked the other way round. That gap is what running wide is paid to find.
Eight thousand human pieces a month is where every concept starts
Underneath the 1,300 a day sits a second number that gets quoted less: roughly 8,000 human-produced pieces a month, which Speechify describes as organic creative. Divide it out and the machine makes about five ads for every one a person made.
The human layer is where a concept starts. Founder-on-camera work with a point of view, like the rap song and the hot tub. UGC shot by creators in their own voice. A specific tension in front of a specific person: a dyslexic student who has never finished a textbook, a lawyer with 400 pages to read by Monday. Each is a distinct idea about who the product is for, and a distinct idea is the object Andromeda indexes.
The AI layer takes a concept and reskins it, Weitzman's word. In the accounts we run that means the variables inside a fixed idea: the hook line, the first three seconds, the voiceover, the caption track and the crop for 9:16 against 4:5. Same argument, thirty ways of opening it.
Andromeda is the reason the seed layer has to exist. It assigns each creative a semantic fingerprint and groups near-identical ads together in the retrieval index. Change a headline colour, swap the CTA, trim two seconds, and the system files it as a duplicate of the ad it already has. Above roughly 60% similarity it starts suppressing the group as clutter. A thousand siblings of one idea therefore do two bad things at once: they enter the auction as one candidate, and the ones that get through all chase the same most-responsive audience. Fatigue is frequency-driven, which is why refresh cycles have shrunk from monthly to one to three weeks.
The accounts that hold up under this run 8 to 20 conceptually distinct creatives per ad set, and that is the ratio to copy without Speechify's budget: distinct concepts first, variants of each second, with the variant count scaled to how many conversions the ad set can actually produce inside Meta's 50-event learning window.
A variant gets two hundred dollars to prove one thing
Do the division and the judging problem appears at once. $500,000 a month over roughly 39,000 ads is under $13 an ad. Meta needs about 50 optimisation events per ad set inside a rolling seven days to exit learning, and at $13 an ad almost nothing at this volume will produce a purchase, let alone fifty. Most of these ads will never have a CPA, so the judging runs on the signals Meta hands back inside the first few hundred impressions.
Structure comes first. We run few campaigns, broad ad sets with minimal exclusions, and many ads inside each, with Advantage+ and dynamic creative choosing among the combinations. Meta's own guidance says upload up to 50 assets at once, and that pool is what the retrieval stage sorts.
Then the kill rule, which is ours and gets written down before the first ad goes live:
- Hook rate. Three-second plays over impressions. Under 25% the hook has failed and the ad is dead. Over 35% is strong and it earns a second look.
- CTR. Did the people who stopped do anything.
- CPM. The auction prices the same two thousand people differently for every ad, and that price is the platform's opinion of the creative. When one ad reaches them for a third of what its sibling pays, that gap is Andromeda telling you which one it rates, well before a purchase arrives.
The cap is a few hundred dollars per variant, and $200 is our working number. A variant carrying $200 with a hook rate under 25%, or a CPM multiples above its siblings, has proved the one thing it was allowed to prove. The DTC rule of two to three times target CPA per variant before reading results is right when a purchase is the only signal you have. Here the hook rate and the CPM have both arrived by $200.
Survivors get scaled slowly. Budget steps up about 20% every two to three days, because a jump resets learning. The account runs a 60-30-10 split: 60% behind proven winners, 30% behind close variations of those winners, 10% on genuinely new swings.
The winner has to be findable across a thousand siblings
A thousand ads a day is only useful if you can find the winner afterwards and ask what it shared with the others that worked. That is a naming problem before it is a platform problem, and a spreadsheet could enforce it.
Every ad we launch carries its lineage in the name:
| Field | Example | Why it is there | What reads it |
|---|---|---|---|
| Concept | dyslexia-rap | The idea being tested | Weekly concept report |
| Hook | h07-cant-finish-textbook | Which opening line held people for three seconds | Hook rate report |
| Format | ugc-916 | Shape and crop | Placement breakdown |
| Handle | maya | Whose face, whose rights | Whitelisting and renewals |
| Version | v03 | Which reskin | Fatigue and refresh |
Performance comes out of the Marketing API into one table keyed on ad ID, with install and trial data from the MMP joined on the same ID. On iOS that join runs into SKAN, where attribution arrives late, thresholded, and without the ad-level granularity the rest of the table has, so the iOS column is read at campaign level and the ad-level call leans on the hook rate, CTR and CPM the auction returns in the first day.
The first wall a thousand ads a day hits is Meta's points budget. Every ad account gets a quota that refills over a sliding hour and scales with spend tier. A bulk upload of 10 to 13 ads costs 30 to 40 points. Insights calls cost the most of anything. A launch of 2,000 ads eats 6,000 points inside half an hour, and the moment any of the three usage headers reaches 100%, the account is throttled for the rest of the window.
The mitigations are all plumbing. Batch up to 50 requests into one call. Pull insights by date range, because one call for a 30-day window costs less than thirty daily calls. Use async insights jobs for anything above seven days or 50 campaigns. Apply for a higher rate tier through Business Manager once the headers sit above 50%.
This is why Speechify outgrew n8n. The instances timed out under the volume, so they built their own platform that posts, tracks performance in real time and moves budget toward whatever is winning. The schema has to carry the same distinction Andromeda makes, because a name that cannot tell you which siblings are genuinely different lets you launch a thousand copies of one Entity ID.
Development Access runs out before the first batch is posted
| Meta Marketing API access tier | |
|---|---|
| Development | 60 |
| Standard | 9000 |
| Full | 15000 |
Twenty videos from one person, all run as ads from their own handle
The cheapest play in the whole Speechify system is whitelisting. One person shoots 20 videos. All 20 run as ads from their own account. On Meta that is a partnership ad, on TikTok a Spark Ad, and both platforms built the format so the ad inherits the handle, the face and the engagement history of the post it runs from.
The mechanism is in the auction. UGC-style video from a real handle has become the default format for high-performing accounts, and the reason is what the retrieval and ranking stages read as quality: comments, saves, a person on screen whose audience already responds to them. The same video uploaded to the brand handle carries none of that history, so it enters the auction as a stranger and pays a stranger's CPM. In the accounts we run the gap between those two CPMs is wide enough to decide whether a whitelisting programme pays at all.
Twenty is the right batch size for a reason. Two videos tell you about the videos. Twenty tell you about the person: whether their delivery survives a hard hook, whether they can carry the product's actual argument, which of their openings clears a 25% hook rate. It also feeds the factory. Each of the 20 becomes a seed concept for the reskin layer, so one batch turns into several hundred variants with hook, caption and crop varied and the face unchanged.
When one wins, it goes up organically on the same handle as well, so the paid and organic versions reinforce each other and the audience that already follows that person sees the piece that proved itself in the auction.
We buy the batch on a flat fee, licence usage for a fixed window, and negotiate renewal only when a video has earned it, so the person whose video wins gets paid twice and the nineteen that lost stop consuming rights budget. Whitelisting permission sits in the same contract, granting the brand's ad account the right to run from their handle for the term.
Meta alone until $100,000 a month, then everything else
Weitzman's rule on channels is blunt: "Don't even bother spending money on any platform that's not Meta until you reach $100,000 a month in spend on Meta." I agree with it, and I would write the gates in the order Speechify appears to have walked them. Meta first. TikTok and YouTube once Meta has passed $100,000 a month. Then the conversational surfaces, where Speechify is one of about 200 companies provisioned to test ads on OpenAI's platform ahead of the broader rollout.
The gate exists because of learning. Below $100,000 a month a second platform splits a budget that has not finished teaching Meta what a converting user looks like. Retrieval and ranking get better at finding your buyer as conversion volume grows, and every dollar sent to TikTok before that point is a dollar of signal Meta never sees. Concentrate until the first platform has learned, then move the concepts that won there, each carrying its hook rate and CPM from Meta as the brief for the next surface.
What changes at each gate is creative shape, and this part is our judgement.
- Meta. 80% or more of feed video plays without sound. Captions are the conversion decision, and the hook has to work on a silent frame: a face, a caption, a reason to stop. The rap song had to survive as text on screen before anyone heard a bar of it.
- TikTok. The surface wants a real handle and native pacing, which is why whitelisting is the entry format. A polished brand cut reads as an ad in the first frame and gets swiped.
- YouTube. Sound on, longer watch time, and the first place a piece like the rap song gets room to run as a whole idea.
- Conversational surfaces. Nobody has a winning format for an ad inside an answer yet, which is why a company running 1,300 tests a day wants first access: the volume that finds a winner on Meta finds the native shape of a new surface before anyone else has enough reps to.
Every concept that reaches TikTok or YouTube has already cleared the hook rate and the CPM on Meta.
When not to build the machine
The generation platform is an engineering programme with a maintenance bill. Speechify has around 200 engineers across 36 countries, a founder who expects token spend to pass salaries within a year, and a rule that anyone spending under 1,000 AI credits a day has disappointed him. That is the org that keeps 1,300 a day running, and it only pays where creative spend already sits in six figures a month and the seed layer already exists.
The precondition is a consumer subscription with broad appeal and a clean conversion event. A trial start that fires inside the app, a purchase a few days later, a product a student and a lawyer both want. Take any of those away and the power law flattens, the winner gets rarer, and the volume that found it stops earning its cost.
Below roughly $100,000 a month on Meta, the operators ahead run twenty to forty concepts a month with hook variants under each, kill on the same hook rate and CPM, and let a bought tool or a spreadsheet carry the naming and the bookkeeping. The velocity to copy is 15 to 30 new creatives a week for every $100,000 in spend, spread across 3 to 6 concepts that are genuinely different, because the fiftieth variant of one idea is a duplicate the retrieval index has already filed.
Which layer you staff depends on what it is. Concept production can be bought by the batch, twenty videos at a time from people who shoot UGC on their own handles, and from a founder willing to sit in a hot tub. Judging is a rule you can write down in an afternoon and enforce with a saved report. Plumbing is the layer that needs somebody who has watched the API throttle at 100% on a launch morning and knows which calls to batch, and that person takes years to make.
Meta says it wants brands fully creating and targeting ads with AI by the end of 2026. When that ships, the proprietary generation platform stops being an edge within a year, because every advertiser gets a version of it inside Ads Manager for free. The 8,000 human pieces a month and the $200 kill rule will be worth exactly what they are worth now, and Speechify's $500,000 a month is the price of finding out which side of that bet the platform was on.







