ICP (ideal customer profile)

An ICP describes the accounts worth selling to, not the people you talk to. How to write one an AI agent can actually filter on.

Updated Aug 25, 2026

An ideal customer profile describes the kind of company worth selling to: industry, size, geography, stage, and whatever else reliably separates your closed-won accounts from your closed-lost ones. It is a company-level description. Buyer personas describe the humans inside those companies and are a separate document.

Why it matters

An ICP written as prose is a positioning statement. An ICP written as filter values is a query. Only the second one does anything once an agent is holding it.

"Mid-market B2B SaaS companies with a scaling sales motion" cannot be executed. industry: software development, employeeCountMin: 50, employeeCountMax: 500, country: GB, hasOpenRole: true can. The translation step is where most ICPs quietly die, because nobody makes the abstractions commit to a number.

Example

Take your last twenty closed-won deals and write down, for each, the industry, headcount at signature, country, and funding stage. Where the values cluster tightly, you have a filter. Where they scatter, you have a variable that does not predict anything and should be dropped rather than kept out of habit.

Most teams find that two or three dimensions carry almost all the signal, and that one dimension they have been targeting on for a year carries none.

Common mistake

Writing the ICP you wish you had. An ICP built from the deals you want reads as ambition; an ICP built from the deals you closed reads as evidence. If enterprise accounts are in the profile and none have ever bought, the profile is a plan, not a filter, and it will fill your pipeline with accounts that behave exactly as they always have.

How this relates to Signl

Defining an ICP in the Signl dashboard scores every search result and every Loop match against it, so results come back ranked rather than merely matching. Signl accepts 35 industry categories, with a large set of natural-language aliases mapped onto them, and returns a clear unknown_industry error rather than an empty list when a value is not one it recognises.

Put this to work in your agent.

Signl runs as an MCP server. Search companies and buying signals from the tools you already use.

Book a demo