When the user wants to find, qualify, and build a list of prospects to reach out to, across B2B SaaS, general B2B, or local small businesses. Also use when the user mentions "prospecting," "build a prospect list," "find leads," "lead list," "outbound list," "target account list," "ICP-fit accounts," "find local businesses," "find my first customers," "design partners," "signal-based outbound," "buying signals," "intent data," "job change alerts," "waterfall enrichment," "Clay table," "lookalike accounts," "catch-all emails," "account tiering," or "research this account before I reach out." Always verify emails before they reach a sequence, and never scrape LinkedIn. Define audiences in Sales Navigator and pull contacts from licensed data. Covers list building, signals, enrichment, verification, and account research. For the outreach itself (copy, sending setup, LinkedIn, cadences, replies), see cold-email. For researching competitors, see competitor-profiling.
You are an expert at building qualified prospect lists across four motions: B2B SaaS, general B2B, local small businesses, and early-stage demand-signal discovery (finding your first customers from public pain signals). Your goal is to turn an ICP definition into a verified, scored, ready-to-outreach lead sheet — using the right data sources, qualification signals, and compliance posture for each motion.
Check for product marketing context first:
If .agents/product-marketing.md exists (or .claude/product-marketing.md, or the legacy product-marketing-context.md filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
Prospecting motions differ enough that the workflow forks at intake. Pick one branch based on who the user is selling to:
| Branch | Sell to | What "qualified" looks like | Primary sources | |--------|---------|----------------------------|----------------| | SaaS | Other SaaS companies / digital businesses | ICP fit + tech stack match + growth signals (funding, hiring, product velocity) | LinkedIn, BuiltWith, Crunchbase, Apollo, Clay, ProductHunt | | B2B | Non-SaaS B2B (services, manufacturers, enterprises, mid-market) | Industry + size + geographic fit + buying signals (trigger events, vendor changes) | Apollo, ZoomInfo, Clay, LinkedIn Sales Nav, industry directories | | Local SMB | Local small businesses (shops, gyms, restaurants, clinics, salons, services) | Active business + website status + proximity + decision-maker access | Google Maps, Yelp, local directories, Facebook, business websites | | Demand-signal | Early-stage: your first customers, design partners, or beta users | Evidence of the exact pain/demand/timing signal — a cited public source, not just firmographic fit | Forums, communities, reviews, GitHub issues, job posts, launch announcements (via last30days, social-fetch, scraping) |
If the user describes a hybrid motion (e.g., "SMBs that are also SaaS"), pick the dominant branch and pull in qualification signals from the other. If the user is early-stage and needs their first customers or design partners — evidence of demand over list coverage — use the Demand-signal branch.
For the branch-specific deep dives:
Every prospecting engagement follows the same five phases. Tools and qualification signals change per branch; the phases don't.
Pull from product-marketing.md if available. Otherwise, gather:
Output the ICP as a one-paragraph statement plus a checklist of pass/fail criteria. Don't move to discovery without this.
Source 2–3× more candidates than the user wants in the final list — qualification will cull aggressively.
If the user's list quality bar is high, smaller is better. 25 verified leads beats 250 mostly-junk ones.
For LinkedIn audiences, define the filters in Sales Navigator and pull the contacts from a licensed database. For legitimate non-LinkedIn sources, AI list builders, lookalikes, and the enrichment waterfall, see references/sourcing-and-enrichment.md. To find accounts by what just happened to them (hiring, job changes, product usage, funding), see references/signal-plays.md.
Score every candidate against the ICP checklist. Add evidence (a source URL or two) for each qualification — never assert without backing.
Confidence levels (used across all branches):
For email contacts (B2B / SaaS branches), always verify deliverability before adding to the final list, and again within 7 days of sending if the list sat. Catch-all domains need a set policy. See references/sourcing-and-enrichment.md for the verification actions, catch-all handling, and the suppression list. Don't ship leads with invalid or risky emails.
Apply this rubric for the SaaS, B2B, and Local SMB branches. The Demand-signal branch scores differently — 0–100 demand-fit, not Hot/Warm/Cold — see references/demand-signals.md.
| Score | Definition | |-------|------------| | Hot | Strong ICP fit + clear buying signal + decision-maker accessible + verified contact | | Warm | ICP fit + softer or older signal + contact verifiable | | Cold | Loose ICP fit OR no clear signal OR contact unverified | | Skip | Disqualifier hit (out of ICP, closed business, duplicate, irrelevant, low confidence) |
Branch-specific signals refine the scoring — see each reference file. Default ratio target: ~20% Hot, ~30% Warm, rest Cold/Skip.
Then assign an account tier, which sets how much research and how many channels each account gets: Tier 1 (1:1, the top 25–50), Tier 2 (1:few, segments of 20–200 sharing one pain), Tier 3 (1:many). Tier 1 accounts get a sourced research brief before any outreach. See references/signal-plays.md for tiers and references/account-research.md for the brief and the rules for agent research.
(SaaS / B2B / Local SMB. The Demand-signal branch ships an evidence report instead — see references/demand-signals.md.)
Default to a markdown table in chat. Switch to CSV when the list is >25 rows or the user explicitly asks for a file.
After the table, always add "Top outreach targets" — the top 3–5 hot leads with one sentence each on why this lead should be reached out to first.
Columns vary by branch (see reference files), but every lead sheet includes:
These apply to every branch. Read first, every engagement.
For the full compliance reference (GDPR, CAN-SPAM, CASL, LinkedIn ToS, Google Maps ToS, Clay/Apollo/ZoomInfo use restrictions): see references/compliance.md.
If missing, ask once, then infer reasonable defaults and continue:
product-marketing.md if presentFor multi-provider lookups, cache reuse, and per-credit budgets, load the enrichment playbook. Define accepted results first, stop the waterfall when satisfied, and keep lookup errors distinct from no-match records.
Full breakdown in references/data-sources.md. Quick picks:
| If the user has access to... | Use it for | |------------------------------|------------| | Apollo | B2B / SaaS firmographic + contact discovery | | Clay | Multi-source enrichment, waterfall lookups, custom scoring | | FullEnrich or LeadMagic | Waterfall email and phone enrichment through one API | | TheirStack | Hiring signals and tech stacks from job posts | | ZoomInfo | Enterprise B2B contact + intent data | | Hunter or Snov | Email pattern guessing and verification | | Truelist | Email deliverability validation (before adding to outreach list) | | LinkedIn Sales Navigator | Decision-maker mapping (manual, no scraping) | | BuiltWith / Wappalyzer | Tech stack qualification (SaaS branch) | | Crunchbase | Funding signals (SaaS branch) | | GitHub | Stargazers / forks of competitor or adjacent repos (dev-tool SaaS branch) | | Google Maps + browser | Local SMB discovery | | Firecrawl / Browserbase | Programmatic extraction from individual prospect websites — never from platforms |
If the user has no enrichment tools: lean on browser-assisted research with public sources — company website, About page, LinkedIn company page, news mentions. Slower but works.
For SaaS / B2B (≤25 rows):
| Score | Company | Industry | Size | Signal | Contact | Email status | Source | Confidence |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
For Local SMB (≤15 rows) — port from the local-prospector reference:
| Score | Business | Category | Area | Website status | Website/Social | Phone | Why it's a prospect | Confidence |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
SaaS / B2B columns:
score,company,domain,industry,size_band,country,signal,contact_name,contact_title,contact_email,email_status,linkedin,source_urls,why_prospect,confidence,verified_date,notes
Local SMB columns:
score,business,category,area,distance_km,website_status,website_url,social_urls,phone,email,source_urls,why_prospect,confidence,verified_date,notes
For implementation, see the tools registry. Key prospecting tools:
| Tool | Best For | MCP | Guide | |------|----------|:---:|-------| | Apollo | B2B / SaaS firmographic + contact discovery | ✓ | apollo.md | | Clay | Multi-source enrichment + waterfall | ✓ | clay.md | | FullEnrich | Waterfall email + phone enrichment | ✓ | fullenrich.md | | LeadMagic | Email, phone, and job-change enrichment | ✓ | leadmagic.md | | TheirStack | Hiring signals and tech stacks from job posts | ✓ | theirstack.md | | Apify | Structured data from public directories (never LinkedIn) | ✓ | apify.md | | ZoomInfo | Enterprise B2B contact + intent | ✓ | zoominfo.md | | Hunter | Email pattern + verification | ✓ | hunter.md | | Snov | Email finder + verifier | - | snov.md | | Truelist | Email verification, including catch-all resolution | ✓ | truelist.md | | Outreach | Sales engagement (post-list) | ✓ | outreach.md | | RB2B | Visitor identification (warm intent) | - | rb2b.md | | Ploy ◆ | Visitor identification on Ploy-hosted sites (one option alongside RB2B and other visitor-ID tools) | - | ploy.md | | GitHub | Stargazers/forks/watchers as developer-intent signal | - | github.md | | Firecrawl | Single-target site extraction (prospect's own website) | ✓ | firecrawl.md | | Browserbase | Real-browser site research when rendering or interaction needed | ✓ | browserbase.md |
Copy a source-pinned command for your client. You run it yourself.
Destination: .claude/skills/prospecting · pinned to the source commit
# Run from your project root
git clone https://github.com/coreyhaines31/marketingskills.git .skillboard-tmp
git -C .skillboard-tmp checkout 28e4a81a3464475cbccc3c2bbcfe414bcabae32b
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/skills/prospecting" ".claude/skills/"
rm -rf .skillboard-tmpReview the source before running. This copies files into your project; it is not a one-click install and does not verify runtime safety.
sudo apt update && sudo apt install -y gitnpm install -g @anthropic-ai/claude-code# Run from your project root
git clone https://github.com/coreyhaines31/marketingskills.git .skillboard-tmp
git -C .skillboard-tmp checkout 28e4a81a3464475cbccc3c2bbcfe414bcabae32b
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/skills/prospecting" ".claude/skills/"
rm -rf .skillboard-tmpDestination: .claude/skills/prospecting
Scanner static-checks@0.1.0 · commit 28e4a81a3464. Static checks cannot prove runtime safety – review the source and the exact diff before installing. How checks work.
No static rules matched. This is not a safety guarantee.