← ClaudeAtlas

contact-enrichmentlisted

Use when stage 8 of the prospecting system needs people and verified emails — all matching titles at the approved accounts, plus work emails for qualified audience members who only have a LinkedIn URL — merged into one deduped lead file. Also use when the ask is "find the contacts and emails for these companies" or "get emails for these LinkedIn profiles".
automatewithuday/gtm-prospecting-system · ★ 1 · Data & Documents · score 78
Install: claude install-skill automatewithuday/gtm-prospecting-system
# Contact Enrichment Two lanes arrive here with different shapes: accounts that need people, and people that need emails. One file leaves. ## Pipeline contract **Stage 8 of 20.** Reads `07-accounts.csv` + `07-lane.json` (account lane) and `06-audience-qualified.csv` (audience lane). Writes `08-leads.csv` with the lead columns. Files live in `runs/<run>/`. Column definitions: [`/prospecting-system`](../prospecting-system/SKILL.md). **Gate:** the human approves `07-accounts.csv` before any contact pull. This is where real money starts. ## Lane A — accounts → people ```bash npx tsx engine/list-builder/scripts/contacts.ts --config=<run>/07-lane.json --run-dir=<abs path to run>/07-lane ``` Cost-ordered waterfall, resumable: GetLeads export (free on plan) → Blitz for domains GetLeads left at zero → Prospeo people search last (paid). It refuses to run unless the lane's `summary.md` says READY. Output is `leads-final.csv` in the lane dir. The engine pulls **all matching titles at every company, uncapped** — that is its rule, keep it. The run's target is enforced later, at stage 11, by ranking; not here by dropping contacts. Set `source_type` to `lookalike` for accounts that came from `03-lookalikes.csv`, else `search`. ## Lane B — audience members → emails Rows in `06-audience-qualified.csv` with `qualified=true` and no email: 1. Has `linkedin_url` → GetLeads MCP `getleads_get_emails_from_linkedin_batch`. 2. No LinkedIn URL but name + company → `getleads_enrich_person_ba