
Hey all, happy Fridizzle,
I was off last week. I know, I know. You survived somehow. We were up in Vermont, which apparently has more snow than Colorado and Utah combined right now. Went skiing at Jay Peak, which was incredible. At one point, I looked at James (13 months old, cannot walk) and genuinely considered putting him on skis. Decided that was maybe not the move.
James update for those keeping score: a single front tooth is coming in, so he keeps doing this thing with his tongue, pushing it against the tooth over and over.
Also, his first word is "brother." He says it constantly. To Linus. The dog. So either he understands interspecies family dynamics at a level most adults don't, or we've humanized and personified Linus to a degree that maybe warrants a conversation. Unclear which.
Otherwise, it was a lot of sitting around playing games with friends. Vermont energy. Highly recommend.
Anyway. I posted something on LinkedIn that got a bigger response than I expected. It was about personas. Specifically, about how every AI-generated persona deck looks like it was written by someone who has never sold anything to anyone.
So today I'm going the distance (call me Hercules): the prompts, the filters, the pain point extraction most people skip entirely, and the dedup logic that catches the AI trying to sneak "Unique Beer Seeker" and "Unique Flavor Seeker" past you as two different personas. (Yes, that actually happened.)
The whole point of this newsletter is simple: take customer reviews, feed them into a model, and get personas and angles you can actually build ads from. Not horoscopes. Not "Amy, 28-34, values authenticity." Real people with real motivations backed by their own words.
What You're Used To Getting
You've sat in this meeting. Stock photo of a woman holding a coffee. Her name is "Amy." She's 28-34. She "values authenticity and convenience." She's a "Health-Conscious Explorer." There are four more just like her in the deck.
You could slap Amy on a slide for a protein bar, a meditation app, a mid-range candle, or a Honda CR-V and it would make exactly as much sense every time. Which is to say: none.
And when you try to fix this with AI, you get the same thing. I took 118 real product reviews for an NA beer brand (Reddit threads, post-purchase surveys, product reviews) and fed them into Claude Opus 4.6 with no methodology. Just "generate personas from these reviews." First pass:
→ "NA Beer Explorer"
→ "Health-Conscious Consumer"
→ "Brand Enthusiast Explorer"
"Explorer" showed up three times. Three different personas, all named some version of a person who explores things. (Incredibly helpful. Really earning those API credits.)
What You Should Be Getting Instead
Second pass. Same 118 reviews. Same model. Different methodology:
→ "German Pilsner Loyalist" buys NA beer because they miss real pilsner, not because they're "exploring" the category
→ "Recovery Sobriety Maintainer" uses NA beer as a ritual replacement, needs it to feel like the real thing or the ritual breaks
→ "IPA-Fatigued Lager Seeker" sick of every NA option being an IPA, actively looking for something cleaner
→ "Sober Social Event Attendee" doesn't want to explain why they're not drinking, just wants to blend in with a beer in hand
Each one backed by verbatim quotes from real customers. Each one a person you could photograph in a specific moment. Each one an ad you could write in 10 minutes.
That's the gap. Same data, same model, completely different output. The only variable was the methodology.
The Four Filters That Fix It
These go into every persona extraction I run. They work on Claude, ChatGPT, whatever. They work because they force specificity.
1. The Photograph Test
Problem: "Health-Conscious Consumer" could be anyone at a Whole Foods.
Fix: If you can't picture this person in a specific moment, it's not a persona.
"Recovery Sobriety Maintainer cracking an NA pilsner at a backyard BBQ while everyone else has a Coors Light" is a photograph. That's a person with a story, a tension, and a reason to buy. This single filter eliminates about 60% of the garbage on the first pass.
2. The Headline Test
Problem: "Great taste, no compromise" could run for any food or beverage product on earth.
Fix: If you can't write a specific ad headline from the angle, it's too vague.
"The pilsner your taste buds remember. Without the thing you're trying to forget." That's an ad for one persona only. You know who it's for. You know what it's saying.
3. The Blocked Word List
Problem: The AI has a crutch word problem and "Explorer" is its "um."
Fix: Hard reject any output containing these words. No exceptions.

Blocked persona terms: Explorer, Enthusiast, Connoisseur, Aficionado, Conscious Consumer, Savvy Shopper, Repeat Buyer, Regular User, Frequent Buyer, Casual User, Average Consumer, Value Seeker, Quality Seeker, Brand Advocate
Blocked angle terms: Great Product, Best Ever, Highly Recommend, Love It, Worth the Price, Amazing Quality, Perfect Gift, Game Changer, Must Have, Life Changing, Premium Experience, Good Value
If the AI generates "Brand Explorer" it gets caught and rerun. You'd be amazed how often it tries.
4. Verbatim Evidence
Problem: The AI will invent personas that sound plausible but don't exist in your data.
Fix: Every persona needs at least 2 direct quotes from actual reviews that mention BOTH the identity AND the benefit.
No matching quotes? You made it up. The AI made it up. Either way, a made-up persona is worse than no persona because it gives you false confidence.
Bonus: the verbatim quotes are often better ad copy than anything you'd write yourself. Because they sound like a real person. Because they are one.
The Persona + Angle Prompt
Here's the full prompt with all four filters baked in. This is what I actually use on every brand we analyze. Copy it.
You are an expert customer insights analyst specializing in buyer segmentation.
From the following customer reviews for [BRAND] / [PRODUCT], extract 5-10
persona/angle combinations representing the core buyer types.
CRITICAL RULES FOR PERSONAS:
- A persona describes WHO the person IS — their identity, life stage, role,
or context
- Format: [Descriptor] + [Life Context] (2-4 words)
- GOOD: "New Dog Owner", "College Dorm Student", "Weekend Trail Runner"
- BAD: "Satisfied Customer", "Repeat Buyer", "Daily User", "Happy Mom"
- The litmus test: Could you picture this person in a photograph?
"Weekend Trail Runner" = yes. "Satisfied Customer" = no.
- NEVER use sentiment words as persona descriptors: happy, frustrated,
satisfied, disappointed, concerned, skeptical, loyal, unhappy, angry
CRITICAL RULES FOR ANGLES:
- An angle describes the SPECIFIC product benefit or outcome they seek
- Format: [Specific] + [Outcome/Benefit] (2-3 words)
- GOOD: "Quick Morning Routine", "Blister Prevention", "Quiet Operation"
- BAD: "Great Product", "Best Gift", "Premium Quality", "Worth the Price"
- The litmus test: Could you write a specific ad headline from this angle?
"Blister Prevention" = yes. "Great Product" = no.
- NEVER use generic satisfaction words: great, best, amazing, love, perfect
VALIDATION:
- Each pair must be supported by ≥2 reviews that mention BOTH the identity
context AND the specific benefit
- Include a "confidence" score (number of supporting reviews)
- If you cannot find ≥2 supporting reviews, DO NOT include the pair
Return as JSON:
[
{
"persona": "Weekend Trail Runner",
"angle": "Blister Prevention",
"confidence": 7,
"evidence_snippets": ["exact quote from review 1", "exact quote from review 2"]
}
]Two things that matter: Send reviews in batches of 30. The model starts hallucinating connections when you overload it. And the JSON output forces the AI to commit. No wiggle room, no narrative fluff, just names, angles, and evidence.

The Pain Point Prompt
Most persona work stops at buyer types and angles. But there's an entire layer of insight sitting in the same review data that almost everyone ignores.
Pain points. Not "this product is bad." Specific, concrete frustrations tied to identifiable people.
Good: "Daily Bike Commuter" → "Battery Dies Mid-Route"
Bad: "Frustrated User" → "Bad Product"
The first one is a product team bug ticket AND an ad angle. "Never die mid-commute again." The second one is nothing.
Filter your reviews for negative signal words first (disappointed, broke, returned, refund, waste, stopped working, fell apart, doesn't fit, misleading, cheaply made) and then run this:
You are an expert customer insights analyst extracting SPECIFIC PAIN POINTS
from negative or critical reviews.
From the following reviews for [BRAND] / [PRODUCT], identify specific
frustrations experienced by identifiable buyer types.
CRITICAL: The persona is still WHO THEY ARE, not how they feel.
The pain point must be SPECIFIC and CONCRETE, not a vague complaint.
PERSONA RULES (same as above):
- Describes identity/context, never sentiment
- "Daily Bike Commuter" NOT "Frustrated User"
- "Gift-Buying Grandmother" NOT "Disappointed Customer"
PAIN POINT RULES:
- Must be a SPECIFIC, TESTABLE issue
- GOOD: "Battery Dies Mid-Route", "Color Fading After Wash",
"Too Large for Counter"
- BAD: "Bad Quality", "Not Worth It", "Disappointing"
- The litmus test: Could the product team file a specific
bug ticket from this? "Battery Dies Mid-Route" = yes.
"Bad Quality" = no.
Return as JSON:
[
{
"persona": "Daily Bike Commuter",
"pain_point": "Battery Dies Mid-Route",
"confidence": 3,
"severity": "high|medium|low",
"evidence_snippets": ["quote 1", "quote 2"]
}
]Why pain points matter for ads: they're often better hooks than benefits. "Tired of every NA beer tasting like an IPA?" stops the scroll harder than "Discover our crisp lager." The pain is the entry point. The product is the resolution.
One thing people miss: a review can contain both. A negative review still has identity info worth extracting for personas. A positive review might mention competitor frustrations. Run both prompts on the same data. Don't throw anything away.

Cleaning Up Duplicates
Even with good prompts, the AI will sneak duplicates past you wearing disguises. "Unique Beer Seeker" and "Unique Flavor Seeker" are the same persona. "Delicious Non-Alcoholic" and "Great NA Flavor" are the same angle. But the AI presents them as separate insights and suddenly your "12 distinct personas" are actually 5 wearing different hats.

The simple version: Read through your outputs. Merge anything that sounds like the same person described two ways. That alone puts you ahead of 90% of AI persona work out there. (Not a high bar, but still.)
The technical version: Generate text embeddings on your persona names, compute pairwise cosine similarity, merge anything above 0.82. "Unique Beer Seeker" and "Unique Flavor Seeker" score around 0.90. "Craft Beer Enthusiast" and "Health-Conscious Drinker" score around 0.45. The gap is wide. Then run one more AI pass to catch conceptual overlaps the embeddings miss, like "Budget Shopper" and "Price-Sensitive Buyer" which use different words but are obviously the same person.
The Model Doesn't Matter
After building all of this on Claude Opus 4.6, I reran the exact same methodology on Claude Sonnet 4.6. Sonnet costs significantly less. The output was identical. Same persona names. Same evidence. Same angles.
The methodology is the moat. Not the model.
This matters because the AI landscape changes every few weeks. New model drops, everyone panics, half your stack is "obsolete." But the four filters work on any model. They're constraints on the output, not dependencies on the input. Build workflows around good methodology and you upgrade for free every time a better model ships.

TLDR; Do This Yourself in 5 Minutes
Collect reviews. Amazon, Reddit, post-purchase surveys, app store reviews, Trustpilot, support tickets. Anywhere customers talk in their own words. 50+ minimum, 100+ is better.
Run the persona + angle prompt. Replace [BRAND] and [PRODUCT]. Paste 30 reviews at a time. Collect the JSON.
Run the pain point prompt on your negative reviews.
Dedup. Read through, merge anything that sounds like the same person or angle described two ways.
Gut check every persona. Can I photograph this person? Can I write a headline in 30 seconds? If yes, it's real. If no, it's Amy.
No $15,000 agency fee. No month-long timeline. No stock photo of a woman holding a coffee.
Have a great weekend!
Will
P.S. The full methodology doc goes even deeper than what I put here. Emerging trend detection from review recency, the complete prompt chain, automated dedup logic, and expanded blocked word lists. Reply to this email and I'll send it over. It's 15 pages. (I know. But it's the good kind of 15 pages, not the agency deck kind.)