
Table of Contents
Hey all, happy Friday,
Last weekend we stayed home for the first time in a beat, and I cannot overstate the luxury of not strapping James into a car seat. The next test is France in three weeks. I'm genuinely excited for the trip and a little nervous for the flight, because James is at what I can only call peak terrorist stage, and I am aware that is the worst possible way to describe someone about to board an international flight. I stand by it.
Sunday we did venture out, to brunch with friends at one of those upscale California chains that gives itself a new name in every city, which is why I genuinely cannot tell you what it's called. Picture an Applebee's that went to grad school. James came along and mostly behaved, and "mostly behaved" is the five-star review now. Taking him to a restaurant at this age is a tactical operation.
On Tuesday, Maddie and I celebrated our three-year anniversary a few days late. We got a babysitter and went to King in the West Village, which I cannot recommend highly enough. Great cocktails, great conversation, I got the lamb, Maddie got the peppers, and every table around us seemed to be midway through the most interesting conversation of their lives. The British guy next to us explained that when he travels he eats at the same restaurant every single day, to eliminate decision paralysis, which meant he had tried the entire menu and walked us through most of it whether we asked or not. He was headed to a pub called the Toad to watch the England game on Wednesday. I assume he is not doing great right now.
James is holding steady at about five words, and the current favorite is "ball." Any ball, but especially Linus'. The side effect is that Linus is suddenly back on all his old toys, because nothing renews a dog's interest in a squeaky ball like a toddler squeaking it first. The two of them now run a small shared-ball economy that nobody sanctioned and nobody can stop.
In other Linus news, he reminded the neighborhood this week that he is a cattle dog first and a house pet second. He was a serious squirrel guy in his younger years (I'd be lying if I said he's never caught one), and during off-leash hours this week he came within a whisker of nabbing another, scaring the daylights out of two tourists in the process. The squirrel got away clean. Frankly, I don't know what squirrels are doing out during off-leash hours. Go enjoy a nutty cappuccino somewhere. The park is crawling with professionals.
One piece of actual housekeeping before the content: the agency is scaling, and I am on the hunt for talent, specifically strategists who put research first. We're an AI-enabled company, obviously, but you need to be able to build an effective brief on your own before AI can amplify anything, which is conveniently also the thesis of this entire issue. If that's you, reply to this email. Maddie, meanwhile, has been heads-down on a genuinely interesting story all week, so the apartment is currently two laptops and a guy yelling "ball."
Anyway,
The British guy at King, by the way, accidentally gave you the thesis of this issue between bites: eliminate the options, keep the one that works.
Dara Denney and I filmed those two episodes a couple of weeks back, and neither has aired yet, which means you're getting the second one early. Consider this the sneak preview. Episode one was building a landing page from a winning ad. Episode two is the thing I'm most annoying about at parties: building a dashboard that grades every ad you've ever run, then using Reddit to find the people you have never run one for. The video will show you the vibe when it drops (I'll link it the moment it does).
This gives you the two prompts now, so you can be smugly ahead of everyone who waits for YouTube, or ignore the video entirely and just paste, I'm not your dad.
This is part three, and it only works if you did the first two. Issue one graded every persona and angle you've ever run. Issue two scraped Reddit for the angles you never have, each one stapled to a real customer quote.
So you've got the map and the list. Start here if you don't.
Two things are new this week. One is small and nice: the setup no longer eats an hour, because Meta shipped an MCP since I wrote issue one (more on that in a second). The other is the whole reason you're here, and it's the thing neither of the last two issues touched. They both stop at the exact moment you have a great customer quote and a blinking cursor, and then they just leave. Nobody, me included, has told you what happens next: how you turn that sentence into an ad without ruining it in the forty-five minutes it takes you to "write the ad." The line that wins at the end of this issue is one I didn't actually write. Hold that thought.
If you already built the dashboard and the scrape, skip straight to "Now the actual copy." The two prompts below are just the upgraded, no-keys versions of what you already did, and you know those moves cold.
The honest setup note
Everyone's scariest step is "connect your Meta account." If you did issue one, you did it the hard way: a developer app, a Business Manager token, an admin asleep at the wrong moment, an hour gone. Since I wrote that, Meta shipped an MCP connector, so skip all of it. You add one URL and log in.
In Claude, go to Settings, Connectors, Add custom connector, and paste https://mcp.facebook.com/ads. Log in with the Facebook profile that actually has access to your ad account (this is the one step people get wrong, it has to be your Ads Manager login, not your personal one). Type list my ad accounts to confirm it works. That's the setup. It took me longer to write this paragraph.
One honest caveat, because I'd rather tell you now than have you email me later: the MCP is the gateway drug, not the habit. It builds the bare-bones version beautifully, live, on 30 ads. For the full 12-to-24-month, every-ad-tagged production tracker, you still want the real API, because the MCP times out on big pulls. The MCP is how you fall in love with this. The API is how you keep it.

Prompt one: the dashboard (your account’s memory)
Paste this into Claude with the Meta connector on. It asks you three questions, then it works in phases and builds you a dashboard. If code walls make your eyes glaze, skim it, the real explanation is right underneath, and the last thing the prompt does is tell you in three sentences the single move to make Monday, so you're scrolling toward a payoff, not just spec. The whole point of it is that the tagged history becomes a memory. "Have I tested this persona?" stops being a guess and becomes a thing you can look up, and prove to a client.
You are my creative strategist. Build me a creative s
my Meta ads account using the Meta Ads connector. Do
or any files - this prompt is the entire spec. Work
phase as you start it, and ask me exactly THREE ques
Phase 1, plus one yes/no at ship time). Everything e
tell me what you decided.
PHASE 1 - SETUP (the only
1. List my ad accounts and ask which one to use.
2.
"CPA, target $40". EVERYTHING indexes to this number: for ROAS the
is actual/target, for CPA it is target/actual, so
beating my target regardless of KPI. If I don't k
the account's blended 90-day number, propose it a
my confirmation.
3. Ask my rough monthly ad spend
account instead of someone else's.
PHASE 2 - PUL
4. Pull my top 30 ads by spend from the last 90 days
north-star KPI, and CTR. Handling rules:
- If
- Metrics arrive as formatted strings ("$32,205.1
them to real numbers before any math.
- An a
"no conversions", and exclude it from weighted
- NEVER invent an ad, a metric, or an estimate to
will not pull, name exactly what is missing and
5. Report the pull: how many ads, total spend, date
PHASE 3 - LOOK AT THE CREATIVES (autonomous)
6. For
actual creative. Tag the rest from names and copy
"creative-reviewed" or "name-only". What you SEE
says - ad names lie.
PHASE 4 - TAG (one checkpoi
7. Tag every ad with persona, angle, motivation, and
TAXONOMY below. Pick the 4-6 personas and 6-8 ang
rename them into my customers' own language, merg
personas, 8 angles. Propose ONE tag not on the me
8. Give each ad ONE sub_persona - free-text, hyper-s
"<life stage / identity> + <specific context or o
vegan women comparing pea protein digestibility".
adults". Grounded in visible evidence only. "Uncl
invent a vivid customer who isn't in the data.
9.
numbers, or size suffixes are one concept - give
10. CHECKPOINT - stop and show me the taxonomy and 5
with evidence level. Wait for my corrections. My
PHASE 5 - ANALYZE (autonomous)
11. Weight everythin
index vs my target per ad, and spend-weighted pe
persona x angle cell, and per family.
12. Build
weighted index, and a flag - "scaled" or "under-
on small spend). Under-indexed rows are next mon
13. Sort every ad into three buckets vs MY target:
- RESKIN: index >= 110 and spend below that (und
- RETHINK: index <= 85 with meaningful spend (ho
Report the actual dollar cutoffs those rules pro
14. Sanity checks, report pass/fail: every ad has al
sub-persona; per-persona spend sums back to tota
than 60% of ads (if one does, split it and show
PHASE 6 - BUILD (autonomous)
15. One self-contained
step, works offline, dark mode. Sections: KPI ti
leaderboards (bar = spend, label = index); a per
colored around MY target as the midpoint; the su
under-indexed winners pinned top; the three buck
a full sortable table of every ad.
16. Serve it
the single thing this data says I should do next
PHASE 7 - SHIP (the yes/no)
17. Ask whether to depl
setup yourself, assume it may be my first deploy
holds real spend data and add a password gate +
anywhere public, and fetch the live URL to confi
STARTER TAXONOMY (select, rename, merge; never use
Personas (pick 4-6): Fitness Enthusiast, Wellness Ro
Professional, Health Manager (specific condition), A
Shopper, Skeptical First-Timer, Loyalist, Gift Buyer
Angles (pick 6-8): Ingredient Transparency, Symptom
Social Proof, Founder Authority, Us-vs-Them, Offer/P
Education/Myth-Busting, Transformation, Recipe/Use-C
Motivations (pick 5-7): Relief, Trust, Convenience,
FOMO, Guilt Reduction, Status, Fear of Consequence,
Formats: Static (headline-led), Static (product-led)
Video, Carousel, Advertorial, Meme/Lo-Fi, TestimoniaA few things in there are load-bearing and worth calling out. It looks at the actual creative for your top ads before it tags, because ad names lie. I have an ad literally named "HumorHeadline" that is, on inspection, a dead-serious ingredient-transparency static. It indexes everything to your KPI, so "100" always means "hit my target" whether you live on ROAS or CPA. And it never invents data, which is the model's single favorite way to betray you, filling a flaky pull with a plausible number and a straight face.
When I ran this live on a protein brand we work with, the checkpoint is where it earned its keep. It proposed a taxonomy, I corrected two personas that were really one, and thirty seconds later the whole dashboard was built on tags I actually believed. That checkpoint is the taste step. Do not skip it.
Prompt two: the Reddit expansion (the people you never tested)
Issue two did this by hand: a few dollars of Apify, tag the threads, eyeball the diff. This is that same move as one prompt that reads your dashboard and does the diff for you, and the one real upgrade over doing it manually is that it matches semantically instead of by name. Now the dashboard doubles as your "already tested" database, every persona and angle you've run embedded in that HTML, and this prompt reads it, scrapes Reddit through Apify, and surfaces the people your account has never spoken to.
Connect Apify the same way (same three clicks, you know the drill by now): Settings, Connectors, Add custom connector, https://mcp.apify.com, log in. No Apify account? Claude's own web search over Reddit works for a light version. Apify is what gets you comment-level volume instead of a handful of results. Then paste this:
You are my audience researcher. My creative strategy dashboard is the
index.html in this folder. Read it FIRST: the data in that page is every
persona, sub-persona, angle, and family I have already tested, with spend and
performance. That is my "tested" universe. Your job is to find the people my
account has never spoken to.
PHASE 1 - MAP THE ROOMS (autonomous)
1. From my dashboard's personas and my product category, list 10-15 subreddits
where my buyers and near-buyers actually talk: category subs, problem subs,
identity subs, adjacent-lifestyle subs. One line each on why it belongs.
PHASE 2 - SCRAPE (Apify, one cost checkpoint)
2. Pick a Reddit scraper actor and tell me the approximate credit cost BEFORE
running it. Get my yes.
3. Then scrape top + recent posts from the past 12 months across those
subreddits, with comments, filtered to mentions of my category, product
type, or the problems my product solves. Aim for 100-200 posts. Report what
you pulled per subreddit; skip any that return nothing.
PHASE 3 - MINE FOR PEOPLE (autonomous)
4. Read the threads for WHO is speaking, not just what is said. Per distinct
voice extract: life stage and identity markers, the problem in their exact
words, what they buy or do instead, their objections, and 1-3 verbatim
quotes with permalinks. Rules:
- Real quotes with real links only. Never invent or composite a Redditor.
- A candidate persona needs evidence from at least 3 distinct threads.
- Capture their exact vocabulary. Those phrases are future hook copy.
PHASE 4 - CROSS-REFERENCE (the whole point)
5. Match every candidate against my dashboard's personas AND sub-personas
SEMANTICALLY, not by name ("gym girlies on creatine" and "Wellness Woman x
creatine routine" are the same people). Mark each: TESTED (account already
speaks to them), PARTIAL (persona tested, this specific context never), or
NET-NEW (nothing in my account touches these people).
6. Rank the PARTIAL and NET-NEW candidates by evidence volume, purchase intent
in their language, and fit with angles that already beat my target. A new
persona x a proven angle is the cheapest possible test.
PHASE 5 - DELIVER
7. Add a "Net-New Personas" section to the BOTTOM of my dashboard HTML, same
file, same dark style: one card per candidate with the persona, its
TESTED/PARTIAL/NET-NEW status, the subreddit(s) and size, 2-3 verbatim
quotes as linked evidence, the proven angle to pair it with, and one hook
written ONLY from their own vocabulary. Re-serve and give me the URL.
8. Close with the homework: the 3 threads I should personally read before
making a single ad, and why. The tool finds the room; if I don't learn how
they talk to each other, I will never sound like an insider, and outsiders
do not convert anyone.The magic word in there is SEMANTICALLY. If it matched by name, everything would look net-new, because nobody on Reddit types your taxonomy labels. (No woman has ever described herself as a "Skeptical First-Timer" out loud. That phrase exists only in a dashboard.) Instead it maps "35F, lifelong bloating, terrified of wasting money on another useless probiotic" to your Skeptical First-Timer even though not one word matches, and only THEN tells you what's genuinely uncovered.
On the protein brand, the headline result was a persona the account had never once addressed: forty-and-over vegan women, deep in the weeds on which plant protein actually sits well in their stomach. High intent, high lifetime value, loud on Reddit, and untested in a way I could prove, because every ad we'd ever run was already tagged in the dashboard and none of them were her. Being able to prove it is the part clients feel. You're not pitching a hunch. You're showing them a room full of their buyer that their account has never walked into.
(The same scrape on a different account, an NA beer brand, taught me the word "zebra striping," which I'd genuinely never heard. It means alternating a real drink and a non-alcoholic one across a night so nobody clocks that you're pacing. Their word, not ours. A marketer would never have guessed it, which is exactly why it's worth more than anything we'd have brainstormed.)

Now the actual copy
So the machine hands you a net-new persona and a fistful of their exact words. Here’s where almost everyone throws it away.
Because the next thing you do is “write the copy.” You take that true, specific, slightly weird sentence a real person typed, and you smooth it, punch it up, and run it past the part of your brain that knows what an ad is supposed to sound like. Forty-five minutes later you have something cleaner, more professional, and completely dead. You sanded the fingerprint off.
I did this for years. Confidently. Billed for it. Here’s what I do instead.
You do not edit. You cannot edit your way to good copy, because every pass fixes one thing and breaks another: clearer but more generic, punchier but less true, more like an ad and less like a person. So you don’t repair one line. You write five, born correct, and you kill the four that aren’t. Selection, not repair.
The way you make sure all five come out right is you fill a tiny card first, before a single word of copy exists. I call it the Hook Card. Six fields:
PERSONA. Who, one plain sentence. The real one from the scrape, not the flattering one.
BELIEF. The thing they already believe, quoted from the threads. Load-bearing. An ad doesn’t convince, it agrees.
MARKER. The one word only this person uses. “Wrecks my stomach,” not “digestibility.” How the right reader knows in half a second the ad is for them.
GAP. The question you open and don’t answer, if any. “None” is a real answer. Recognition ads, where you just show someone their own morning, don’t need one.
CLOSER. The single image that answers the gap. If you can’t name the closing picture in a sentence, the line isn’t done.
BANNED. Words you can’t use. Compliance words, and marketer tells (“gentle on your system,” “elevate”). The second a real ear hits one, the spell breaks.
Five of the six fields are about the customer and one is about your cleverness. That ratio is the entire method.

Watch me do it
Take the net-new persona the scrape just found: the 40-plus vegan woman who has tried every protein and had most of them wreck her stomach. Fill the card straight from her own words:
PERSONA: 40+ vegan woman, tried every protein, most destroy her stomach
BELIEF: "every whey wrecked my gut. pea is the only one I can tolerate."
MARKER: "wrecks my stomach" / "bloated" (her words, not "digestibility")
GAP: NONE. a recognition play. show her the morning she doesn't dread.
CLOSER: the scoop going into oatmeal, an ordinary calm morning, no bloat.
BANNED: digestibility, gut-friendly, gentle on your system, clinically studiedNow, and only now, write five. Fast, no filtering, all in her mouth:
1. Every other protein wrecked my stomach. This one just doesn't.
2. A plant protein that's gentle on your sensitive digestive system.
3. I'm 47, vegan, and done being bloated by my own protein shake.
4. Pea protein is the only one my gut has ever forgiven.
5. Gut-friendly plant protein for sensitive stomachs.Then the kill-pass, and here’s the move: I hand all five to the model cold, because it has no favorites and I have several. One reviewer, one pass, binary. Each line carries the belief and the marker, would be said out loud to a friend, and could not be pasted onto a competitor’s ad, or it dies.
Lines 2 and 5 die on contact. “Gentle on your sensitive digestive system” and “gut-friendly plant protein” are the banned list wearing a lab coat. No human says them. Killed.
Line 4 is the interesting one, because it’s the line I would have written. “The only one my gut has ever forgiven” is nice, and a hair too clever, which is usually the tell. It survives, barely, but it doesn’t win.
Line 1 wins, and here’s what should bother you: I didn’t really write it. It’s a review sentence, near-verbatim, from a woman describing her actual mornings. “Every other protein wrecked my stomach. This one just doesn’t.” It kills the objection before it lands (is this just another one that’ll hurt?), names the pain in her exact words, and there’s not one syllable of ad in it. Five lines, four gone, six minutes. Editing line 4 into line 1 would have taken an hour and I’d have gone the wrong way, “improving” her stomach into her “system.”

When all five die
Sometimes nothing survives. You fill the card, write your five, run the pass, and they’re all dead.
Your instinct will be to grab the least-dead one and start fixing it. Don’t. You’re patching a corpse, and it does not get less dead. When all five die, the lines aren’t the problem, the persona is. You built the card on the person you wish you had instead of the one actually typing, and the tell is simple: there’s no verbatim gold to steal, because you’re paraphrasing a customer nobody can find instead of quoting one you can. Go back and pick a realer persona. The thesaurus is the wrong direction and you know it.
The part nobody wants to hear
I said a version of this two issues ago, the historian and the fortune teller, that the machine reads the past and the human bets the future. It lands differently once you’re holding the actual words. None of this works if you skipped learning the craft.
The prompt finds the subreddit. It cannot make you an insider. It cannot tell you which of the twelve net-new personas is worth a dollar, or a lifesaver quote from a throwaway one, or that your account was quietly over-indexed on the flattering persona, because it doesn’t know that’s a mistake. That’s judgment. And before this sounds like I’m dunking on anyone, the person who most needed to hear it is me, about four years ago, confidently shipping the machine’s tidy wrong answer because it was formatted so nicely.
That’s why the last line of the Reddit prompt is homework, not a deliverable: go read the three threads yourself before you make a single ad. The machine does the volume. You still have to learn the language. If you don’t, you’ll build a very confident dashboard pointed at a room you’ve never actually listened in on, and outsiders don’t convert anyone.
(This, for the record, is the thumbnail. The whole industry sails past the customers singing their needs at us verbatim, wax jammed in both ears, while one guy ties himself to a mast so he can hear it without acting on it. I aspire to be neither. I’m the deckhand in the too-small tunic leaning off the side of the boat taking notes. The sirens are doing free voice-of-customer research. Somebody should be writing it down.)
What this won’t do
Honest limits, as always.
The MCP times out on big pulls, so treat prompt one as the on-ramp and the weekly check-in, not the 24-month system of record. That’s the API’s job, and that upgrade is a future issue.
Garbage in, garbage out, and the garbage enters at the persona. Point this at the wrong buyer and you get clean, professional, well-formed bad ads. The method doesn’t check whether the persona is real. That’s the judgment above, and it’s the whole job.
And the kill-pass needs a cold reader, which is the one thing you structurally can’t be about your own line. You know what you meant, so you’re the worst judge of whether a stranger will. This is genuinely the one job the model is better at than you. It has never been proud of a sentence in its life, never gotten attached, never stayed up defending one. Let it kill your favorites. It’ll sleep fine.
TLDR
A sneak preview of my second Dara video, before it airs, and it needs the first two issues. Start here if you missed them. The new stuff: the setup is now one URL, no dev account, no keys (Meta shipped an MCP), and then the part neither of those issues covered.
Upgrade one, prompt one: the dashboard that tags every ad by persona, angle, and motivation and sorts your spend into iterate, reskin, and rethink (mcp.facebook.com/ads). The paste-ready, no-keys version of issue one’s backward pass. It becomes the memory of everything you’ve tested.
Upgrade two, prompt two: it reads that dashboard, scrapes Reddit (mcp.apify.com), and cross-references SEMANTICALLY to surface net-new personas, each with verbatim quotes and the proven angle to pair them with. Issue two’s diff, automated. Ours found 40-plus vegan women the account had never addressed.
Then the copy. You can’t edit your way to good copy. Fill the Hook Card (five of its six fields are about the customer, one is about your cleverness), write five, run one binary kill-pass, keep the survivor, which is usually the near-verbatim quote. If all five die, the persona is wrong, not the lines.
The machine does the volume. You still have to learn the language. Go read the threads. Both full prompts are above, and the full setup lives in the companion doc.
Reply and send me the weird adjacent subreddit where your customers actually talk. Not the obvious one about your category, the strange neighboring one. I’m collecting them, and the replies to the last two issues have been genuinely great, so you people are building me quite the dataset.
Have a great weekend,
Will
P.S. If you were in Park Slope this morning and saw a man with a dog leash in one hand and a toddler in the other, chasing two runaway balls downhill past the brownstones, that was us. The neighborhood is named after the problem. Nobody warns you about that part.