Claude skill
Find decision makers at target accounts
Start from a list of company domains, find the two or three people at each who would buy, and return them with titles and verified work emails. This is account-based: the companies are fixed, the job is finding the right people inside them.
Install
One command.
Installs into ~/.claude/skills for Claude Code. In Claude, upload the downloaded file under Settings → Capabilities → Skills.
npx ravn skill install find-decision-makers
When to use
- The user has a target account list (domains) and asks "who should I talk to at each of these?"
- Sales wants the buying committee for 20 named accounts.
- If there is no company list yet, use build-prospect-list instead.
Before you start
- Check the connection: call
get_accountwith{}or runnpx ravn whoami. search_peopleandsearch_business_profile_by_nameneed your own provider key connected — runravn keys add pdlfirst; these tools run on your own provider account. If a tool returns 403provider_key_required, stop and tell the human to add their key.search_business_email_by_nameand verifying emails are ours and need no key. Every call is one lookup; misses are free.- Agree on people per company with the user.
- Agree on the buyer persona: which department and which seniority. Ask if the user is unsure what they sell or who signs.
Steps
- Clean the domains: lowercase, strip
https://,www.and paths, and remove duplicates. - Search in batches.
company_domaintakes up to 100 domains, but thelimitcap is 25 per page, so batch about 8 to 10 domains per call to keep the results spread across companies.
{
"company_domain": ["acme.com", "globex.com", "initech.com"],
"department": ["finance"],
"seniority": ["Director", "VP", "Head", "C Suite"],
"limit": 10
}
- Group the results by
company.domain. For each company keep the best matches, ranked by seniority and how close thetitleis to the persona. Page withcursoronly if a company has no good match yet. - For companies with no match at all, try once more with that single domain and a broader
titleorquery. If that is stillnot_found, record it and move on. Misses cost nothing. - For each person without a
business_email, runsearch_business_email_by_name:
{ "name": "Dana Kim", "company": "globex.com" }
- Verify every email with one
validate_emailscall. Keepvalid; markrisky(often catch-all domains) andunknownfor review. - If one named person is wanted and search fails,
search_business_profile_by_namewithnameandcompanyreturns a single profile (one lookup) when found.
Output
A CSV with one row per person:
company_domain,company_name,full_name,title,seniority,linkedin_urlemail,rw_verdict,rw_risk_scorerank(1 = best fit at that company)
Plus a coverage summary: companies in, companies with at least one verified contact, companies with no match, and lookups spent.
Rules
- Opted-out people are already removed from the data. Also skip anyone the user says asked not to be contacted. See /privacy#optout.
- Drop invalid and risky emails before any outreach.
- No FCRA uses: do not use this to vet people for credit, employment, insurance or housing.
- On a 429
fair_use_exhaustedor a 403provider_key_required, stop and tell the human which companies are done.
Example prompt
Here are 25 target accounts (domains in accounts.txt). We sell AP automation. Find me the CFO or finance director at each one with a verified email.
More skills
Install them all with npx ravn skill install --all.