icp-deep-scanner
$
npx mdskill add OneWave-AI/claude-skills/icp-deep-scannerTurn the data already sitting in your connected tools into a rigorous, evidence-backed Ideal Customer Profile (ICP) and a library of buyer personas. Most ICPs are invented in a slide deck. This one is reverse-engineered from your actual best customers, your won/lost deals, your support tickets, and your reviews — then written so it can drive real decisions and feed the panel skills.
SKILL.md
.github/skills/icp-deep-scannerView on GitHub ↗
---
name: icp-deep-scanner
description: Deep-scan any tools you connect (CRM, email, support, reviews, analytics, billing, database) to produce a data-grounded Ideal Customer Profile and a reusable persona library. Read-only by default. Use when you need to define or refresh your ICP, build buyer personas from real data instead of guesses, or generate the persona inputs that the customer-panel-of-experts and prospect-panel-simulator skills consume.
tools: Read, Write, Bash, Grep, Glob, WebSearch, WebFetch, Agent
model: inherit
---
# ICP Deep Scanner
Turn the data already sitting in your connected tools into a rigorous, evidence-backed Ideal Customer Profile (ICP) and a library of buyer personas. Most ICPs are invented in a slide deck. This one is reverse-engineered from your actual best customers, your won/lost deals, your support tickets, and your reviews — then written so it can drive real decisions and feed the panel skills.
This skill is the data layer beneath `customer-panel-of-experts`, `prospect-panel-simulator`, and `product-launch-war-room`. Run it first; those skills read the persona library it writes.
## Operating principles (read first)
- **Read-only by default.** You may query and read connected sources. You must NOT create, update, delete, send, or move anything in any connected tool unless the user explicitly asks in this session. Before any write or outbound action, stop and confirm.
- **Least data necessary.** Pull aggregates and representative samples, not entire databases. You are building a profile, not exfiltrating a CRM.
- **PII minimization.** Persona artifacts are archetypes, not dossiers. Do not write real customer names, emails, phone numbers, or account IDs into the output files. Reference real records only as anonymized counts and quotes (quotes scrubbed of identifying detail).
- **Secrets via environment only.** Never read, print, or write credentials. Assume tokens live in environment variables (e.g. `$SUPABASE_TOKEN`, `$OPENAI_API_KEY`) or in the MCP connection itself. If a source needs auth that isn't present, list it under "Sources I could not reach" and continue.
- **Cite the evidence.** Every claim in the ICP must trace to a source. "Buyers are mostly ops leaders" is worthless; "14 of the last 20 closed-won champions held an Operations title (CRM, trailing 12 mo)" is usable.
## Step 1 — Inventory connectable sources
Ask the user which tools to scan, or detect what's available. Map each to what it tells you:
| Source (examples) | What to extract | How to reach it |
|---|---|---|
| CRM (HubSpot, Salesforce, internal) | Closed-won vs closed-lost firmographics, titles of champions/buyers, deal size, sales cycle, win reasons | MCP connector or read-only API |
| Email / calendar | Who actually engages, meeting cadence, recurring objection language | Gmail/Calendar MCP, read-only |
| Support / tickets / chat | Top pain themes, words customers use, where they get stuck | Intercom/Zendesk export, logs |
| Reviews (G2, Capterra, Trustpilot, App Store) | Verbatim value language, switching triggers, deal-breakers | WebFetch / `customer-review-aggregator` |
| Product analytics (GA4, Clarity, Mixpanel) | Activation paths, who sticks, drop-off points | Analytics MCP / API |
| Billing (Stripe, Mercury) | Real revenue concentration, expansion vs churn by segment | Read-only API |
| Database (Supabase/Postgres) | Ground-truth usage and cohort behavior | Read-only SQL via `$SUPABASE_TOKEN` |
| Public web | Firmographic enrichment, market sizing, competitor positioning | WebSearch / WebFetch |
Present the list, mark which are reachable now, and confirm scope before scanning. For a wide scan across many sources, dispatch parallel read-only sub-agents (one per source) and merge their findings — see `/agent-army`.
## Step 2 — Extract signal from each source
For each reachable source, pull:
- **Firmographics** — industry/vertical, company size, geography, business model, tech stack.
- **Who buys** — economic buyer, champion, blocker, end user (titles + seniority, from real deals).
- **Why they buy** — the trigger event, the job-to-be-done, the alternative they abandoned.
- **Why they don't** — top closed-lost reasons, top objections, top churn reasons.
- **Language** — the exact words customers use (mine reviews and tickets; do not paraphrase into marketing-speak).
- **Economics** — ACV, CAC signals, sales-cycle length, expansion behavior, concentration risk.
Record sample sizes and date ranges for everything. Flag anything based on fewer than ~5 data points as "thin signal."
## Step 3 — Synthesize the ICP
Write `icp-profile.md`:
```markdown
# Ideal Customer Profile — {COMPANY}
Generated: {timestamp} · Sources scanned: {list} · Confidence: {High/Med/Low}
## The ICP in one sentence
{Vertical} companies of {size} who {trigger}, evaluated against {alternative}, where the champion is a {title} and the economic buyer is a {title}.
## Firmographic fit (with evidence)
- Industry: ... (evidence: N of M closed-won)
- Size: ...
- Geography / model / stack: ...
## Anti-ICP — who to disqualify
- {Segment} — closes slow, churns fast, low ACV (evidence)
## Buying committee
- Economic buyer · Champion · Blocker · End user — each with real titles + what they care about
## Triggers & jobs-to-be-done
## Top buy reasons / top no-buy reasons (ranked, with counts)
## The customer's own language (verbatim, scrubbed)
## Economics — ACV, cycle, expansion, concentration risk
## Confidence & gaps — what's thin, what to instrument next
```
## Step 4 — Build the persona library
Write `personas/` — one file per persona (3–6 personas: typically the champion, the economic buyer, the blocker, and 1–2 key end users or segment variants). Each persona file is structured so the panel skills can load it directly:
```markdown
---
persona_id: ops-leader-champion
role: Champion
archetype: "VP of Operations at a 50–200 person services firm"
based_on: "12 closed-won champions, CRM trailing 12 mo"
---
# {Archetype name}
- Goals / success metrics:
- Pains (verbatim language):
- What earns trust / what triggers skepticism:
- Buying authority & budget reality:
- Objections they raise (real, from lost deals):
- How they talk (tone, vocabulary, 2–3 scrubbed quotes):
- What would make them a hard NO:
```
Also write `personas/index.md` listing every persona, its role in the committee, and its evidence base.
## Step 5 — Handoff
End with:
- A 5-line ICP summary the user can paste anywhere.
- "Sources I could not reach" and what auth/access would unlock them.
- "Confidence ledger" — which conclusions are strong vs. thin.
- The exact command to run next: `customer-panel-of-experts` (debate a decision with these personas) or `prospect-panel-simulator` (pressure-test a pitch against them).
## Guardrails recap
Read-only unless told otherwise · no secrets in output · personas are archetypes, never dossiers · every claim cites its source and sample size · thin signal is labeled, not hidden.