Skip to content
Marketing
Skill

/won-deal-icp-finder

Audit your biggest closed-won deals to find your PROVEN ideal customer profile, then find more accounts like them. Use whenever someone wants to analyze won deals, audit their best customers, see which companies generated the most revenue, find their real ICP, build a look-alike

From plugin
gtm-system
3813 skills
Install
$ npx -y skills add LaGrowthMachine/gtm-system --skill won-deal-icp-finder --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/won-deal-icp-finder

Context preview

The summary Claude sees to decide when to auto-load this skill.

Audit your biggest closed-won deals to find your PROVEN ideal customer profile, then find more accounts like them. Use whenever someone wants to analyze won deals, audit their best customers, see which companies generated the most revenue, find their real ICP, build a look-alike

SKILL.md

won-deal-icp-finder.SKILL.md
name: won-deal-icp-finder
description: "Audit your biggest closed-won deals to find your PROVEN ideal customer profile, then find more accounts like them. Use whenever someone wants to analyze won deals, audit their best customers, see which companies generated the most revenue, find their real ICP, build a look-alike target list, segment customers by what actually pays, or learn which acquisition channel produced their best revenue. Triggers on: 'audit my biggest deals', 'which customers made us the most money', 'analyze my closed-won', 'what's my proven ICP', 'find more customers like my best ones', 'look-alike accounts', 'HubSpot deal analysis', 'revenue by account', 'which channel generated my best deals', 'acquisition source analysis'. For RevOps, Heads of Sales/Marketing, founders and growth leads doing ICP refinement, account-based targeting or pipeline/QBR review. Reads HubSpot via its MCP or a CSV export, then hands the profile to sales-nav-search-builder to generate the prospecting search. Maintained by La Growth Machine."
category: fuel-my-pipeline
type: use-case
tags: [analysis, extrapolating]

Won-Deal ICP Finder

Turns a deal dataset into a **proven** ideal customer profile — which companies generated the value, what they have in common, and which channel won them — then helps find more like them.

Output discipline — read this first

When you run this skill, **return only the deliverables — nothing else.** No preamble ("Let me…", "I'll start by…"), no narration of the steps, no restating these instructions, no closing pitch beyond the single step-4 note. **Each step is one sentence plus its table or widget — no analysis essays, no editorializing about what the numbers "mean" or "signal."** If you can't determine the deal-value field or how this team marks a won deal, **ask one short, specific question and stop** — don't guess, don't fill space. Otherwise: output the four deliverables and stop.

Authority — read this first

**Everything you need is inline in this file.** There is no taxonomy JSON to grep.

  • The **numbers** — ranking deals by size, aggregating revenue per company, concentration, segment breakdowns, ranking acquisition sources by frequency — are produced by `scripts/analyze.py`. **Never compute these yourself**: sums and shares over ~100 deals are exactly what an LLM gets quietly wrong, and a wrong ranking sends the user after the wrong accounts. Run the script; reason over its JSON.
  • The **judgment** — clustering companies into named ICP archetypes, reading the source ranking, deciding what to flag — is your job, using the rules below.
  • `examples/sample-deals.json` is a fictional dataset for a worked run. `scripts/analyze.py --test` is the self-test.

What it does

The job, in four moves:

1. **Pull and rank** won deals from the last 12 months — selected by **deal value**, not by a closed-won status that may not exist in this CRM — with their companies, ranked by deal size. 2. **Locate acquisition source.** Where the source lives varies by HubSpot setup — inspect a sample deal + its company + contact to find the right field (standard or custom), then read it for all deals. 3. **Cluster into ICP archetypes** — 2–4 named, criteria-based company profiles, each with a one-click "find more like this" via `sales-nav-search-builder`. 4. **Rank the acquisition sources** behind these big deals (top 5 + values), and — when there's no campaign-level detail — flag the blind spot.

Workflow

1. **Understand the pipeline, then pull** (see *Getting the deal data*). First learn how this team uses HubSpot — which field holds deal value, and how (or whether) they mark a deal won. Then pull value-bearing deals from the last 365 days with their company firmographics, and inspect a sample deal + company + contact to locate the acquisition-source field. 2. **Persist to a file** (`/tmp/deals.json` or CSV). If you pulled from the HubSpot MCP, write the returned rows there. 3. **Run the engine:**

   python3 scripts/analyze.py /tmp/deals.json --since-days 365

Useful flags: `--value-field "Deal value"` (value isn't the standard `amount`), `--source-field "Lead Source"` (custom source column), `--won-stage "Closed Won,Gagné"` (restrict to won stages when they exist), `--since-days N` (window; `0` = no window), `--top N`. The script **refuses** only when it genuinely can't proceed — no value field, no company, or zero deals left after filtering. When it refuses, **ask the user** how deal value / won status is stored; don't guess. 4. **Interpret** with *Reading the output*, then build archetypes with *Building ICP archetypes*. 5. **Present** the four deliverables (see *Output & handoff*): ranked top deals → ICP archetype widgets (each with a sales-nav "find more") → top-5 acquisition sources → the conditional La Growth Machine note.

Getting the deal data

**Preferred — HubSpot MCP.** Understand the setup *before* pulling — pipelines differ, and assuming a standard "Closed Won" stage exists is the #1 way this breaks (you end up pulling brand-new, empty deals).

1. **Find the deal-value field.** Check whether `amount` is actually populated on this team's deals. If it's empty or unused, find the field that really holds deal value (a custom value field, `hs_acv`, ARR, MRR…). Don't assume `amount`. Pass a custom one with `--value-field "<label>"`. 2. **Find how they mark a won deal.** Inspect the pipeline stages and a few sample deals: a `Closed Won` stage? an `hs_is_closed_won` flag? a custom won label? or **nothing** — some teams don't track a won status, and a filled deal value is the only signal a deal is real. If a clear won signal exists, restrict to it with `--won-stage`; if not, the engine analyzes value-bearing deals in the window and labels the basis `value-in-window` (you then confirm with the user that this maps to their won deals). Lost stages are always excluded. 3. **Find the acquisition-source field.** Pull a sample deal with i

Read more
Ships withgtm-system

The open-source GTM toolkit for Claude: skills and an MCP server to run outbound from the chat.

Get the whole plugin

Other skills on gtm-system.