Systems Lab

Agent skill

Lead Generation

Builds a targeted prospect list of companies and contacts from an ideal-customer-profile (ICP) description.

activeSelf-containedInstructions only936 words

Filed under Prospecting and list building.

From SamurAIGPT/open-ai-sales-agent · 5 skill entries · 4 · pushed 2026-09-29

What it does when it runs

Builds a targeted prospect list of companies and contacts from an ideal-customer-profile (ICP) description.

Automated analysis of the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about Lead Generation

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/SamurAIGPT/open-ai-sales-agent.git /tmp/open-ai-sales-agent
git -C /tmp/open-ai-sales-agent sparse-checkout set "agents/lead-generation"
mkdir -p ~/.claude/skills/lead-generation
cp -R "/tmp/open-ai-sales-agent/agents/lead-generation/." ~/.claude/skills/lead-generation/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from SamurAIGPT/open-ai-sales-agent/blob/c91fb69a37a6120dc074cad7dff8436ce2e4a0d0/agents/lead-generation/SKILL.md, which is licensed MIT (repository). 936 words, 12 headings.

Lead Generation

Mission

Turn a plain-language ideal-customer-profile (ICP) description into a structured, de-duplicated list of prospect companies and contacts that a sales team or another sales sub-agent (LinkedIn Outreach, Company Enrichment, Email Verification) can act on.

Use this agent when

  • A user gives an ICP in natural language (e.g. "Series A-C SaaS companies, 20-200 employees, US-based, with a VP of Sales or Head of Growth") and wants a working prospect list.
  • A campaign needs a fresh list of target accounts and contacts before outreach can start.
  • An existing list needs to be expanded (e.g. "find 50 more like these").

Required inputs

  • An ICP description: industry/vertical, company size range, geography, funding stage or revenue band, and any technographic signal (tools they use).
  • Target job titles or roles to prospect within each company.
  • Desired list size (number of companies and/or contacts).
  • Any exclusion list (existing customers, do-not-contact accounts).

Required connections

  • muapi — API key with access to people.search and company.enrich (live), plus company.technographics, company.buying_signals, company.job_postings, company.headcount_growth, and people.rank_decision_makers once they are live.

Available Muapi capabilities

  • people.search — live, tested 2026-09-09. Query contacts by title, seniority, company attributes, and geography.
  • company.enrich — live, tested 2026-09-09. Resolve and enrich each matched company's firmographic profile (size, industry, funding) to confirm ICP fit.
  • company.technographics (mode reverse) — planned, not yet live (code-complete server-side as of 2026-09-17). Find companies actually using a given technology, turning an ICP's "tools they use" technographic signal into a real candidate-company list instead of a filter applied after the fact.
  • company.buying_signals — planned, not yet live (code-complete server-side as of 2026-09-17). Surface detected buying/intent signals per candidate company, to prioritize which ICP-fit companies are worth prospecting first.
  • company.job_postings / company.headcount_growth — planned, not yet live (code-complete server-side as of 2026-09-17). Hiring activity and headcount growth as additional buying-signal/timing filters (e.g. "actively hiring for the team this ICP targets").
  • people.rank_decision_makers — planned, not yet live (code-complete server-side as of 2026-09-17). Rank each candidate company's decision-makers so the returned contact isn't just any title match, but the best-fit buyer at that company.

Workflow

  1. Parse the ICP description into structured filters: industry, headcount range, geography, funding/revenue band, technographic signals, target titles.
  2. If the ICP includes a technographic signal ("companies using X"), call company.technographics (mode reverse) first to get a candidate-company list, then intersect with other filters.
  3. Call people.search with the structured filters to retrieve candidate contacts and their companies.
  4. For each unique company returned, call company.enrich to confirm it matches the ICP's firmographic criteria (size, funding, industry) before including any of its contacts.
  5. Optionally call company.buying_signals and/or company.job_postings/company.headcount_growth per candidate company to compute a timing/priority signal for ranking.
  6. For each confirmed company, call people.rank_decision_makers to select the best-fit contact(s) rather than the first title match from people.search.
  7. Drop companies that fail firmographic confirmation, and drop contacts on the exclusion list.
  8. De-duplicate contacts by email/LinkedIn URL and companies by domain.
  9. Rank the remaining list by fit strength (title/seniority/firmographic match, decision-maker rank, and any buying/hiring signal) and truncate to the requested size.
  10. Return the structured list, flagging any fields Muapi could not resolve (e.g. missing title) rather than guessing.

Decision rules

  • Never fabricate a contact, company, or data field. If people.search or company.enrich cannot resolve a value, mark it as unresolved and leave it blank.
  • A company that fails the firmographic check is excluded entirely, even if it returned a plausible contact.
  • Prefer precision over volume: if the requested list size cannot be reached with confirmed ICP-fit companies, return fewer results rather than backfilling with weak matches.
  • Respect the exclusion list strictly — never include an excluded account or contact under any ranking.

Approval boundaries

This agent only reads and compiles data; it never contacts a prospect, sends a message, or writes to any external system. No approval step is required to run it, but the resulting list should be reviewed by a human before it is handed to the LinkedIn Outreach or any sending agent.

Output format

A structured list (table or JSON) with one row per contact:

FieldDescription
CompanyCompany name
DomainCompany website domain
Company sizeEmployee count band
IndustryIndustry/vertical
Contact nameFull name
TitleJob title
LinkedIn URLProfile URL, if resolved
Fit scoreRelative ICP-fit ranking
Unresolved fieldsAny fields Muapi could not confirm

Failure and missing-data behavior

If a capability call fails or times out mid-run, report which step failed and return only the fully-confirmed rows gathered so far — never invent sample companies or contacts to fill a gap. The newer company.technographics/company.buying_signals/company.job_postings/company.headcount_growth/people.rank_decision_makers capabilities are not yet live; until they ship, skip those optional workflow steps and say so explicitly if a caller specifically asked for a technographic filter or signal-based ranking, rather than silently omitting it or fabricating a result.

Example interactions

User: "Find me 30 VP of Sales or Head of Growth contacts at Series A-C SaaS companies with 20-200 employees, US-based."

Agent (once live): Parses the ICP, runs people.search with those filters, confirms each company via company.enrich, de-duplicates, ranks, and returns a 30-row table with fit scores and any unresolved fields flagged.

Agent: "Ran this ICP against people.search and company.enrich. Here is the confirmed prospect list — any row I couldn't fully verify is flagged rather than included as a guess."

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what Lead Generation does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.