Claude skill
Build a prospect list from an ICP
Turn a description of the ideal buyer ("VPs of Operations at 51-200 person logistics companies in Texas") into a list of named people with verified work emails, using search_people for the profiles and Ravn's own checks for the emails.
Install
One command.
Installs into ~/.claude/skills for Claude Code. In Claude, upload the downloaded file under Settings → Capabilities → Skills.
npx ravn skill install build-prospect-list
When to use
- The user has no list yet and wants one built from criteria.
- "Find me 50 heads of marketing at Series A SaaS companies in Canada."
- If the user already has target companies, use find-decision-makers instead.
Before you start
- Check the connection: call
get_accountwith{}or runnpx ravn whoami. Note lookups left this window. search_peopleneeds your own provider key connected — runravn keys add pdlfirst; these tools run on your own provider account. If it returns 403provider_key_required, stop and tell the human to add their key.search_business_email_by_nameand email verification are ours and need no key. Every call is one lookup; misses are free.- Agree on a target size with the user.
Steps
- Turn the ICP into filters. Lists mean OR within a field and AND across fields. -
title: the job titles, with common variants. -seniority: Intern, Entry, Senior, Manager, Director, VP, Head, C Suite, Owner, Partner. -industry,country,state,city,department. -employee_range: 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001+. - Exclusions:exclude_company_domain(existing customers),exclude_industry,exclude_seniority. - Run a small test page first to check the filters return the right people.
{
"title": ["VP Operations", "Head of Operations", "Director of Operations"],
"industry": "logistics",
"state": "Texas",
"employee_range": ["51-200"],
"exclude_company_domain": ["currentcustomer.com"],
"limit": 5
}
- Show the user the five results and
total. If they are off target, adjust the filters before spending more. Ifstatusisnot_found, loosen one filter at a time. - Page through with
limitup to 25 and thecursorset to the previousnext_cursor, until you reach the target size ornext_cursoris empty. - Each profile may include
business_emailandbusiness_email_risk_score. For people without an email, callsearch_business_email_by_namewith their name andcompany.domain:
{ "first_name": "Maria", "last_name": "Lopez", "company": "lonestarfreight.com" }
- Verify every email you plan to use with one
validate_emailscall (up to 1,000 addresses):
{ "emails": ["maria.lopez@lonestarfreight.com", "j.chen@haulpoint.com"] }
- Keep
valid. Markriskyandunknownfor review and leave them out of the send list. - Save the list as a CSV.
Output
A CSV with one row per person:
full_name,title,seniority,company_name,company_domain,company_size,city,state,country,linkedin_urlemail,email_source(search_peopleorsearch_business_email_by_name)rw_verdict(valid,invalid,risky,unknown) andrw_risk_scorerw_status(okornot_found) for the email step
Also report: filters used, total matches available, people pulled, verified emails, and lookups used.
Rules
- People who opted out are removed from the data already. Also remove anyone the user knows has asked not to be contacted. See /privacy#optout.
- Drop invalid and risky emails before the list is used for outreach.
- No FCRA uses: never build lists to screen people for credit, employment, insurance or housing.
- This is for building a working prospect list, not bulk exporting the database. Pull what the campaign needs.
- On a 429
fair_use_exhaustedor a 403provider_key_required, stop and tell the human.
Example prompt
Build me a list of 40 operations leaders (director and up) at 51-200 person logistics companies in Texas, skip our current customers in customers.txt, with verified emails.
More skills
Install them all with npx ravn skill install --all.