← Back to posts

Find Your Rich Avatar With AI: How AppSumo Got to $90M With a Guy Named Matt

For years at AppSumo we were chasing the wrong number.

We had aggressive acquisition goals. More buyers, more traffic, more everything. So we did the easy thing and blasted our marketing to as many people as possible. Honestly that's what most marketing teams do. The brief says grow. So you grow.

But the data was screaming at us.

10% of our buyers were driving about half our revenue. Not because they spent a little more. Because they came back 10, 20, sometimes 50 times. They became Plus members. They stuck around for years. The other 90% bought once and left.

Most of our ad spend was optimized to bring in anyone. But "anyone" has terrible LTV.

CAC dropping means nothing if those buyers don't come back

The real shift was moving from CAC to LTV:CAC.

I've seen campaigns with $200 CAC outperform campaigns with $75 CAC by 4x because the $200 buyers became Plus members and bought again and again. The $75 buyers bought once and left. Different math entirely.

That changed how we evaluated every channel.

Meet Matt

Once we knew the 10% existed, we wanted to know who they actually were.

We dug in. Job titles, company sizes, what they bought and in what order, what they said in support tickets, where they hung out online. A pattern showed up that nobody had seen.

A bunch of our top buyers were one-person marketing agencies. Maybe a contractor or two. Servicing 5 to 20 clients. Running paid, SEO, landing pages, content. Everything for everyone.

One of them was an actual guy named Matt.

Real Matt. Real agency. Real buyer history. He averaged two to three purchases a month, every month, for years. New tool drops, restocks, code stacks on his existing favorites. His LTV was off the charts because he kept coming back.

We didn't make Matt up. We pulled him out of our top buyer list because his behavior was screaming at us. Then we used him as the reference for the entire segment. We started calling him Marketing Agency Matt, half because that's literally what he was, half because saying "the SMB agency owner cohort" five times in a meeting was killing the meeting.

This is the part most teams skip. They build a persona. "SMB marketing manager, age 28 to 45, cares about ROI and efficiency." That's not a person. That's a survey result in a costume. You can't write copy for a survey result.

Why Matt loves AppSumo

Once you can see Matt clearly, his behavior makes complete sense.

Lifetime deals are a cheat code for an agency. Overhead kills agencies. A SaaS subscription bill that grows every month is the enemy. A one-time payment for a tool you'll use forever is the dream.

Matt would buy a landing page builder, a CRM, an SEO tool, an email tool, a social scheduler, all on lifetime deals. Suddenly his agency stack costs him $0 a month after the initial spend. One person, looks like a 20-person shop. Punching way above his weight.

Then he repackages those tools to his clients. Sells them as part of a retainer. Saving money AND making money on the same tools.

That's why Matt would buy 30 times in a year. The math just works.

What we did about it (the $90M version)

Once we knew it was Matt, we built the whole thing around him.

Product. We built code stacking. More codes on a single product unlock more features. AOV went through the roof.

Copy. Every piece of marketing started speaking agency. White label. Retainer. Margin. Client deliverables. Words from his mouth, not ours.

Curation. We favored agency-friendly tools in our weekly drops. Founders pitching us got more weight if their tool fit Matt's stack.

Email. We segmented Matt out. He got different emails, different deals, different stacking suggestions. We treated him like the most valuable customer in the building, because he was.

The compounding effect was the move from $7M to $90M. Not one big swing. A hundred small decisions all pointed at the same person.

How I do this now with AI (the part that wasn't possible in 2019)

We did the original Matt analysis the slow way. Spreadsheets. SQL queries. Twenty customer calls. It took weeks.

Now I run the same exercise in a couple of days, with Claude doing the heavy synthesis lifting. The shape of the workflow is what matters more than any single prompt. There are seven steps, and skipping any of them will give you persona-shaped slop.

1. Pull the top 10% by trailing revenue. For the latest run that meant ~6,000 customers from a 76,000-customer sweep. Trailing revenue, not lifetime, because you want behavior that's still happening, not nostalgia. People who bought a lot in 2021 and stopped tell you nothing about who's converting today.

2. Enrich each row with public signal. Job title, company size, role, industry, geography, anything you can pull from public data without spooking anyone. You're not building a dossier. You're giving Claude enough context to recognize a pattern when it sees it. Twenty Matt-shaped customers in a row is the moment the cohort surfaces.

3. Stack the qualitative inputs onto the row. Reviews, support tickets, exit surveys, NPS comments, sales call notes. This is the step most teams skip because the data is messy and lives in five tools. Do not skip it. The behavioral signal tells you who. The qualitative signal tells you why, and "why" is what your ad copy actually needs.

4. Batch and synthesize. Claude in long context mode can hold a few thousand records at a time, but you don't want to dump everything in one shot. Run it in batches by suspected cohort and have it report patterns per batch, not per individual. What you want back is the recurring language showing up across customers, not a per-customer summary. A phrase repeated by 40 different people in their own words is a thousand times more useful than a phrase from one viral testimonial.

5. Force exact language. This is the line that does most of the work. Claude's default behavior is to clean things up. "I want to stop renting tools" becomes "I'm seeking subscription alternatives." That cleanup is exactly what you don't want. The prompt has to explicitly instruct Claude to keep grammar, slang, and phrasing intact, including the parts that sound bad. Bad phrasing is what makes ad copy sound human.

6. Cross-validate against the calls. Take the top phrases the synthesis surfaced and check them against actual recorded sales calls or customer interviews. If three of the five "exact phrases" don't match anything a real person ever said out loud, the synthesis hallucinated and you start over. If they do match, you've got your voice doc.

7. Compile into a skills.md the agent loads on every run. This is what makes it durable. Most teams' personas die in a slide deck or a Notion page nobody opens. Yours lives in a file the ad-copy agent loads as context every time it generates a headline, primary text, or description. Same input, same voice, every time. The persona stops being a wall poster and starts being an actual constraint on every piece of marketing output.

The prompt that drives step 4-5 looks roughly like this. The actual one I run has more guardrails I'm not going to print, but the spine is here:

You're analyzing a high-LTV customer segment for an ad copywriter.

Below are [N] customer records from the top 10% of revenue.
Each record contains purchase history, reviews, support tickets, exit surveys.

Extract:
1. The 5 phrases this segment uses to describe their problem (in their exact words)
2. The 3 objections paying customers had before buying
3. The 2 triggers that pushed them from "interested" to "purchased"
4. The single sentence that, if true on the ad, would make this segment click

Do not paraphrase. Do not clean up grammar. Use their exact language.

Data: [paste records]

The "do not paraphrase" line is the most important one in the prompt. Without it, Claude smooths every quote into corporate-speak. With it, you get Matt's actual voice back. That's what you want feeding your ad copy.

Output goes into a skills.md file the agent loads first. Every headline, every primary text, every variation gets generated in the segment's actual voice, not in marketing-speak.

The same synthesis tells you who to target

Most teams treat copy and targeting as two separate workflows that get done by different people in different meetings. The synthesis collapses them into one.

When you have the top 6,000 high-LTV rows in front of you, you have four targeting outputs sitting there for free.

The seed audience. Hand the 6,000 row list to Meta as a Custom Audience or to Google as a Customer Match list. That becomes the seed for lookalikes, similar audiences, value-based bidding. You're not asking the platform to figure out who looks like Matt. You're handing it 6,000 Matts and saying find more.

The cold targeting layer. For platforms or campaigns where seeds don't fit, the job titles and company sizes you pulled in step 2 become the targeting filters. "Marketing agency owner, 1 to 10 employees, runs paid and SEO" is a real targeting bucket on LinkedIn and Meta. Without the synthesis you're guessing at this. With it you're handing the platform Matt's actual demographics.

The exclusion list. The other 90% of your customer base, the buy-once-and-leave crowd, becomes your exclusion list. You're literally telling the platform: do not show my ads to anyone who looks like these 70,000 people, they will burn the budget. Most teams won't do this because excluding paying customers feels backwards. The math only works if you exclude the bad-LTV ones.

The retargeting tiers. The behavioral signals you pulled in step 1 (purchase frequency, code-stacking, return rate) become your retargeting scoring. The customer who bought once last month gets a different ad than the customer who's bought five times. Both are in your data. The synthesis turns "who's in my CRM" into "who deserves which ad."

Same Claude run, two outputs. Copy lives in skills.md. Targeting lives in a Custom Audience CSV plus an exclusion CSV plus a tier-scoring rule. The team that runs both off the same dataset will outperform the team that splits the work.

What the synthesis produces

The cleanest way to show what comes out the other side is the run I just finished for CXL.

CXL is a different company, a different ICP, a different voice. Their Matt isn't an agency owner buying lifetime deals. He's a senior marketing operator who's tired of agency retainers and Lenny posts and wants frameworks that move pipeline. Same workflow. Different person at the end of it.

Three of the ads the synthesis produced:

Marketing leader voice. Cohort: in-house teams replacing agencies. The AI pulled "agency budget" and "team capability" out of the customer transcripts as the exact phrasing that came up over and over.

CXL ad for marketing leaders: Move agency budget to team capability.

CRO operator voice. Cohort: experimentation leads with stalling test programs. The "27% win rate is a research problem" line was lifted directly from a customer call where they self-diagnosed exactly that.

CXL ad for CRO operators: Your 27% win rate is a research problem.

Growth operator voice. Cohort: senior ICs trying to make Head of Growth. "Own growth. Not campaigns." came out of the synthesis as the single sentence the segment said would make them click. We just kept it.

CXL ad for senior growth operators: Own growth. Not campaigns.

These aren't designer-made. No copywriter wrote them. Claude generated each headline off the skills.md file for the segment that matches the destination page. The agent paired the copy with the CXL wordmark and a layout template.

The headlines you see in the ads above don't come from a single creative session. Behind every product page is a 38-asset bundle, and every line in it gets tagged by ICP framing angle so the agent can pull the right one for the right placement. Outcome, pain, proof, authority, urgency. The tag is the contract.

CXL Pricing Page PMax bundle: 15 headline variations, each tagged by ICP framing angle (outcome, pain, proof, authority, urgency).

That's how you turn one customer interview into 38 ads without losing the voice.

Click-through rate on the new copy lifted 45% over the prior control set.

That's not a small lift. That's the difference between a campaign that scales and a campaign that gets paused. And it didn't come from a bigger creative team. It came from finally writing copy for the 10% instead of the 90%.

Grüns just sold to Unilever for $1.2B doing this

The 10% framing isn't an AppSumo thing or a SaaS thing.

Matt Orlic broke down what Grüns did with their multivitamin gummy before Unilever bought them this year for $1.2B. One product. Eight personas. Eight completely different funnels.

Grüns persona funnel framework by Matt Orlic at Ecomm Architects: same multivitamin product, eight personas, four principles. Gut Health, Weight Loss, Kids Nutrition, AG1 Alternative, GLP1 Support, Protein Support, Fibre Funnel, General Nutrition.

Same gummy, eight angles. The Gut Health funnel goes after women dealing with bloating and constipation. The Weight Loss funnel pitches max nutrients on cut calories. Kids Nutrition is for parents who can't get their kids to eat vegetables. GLP1 Support is for people on Ozempic missing key nutrients because their appetite cratered. AG1 Alternative goes after people already paying $79 a month for greens powder.

Same product. Completely different rich avatar at the end of each funnel. Matt's framing on it: "You don't need more products to scale. You need one product with more angles."

The principles Grüns ran on are the same ones the synthesis output kicks back to you:

  • One pain point per funnel, not five
  • Agitate the problem first, then introduce the product as the relief for that exact pain
  • The language matches the persona (efficiency for AG1 users, motivational for weight loss, parental guilt for kids nutrition)
  • Mirror the avatar across every touchpoint (mum in the ad, mum on the landing page)

If you can run the synthesis off your top 6,000 customers and find your eight Matts, you can build a Grüns. Not the supplement category. The behavior. One product, multiple funnels, each speaking to a different rich avatar in their own language.

You cannot skip the calls

One honest caveat. The AI does the synthesis. It doesn't replace the calls.

Quant tells you who. Qual tells you why. The 30-minute conversation with the actual Matt is where you hear "punching above your weight" come out of his mouth on a recorded sales call. That phrasing is on our highest-performing ads now because Matt said it about himself. We just kept the phrase.

You cannot manufacture that. There is no AI substitute for picking up the phone. The dashboards tell you who to call. The call is where the gold is. Skip the call and nothing else compounds.

Every business has a Matt

Codie Sanchez was on a clip recently with a business owner trying to figure out who to target. Her answer was the cleanest framing I've heard:

Every single business has a rich avatar.

She's right. There's a 10% somewhere in your customer base driving most of your revenue. They have a name, an inbox, and a phone number. Most companies have no idea who they are, and the ones who do have the name usually never call them.

That's the part that's wild to me. The thing that drives the business is sitting there in the data, named, and nobody's actually picking up the phone.

Go find your Matt.