Skip to content
Automation
Skill

/lead-intelligence

Deep-research lead intelligence gathering for B2B qualified leads. This skill runs in two layers:

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

Context preview

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

Deep-research lead intelligence gathering for B2B qualified leads. This skill runs in two layers:

SKILL.md

lead-intelligence.SKILL.md
name: lead-intelligence
description: Deep-research lead intelligence gathering for B2B qualified leads. This skill runs in two layers:
  (1) General Lead Intelligence via web research using parallel sub-agents, and (2) LinkedIn Lead Intelligence
  via Apify actors for profile and post scraping. Use this skill whenever the user says "research these leads",
  "get intel on my leads", "lead intelligence", "lead enrichment", "enrich my leads", "deep research leads",
  "find out about these companies", "LinkedIn scraping", "scrape LinkedIn profiles", or has a qualified lead
  list and wants to gather intelligence before outreach. Also trigger when the user mentions Apify actors,
  or wants to combine web + LinkedIn research on leads.
disable-model-invocation: true

Lead Intelligence

Gather deep intelligence on a list of qualified B2B leads. This involves two layers of research that feed into a single enriched CSV.

Before You Start

Collect from the user:

1. **A qualified lead list** with at minimum: name, company, website, LinkedIn URL 2. **Context on what they're selling** so research focuses on relevant signals

LinkedIn Scraping Path: Apify

**Use the Apify MCP connector directly** (`call-actor`, `get-dataset-items`, etc.). This is the only supported path.

If LinkedIn URLs aren't available, skip Layer 2 and run only Layer 1 (web research).

Critical Rule: Parallel Execution of Both Layers

**Layer 1 and Layer 2 MUST run in parallel, not sequentially.**

When both layers are being used, spawn everything at the same time in a single message:

  • **Layer 1 (General Lead Intelligence)**: Multiple `lead-researcher` sub-agents (one per batch of 5 leads), each doing web research.
  • **Layer 2 (LinkedIn Lead Intelligence)**: ONE `linkedin-scraper` sub-agent handling the entire LinkedIn scraping pipeline (BOTH actors: profiles AND posts).

**In practice: N+1 sub-agents spawned in a single message:**

  • N `lead-researcher` sub-agents for Layer 1 (N = ceil(total_leads / 5))
  • 1 `linkedin-scraper` sub-agent for Layer 2 (handles BOTH Apify actors: profiles AND posts)

All spawn simultaneously. Do NOT wait for one layer to finish before starting the other.

**Critical: Spawn ALL N+1 sub-agents in a single message.** If there are 40 leads, that's 8 `lead-researcher` + 1 `linkedin-scraper` = 9 sub-agents spawned simultaneously. For 200 leads, that's 41 sub-agents in one shot. Every sub-agent launches at once.

After ALL sub-agents complete, run the merge script (see "Data Persistence and Merge" below) to combine results into the CSV.

Layer 1: General Lead Intelligence (Web Research)

Each `lead-researcher` sub-agent handles 5 leads and produces a structured intelligence report covering:

1. **SUMMARY**: 2-3 sentence overview 2. **WHAT THEY DO**: Services/products, revenue model 3. **WHY THEY DO IT**: Founding story, mission 4. **NICHES**: Industries/verticals served 5. **KEY SERVICES**: Exhaustive list from their website 6. **CASE STUDIES**: Published wins with specifics 7. **UNIQUE POSITIONING**: Competitive differentiation 8. **COMPANY NAME VARIANTS**: Abbreviations, legal names 9. **ROLE**: The lead's specific role and responsibilities 10. **PUBLIC MENTIONS**: Awards, press, directories, podcasts 11. **SPEAKING/CONTENT**: Talks, blog posts, published content 12. **PERSONAL INTERESTS**: Publicly available personal info 13. **ACHIEVEMENTS**: Awards, certifications, milestones

Spawning Lead Researchers

Each `lead-researcher` sub-agent already knows the report format and research methodology (defined in its agent file). When spawning, provide:

1. Context on what the user is selling (so the agent knows what signals matter) 2. The JSON batch of 5 leads 3. The output file path

After all sub-agents complete, add a `General Lead Intelligence` column to the CSV.

Layer 2: LinkedIn Lead Intelligence

This layer scrapes LinkedIn profiles AND recent posts using two Apify actors. **BOTH actors MUST be called. Never skip the posts scraper.**

1. **LinkedIn Personal Profile Scraper** (Actor ID: `2SyF0bVxmgGr8IVCZ`)

  • Input: `{"profileUrls": ["https://www.linkedin.com/in/handle1", ...]}`
  • Returns: full profile data (headline, about, experience, connections, followers, email)

2. **LinkedIn Posts Scraper** (Actor: `harvestapi/linkedin-profile-posts`)

  • Input: `{"targetUrls": ["https://www.linkedin.com/in/handle1", ...], "maxPosts": 2, "scrapeReactions": false, "scrapeComments": false, "includeReposts": false}`
  • Returns: recent posts with content, engagement, posting date
  • Call via: `mcp__Apify__call-actor` with `actor: "harvestapi/linkedin-profile-posts"`, `step: "call"`

**CRITICAL: Do NOT use actor `A3cAPGpwBEG8RJwse` for posts. It is deprecated, sub-agents using it save run metadata instead of actual post items, causing 0 posts to be matched.**

**CRITICAL: Actor `2SyF0bVxmgGr8IVCZ` is for PERSONAL profiles only. Never pass company page URLs.**

Single Batch, Never Split Into Multiple Runs

**CRITICAL: Send ALL LinkedIn URLs in a single API call per actor.** Both Apify actors accept unlimited input URLs. There is no maximum. Do NOT split URLs into multiple batches/runs. One call to the profile scraper with ALL URLs, one call to the posts scraper with ALL URLs.

Splitting into multiple runs is wasteful (more API calls, more complexity, more things that can fail) and was explicitly flagged as unnecessary by the user.

Mandatory Two-Step `call-actor` Workflow

**The Apify MCP `call-actor` tool enforces a mandatory two-step process. You CANNOT skip step 1.**

1. **Step 1, Get actor info**: Call `call-actor` with `step: "info"` and the actor name/ID. This returns the actor's input schema and required parameters. 2. **Step 2, Execute the actor**: Only after step 1, call `call-actor` with `step: "call"` and the proper input based on the schema from step 1.

If you skip step 1 and go directly to `step: "call"`, the Apify MCP tool will reject the request. Always do

Read more
Ships withbenai-skills

Expert automation skills for Claude Code, organized by department.

Get the whole plugin

Other skills on benai-skills.