TL;DR: Your ICP isn’t a demographic. It’s a behavior pattern. We rewrote ours three times in six weeks, and each rewrite was driven by real user data we should have collected on day one. Here’s the framework we used, with the actual pivots.

The first ICP we wrote for CrossMind was “non-technical founders who need help with growth.” It took us about three weeks to figure out it was useless.
Not wrong, exactly. Those people exist. But the definition told us nothing about where to find them, what to say to them, or how to recognize one when they showed up. It was a demographic label, not a search query. We could spend months “targeting non-technical founders” and never actually talk to the right person.
Then we rewrote it. Then we rewrote it again. Each time, the rewrite came from real user behavior, not from brainstorming.
That’s the part most ICP advice skips. You don’t define an ideal customer profile by writing down attributes. You define it by watching who shows up, who pays, and who disappears after one session. The ICP is what falls out of that data.
Why most ICP definitions don’t survive contact with users
The standard playbook goes something like this: write down your ideal user’s role, company size, pain points, and goals. Maybe add a “day in the life” persona. Hand it to marketing. Done.
This works fine for established companies in mature markets. It fails for early-stage founders, because you’re guessing. You haven’t talked to enough users yet to know which attributes actually correlate with conversion. The “non-technical founder who wants growth help” definition doesn’t predict anything. It just describes a category.
When we ran our first 69 cold DMs targeting people who fit that broad description, we got zero replies. The ICP said they should want what we built. Reality said otherwise.
The lesson: an ICP built on assumptions is worse than no ICP. It makes you confident in the wrong direction.
The behavior-first ICP framework
A useful ICP answers four specific questions. None of them are “what’s their job title.”
1. What behavior predicts they have the problem?
Not “do they have the problem.” Most people in your broad category have the problem in some form. The question is what behavior tells you they have it badly enough to do something about it.
For us, it was founders who had already launched and were stuck below 50 users. Someone “interested in growth” is theoretical. Someone who shipped a product and got zero traction is in pain.
2. Where do they self-identify?
What communities, threads, or spaces do they actively participate in? Not where you think they are. Where they actually gather and identify themselves as having the problem.
For us, it was “drop your product” and “what are you building” threads on X. Founders who post in those threads are self-selecting. They have a product and want people to see it. That’s a much sharper signal than “follows entrepreneurship accounts.”
3. What’s the language they use to describe the problem?
The words people use to describe their problem reveal how they think about it. “I need marketing automation” is a tool search. “I launched to crickets” is an emotional statement about frustration. Different problem, different product, different ICP.
Our highest-converting language wasn’t “AI growth agent.” It was “I find your first users.” That phrase matched what founders were already typing into Reddit and Indie Hackers threads.
4. What do they pay for?
Not what they say they’d pay for. What they actually pay for. Two different things.
One of our first 20 users came through our landing page organically. They used a disposable email and never came back. The other 19 came through warmer, more personal channels. The behavior signal: people who needed a “tool” to evaluate weren’t our users. People who wanted an outcome were.
What our ICP actually looked like after 3 rewrites
Here’s how our definition evolved in six weeks. Notice that each version came from real data, not brainstorming.
Version 1 (March). “Non-technical founders who need growth help.”
Broad, demographic, useless. Cold DMs against this definition: 0% reply rate.
Version 2 (late March). “Vibe coding builders, 4-12 weeks post-launch, under 50 users, already tried at least one channel.”
Sharper. Behavior-based. Sourced from scanning Reddit, Indie Hackers, and Twitter for actual patterns. We found hundreds of posts matching this profile — people frustrated enough to write multi-paragraph rants about being stuck.
Version 3 (April, after full user attribution). “Vibe coding builders who post in ‘drop your product’ threads on X and have already shipped something publicly.”
The sharpening came from tracking every signup to its source. Seven of our first 20 users came from one specific channel. Once we knew that, the ICP wasn’t a guess anymore. It was a description of who was actually converting.
Each rewrite happened because we collected data the previous version didn’t have. That’s how ICP definition should work.
The anti-patterns to avoid
A few ICP definitions that look reasonable but kill early-stage startups:
“Developers who care about productivity.” Caring isn’t a behavior. Paying, switching tools, posting a rant after a frustrating afternoon — those are behaviors.
“SMBs that need automation.” Company size doesn’t predict problem severity. A 5-person startup might be desperate. A 50-person company might be fine with manual processes.
“Founders building with AI.” This is a category, not an ICP. It tells you nothing about what they buy or where they gather.
“People similar to our existing users.” Circular. Useful only after you have enough users to spot real patterns. Most early-stage founders try this too early, with five data points, and end up with a meaningless average.
How to actually run this
Don’t sit down and write your ICP. Run a process instead.
Step 1: Pull your last 10 signups (or conversations, if you don’t have signups yet). For each one, write down: where they came from, what they said their problem was, what they did after signing up, whether they paid or referred anyone.
Step 2: Look for the behavior pattern. What do the most engaged ones have in common? Not demographics. Behavior. What did they do before they found you?
Step 3: Rewrite your ICP based on that pattern. Throw out anything that isn’t backed by behavior. Keep only what predicts engagement, payment, or referral.
Step 4: Repeat in 30 days. Your ICP will get sharper every cycle if you’re collecting real signal. If it doesn’t, you’re not collecting enough signal.
If you have fewer than 10 real users, you don’t have an ICP yet. You have a hypothesis. The work isn’t to write a perfect definition. It’s to run enough experiments to find out which hypothesis was right.
What this changes about how you spend time
When your ICP is vague, you spend time on things that feel productive but aren’t. You write generic landing pages that appeal to no one. You cold-DM strangers who fit a category but don’t have the pain. You build features for an imagined user who never shows up.
When your ICP is specific and behavior-based, the channel map becomes obvious. You know which subreddits to monitor and which X threads to scan. The whole distribution problem gets easier, because you’re no longer trying to reach “everyone.”
The hardest part of getting your first 100 users isn’t finding the channels. It’s defining the user precisely enough that the right channels become obvious.
The shortcut we ended up building
The reason we kept getting our ICP wrong was that we kept trying to define it before we had data. The data was sitting in communities the whole time. We just weren’t scanning them systematically.
The Onboarding research we eventually built runs that scan. You give it your product URL, it spends 30-40 minutes mapping where people with the relevant behavior actually gather, and the ICP sharpens itself based on what those communities post and how they describe the problem.
But even without that tool, the framework above works. The cost is time — maybe a weekend of manual scanning. The payoff is an ICP that actually predicts who converts, instead of one that looks nice in a deck.
Related reading: If your ICP feels too vague, the next move is figuring out where they actually are. The early adopters channel map covers which platforms to target first. If you’re already past launch and confused about silence, the distribution checklist walks through what’s likely broken. And if you want to validate the problem before defining the user more sharply, the validation framework shows how to read community signals before committing to a direction.
Want the ICP scan without the manual work? CrossMind’s Onboarding research maps where your real users gather in 30-40 minutes, based on behavior patterns instead of guesses. See how it works.