Writing an ICP definition that holds up under pressure
Most ICP documents are a description of existing customers with the inconvenient ones removed. Here is how to build one that a rep can act on and a model can score.
Ask five people at a B2B company to describe the ideal customer and you will get five answers, all of which are true and none of which can be turned into a filter. "Mid-market companies that value data-driven decision making" is not an ICP. It is a sentiment.
A usable ICP has one property: someone who has never met your customers can apply it to a list of ten thousand companies and produce the same answer you would.
Build it from retention, not revenue
The default analysis looks at closed-won deals and finds what they have in common. This bakes in every mistake your sales team has ever made, because a customer who churned in month four is in that dataset as a win.
Weight by retained revenue instead, and the picture usually changes:
- Segments that close fast and churn fast disappear.
- Segments with long cycles and high retention move up.
- At least one segment that everyone "knows" is core turns out to be a treadmill.
If you have fewer than fifty customers, the analysis is not statistically meaningful and you should say so. Use it directionally and re-run it every quarter.
Write down the negative criteria
The half that gets skipped, and the half that saves the most time.
An ICP that only describes who to pursue leaves every rep to decide independently who to skip, which means nobody skips anyone. Explicit exclusions are permission to disqualify, and disqualification speed is the highest-leverage variable in a rep's week.
Real negative criteria look like:
- Under 25 employees — no budget owner distinct from the founder, and the founder does not take meetings.
- Regulated industries without a named compliance sponsor — the cycle exceeds our payback period.
- Companies already running [incumbent] with under 18 months on the contract.
- Consultancies and agencies buying on behalf of a client we cannot see.
Every criterion must be observable
This is the test that kills most ICP documents.
For each attribute, ask: can I determine this about a company I have never spoken to, from data I can actually get?
| Attribute | Observable? | Use |
|---|---|---|
| Headcount, by department | Yes | Filter |
| Funding stage and recency | Yes | Filter |
| Technology installed | Yes | Filter |
| Hiring velocity in a function | Yes | Filter |
| "Values data-driven decisions" | No | Delete |
| "Growing fast" | Only if defined as headcount change | Define, then filter |
| Budget authority of the contact | Partly — infer from title | Score, do not filter |
Anything in the "no" column belongs in the qualification conversation, not in the targeting model. Mixing the two produces a target list that no one can reproduce.
Score, do not sort into bins
Tiering accounts into A, B and C feels organised and loses information. A company that misses tier A on one criterion by a small margin is treated identically to one that misses on all of them.
A weighted score keeps the gradient:
fit = 0.30 * size_band
+ 0.25 * industry_match
+ 0.20 * tech_stack_overlap
+ 0.15 * growth_rate
+ 0.10 * geography
Two rules keep it honest. Publish the weights — a score nobody can explain is a score nobody trusts, and reps will quietly ignore it. And re-fit the weights against closed-won-and-retained every quarter, or the model slowly encodes last year's market.
Validate against the losses
The final check, and the one that finds the errors: take the last twenty deals you lost after a demo and score them.
If your model rates them highly, the model is describing who takes meetings rather than who buys. That is a specific, fixable failure — usually a missing negative criterion — and it is invisible if you only ever validate against wins.
An ICP is not a description of your customers. It is a prediction about strangers, and it should be evaluated like one.