How to write an ICP that a machine can actually use
An ideal customer profile that lives in a slide deck cannot build a list. Here is how to write one as filters, signals and exclusions that a data tool can run every week.
06 Oct 2025 · 3 min read · by HeiSyn
An ideal customer profile is useful to a sales team as a paragraph and useful to an outbound engine only as a set of filters. The paragraph says 'mid-market logistics companies modernising their operations'. The filter says: industry codes 4841 and 4885, 200 to 2,000 employees, at least one open role with 'operations' or 'supply chain' in the title, headquartered in a region you can serve, not already a customer, not a competitor. The second version can be run by Apollo or Clay on Monday morning without anyone reading it.
Start with the customers you already have
Export your closed-won deals from the last eighteen months and look for what they share: size band, industry, the tools they used before you, who signed, how long the cycle took. The pattern in that list is your real ICP, whatever the deck says. If the best accounts are all in one band and the worst are all in another, the band is a filter.
Separate fit from timing
Fit describes who could buy: firmographics, technographics, geography. Timing describes who is ready now: a new leader in the buying role, a funding round, a job posting that implies the pain, a tool they just adopted or dropped, a regulatory deadline. Fit goes into the list build; timing goes into the priority order and the first line of the message. Mixing them produces lists that are either too small to work or too broad to convert.
Write the exclusions first
Every outbound programme has a blocklist it discovers the hard way: existing customers, open opportunities, churned accounts still cooling off, partners, competitors, companies a rep is already working, domains that bounced last quarter. Write those exclusions into the build before the first list, with the CRM as the source of truth, and refresh them on every run.
Make it a document that changes
Keep the ICP as a short living document with the filters, the signals, the exclusions and a changelog. When reply data shows one segment converting at three times another, edit the filters and note why. An ICP that has not changed in a year is a sign nobody is reading the results.
Questions people ask next
- What if we have too few closed deals to find a pattern?
- Use the deals you have, plus the prospects that got to a second meeting, plus the customers of your closest competitors. Write the filters as hypotheses, run a small campaign per segment, and let reply and meeting rates pick the winner within a quarter. An ICP built from ten real conversations beats one built from a whiteboard.
- Should the ICP be different for outbound and inbound?
- The fit criteria should be the same; the timing signals differ. Inbound leads have already shown intent by arriving, so fit is what you score them on. Outbound has to manufacture timing, so the signals — hiring, funding, tool changes — carry more weight in deciding who to contact this week.
- Should we have more than one ICP?
- One per distinct motion at most — say, one for direct customers and one for partners — each with its own filters, messages and metrics. Three or more usually means the company has not decided who it serves, and the outbound results will say so.
Want this built for your team?
A free scoping call: we map your motion, name the number that should move, and quote a fixed-scope build.

