Claude-code-marketing-skills crm-sales-momentum
Analyze HubSpot pipeline momentum — deal velocity, stage conversions, win/loss patterns, and stall detection
git clone https://github.com/cognyai/claude-code-marketing-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/cognyai/claude-code-marketing-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/crm-sales-momentum" ~/.claude/skills/cognyai-claude-code-marketing-skills-crm-sales-momentum && rm -rf "$T"
skills/crm-sales-momentum/SKILL.mdCRM Sales Momentum Drivers
Analyze what is driving or stalling pipeline momentum in your HubSpot CRM. Measures deal velocity, stage conversion rates, time-in-stage, and win/loss patterns by segment. Surfaces the deal characteristics that predict wins versus losses and identifies stuck deals.
Requires: Cogny Agent subscription ($9/mo) — Sign up
Tip: Run
/crm-icp-analysis first to establish your ICP baseline, then use this skill to see how ICP-fit deals move through pipeline compared to non-fit deals.
Usage
/crm-sales-momentum — full momentum analysis
/crm-sales-momentum velocity — deal velocity and stage timing only
/crm-sales-momentum stalls — stuck deal detection only
/crm-sales-momentum segments — win/loss patterns by segment 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 pipeline structure
Get deal stage properties to understand the pipeline:
hubspot__get_properties(objectType: "deals", propertyNames: ["dealstage", "pipeline"])
Identify:
- All pipeline stages and their order (from the
property enum values)dealstage - Pipeline names (if multiple pipelines exist)
- Custom deal properties relevant to segmentation
Use
search_properties to find stage-timing properties:
hubspot__search_properties(objectType: "deals", keywords: ["hs_date_entered", "hs_time_in"])
Also fetch owner list for rep-level analysis:
hubspot__search_owners()
2. Pull deal data across all stages
Fetch deals created in the last 90 days plus recently closed:
hubspot__search_crm_objects( objectType: "deals", filterGroups: [{"filters": [{"propertyName": "createdate", "operator": "GTE", "value": "<90 days ago timestamp>"}]}], properties: ["dealname", "dealstage", "amount", "createdate", "closedate", "pipeline", "hubspot_owner_id", "hs_analytics_source", "dealtype", <stage timing properties from step 1>], sorts: [{"propertyName": "createdate", "direction": "DESCENDING"}], limit: 200 )
Check
total count and paginate if needed to capture full dataset.
3. Deal velocity analysis
Calculate velocity metrics across the pipeline:
- Overall velocity: average days from deal creation to close (won and lost separately)
- Stage-by-stage velocity: average time in each stage
- Stage conversion rates: % of deals that advance from each stage to the next
- Drop-off stages: stages with the highest loss rate
- Velocity trend: compare last 30 days vs previous 30 days
Build a pipeline flow visualization:
Pipeline Flow (last 90 days): [Stage 1] ──85%──> [Stage 2] ──62%──> [Stage 3] ──48%──> [Stage 4] ──71%──> [Closed Won] 100 deals 85 deals 53 deals 25 deals 18 deals avg 4 days avg 7 days avg 12 days avg 5 days ↓ 15% ↓ 38% ↓ 52% ↓ 29% [Lost: 15] [Lost: 32] [Lost: 28] [Lost: 7]
Flag:
- Stages where >40% of deals stall or are lost
- Stages with average time >2x the overall stage average
- Conversion rate drops of >10% compared to previous period
4. Stuck deal detection
Identify deals that are stalled based on time-in-stage analysis.
For each pipeline stage, calculate:
- Median time-in-stage for deals that eventually advanced
- Standard deviation of time-in-stage
- Stall threshold: median + 1.5x standard deviation
Flag deals currently in a stage beyond the stall threshold:
hubspot__search_crm_objects( objectType: "deals", filterGroups: [{"filters": [ {"propertyName": "dealstage", "operator": "EQ", "value": "<stage>"}, {"propertyName": "hs_date_entered_<stage>", "operator": "LT", "value": "<stall threshold date>"} ]}], properties: ["dealname", "amount", "hubspot_owner_id", "hs_date_entered_<stage>"], limit: 50 )
For each stuck deal, fetch associated company and contacts to add context about why it might be stalled.
5. Win/loss pattern analysis by segment
Segment closed deals along multiple dimensions and compare win rates:
By Deal Size:
- Bucket deals into tiers and compare win rate per tier
- Identify the deal size range with highest win rate
By Lead Source:
- Win rate by
(organic, paid, referral, direct, etc.)hs_analytics_source - Average deal size by source
- Average sales cycle by source
By Owner (Sales Rep):
- Win rate per rep
- Average deal velocity per rep
- Average deal size per rep
- Identify top performers and what they do differently
By Company Segment (fetch associated companies):
- Win rate by industry
- Win rate by company size
- Win rate by geography
By Deal Age at Stage:
- Deals that spend <X days in each stage: win rate
- Deals that spend >X days: win rate
- Identify the "golden window" — the time-in-stage range that correlates with wins
6. Momentum scoring
Score overall pipeline momentum:
Pipeline Momentum Score: X/100 Velocity: X/25 [FAST/NORMAL/SLOW] Average cycle [N] days [UP/DOWN/FLAT] Velocity trend: [X]% change vs prior period Flow Rate: X/25 [STRONG/MODERATE/WEAK] Stage conversion rates [IMPROVING/DECLINING/STABLE] Conversion trend Drop-off stage: [stage name] ([X]% loss rate) Pipeline Health: X/25 [HEALTHY/AT_RISK/CRITICAL] [N] deals stuck ([X]% of active pipeline) [GROWING/SHRINKING/STABLE] Pipeline value: $[X] ([X]% change) Coverage ratio: [X]x ([pipeline value] / [target]) Predictability: X/25 [HIGH/MEDIUM/LOW] Win rate consistency: [X]% +/- [Y]% [CLEAR/MIXED/UNCLEAR] Segment patterns identified [STRONG/WEAK] Leading indicators reliability
7. Output momentum report
CRM Sales Momentum Analysis Period: Last 90 days Deals analyzed: [N] ([N] won, [N] lost, [N] active) Pipeline value: $[X] ═══════════════════════════════════════════════════ MOMENTUM SCORE: X/100 ═══════════════════════════════════════════════════ Pipeline Flow: [Stage-by-stage flow diagram from Step 3] Key Velocity Metrics: Average Sales Cycle (Won): [N] days Average Sales Cycle (Lost): [N] days Fastest Close: [N] days ([deal name]) Slowest Win: [N] days ([deal name]) Stage Health: ┌──────────────────┬──────────┬───────────┬──────────┬─────────────┐ │ Stage │ Deals In │ Avg Days │ Conv Rate│ Stuck Deals │ ├──────────────────┼──────────┼───────────┼──────────┼─────────────┤ │ [Stage 1] │ [N] │ [N] │ [X]% │ [N] │ │ [Stage 2] │ [N] │ [N] │ [X]% │ [N] │ │ [Stage 3] │ [N] │ [N] │ [X]% │ [N] │ │ [Stage 4] │ [N] │ [N] │ [X]% │ [N] │ └──────────────────┴──────────┴───────────┴──────────┴─────────────┘ Win Predictors (what separates wins from losses): 1. [Predictor]: deals with [X] win at [Y]% vs [Z]% without 2. [Predictor]: deals with [X] win at [Y]% vs [Z]% without 3. [Predictor]: deals with [X] win at [Y]% vs [Z]% without Stuck Deals Requiring Attention: ┌──────────────────┬──────────┬──────────┬──────────┬─────────────────┐ │ Deal │ Amount │ Stage │ Days In │ Owner │ ├──────────────────┼──────────┼──────────┼──────────┼─────────────────┤ │ [Deal 1] │ $[X] │ [Stage] │ [N] │ [Rep] │ │ [Deal 2] │ $[X] │ [Stage] │ [N] │ [Rep] │ └──────────────────┴──────────┴──────────┴──────────┴─────────────────┘ Rep Performance: ┌──────────────────┬──────────┬───────────┬──────────┬─────────────┐ │ Rep │ Win Rate │ Avg Cycle │ Avg Deal │ Pipeline $ │ ├──────────────────┼──────────┼───────────┼──────────┼─────────────┤ │ [Rep 1] │ [X]% │ [N] days │ $[X] │ $[X] │ │ [Rep 2] │ [X]% │ [N] days │ $[X] │ $[X] │ └──────────────────┴──────────┴───────────┴──────────┴─────────────┘ Top 3 Actions: 1. [Highest-impact momentum fix] 2. [Second highest] 3. [Third highest]
8. Record findings
For EVERY actionable momentum insight, call
mcp__cogny__create_finding:
{ "title": "38% of deals stall at Proposal stage — avg 18 days vs 7-day benchmark", "body": "32 of 85 deals entering the Proposal stage in the last 90 days have stalled or been lost. Median time-in-stage for deals that advance is 7 days, but stalled deals average 18 days. Common pattern: deals without a second contact (single-threaded) stall at 2.1x the rate. 12 deals currently stuck in Proposal worth $340K total. Recommend: implement multi-threading requirement before Proposal stage, add 10-day stall alert.", "action_type": "pipeline_optimization", "expected_outcome": "Reduce Proposal stage stall rate from 38% to <20%", "estimated_impact_usd": 8000, "priority": "high" }
Action types for sales momentum:
— stage process changes, stall interventionspipeline_optimization
— specific actions to unstick individual dealsdeal_acceleration
— rep-specific performance improvementsrep_coaching
— pipeline coverage, predictability fixesforecasting_improvement
— invest in sources that produce faster-closing dealslead_source_optimization
— patterns that predict losses, filter earlydisqualification_rule