Skip to content
Automation
Skill

/crm-prospect-mining

Mine high-value prospects from CRM pipeline stages (Lost, No Show, Churned, Stalled) by cross-referencing records with LinkedIn company data and comms history. Connects to any CRM, pulls records from target stages, filters out personal email domains, finds company LinkedIn pages

From plugin
benai-skills
62152 skills17 agents1 hook4 MCP
Install
$ npx -y skills add naveedharri/benai-skills --skill crm-prospect-mining --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/crm-prospect-mining

Context preview

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

Mine high-value prospects from CRM pipeline stages (Lost, No Show, Churned, Stalled) by cross-referencing records with LinkedIn company data and comms history. Connects to any CRM, pulls records from target stages, filters out personal email domains, finds company LinkedIn pages

SKILL.md

crm-prospect-mining.SKILL.md
name: crm-prospect-mining
description: >
  Mine high-value prospects from CRM pipeline stages (Lost, No Show, Churned, Stalled) by cross-referencing records
  with LinkedIn company data and comms history. Connects to any CRM, pulls records from target stages, filters out
  personal email domains, finds company LinkedIn pages via web research, bulk-scrapes company sizes via Apify, and
  filters by the user's "high-value" definition (headcount, industry, deal size). Optionally adds intent analysis
  from emails and transcripts. MANDATORY TRIGGERS: "find high-value prospects", "mine my lost deals", "reactivate
  pipeline", "which lost leads are worth re-engaging", "analyze my lost deals", "prospect mining", "CRM mining",
  "pipeline mining", "re-engage lost leads", "high-value lost leads", "company size analysis", "enrich pipeline
  with LinkedIn", "headcount filter", "filter by company size", or any request about identifying which CRM
  prospects are worth pursuing based on company size, industry, or intent signals.
disable-model-invocation: true

CRM Prospect Mining

You are mining a user's CRM to identify high-value prospects hiding in pipeline stages they've written off (Lost, No Show, Churned, Stalled, etc.). The core insight: many of these "dead" leads are actually at large, well-funded companies that are worth re-engaging with the right approach.

The Pipeline At a Glance

CRM Records → Filter Domains → Find LinkedIn Pages → Scrape Company Sizes → Filter High-Value → Enrich with Comms/Intent → Report

Each step is explained in detail below. The key principle throughout: keep it simple, move fast, use parallel sub-agents wherever possible, and let the data do the talking.

Phase 1: Discovery, Understanding the User's Setup

Before touching any data, you need to understand three things. Use the AskUserQuestion tool to gather these efficiently, don't ask one at a time.

1. What does "high-value" mean to them?

Every user defines this differently. Common dimensions:

  • **Company headcount** (most common): "25+ employees", "100+ employees", "enterprise only"
  • **Industry/vertical**: "only SaaS companies", "agencies only", "e-commerce"
  • **Deal value**: "deals worth $10k+", "enterprise tier only"
  • **Geography**: "US-based", "EMEA only"
  • **Any combination**: "50+ employees AND in the US AND deal value over $5k"

If they're unsure, suggest headcount as a sensible default starting point, it's the most reliable signal you can get from LinkedIn and correlates well with budget. A threshold of 25+ employees is a reasonable floor for B2B, but let them decide.

2. Do they want intent analysis?

This is the difference between a quick filter and a deep analysis. Two levels:

  • **Metrics-only** (fast): Filter purely on headcount/industry/deal size. Output is a clean list of companies that meet the criteria. Good for a first pass or when speed matters.
  • **Metrics + Intent** (thorough): On top of the metrics filter, also pull email communications and/or meeting transcripts from the CRM to understand what actually happened with each deal. Did the prospect go cold because of budget? Bad timing? Competitor? This turns the output from "big companies you lost" into "big companies worth re-engaging and here's how to approach them." Much more actionable but takes longer.

Default to metrics-only unless the user asks for deeper analysis. If they have a small number of high-value leads (under 50), suggest adding intent analysis since it won't add much time.

3. What CRM and what structure?

You need to understand what you're working with before writing any queries. This is where the approach varies most between users.

**Discover the CRM structure programmatically.** Don't ask the user to describe their schema, look at it yourself:

  • **Attio**: Use `list-lists` to see available lists, then `list-list-attribute-definitions` on the relevant list to understand fields, stages, and statuses. Use `list-records-in-list` with appropriate filters to pull data.
  • **HubSpot**: Use deal pipeline endpoints to understand stages, then pull deals by stage.
  • **Salesforce**: Query opportunity stages and pull by stage name.
  • **Other CRMs**: Check what MCP tools are available and explore the schema.

Ask the user which list/pipeline to analyze and which stages to pull (Lost, No Show, etc.). Then inspect the schema yourself to understand what fields are available (deal value, priority, source, notes, etc.).

**Important**: Different CRMs store data differently. Some have person records linked to company records. Some have deals linked to contacts. Some have flat lists. Read the CRM structure and adapt, don't assume any particular schema.

Phase 2: Data Extraction

Step 1: Pull all records from the target stages

Query the CRM for all records in the user's specified stages. Handle pagination, most CRM APIs cap at 50 records per request, so loop with offset until you've got everything.

**For Attio specifically:**

  • Use `list-records-in-list` with a filter on the stage/status field
  • The stage field might be called `stage`, `status`, `pipeline_stage`, or something else, check the attribute definitions first
  • Records come back with `parent_record_id`, you'll need this to fetch person/company details
  • Use `get-records-by-ids` to fetch full person records in batches (the list entries only have entry-level attributes, not the person's email/phone/name)

**Critical**: Capture ALL relevant fields from the outset. You'll need at minimum:

  • Contact name
  • Email address
  • Phone (if available)
  • Any deal value / budget field
  • The stage they're in (Lost, No Show, etc.)
  • Record ID (for later lookups)

Save the raw extracted data to a JSON file immediately. Never rely on conversation context to hold large datasets, it will be lost during context compaction.

Step 2: Filter out personal email domains

This is a fast, critical filter. Contacts using personal email addresses (gmail.com, yahoo.c

Read more
Ships withbenai-skills

Expert automation skills for Claude Code, organized by department.

Get the whole plugin

Other skills on benai-skills.