Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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.
.claude/skills/onewave-ai-icp-deep-scanner/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 56% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 69% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 110% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 12% | 0% |
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.
$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.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.
For each reachable source, pull:
Record sample sizes and date ranges for everything. Flag anything based on fewer than ~5 data points as "thin signal."
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
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.
End with:
customer-panel-of-experts (debate a decision with these personas) or prospect-panel-simulator (pressure-test a pitch against them).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.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 27,485 | 32,593 | +19% | 1 | 1 | 0% | 4,406 | 6,863 | +56% | 0 | 0 | — |
case-02 | fail→pass | 37,443 | 35,550 | -5% | 1 | 1 | 0% | 6,166 | 7,153 | +16% | 0 | 0 | — |
case-03 | fail→pass | 28,785 | 34,271 | +19% | 1 | 1 | 0% | 4,127 | 6,981 | +69% | 0 | 0 | — |
case-04 | pass→pass | 6,414 | 8,219 | +28% | 1 | 1 | 0% | 952 | 2,868 | +201% | 0 | 0 | — |
case-05 | fail→fail | 6,704 | 6,266 | -7% | 1 | 1 | 0% | 993 | 2,606 | +162% | 0 | 0 | — |
case-06 | fail→fail | 5,128 | 5,435 | +6% | 1 | 1 | 0% | 661 | 2,274 | +244% | 0 | 0 | — |
case-07 | pass→pass | 4,572 | 5,969 | +31% | 1 | 1 | 0% | 625 | 2,469 | +295% | 0 | 0 | — |
case-08 | fail→fail | 4,745 | 7,522 | +59% | 1 | 1 | 0% | 721 | 2,611 | +262% | 0 | 0 | — |
case-09 | fail→fail | 25,731 | 9,783 | -62% | 1 | 1 | 0% | 3,683 | 2,954 | -20% | 0 | 0 | — |
case-10 | fail→pass | 6,741 | 2,837 | -58% | 1 | 1 | 0% | 973 | 2,041 | +110% | 0 | 0 | — |
case-11 | fail→fail | 13,436 | 5,598 | -58% | 1 | 1 | 0% | 1,953 | 2,432 | +25% | 0 | 0 | — |
case-12 | fail→fail | 14,332 | 11,450 | -20% | 1 | 1 | 0% | 2,378 | 3,413 | +44% | 0 | 0 | — |
case-13 | fail→fail | 12,592 | 6,287 | -50% | 1 | 1 | 0% | 2,512 | 2,705 | +8% | 0 | 0 | — |
case-14 | fail→pass | 10,785 | 2,735 | -75% | 1 | 1 | 0% | 1,964 | 2,196 | +12% | 0 | 0 | — |
case-15 | fail→pass | 10,772 | 5,684 | -47% | 1 | 1 | 0% | 1,832 | 2,606 | +42% | 0 | 0 | — |
case-16 | pass→pass | 12,819 | 7,331 | -43% | 1 | 1 | 0% | 2,190 | 2,854 | +30% | 0 | 0 | — |
case-17 | fail→pass | 7,102 | 7,831 | +10% | 1 | 1 | 0% | 1,079 | 2,792 | +159% | 0 | 0 | — |
case-18 | fail→fail | 4,113 | 2,084 | -49% | 1 | 1 | 0% | 564 | 1,848 | +228% | 0 | 0 | — |
case-19 | fail→fail | 10,074 | 8,520 | -15% | 1 | 1 | 0% | 1,560 | 2,680 | +72% | 0 | 0 | — |
case-20 | pass→fail | 7,112 | 4,551 | -36% | 1 | 1 | 0% | 1,077 | 2,275 | +111% | 0 | 0 | — |
case-21 | fail→fail | 20,785 | 19,310 | -7% | 1 | 1 | 0% | 3,383 | 4,412 | +30% | 0 | 0 | — |
case-22 | fail→fail | 20,073 | 21,555 | +7% | 1 | 1 | 0% | 3,770 | 5,116 | +36% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +27 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.