ravn
Claude skill

Enrich a conference attendee list

Event lists usually arrive as a name and a company name, sometimes a title, rarely an email. This skill resolves each company to a domain, finds each person's work email, verifies it and fills in missing titles, so the user can follow up after the event.

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 event-attendee-enrichment

When to use

  • After a conference, trade show or meetup when the user has a badge-scan export or a published attendee list.
  • Rows have Name and Company but no email or website.
  • For lists that already have domains, enrich-csv with search_business_email_by_name is simpler.

Before you start

  1. Check the connection: npx ravn whoami (free).
  2. search_business_profile_by_name and search_companies 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. Finding and verifying emails are ours and need no key. Every call is one lookup; misses are free.
  3. Ask where the list came from. Badge scans of people who visited the user's booth are a warm audience. A list of all attendees bought or scraped from elsewhere may not be allowed under the event's terms; check before going further.

Steps

  1. Resolve company names to domains. The email finder needs a domain. For each unique company name: - If you know the domain with confidence, use it. - If not, call search_companies with the name as query and limit 1 (one lookup per company found). Confirm the match by name and country.
{ "query": "Northwind Logistics", "limit": 1 }

- If still unsure, leave the domain blank and mark the row needs_domain. Do not guess. 2. Write the domain into a new Domain column and save attendees-domains.csv. 3. Find emails. Dry run, sample, full:

npx ravn enrich attendees-domains.csv --tool search_business_email_by_name --map name=Name,company=Domain --dry-run
npx ravn enrich attendees-domains.csv --tool search_business_email_by_name --map name=Name,company=Domain --limit 10 --out sample.csv
npx ravn enrich attendees-domains.csv --tool search_business_email_by_name --map name=Name,company=Domain --out attendees-emails.csv

Each hit already carries a verdict in rw_verdict, plus rw_pattern and rw_confidence. 4. Fill titles where the list has none, only if the user wants them. Make a copy of the rows with an empty title, rename the step 3 rw_* columns (for example rw_email to found_email, rw_verdict to email_verdict) so the next pass does not clash, then:

npx ravn enrich no-title.csv --tool search_business_profile_by_name --map name=Name,company=Domain --dry-run
  1. Sort by verdict: keep valid; mark risky (catch-all) and unknown for manual review; drop invalid.
  2. Tag each row with the follow-up track the user wants, for example visited_booth, attended_talk, general.

Output

attendees-enriched.csv with the original columns plus:

  • Domain and domain_source (known, search_companies or blank)
  • rw_status (ok, not_found, error, dropped), rw_email, rw_verdict, rw_risk_score, rw_pattern, rw_confidence
  • Title fields from the profile pass, where run
  • follow_up_track

Summary: attendees in, domains resolved, emails found, valid versus risky, titles filled, and lookups used.

Rules

  • Respect the event's terms for how the list can be used, and honour any "do not contact" flag on the export.
  • Never contact anyone who opted out. See /privacy#optout.
  • Drop invalid and risky emails before any automated send.
  • No FCRA uses.
  • On a 429 fair_use_exhausted or a 403 provider_key_required, stop and tell the human; rows not reached are dropped.

Example prompt

We scanned 220 badges at the logistics expo. The export just has Name, Company and sometimes Title. Get me verified work emails and titles so we can send follow-ups on Monday.