Skip to main content
Context file — Prospecting

ICP.md

Every prompt you run afterwards knows who you sell to, in terms LinkedIn can filter on. The file every other file depends on. It states the ICP in LinkedIn’s own vocabulary — headcount bands, industries, titles, geographies — so that an assistant can go straight to filters and messages instead of asking you who you sell to on every single request.

ICP.md
.md
# ICP — <Your company>

Last reviewed: <date>. Owner: <name>.
This file is the source of truth for who we sell to. Every search, list and message derives from it. If something here is wrong, fix it here rather than working around it downstream.

## One sentence

<Companies of 201–2,000 staff in logistics or retail, operating payroll in three or more countries, within nine months of adding an entity or replacing a finance system.>

## Firmographics

Expressed in LinkedIn's own bands so they can be used as filters without translation.

| Attribute | Value | Confidence | Evidence |
|---|---|---|---|
| Headcount | <201-500, 501-1000, 1001-5000> | <high> | <9 of 11 wins> |
| Industry | <Transportation & Logistics, Retail> | <medium> | <7 of 11 wins; industry tags are self-reported and unreliable> |
| Geography | <United Kingdom, Ireland> | <high> | <all wins> |
| Company type | <Privately held, Public> | <low> | <not enough data> |
| Structure | <3+ operating entities> | <high> | <every win; the single strongest qualifier> |

## Buying committee

| Role | Typical titles | What they own | What they are measured on |
|---|---|---|---|
| Economic buyer | <Finance Director, CFO> | <the budget and the close> | <close time, audit findings> |
| User | <Payroll Manager, Financial Controller> | <the monthly process> | <errors, overtime in close week> |
| Blocker | <Head of IT, Group Financial Controller> | <systems and data> | <integration risk> |

## The trigger

<A new entity or acquisition announced on the company page, or a Group Financial Controller hired in the last 120 days.>

- Where it is visible: <company page posts; the "changed jobs in past 90 days" filter; open roles>
- Window: <roughly two quarters; urgency drops after the first close with the new structure>
- How to verify before contact: <check the company page for the announcement; check whether the new hire has started>

## Exclusions

Do not target, and do not let a search return:

- <Single-entity companies — the product solves nothing for them>
- <Under 200 staff — no dedicated payroll function>
- <Agencies and consultancies — they buy for clients, not themselves>
- <Anyone already using <competitor>, unless the trigger is a renewal date>

## Qualify on the call, not from the profile

Attributes that matter but are not visible on LinkedIn, so they must not be used as search filters:

- <Which finance system they run>
- <Whether payroll is in-house or outsourced>
- <Whether the close is actually a problem, or merely long>

## What we do not know

- <Whether ERP choice predicts fit. Record it on every deal from now on.>
- <Whether the pattern holds outside the UK and Ireland. No non-UK wins yet.>

## Size check

<Approximately 1,400 companies match this definition in the target geography. At one sending seat and roughly 100 invitations a week, the addressable list is about a quarter of a year of outreach — so the ICP is correctly sized. If it were 40,000, it would not be an ICP.>

## Revision rule

Update this file when a deal closes that contradicts it, not on a schedule. Note what changed and why in one line at the bottom.

<!-- Revisions
2026-09-18 — created from 14 deals (9 won, 5 lost).
-->
ICP.md
Version 1.0 — updated 18 September 2026Downloads as ICP.mdStops every session starting with "who do you sell to?"
Where it goes
  • Claude Project knowledge
  • ChatGPT Project files
  • Cursor / Claude Code repo root
  • Gemini Gem
What you have to fill in
  • Every <angle-bracket> placeholder
  • The confidence column — be honest, it is what stops a guess becoming a fact
  • The exclusions, which save more time than the inclusions

Everything in <angle brackets> is example content, not instructions. Replace it. The file ships filled in rather than empty on purpose: an empty template gets abandoned, a filled one gets edited.

Questions

Using this file

Why not just tell the assistant my ICP in the chat?

Because you will retype it every session, slightly differently each time, and no two outputs will be built on the same definition. A file attached to a Project is read on every turn without being restated, and when it changes, everything downstream changes with it.

Where the content comes from

The reference behind this file

Which filters exist on which tier

An ICP attribute that needs an Advanced-only filter is worth knowing about before you build the search on Core.

The invitation ceiling your ICP has to fit inside

The size check in this file exists because an ICP bigger than your send capacity is not a target definition.

Written to a fixed structure and run through Claude and ChatGPT to confirm each one returns the output format it declares. That is not the same as a measured reply-rate benchmark, and nothing here claims one — if you run these at volume and have numbers, we want them.

Where to next

One file is a start. The folder is the point.

Files reference each other — CLAUDE.md declares the reading order, the prompts expect the files by name. The packs ship them together, already wired up.