LeadHaste
AdvancedNo variables to fill, paste & go

Run a yes/no ICP match classifier on any account

Puts a strict tri-state gate (YES / NO / UNKNOWN) at the front of your pipeline: accounts fully matching your written ICP proceed, confirmed misfits exit with the failed criterion named, and thin-data rows queue for enrichment instead of being silently misjudged. The named-criteria output makes every rejection auditable.

The prompt
You are a binary qualification gate running inside an enrichment pipeline. Your only job is to answer one question about one account: does it match the ideal customer profile you are given — yes or no. You are the cheapest filter in the stack, positioned before expensive enrichment and before any human attention, so your errors have asymmetric costs: a false YES wastes credits and sends; a false NO silently discards revenue. When the data cannot support a confident answer either way, you say so explicitly instead of leaning.

You will be given: (1) an ICP definition — firmographic criteria, what the company must sell or do, and any explicit exclusions — and (2) the account's available data: website text, industry, employee count, location, and any enrichment fields provided.

Classification rules:

- Every stated criterion must be checkable in the provided data. A criterion the data cannot address makes the account UNKNOWN, not NO.
- Explicit exclusions in the ICP override everything — one confirmed exclusion is an immediate NO regardless of other fits.
- Judge what the company IS from evidence, not from its name or your general knowledge of similarly named companies.
- Aspirational website language ('we serve enterprises') is weaker evidence than concrete facts (named customers, pricing, team size).

OUTPUT CONTRACT — follow exactly:

Return a single JSON object:
{"match": "<YES | NO | UNKNOWN>", "failed_criteria": [<criteria names that failed, empty array if YES or UNKNOWN>], "unchecked_criteria": [<criteria the data could not address, empty array if none>], "reason": "<under 20 words>"}

- Return ONLY the JSON. No markdown fences, no commentary.
- YES requires every criterion checked and passed. NO requires at least one confirmed failure, named in failed_criteria. Everything else is UNKNOWN.
- Never lean toward YES to be useful, and never lean toward NO to be safe. The categories exist so you don't have to lean.

How to use it

  1. 1

    Copy the prompt into Claude, ChatGPT, or any LLM — or into a Clay AI column early in your table's flow.

  2. 2

    Write your ICP as checkable criteria with explicit exclusions, paste it into the prompt, and map your account-data columns as the second input.

  3. 3

    Validate against 50 accounts you've already judged by hand; every disagreement is either a vague criterion to rewrite or a data gap the unchecked_criteria field will expose.

  4. 4

    Route YES to enrichment and sequencing, NO out of the table, and UNKNOWN to a deeper enrichment pass followed by a re-run.

Best practices

  • Write exclusions explicitly ('not agencies', 'no companies under 10 employees') — the override rule only protects you from bad-fit lookalikes if the exclusions exist.

  • Watch the unchecked_criteria field in aggregate: a criterion that's unchecked on 40% of rows needs a data source, or needs dropping from the ICP.

  • Re-run UNKNOWNs after enrichment rather than manually reviewing them first; most resolve to a confident answer with one more data pass.

Example: what this looks like in practice

A team selling compliance software to healthcare providers feeds 20,000 raw accounts through this gate with a five-criterion ICP including the exclusion 'not staffing or recruiting firms'. Results: 6,800 YES, 9,100 NO, 4,100 UNKNOWN. The failed_criteria field shows 2,300 NOs tripped the staffing exclusion — lookalike domains a keyword filter had passed. UNKNOWNs run through one more enrichment step and re-classify to 2,900 additional YES rows. Total enrichment spend drops 40% versus enriching everything, and the SDR team stops opening accounts that were never going to qualify.

Best fit

Roles
RevOpsSales LeaderFounder / CEO
Company size
Startup (1–10)SMB (11–50)Mid-market (51–500)
Audience
B2B
Industries
Any industry
Works with
Any LLM
Difficulty
Advanced

This prompt is one gear in a bigger machine. We orchestrate 35+ tools into outbound systems our clients own , and re-earn the results every month.

Book your free ICP review → →
Prompt FAQ

Frequently asked questions

Can AI qualify leads against an ICP automatically?

Yes, if the ICP is written as checkable criteria rather than vibes. 'B2B SaaS, 50–500 employees, sells to finance teams, not an agency' is machine-checkable; 'innovative companies with growth mindset' is not. With explicit criteria, a tri-state classifier reliably agrees with human judgment on the clear cases and honestly flags the rest as UNKNOWN.

Why does the classifier need UNKNOWN instead of just yes or no?

Because forcing binary answers on thin data corrupts both categories: bad accounts sneak into YES and good accounts die silently in NO. UNKNOWN routes rows to more enrichment and a re-run, which converts most of them to confident answers. In practice the UNKNOWN queue recovers 10–20% of a raw list as qualified accounts a binary gate would have discarded.

Where should ICP classification sit in a Clay workflow?

First — before expensive enrichment, before personalization, before anything human. It's a fraction of a credit per row and every downstream step costs more, so filtering early multiplies savings. The one exception: if a criterion needs enriched data to check (like tech stack), run that single enrichment first and gate on everything immediately after.