---
name: ravn-find-decision-makers
description: Use when someone has a list of target company domains and needs the actual buyers at each one, with titles and verified work emails.
title: Find Decision Makers at Target Companies — Ravn
---
# 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.

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

```json
{
  "company_domain": ["acme.com", "globex.com", "initech.com"],
  "department": ["finance"],
  "seniority": ["Director", "VP", "Head", "C Suite"],
  "limit": 10
}
```

3. 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.
4. 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.
5. For each person without a `business_email`, run `search_business_email_by_name`:

```json
{ "name": "Dana Kim", "company": "globex.com" }
```

6. Verify every email with one `validate_emails` call. Keep `valid`; mark `risky` (often catch-all domains) and `unknown` for review.
7. 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](https://askravn.com/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.
