Your ICP is a paragraph. It needs to be a query.

Give your ideal customer profile to someone who has never met your company and ask for 500 named accounts. If they come back with questions, you wrote a positioning statement.

Insights cover: a wide field of accounts narrowed by three successive filters.

Most ICP documents cannot be executed. They read well in a board deck and produce nothing when handed to the person who has to build the list, because they describe a customer in adjectives rather than in filters.

Here is the test. Give your ideal customer profile to someone who has never met your company and ask them to produce 500 named accounts from it. If they come back with questions, the document is a positioning statement. An ICP is a query.

What a typical ICP says, and why it fails

"Mid-market European manufacturers who value operational efficiency and are undergoing digital transformation, typically 50 to 500 employees, with a progressive leadership team."

Four of those clauses cannot be queried. "Value operational efficiency" is not a field. "Digital transformation" is not observable. "Progressive leadership" is a compliment. What remains is a headcount band and a continent, which describes roughly 180,000 companies.

The list builder will do what anyone would do with that brief: pick the dropdowns, export the maximum, and hand back a file. The campaign that follows fails at the list stage, and the post-mortem blames the copy.

The five fields an executable ICP needs

1. The universe, as a query

Name the filter set that produces the population, using fields that exist in a public source. Activity code rather than industry label. Headcount band from the register rather than a vendor estimate. Country list rather than "Europe."

Example: NACE codes 10.5 and 10.8, 20 to 250 employees, registered in Poland, Czechia or Lithuania. That is a query. Somebody can run it today and get a number back.

2. The disqualifier

What removes a company that passes the filter. This is the field most ICPs omit and the one that saves the most money.

Example: exclude anyone already using a competing platform, anyone under two years old, anyone whose only site is a one-page brochure, anyone whose registered address is a serviced office. Each exclusion needs a source too.

3. The trigger

The dated event that moves an account from the universe into this month's list. Without it your ICP describes who could buy, never who might buy now.

Example: posted a production or quality role in the last 45 days, or filed a new establishment in the last two quarters.

4. The person, by function and metric

Job title varies across languages and companies. Function and accountability do not. Name the function, the seniority band, and what that person is measured on.

Example: the person accountable for plant output, usually titled Produktionsleiter, Operations Manager or Kierownik Produkcji, measured on unplanned downtime and on-time delivery.

5. The proof that person asks for

Different buyers discount different evidence. An operations lead wants to see the workflow. A CFO wants a number with a source. Naming this in the ICP tells the campaign what to put in paragraph two.

An ICP without a disqualifier and a trigger is a market definition. Useful for a strategy document, useless for a campaign, and the difference costs a quarter.

The worked example

The same customer, described two ways
FieldUnusable versionExecutable version
UniverseMid-market European manufacturersNACE 10.5 / 10.8, 20 to 250 staff, PL / CZ / LT registers
DisqualifierNot specifiedExclude under 2 years old, serviced addresses, existing competitor logos on site
TriggerUndergoing digital transformationProduction or quality role posted in the last 45 days
PersonDecision makersAccountable for plant output, measured on downtime and OTD
ProofProven ROI90-second recording of the shift handover screen, plus one named reference in the same NACE code
Result180,000 companiesRoughly 340 accounts this month

The right-hand column is a brief. The left-hand column is a wish.

Where the answers come from

Not from a workshop. Every field above is derived from customers you already have, and if you have fewer than five customers you derive it from conversations instead.

Take your last ten closed deals. For each one, write down: what filter would have found this company, what was happening there in the 90 days before they replied, who owned the problem, who signed, and what evidence moved them. Patterns show up by the sixth row.

Then take your last ten losses and do the same. The disqualifier field comes almost entirely from the loss list, and it is the part nobody writes down.

Sizing the result

Run the query before you commit to it. Three outcomes, three responses.

Under 200 accounts. Too narrow to produce statistical signal. Widen the country list or lengthen the trigger window before you widen the definition, because those preserve the thesis.

200 to 2,000 accounts. The right size for a first programme. Enough to learn from, small enough to research properly.

Over 5,000 accounts. Your trigger is not doing any work, or your disqualifier is missing. Tighten before you spend on contact enrichment, because enrichment is the expensive step.

The ICP is a hypothesis with a review date

Write it, run 1,500 sends against it, then read what came back. Which segment replied. Which title answered. Which country ignored you. Which objection repeated.

Revise the document with those answers and run it again. An ICP that has not changed after two campaigns has not been tested, and the second version is always tighter than the first.

The version that matters is the one written after the market has argued with you.

Related work

Ripe Leads writes the ICP as a query before it builds anything

Ripe Leads is KoFi Tech's outbound arm. Week one produces the universe query, the disqualifiers, the trigger and the account count, so you approve a real list size rather than a description.

See how Ripe Leads works