Qualify accounts against your ICP before buying contacts
Lists companies with Hunter, reads each homepage with Firecrawl, checks fit and business model with Jev, and finds buyers at the fits only.
Outcome
A table of every company checked, with its fit level, business model, sales motion and Jev's confidence.
The companies that fit, and for each one that didn't, the answer that ruled it out.
The buyers at each company that fits, from a search that spends no credits, ready to enrich.
How it works
- 1
List candidates
HunterSearch for
target_segmentand keep up tomax_companiescompanies, with each one's name and domain. - 2
Read each homepage
FirecrawlScrape each domain's homepage as markdown. Keep the page text, and note the domains that fail to load or redirect elsewhere.
- 3
Qualify
TypeSafe AISend each homepage's text as the state, with a score
fitwhose levels describe the match withideal_customer: no fit (matches none of it), weak (matches some), good (matches most) and ideal (matches all); a choicebusiness_modelof b2b_software, b2b_services, b2c, marketplace, agency and other; a choicesales_motionof self_serve (sign-up and prices on the site), sales_led (demo or contact sales only) and hybrid; and a noulactive_business(a live product, not a parked, acquired or shut-down site). Keep every answer with its confidence or probability. - 4
Check the unsure ones with the user
Your agentShow the user every company whose fit confidence is below
min_confidenceor whoseactive_businessis unsure, with its homepage's first lines, and keep what the user decides. Keep the active businesses with a fit ofmin_fitor better. - 5
Find the buyers
ApolloSearch each company that fits for
buyer_titles. Keep each person's Apollo ID, first name, title and company.
You'll be asked for
The companies to start from, in plain words
e.g. B2B software companies in the US with 50 to 500 employees
What a company that fits looks like, in a sentence or two
e.g. sells software to other businesses, has a sales team and a self-serve free trial
The most companies to check in one run
e.g. 100; Hunter returns up to 100 per search, and paging past them needs a Premium plan
The lowest fit level worth finding buyers at
e.g. good
How sure Jev must be before its answer is used without you
e.g. 0.8; a yes-or-no answer counts as yes at or above it and as no at or below 1 minus it
The people to find at each company that fits
e.g. VP Marketing, Head of Growth
The file your agent runs
icp-account-qualification.md
Qualify accounts against your ICP before buying contacts
Lists companies with Hunter, reads each homepage with Firecrawl, checks fit and business model with Jev, and finds buyers at the fits only.
Set up the tools below, then run the steps in order for the user, carrying each step's results into the next. The run is done when the user has the outcome below.
Outcome
- A table of every company checked, with its fit level, business model, sales motion and Jev's confidence.
- The companies that fit, and for each one that didn't, the answer that ruled it out.
- The buyers at each company that fits, from a search that spends no credits, ready to enrich.
Inputs
Ask the user for these before you start.
target_segment: the companies to start from, in plain words, e.g. B2B software companies in the US with 50 to 500 employeesideal_customer: what a company that fits looks like, in a sentence or two, e.g. sells software to other businesses, has a sales team and a self-serve free trialmax_companies: the most companies to check in one run, e.g. 100; Hunter returns up to 100 per search, and paging past them needs a Premium planmin_fit: the lowest fit level worth finding buyers at, e.g. goodmin_confidence: how sure Jev must be before its answer is used without you, e.g. 0.8; a yes-or-no answer counts as yes at or above it and as no at or below 1 minus itbuyer_titles: the people to find at each company that fits, e.g. VP Marketing, Head of Growth
Set up
Search companies (Hunter, tool:hunter/search-companies)
Use the first option your agent supports.
Note: Returns no contacts: list each company's people with a domain search. technology, year_founded, similar_to and paging with offset need a Premium plan.
MCP (official, remote)
Add this server to your agent's MCP settings, then sign in when asked.
{ "mcpServers": { "hunter": { "url": "https://mcp.hunter.io/mcp" } } }
Call the MCP tool Find-Companies.
API (official)
- Base URL: https://api.hunter.io/v2
- Endpoint:
POST /discover - Auth: send the header
X-API-Key: $HUNTER_API_KEY - Get a key: https://hunter.io/api-keys
Scrape a URL (Firecrawl, tool:firecrawl/scrape-url)
Use the first option your agent supports.
MCP (official, remote)
Add this server to your agent's MCP settings, then sign in when asked.
{ "mcpServers": { "firecrawl": { "url": "https://mcp.firecrawl.dev/v2/mcp-oauth" } } }
Call the MCP tool firecrawl_scrape.
CLI (official)
Install the command, then confirm it runs.
npm install -g firecrawl-cli
firecrawl --version
Run firecrawl scrape.
Set $FIRECRAWL_API_KEY in your environment first (get a key: https://www.firecrawl.dev/app/api-keys).
Answer typed questions (TypeSafe AI, tool:typesafe/answer-typed-questions)
Use the API.
- Base URL: https://api.typesafe.ai
- Endpoint:
POST /v1/systemone - Auth: send the header
Authorization: Bearer $TYPESAFE_API_KEY - Get a key: https://console.typesafe.ai
Note: Put every question about one record in one request. GET /v1/models lists the models and is the cheapest check of a key; a request over the rate limit gets a 429 with a Retry-After header.
Note: Send state, model (jev-latest) and named questions, each with type, instructions and criteria: a choice maps labels to descriptions, a score lists its levels in order, a noul's is optional. Read a score by its most likely level; send unsure answers to a person.
Search people (Apollo, tool:apollo/search-people)
Use the first option your agent supports.
Note: Costs no credits and finds only net-new people, not contacts already saved in Apollo. Returns no emails: enrich the matches to get them. Up to 100 people per page and 50,000 in total.
MCP (official, remote)
Add this server to your agent's MCP settings, then sign in when asked.
{ "mcpServers": { "apollo": { "url": "https://mcp.apollo.io/mcp" } } }
Call the MCP tool apollo_mixed_people_api_search.
CLI (official)
Install the command and sign in with it, then confirm it runs.
brew install apolloio/apollo-io-cli/apollo-io-cli
apollo --version
Run apollo people search.
Before step 1, confirm access to each service with its cheapest read-only call, like a list or a search. Never send or change anything to test access.
Steps
- List candidates with Search companies (Hunter). Search for
target_segmentand keep up tomax_companiescompanies, with each one's name and domain. - Read each homepage with Scrape a URL (Firecrawl). Scrape each domain's homepage as markdown. Keep the page text, and note the domains that fail to load or redirect elsewhere.
- Qualify with Answer typed questions (TypeSafe AI). Send each homepage's text as the state, with a score
fitwhose levels describe the match withideal_customer: no fit (matches none of it), weak (matches some), good (matches most) and ideal (matches all); a choicebusiness_modelof b2b_software, b2b_services, b2c, marketplace, agency and other; a choicesales_motionof self_serve (sign-up and prices on the site), sales_led (demo or contact sales only) and hybrid; and a noulactive_business(a live product, not a parked, acquired or shut-down site). Keep every answer with its confidence or probability. - Check the unsure ones with the user yourself. Show the user every company whose fit confidence is below
min_confidenceor whoseactive_businessis unsure, with its homepage's first lines, and keep what the user decides. Keep the active businesses with a fit ofmin_fitor better. - Find the buyers with Search people (Apollo). Search each company that fits for
buyer_titles. Keep each person's Apollo ID, first name, title and company.
Notes
Qualifying before enriching saves credits: an email lookup costs one whether or not the company fits, while Jev is billed only for the tokens it reads. A data provider's industry code can miss what a company actually sells, which is why the fit is read from what the company says about itself.
Read the fit by its most likely level, not its expected score, and rank companies within a level by the summed probability of good and ideal. Apollo's search spends no credits and returns no emails, so enrich only the buyers you keep.
Rules
- Use only the services set up above. The read-only calls they need, like listing ids or polling for results, are fine.
- Ask the user before anything that sends messages, costs money, or changes data, and say how many records it touches. One approval covers a batch the user has seen.
- Never print API keys.
