ravn
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.

Download SKILL.md Start free

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

  1. Check the connection: call get_account with {} or run npx ravn whoami.
  2. search_people and search_business_profile_by_name need your own provider key connected — run ravn keys add pdl first; these tools run on your own provider account. If a tool returns 403 provider_key_required, stop and tell the human to add their key. search_business_email_by_name and verifying emails are ours and need no key. Every call is one lookup; misses are free.
  3. Agree on people per company with the user.
  4. Agree on the buyer persona: which department and which seniority. Ask if the user is unsure what they sell or who signs.

Steps

  1. Clean the domains: lowercase, strip https://, www. and paths, and remove duplicates.
  2. Search in batches. company_domain takes up to 100 domains, but the limit cap 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
}
  1. Group the results by company.domain. For each company keep the best matches, ranked by seniority and how close the title is to the persona. Page with cursor only if a company has no good match yet.
  2. For companies with no match at all, try once more with that single domain and a broader title or query. If that is still not_found, record it and move on. Misses cost nothing.
  3. For each person without a business_email, run search_business_email_by_name:
{ "name": "Dana Kim", "company": "globex.com" }
  1. Verify every email with one validate_emails call. Keep valid; mark risky (often catch-all domains) and unknown for review.
  2. If one named person is wanted and search fails, search_business_profile_by_name with name and company returns a single profile (one lookup) when found.

Output

A CSV with one row per person:

  • company_domain, company_name, full_name, title, seniority, linkedin_url
  • email, rw_verdict, rw_risk_score
  • rank (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_exhausted or a 403 provider_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.