Find relevant companies and leads for B2B sales with ICP definition and qualification frameworks.
Find relevant companies and leads for B2B sales. Define ideal customer profiles, identify target accounts, qualify prospects, and organize research for outreach.
Before doing any research, interview the user. Most users won't give you enough context unprompted — they'll say "find me customers" without explaining what they sell or who buys it. Use multi-option quizzes to make this fast and low-friction. Ask one question at a time.
Question flow:
What do you sell?
Who buys it?
(If B2B) What size companies?
What's your price point?
Who inside the company makes the buying decision?
Do you have existing customers?
(If they have customers) What do your best customers have in common? (free text — this is the most valuable answer)
Any industries or verticals you're focused on? (free text or skip)
If the user provides a detailed prompt upfront, skip the questions they already answered. Don't re-ask what's obvious. But if key info is missing (who buys, what size, what price), ask before proceeding — the ICP will be wrong without it.
An ICP describes accounts where three things are true: they can buy (budget/size fit), they will buy (pain exists now), and they will stay (retention profile). Pick 6-10 attributes — more than 10 and nothing qualifies.
| Attribute | How to define it | Example |
|---|---|---|
| Headcount | Hard range, not "SMB" | 50-500 employees |
| Revenue | Estimate from headcount if private | $10M-$100M ARR |
| Industry | NAICS/SIC codes or named verticals | SaaS, fintech, digital health |
| Geography | Where you can legally sell + support | US, UK, Canada |
| Tech stack | Tools that signal fit (technographics) | Uses Salesforce + Segment + AWS |
| Funding stage | Proxy for budget + growth pressure | Series A-C, raised in last 18mo |
| Hiring signals | Job posts reveal priorities | Hiring "RevOps" or "Head of Data" |
| Negative signals | Disqualifiers — the sharpest filter | <20 employees, agency model, on-prem only |
ICP vs Buyer Persona: ICP = which company. Persona = which human inside it. A Series B fintech (ICP) has a VP Eng who cares about velocity and a CFO who cares about cloud spend (two personas, different messaging).
Free sources (use webSearch + webFetch):
site:crunchbase.com "series a" fintech 2025 for funding eventssite:linkedin.com/company [industry] "11-50 employees" (headcount filter leaks into page text)webFetch a prospect's homepage, then scan source for tech signatures (Segment snippet, Intercom widget, Shopify checkout)site:linkedin.com/jobs "[target company]" "data engineer" reveals what they're building; site:greenhouse.io and site:lever.co for startup hiringPaid sources the user likely has (shape output for these):
Prospects with an active trigger convert 3-5x higher. Rank by signal strength:
| Signal | Why it matters | How to find it |
|---|---|---|
| New exec in target persona | New VPs buy tools in first 90 days | site:linkedin.com "[company]" "I'm excited to join" or Sales Nav job-change alerts |
| Funding round | Budget just unlocked | Crunchbase, webSearch: "[company] raises" |
| Hiring spike in relevant role | Building the team that needs you | LinkedIn Jobs count, site:greenhouse.io/[company] |
| Tech stack change | Migration = pain = budget | BuiltWith historical, job posts mentioning "migrating from X" |
| Competitor displacement | Negative G2 review of competitor | site:g2.com "[competitor]" 1-star OR 2-star |
| M&A / new product launch | Org chaos creates tool gaps | Press releases, TechCrunch |
| Earnings call mentions | Public co priority signals | webFetch SeekingAlpha transcripts, Ctrl-F for your problem space |
Fast disqualification (do this first): Before researching, kill accounts that fail any hard constraint — wrong geo, below headcount floor, competitor customer under contract, recent layoffs (no budget).
Qualification frameworks:
Tiering:
Target minimum 40 prospects. A single sequential search won't get there fast enough. Use startAsyncSubagent to run 5 parallel research agents, each focused on a different search angle:
Each agent should return 10-15 prospects with all columns filled in. Deduplicate after all agents return via waitForBackgroundTasks, then merge into the final spreadsheet.
Build a real spreadsheet using the excel-generator skill or write a CSV file — not a markdown table. The output should be something the user can import directly into a CRM, Clay, or Apollo.
Columns:
| Company | Domain | Headcount | Fit Score (1-5) | Trigger | Trigger Date | Target Contact Name | Target Title | LinkedIn URL | Email (if found) | Why Now (1 sentence) |
site:linkedin.com/in "[company]" "[title]". Include direct profile links.webSearch("[company] email format" OR "[name] [company] email"). Common patterns: [email protected], [email protected]. If not found, leave blank and note the likely format.The spreadsheet should be downloadable and ready to import — not just displayed as text.
For industries or markets you don't know well, pull in the deep-research skill to build context before prospecting. This is especially useful when:
Use deep-research to gather industry context, then return here to build the prospect list with that knowledge.
Tech stack detection:
Use webSearch("[company] tech stack" OR "[company] built with") to find BuiltWith/Wappalyzer/StackShare profiles. Common signatures to look for in search results:
webSearch("[company] careers engineering")Note: webFetch returns markdown content, not raw HTML — script tags and asset URLs are stripped. Use search-based detection rather than HTML source scanning.
Waterfall search pattern: If one query returns nothing, don't stop — try synonym variants. "VP Engineering" OR "Head of Engineering" OR "Engineering Lead" OR "CTO" all map to the same persona at different company sizes.
Lookalike expansion: Once you find 5 good-fit accounts, search for their direct competitors — webSearch: "[good-fit company] vs" or "[good-fit company] alternatives" surfaces the category.