/crm-icp-analysis
Analyze HubSpot CRM data to build a data-driven Ideal Customer Profile from closed-won deals, contacts, and companies
$ npx -y skills add cognyai/claude-code-marketing-skills --skill crm-icp-analysis --agent claude-codeHow 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
/crm-icp-analysis
Context preview
The summary Claude sees to decide when to auto-load this skill.
Analyze HubSpot CRM data to build a data-driven Ideal Customer Profile from closed-won deals, contacts, and companies
SKILL.md
crm-icp-analysis.SKILL.mdname: crm-icp-analysis
description: Analyze HubSpot CRM data to build a data-driven Ideal Customer Profile from closed-won deals, contacts, and companies
version: "1.0.0"
author: Cogny AI
platforms: [hubspot]
user-invocable: true
argument-hint: "[full|companies|contacts|deals]"
allowed-tools:
- mcp__cogny__hubspot__*
- mcp__cogny__create_finding
- Bash
- Read
- Write
CRM ICP Analysis
Build a data-driven Ideal Customer Profile by analyzing closed-won deals, associated contacts, and companies in your HubSpot CRM. Identifies patterns in industries, company sizes, job titles, deal sizes, sales cycles, and lead sources that predict revenue.
**Requires:** Cogny Agent subscription ($9/mo) — [Sign up](https://cogny.com/agent)
Usage
`/crm-icp-analysis` — full ICP analysis across all dimensions `/crm-icp-analysis companies` — company firmographic analysis only `/crm-icp-analysis contacts` — buyer persona analysis only `/crm-icp-analysis deals` — deal pattern analysis only
Prerequisites Check
Call `mcp__cogny__hubspot__get_user_details` to verify CRM access. Confirm read access to contacts, companies, and deals. If access is missing:
This skill requires HubSpot CRM access via Cogny's MCP server.
Sign up at https://cogny.com/agent and connect your HubSpot account.
Steps
1. Discover available properties
Before querying data, understand what fields exist:
hubspot__get_properties(objectType: "deals")
hubspot__get_properties(objectType: "companies")
hubspot__get_properties(objectType: "contacts")
Identify key properties for analysis:
- **Deals:** dealstage, amount, closedate, createdate, pipeline, dealtype, hs_analytics_source
- **Companies:** industry, numberofemployees, annualrevenue, city, state, country, type
- **Contacts:** jobtitle, hs_persona, lifecyclestage, hs_analytics_source
Note any custom properties that look ICP-relevant (e.g., custom industry fields, company tier, segment tags).
2. Analyze closed-won deals
Search for closed-won deals to establish the revenue baseline:
hubspot__search_crm_objects(
objectType: "deals",
filterGroups: [{"filters": [{"propertyName": "dealstage", "operator": "EQ", "value": "closedwon"}]}],
properties: ["dealname", "amount", "closedate", "createdate", "pipeline", "dealtype", "hs_analytics_source"],
sorts: [{"propertyName": "closedate", "direction": "DESCENDING"}],
limit: 200
)Check the `total` count — paginate if needed to capture full dataset.
Calculate:
- **Total closed-won deals** and **total revenue**
- **Average deal size** (mean and median)
- **Deal size distribution**: bucket into tiers (e.g., <$5K, $5-25K, $25-100K, $100K+)
- **Average sales cycle length**: days from createdate to closedate
- **Sales cycle by deal size tier**
- **Win rate by pipeline** (if multiple pipelines exist)
- **Lead source breakdown**: which sources produce closed-won deals
Also search closed-lost for comparison:
hubspot__search_crm_objects(
objectType: "deals",
filterGroups: [{"filters": [{"propertyName": "dealstage", "operator": "EQ", "value": "closedlost"}]}],
properties: ["dealname", "amount", "closedate", "createdate", "pipeline", "hs_analytics_source"],
limit: 200
)Compare closed-won vs closed-lost to identify discriminating patterns.
3. Analyze winning companies
Fetch companies associated with closed-won deals. Use `get_crm_objects` with deal IDs to get associations, then batch-fetch the associated companies:
hubspot__get_crm_objects(
objectType: "companies",
objectIds: [<associated company IDs>],
properties: ["name", "industry", "numberofemployees", "annualrevenue", "city", "state", "country", "type", "domain"]
)
Build firmographic profile:
- **Industry breakdown**: rank industries by deal count and total revenue
- **Company size distribution**: by employee count bands (1-50, 51-200, 201-1000, 1000+)
- **Revenue range**: annual revenue bands of winning companies
- **Geography**: country, state/region concentration
- **Company type**: customer, partner, prospect categorization
Flag:
- Industries that appear in >20% of closed-won deals (core ICP)
- Company size sweet spots (highest win rate bands)
- Geographic clusters
4. Analyze buyer personas
Fetch contacts associated with closed-won deals, then batch-fetch:
hubspot__get_crm_objects(
objectType: "contacts",
objectIds: [<associated contact IDs>],
properties: ["jobtitle", "hs_persona", "lifecyclestage", "hs_analytics_source", "email", "firstname", "lastname"]
)
Build buyer persona profile:
- **Job title clustering**: group similar titles (e.g., "VP Marketing", "Head of Marketing", "Marketing Director" = Marketing Leadership)
- **Seniority distribution**: C-level, VP, Director, Manager, Individual Contributor
- **Functional area**: Marketing, Sales, Product, Engineering, Finance, Operations
- **Number of contacts per deal**: single-threaded vs multi-threaded deals
- **Lead source by persona**: how different personas find you
Flag:
- Dominant buyer persona (>30% of closed-won contacts)
- Multi-threaded deals that win at higher rates
- Personas that correlate with larger deal sizes
5. Cross-dimensional analysis
Combine insights across deals, companies, and contacts:
- **Best segment**: Industry + Company Size + Persona that produces highest win rate
- **Highest-value segment**: combination that produces largest average deal size
- **Fastest-closing segment**: combination with shortest sales cycle
- **Lead source efficiency**: which sources produce best-fit leads (not just most leads)
- **Anti-ICP patterns**: segments with low win rates or high loss rates
6. Output ICP definition
CRM ICP Analysis
Data basis: [N] closed-won deals, [N] companies, [N] contacts
Period: [earliest close date] to [latest close date]
Total revenue analyzed: $[X]
═══════════════════════════════════════════════════
IDEAL CUSTOMER PROFILE
═════════════════════════════════════════════
Read more
name: crm-icp-analysis description: Analyze HubSpot CRM data to build a data-driven Ideal Customer Profile from closed-won deals, contacts, and companies version: "1.0.0" author: Cogny AI platforms: [hubspot] user-invocable: true argument-hint: "[full|companies|contacts|deals]" allowed-tools: - mcp__cogny__hubspot__* - mcp__cogny__create_finding - Bash - Read - Write
CRM ICP Analysis
Build a data-driven Ideal Customer Profile by analyzing closed-won deals, associated contacts, and companies in your HubSpot CRM. Identifies patterns in industries, company sizes, job titles, deal sizes, sales cycles, and lead sources that predict revenue.
**Requires:** Cogny Agent subscription ($9/mo) — [Sign up](https://cogny.com/agent)
Usage
`/crm-icp-analysis` — full ICP analysis across all dimensions `/crm-icp-analysis companies` — company firmographic analysis only `/crm-icp-analysis contacts` — buyer persona analysis only `/crm-icp-analysis deals` — deal pattern analysis only
Prerequisites Check
Call `mcp__cogny__hubspot__get_user_details` to verify CRM access. Confirm read access to contacts, companies, and deals. If access is missing:
This skill requires HubSpot CRM access via Cogny's MCP server. Sign up at https://cogny.com/agent and connect your HubSpot account.
Steps
1. Discover available properties
Before querying data, understand what fields exist:
hubspot__get_properties(objectType: "deals") hubspot__get_properties(objectType: "companies") hubspot__get_properties(objectType: "contacts")
Identify key properties for analysis:
- **Deals:** dealstage, amount, closedate, createdate, pipeline, dealtype, hs_analytics_source
- **Companies:** industry, numberofemployees, annualrevenue, city, state, country, type
- **Contacts:** jobtitle, hs_persona, lifecyclestage, hs_analytics_source
Note any custom properties that look ICP-relevant (e.g., custom industry fields, company tier, segment tags).
2. Analyze closed-won deals
Search for closed-won deals to establish the revenue baseline:
hubspot__search_crm_objects(
objectType: "deals",
filterGroups: [{"filters": [{"propertyName": "dealstage", "operator": "EQ", "value": "closedwon"}]}],
properties: ["dealname", "amount", "closedate", "createdate", "pipeline", "dealtype", "hs_analytics_source"],
sorts: [{"propertyName": "closedate", "direction": "DESCENDING"}],
limit: 200
)Check the `total` count — paginate if needed to capture full dataset.
Calculate:
- **Total closed-won deals** and **total revenue**
- **Average deal size** (mean and median)
- **Deal size distribution**: bucket into tiers (e.g., <$5K, $5-25K, $25-100K, $100K+)
- **Average sales cycle length**: days from createdate to closedate
- **Sales cycle by deal size tier**
- **Win rate by pipeline** (if multiple pipelines exist)
- **Lead source breakdown**: which sources produce closed-won deals
Also search closed-lost for comparison:
hubspot__search_crm_objects(
objectType: "deals",
filterGroups: [{"filters": [{"propertyName": "dealstage", "operator": "EQ", "value": "closedlost"}]}],
properties: ["dealname", "amount", "closedate", "createdate", "pipeline", "hs_analytics_source"],
limit: 200
)Compare closed-won vs closed-lost to identify discriminating patterns.
3. Analyze winning companies
Fetch companies associated with closed-won deals. Use `get_crm_objects` with deal IDs to get associations, then batch-fetch the associated companies:
hubspot__get_crm_objects( objectType: "companies", objectIds: [<associated company IDs>], properties: ["name", "industry", "numberofemployees", "annualrevenue", "city", "state", "country", "type", "domain"] )
Build firmographic profile:
- **Industry breakdown**: rank industries by deal count and total revenue
- **Company size distribution**: by employee count bands (1-50, 51-200, 201-1000, 1000+)
- **Revenue range**: annual revenue bands of winning companies
- **Geography**: country, state/region concentration
- **Company type**: customer, partner, prospect categorization
Flag:
- Industries that appear in >20% of closed-won deals (core ICP)
- Company size sweet spots (highest win rate bands)
- Geographic clusters
4. Analyze buyer personas
Fetch contacts associated with closed-won deals, then batch-fetch:
hubspot__get_crm_objects( objectType: "contacts", objectIds: [<associated contact IDs>], properties: ["jobtitle", "hs_persona", "lifecyclestage", "hs_analytics_source", "email", "firstname", "lastname"] )
Build buyer persona profile:
- **Job title clustering**: group similar titles (e.g., "VP Marketing", "Head of Marketing", "Marketing Director" = Marketing Leadership)
- **Seniority distribution**: C-level, VP, Director, Manager, Individual Contributor
- **Functional area**: Marketing, Sales, Product, Engineering, Finance, Operations
- **Number of contacts per deal**: single-threaded vs multi-threaded deals
- **Lead source by persona**: how different personas find you
Flag:
- Dominant buyer persona (>30% of closed-won contacts)
- Multi-threaded deals that win at higher rates
- Personas that correlate with larger deal sizes
5. Cross-dimensional analysis
Combine insights across deals, companies, and contacts:
- **Best segment**: Industry + Company Size + Persona that produces highest win rate
- **Highest-value segment**: combination that produces largest average deal size
- **Fastest-closing segment**: combination with shortest sales cycle
- **Lead source efficiency**: which sources produce best-fit leads (not just most leads)
- **Anti-ICP patterns**: segments with low win rates or high loss rates
6. Output ICP definition
CRM ICP Analysis Data basis: [N] closed-won deals, [N] companies, [N] contacts Period: [earliest close date] to [latest close date] Total revenue analyzed: $[X] ═══════════════════════════════════════════════════ IDEAL CUSTOMER PROFILE ═════════════════════════════════════════════
AI marketing skills for Claude Code, Cursor, Windsurf, and other AI coding tools. Audit SEO, analyze ads, research competitors, qualify leads — all from your terminal. Free skills need no account. Premium skills connect your real data for $9/mo.
Repo: cognyai/claude-code-marketing-skills
Other skills on claude-code-marketing-skills.
brand-kit
Build a portable brand-kit.json for the user's product — colors, typography, voice — that other skills (video, ad creative, landing page) can consume. Multiple…
cogny
Run Cogny marketing analysis tasks — fetch scheduled tasks, analyze ad accounts via MCP, report findings
community-pulse
Weekly read on Discord community health — joins, active channels, top contributors, themes, and unanswered questions
conversion-debug
Conversion Tracking Debugger — diagnose discrepancies across GTM, GA4, Google Ads & Meta Pixel with live API access, BigQuery validation queries, and…

