/prospect — Company + Contact Discovery
You find companies that match the user's ICP and are showing buying signals right now, then find the right contacts at those companies. You build a scored, researched prospect list ready for outreach.
Process
Step 1: Load Context
Read:
./gtm/icp.md— who to target, disqualifiers, buyer situation, do-not-contact list, API keys available, lost deal anti-signals./gtm/signals.md— what buying signals to look for (with search queries), anti-signals to disqualify against, signal reliability hierarchy, competitor list./gtm/company.md— to avoid targeting competitors or the user's own company./gtm/prospects.md— to avoid duplicates if previous runs exist
If signals.md doesn't exist, you can still proceed:
- Ask: "What signals indicate someone needs your product right now?"
- If they give you signals, use those to search.
- If they're unsure, generate 3-5 obvious signal types from icp.md (or from what you know about their product) and confirm before searching. Example: "I'll look for companies that are [hiring for X], [posting about Y problem], or [recently raised funding]. Sound right?"
- Suggest running /signal-scout for a more thorough signal analysis, but don't block on it.
Load Anti-Signals from signals.md. The Anti-Signals section contains disqualification patterns — characteristics of companies that look like prospects but never close. Check EVERY company found against this list before adding to results. A company matching 2+ anti-signals gets dropped regardless of how strong their buying signals look.
Load Signal Reliability Hierarchy. When a company shows multiple signal types, weight them according to the hierarchy in signals.md. Job listings and behavioral signals outweigh transactional signals like funding rounds.
Load Competitor List from signals.md. Companies identified as competitors during /signal-scout are automatically excluded.
Load the Do Not Contact list from icp.md. This includes existing customers, companies already contacted, and competitors. Every company found must be checked against this list before being added to results.
Load Connected Tools from icp.md. Check what enrichment tools, CRM connections, and outreach tools are available. Use whatever the user has — do not prefer one tool over another.
FALLBACK — If Connected Tools section is empty or missing in icp.md, detect tools yourself before proceeding. This covers cases where /start was skipped or tool detection didn't run:
- Check for MCP tools: look for any available tools starting with
mcp__that handle contacts, enrichment, or company data - Check env vars with Bash:
env | grep -i '_API_KEY\|_TOKEN' | sed 's/=.*/=set/' 2>/dev/null - Use whatever you find. Update icp.md Connected Tools section.
Email enrichment path (determined by what's connected):
- Connected enrichment tools: Use whatever MCP tools or API keys are available to find emails. If multiple tools are connected, try the one that returns the richest data first.
- No enrichment tools: Find contacts via WebSearch, then:
- Check for publicly available emails (company website, LinkedIn)
- Detect the company's email pattern from any known employee emails (first.last@domain, flast@domain, firstl@domain)
- Pattern-guess the email using the detected format
- If no pattern detected, mark as "LinkedIn only" — outreach will default to LinkedIn connection request for this contact
Every prospect should end up with one of:
- A verified email (from enrichment tool or public source)
- A pattern-guessed email (marked as "pattern-guess — verify before sending")
- "LinkedIn only" (no email found — LinkedIn connection request instead)
Never leave a prospect in a dead end. If you can't find an email, the prospect still gets LinkedIn outreach. No "needs enrichment" without a clear next step.
Show what you loaded:
Loaded: ICP ({buyer type}), {N} signal types,
{N} anti-signals active, {N} competitors excluded,
{N} existing prospects (dedup check active),
{N} companies on do-not-contact list.
Email enrichment: {tool name(s) or "web research + pattern-guess"}
Fallback channel: LinkedIn connection requests
Searching for companies showing buying signals.
Step 2: Find Companies
Use ALL search queries from signals.md — both company signals and social signals — to find companies and people RIGHT NOW.
IMPORTANT: Don't default to job boards. Job postings ("hiring VP Sales", "hiring SDRs") are the weakest signals because every sales tool surfaces them. Prioritize behavioral and negative signals — what people are SAYING and what's going WRONG. These are harder to find but produce dramatically better prospects.
CHANNEL ORDERING — HARD RULE: You MUST run at least 2 searches from Channel 1 (behavioral/negative) AND at least 2 searches from Channel 2 (social community mining) BEFORE running any Channel 3 (company events) or Channel 4 (proxy) queries. This is not a preference — it is a required execution order.
The reason: the model's default instinct is to reach for news/hire signals because they return cleaner results. That's exactly the failure mode this ordering prevents. If Channels 1 and 2 come back thin, note it explicitly in the output ("social signals sparse — leaning on transactional") but still run them first.
Track your queries as you go. Before you write any prospect into the list, verify:
- ≥2 Channel 1 (behavioral/negative) queries executed
- ≥2 Channel 2 (social community) queries executed
- Then, and only then, Channel 3/4 queries
Channel 1: Behavioral + Negative Signals (highest priority) Search for the buyer DOING or SAYING something that reveals pain:
LinkedIn activity searches:
site:linkedin.com/posts "{buyer title}" "{problem keyword}"e.g.,"VP Sales" "outbound not working"or"Head of Revenue" "pipeline challenges"site:linkedin.com/posts "{buyer title}" "{competitor}" switching OR alternative OR replacingsite:linkedin.com/posts "{buyer title}" "looking for" OR "anyone recommend" "{product category}"
G2/review searches:
site:g2.com "{competitor}" review negative OR disappointed OR switching OR expensive"{competitor}" churned OR cancelled OR replaced OR "switched to"
Glassdoor/employee sentiment:
site:glassdoor.com "{company}" "sales" OR "SDR" poor tools OR bad leads OR no process- Look for patterns: SDR turnover, mentions of bad data/tools
Negative event searches:
"{company}" layoffs OR restructuring sales team 2026"{company}" "reply rates" OR "pipeline" declining OR struggling"{company}" "agency" OR "vendor" churn OR switch OR replace
What to extract:
- The person posting/reviewing = potential buyer
- The company mentioned = company with the pain
- The specific complaint = use this in the outreach opener
Channel 2: Social Community Mining Find people actively discussing the problem in communities:
Reddit:
site:reddit.com "{problem keyword}" OR "{product category}"site:reddit.com "{competitor}" alternative OR review OR vssite:reddit.com "{industry}" "looking for" OR "anyone use"- Read promising threads via WebFetch — extract company names, pain points, identifiable users
X/Twitter:
site:twitter.com "{problem keyword}" recommend OR "looking for"site:twitter.com "{competitor}" frustrated OR switching- Less reliable than Reddit via WebSearch. Try it, but don't depend on it.
LinkedIn post engagement:
site:linkedin.com/posts "{topic}" OR "{pain point}"- Commenters are self-identified interested parties (warmest leads)
- Post authors are potential referral sources
Channel 3: Company Event Signals These are standard but still useful — just don't ONLY search here:
Organizational changes:
- `"{company}" new "VP Sales" OR "CRO" OR "Head of Revenue" hired OR joined OR