Every company has an ideal customer profile. Almost none has evidence for it. The ICP fit test fixes that in an afternoon: take your last 50 to 100 closed-won deals, take a similar pile of closed-lost ones, and check which traits show up in the deals you won but not the ones you lost. If your profile cannot tell those two piles apart, it is not a profile. It is a wish. And you do not need a data team or a single line of code to find out, because the whole test now runs in a chat window.
Why Most Ideal Customer Profiles Are Folklore
The typical profile was written in a planning meeting, built from three or four memorable customers, and never checked against anything. That is not a fringe problem: 68% of B2B companies have no clearly defined profile at all, and plenty of the ones that do are working from a document nobody has re-opened since it was drafted.
How a Profile Goes Stale Without Anyone Noticing
- It was reverse-engineered from a handful of favorite logos rather than every deal you actually closed.
- It says things like "growing tech companies in the US," which fits tens of thousands of companies you will never win.
- It mentions traits, like revenue range or the tools a company runs, that your CRM has no field for, so nobody can ever check it.
- The product and the market both moved, and the document did not.
GTM advisor Tim Hillison put it plainly on LinkedIn: everyone is convinced their profile is right, up until the data says otherwise. The fit test is how you ask the data.
The Fit Test: One Question, Two Piles of Deals
The test asks a single question: do the traits in your profile show up in the deals you won and not in the deals you lost? A trait that appears in both piles at the same rate is a description of your market. A trait that appears in 60%+ of wins and under 40% of losses is a real qualifier, the kind worth building a targeted prospect list around.
Why the Lost Pile Is Not Optional
Studying only your wins tells you who you sold to, not who you should sell to. Say 7 in 10 of your won deals are mid-size software companies. Sounds like proof, until you look at the lost pile and find 7 in 10 of those are mid-size software companies too. The lost pile is the control group that turns a story into a test:
- It exposes traits that carry no signal, the ones both piles share, so you can delete them.
- It surfaces the accounts that look ideal on paper and keep saying no, which become explicit walk-away criteria.
- It gives you the number that actually matters: the gap between the win match rate and the loss match rate.
One Caveat: Sort Your Losses First
A deal you lost on price or timing was often a genuine fit. Tag those and set them aside; keep the losses where the account simply was not right as your comparison pile. Mixing them in waters down the signal.
How Many Deals Before the Numbers Mean Anything?
Fifty won deals is the floor, 90 or more is the comfortable zone, and everything should come from the last 12 to 18 months. Under 50, one odd account can swing a percentage by double digits and send you rewriting the profile around a fluke.
- Take every win in the window. Hand-picking the memorable ones rebuilds the exact bias you are trying to remove.
- Stop at 18 months back. Older deals closed against a different product and a different price. They describe a company you no longer are.
- Keep the piles roughly the same size. Ninety wins against fifteen losses makes the loss-side percentages meaningless.
- Under 50 total wins? Run it anyway, label the result directional, and re-run each quarter as deals accumulate. A rough test on 30 real deals still beats an untested guess.
The Fields Your CRM Never Had (and How to Fill Them in Chat)
Here is where most teams stall: the export from your CRM has a company name, a domain, a deal amount, and an outcome, and your profile is written in traits none of those columns contain. You cannot test "500 to 2,000 employees, running a modern cloud stack, hiring in engineering" against a spreadsheet that only knows the company's name. Filling in those missing traits, what the data world calls enrichment, is the step every ICP guide skips and the whole reason profiles go untested.
The Traits Worth Filling In
| Trait in your profile | What to ask for, in plain words | In your CRM today? |
|---|---|---|
| Recent company activity | Hiring pushes, funding news, expansion moves | No |
| Tools they run | Their CRM, cloud platform, analytics setup | Almost never |
| Company size and money | Employee range, revenue range, industry | Sometimes, usually stale |
| Funding history | Last round, total raised, acquisitions | No |
| Team growth | Headcount trend, which departments are growing | No |
Vibe Prospecting fills in every row of that table from a single connection in Claude or ChatGPT, drawing on 150M+ company profiles and 18 categories of recent company activity. Powered by Explorium Enterprise Business Data, a messy export still resolves to the right companies at 97.8%+ match accuracy, misspellings and renames included. If you want to sanity-check the source first, run a side by side data provider comparison on a slice of your own deals.
Run the Whole Test in a Chat Window
The fit test used to require an engineer, an API contract, and a script. In chat it is three messages. Connect Vibe Prospecting in Claude or ChatGPT and walk through it:
- Message 1, upload and match: "Here is a CSV of 120 companies with a won or lost column. Match each one to its real company record and tell me which ones you could not resolve."
- Message 2, fill in the traits: "For every company, add employee range, revenue range, industry, the main tools they run, funding history, and whether they are hiring in engineering. Show me 5 sample rows before doing the full list."
- Message 3, score it: "My ideal customer is 100 to 1,000 employees, $10M to $100M revenue, software or logistics, hiring in engineering. For each trait, what share of won deals matches and what share of lost deals matches? Give me the gap per trait."
The preview step in message 2 matters: you see sample records and a cost estimate before anything is charged, so you audit quality before committing. And because up to 1,000 records per request are handled server side, the full export survives intact instead of being quietly trimmed to whatever fits in a chat context.
Connect It First
Add Vibe Prospecting from the Claude or ChatGPT Connectors Directory, or start in the web app. Teams building this into a Claude Code workflow should install the Vibe Prospecting Plugin or add the connection manually:
