Email addresses to LinkedIn profiles
Look up the person behind each email address: their LinkedIn profile URL, and optionally their full business profile (title, seniority, company). Use the lighter tool when only the URL is needed and the fuller one when the user wants context.
One command.
Installs into ~/.claude/skills for Claude Code. In Claude, upload the downloaded file under Settings → Capabilities → Skills.
npx ravn skill install email-to-linkedin-profile
When to use
- The user has a list of customers or sign-ups and wants their LinkedIn profiles to connect or research.
- "Who are these people?" for a batch of emails.
- Use
email_to_linkedinwhen only the URL is needed. Usereverse_email_lookupwhen the user also wants title, company and location.
Before you start
- Check the connection: call
get_accountwith{}or runnpx ravn whoami. email_to_linkedinandreverse_email_lookupneed 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. Every call is one lookup; misses are free.- Ask which output the user needs. Both tools are one lookup per call, so if there is any chance they want title or company,
reverse_email_lookupgives more for the same cost.
Steps
- Clean the list locally: trim, lowercase, remove duplicates and obvious junk.
- Optional but useful for big lists: run
validate_emailsfirst (ours, 1 lookup each) and skip addresses that areinvalidordisposable. Those rarely match a real profile.
{ "emails": ["jane@acme.com", "sam@brightpath.io"] }
- URL only, one address:
{ "email": "jane@acme.com" }
email_to_linkedin returns email, linkedin_url and full_name. 4. Full profiles, up to 100 per call over MCP:
{ "emails": ["jane@acme.com", "sam@brightpath.io"] }
reverse_email_lookup returns one item per address with its own status and a result holding full_name, title, headline, seniority, city, state, country, industry, linkedin_url, company and last_updated_at. Its business_email is re-verified. 5. A CSV with the CLI: dry run, sample, full.
npx ravn enrich customers.csv --tool email_to_linkedin --column Email --dry-run npx ravn enrich customers.csv --tool email_to_linkedin --column Email --limit 10 --out sample.csv npx ravn enrich customers.csv --tool email_to_linkedin --column Email --out with-linkedin.csv
Swap in --tool reverse_email_lookup for full profiles. The dry run shows how many lookups the run will use. 6. Check the match. If full_name clearly does not fit the name the user already has for that row, flag it as match_check: review rather than trusting it. 7. Free-provider addresses (Gmail and similar) match less often. Say so in the summary rather than retrying.
Output
The CSV keeps every original column and adds:
rw_status:ok,not_found,errorordropped.- For
email_to_linkedin:rw_email,rw_linkedin_url,rw_full_name. - For
reverse_email_lookup:rw_full_name,rw_title,rw_seniority,rw_city,rw_state,rw_country,rw_industry,rw_linkedin_url,rw_company(JSON),rw_last_updated_at. match_checkwhere you flagged a name mismatch.
Summary: emails in, profiles found, match rate for work versus free-provider addresses, and lookups used.
Rules
- Ravn does not scrape LinkedIn; profiles come from your own data-provider account, and opted-out people are never returned. Do not try to find them another way. See /privacy#optout.
- No FCRA uses: never look up applicants, tenants or candidates to decide credit, employment, insurance or housing.
- Use profiles for business context and outreach only.
- On a 429
fair_use_exhaustedor a 403provider_key_required, stop and tell the human.
Example prompt
Here's a CSV of our 300 paying customers' emails. Find their LinkedIn profiles and job titles so our CS team knows who they're talking to.
More skills
Install them all with npx ravn skill install --all.