Skip to content
Automation
Skill

/win-loss-analysis

Win/loss pattern analysis for B2B sales. Pulls deal data from ANY CRM (Attio, HubSpot, Salesforce, Pipedrive, etc.), enriches with emails, call transcripts (Fireflies/Gong), and web research, then analyzes won vs lost deal patterns to build an ideal prospect persona and strategy

From plugin
benai-skills
61152 skills17 agents1 hook4 MCP
Install
$ npx -y skills add naveedharri/benai-skills --skill win-loss-analysis --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/win-loss-analysis

Context preview

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

Win/loss pattern analysis for B2B sales. Pulls deal data from ANY CRM (Attio, HubSpot, Salesforce, Pipedrive, etc.), enriches with emails, call transcripts (Fireflies/Gong), and web research, then analyzes won vs lost deal patterns to build an ideal prospect persona and strategy

SKILL.md

win-loss-analysis.SKILL.md
name: win-loss-analysis
description: Win/loss pattern analysis for B2B sales. Pulls deal data from ANY CRM (Attio, HubSpot, Salesforce, Pipedrive, etc.), enriches with emails, call transcripts (Fireflies/Gong), and web research, then analyzes won vs lost deal patterns to build an ideal prospect persona and strategy recommendations as a .docx report.
  MANDATORY TRIGGERS: "win/loss analysis", "won vs lost", "deal analysis", "sales patterns", "pipeline analysis", "prospect persona", "ICP from deals", "why deals are lost", "deal patterns", "lost deal analysis", "winning persona", "deal forensics", "pipeline forensics", "sales retrospective", "analyze my pipeline", "what's working in sales", or any request about understanding close/win vs loss patterns, what makes deals close, or building an ICP from historical deal data.
disable-model-invocation: true

Win/Loss Pattern Analysis

Build a data-driven understanding of why deals close and why they don't, then deliver a comprehensive persona and strategy document as a professional .docx report.

**The report includes:** Executive summary with metrics, won/lost case studies with evidence from calls and emails, side-by-side pattern comparison, a complete winning prospect persona, red flags and disqualification criteria, strategic recommendations, and data appendix.

Phase 0: Discovery Questions

Use `AskUserQuestion` (3-4 questions max) to gather:

1. **CRM & Pipeline**: Which CRM, and the pipeline/list name containing deals? 2. **Stage Labels**: Exact names for Won and Lost stages (e.g., "Delivered"/"Lost", "Closed Won"/"Closed Lost") 3. **Business Context**: 2-3 sentences on what the company sells and to whom 4. **Output Preferences**: Full analysis or specific questions to answer?

Confirm understanding in one sentence before proceeding.

Phase 1: CRM Data Extraction

**Goal**: Clean Won and Lost deal lists with contact details, minimizing API calls.

Strategy

1. **Filter at API level**, only request Won/Lost stage records, never pull all then filter locally 2. **Request only needed fields**, name, email, company/domain, deal size, priority, source, close date 3. **Read CRM-specific reference**, check available MCP tools, then read the appropriate file:

  • Attio → `references/crm-attio.md` | HubSpot → `references/crm-hubspot.md` | Salesforce → `references/crm-salesforce.md` | Other → `references/crm-generic.md`

Steps

1. Discover pipeline structure (list attributes, stage IDs, custom fields) 2. Pull Won deals filtered by stage 3. Pull Lost deals filtered by stage 4. Filter out personal email domains (`gmail.com`, `yahoo.com`, `hotmail.com`, `outlook.com`, `icloud.com`, `googlemail.com`, `aol.com`, `protonmail.com`, `live.com`, `me.com`, `mail.com`, `yandex.com`, `zoho.com`, `gmx.com`, `fastmail.com`). Keep a count of filtered leads for the report. 5. Organize into two clean lists with counts

**CRITICAL, Save extracted data to files immediately:**

analysis_summary.json    # Counts, value distributions, aggregate stats
won_deals.json           # Full won deal list
lost_deals.json          # Full lost deal list
domain_analysis.json     # Business vs personal email breakdown

This prevents data loss if enrichment phases hit errors or context limits. Never rely on holding all data in conversation context alone.

**CRITICAL, Validate CRM field reliability:** After initial extraction, check which CRM fields actually contain useful data vs. being mostly empty. Fields like `lost_reason`, `agency`, `requirement`, `source`, and other custom fields are **frequently empty or unreliable** (e.g., 126/131 lost deals having "None" as lost reason is common). Before relying on any field for analysis:

  • Count how many records have non-empty values for each field
  • If a field is <30% populated, flag it as unreliable, don't use it as a primary analysis dimension
  • Tell the user which fields have reliable data and which don't, ask if any you're unsure about are actually maintained
  • Derive insights from enrichment data (transcripts, emails, web research) instead of empty CRM fields

A healthy analysis needs 15-20+ leads per bucket. If thin, discuss including personal-email leads or widening date range.

Phase 2: Multi-Source Enrichment

Raw CRM data tells you WHAT happened; enrichment tells you WHY. **Complete ALL enrichment BEFORE building the report.** Run streams in parallel using sub-agents where possible.

Stream A: Email Analysis (Two-Step Process)

**Step 1, Metadata search**: Find emails involving top leads by deal size (10-15 per bucket). Use `search-emails-by-metadata` (Attio), engagement APIs (HubSpot), or activity records (Salesforce).

**Step 2, Read actual content**: Metadata only gives subject lines and timestamps. You MUST read the actual email body using `get-email-content` (Attio) or equivalent to extract: objections raised, pricing discussions, competitive mentions, enthusiasm/hesitation signals, specific questions asked.

**What to capture per lead**: Email count, date range, key content themes, standout quotes, response patterns.

Stream B: External Company Research

For top 10-15 leads per bucket, quick web research via `WebSearch`/`WebFetch`: company size, industry, tech stack, growth signals. 2-3 minutes per company max, focus on cohort patterns.

Stream C: Call Transcript Analysis

**Search ALL available transcript tools**, don't stop at one source:

  • Fireflies: `fireflies_search`, `fireflies_get_transcript`, `fireflies_get_summary`
  • Attio: `search-call-recordings-by-metadata`, `semantic-search-call-recordings`, `get-call-recording`
  • Gong: Gong MCP search tools

**Fireflies search strategy**: Use targeted queries, search by company name, contact name, or domain individually. Broad keyword searches return massive result sets that overflow context. Example: search "Boostability" not "SEO demo call".

**What to extract**: Number of calls, call progression arc, pain points (concrete vs vague),

Read more
Ships withbenai-skills

Expert automation skills for Claude Code, organized by department.

Get the whole plugin

Other skills on benai-skills.