outreach-enrich

Solid

The full enrichment waterfall on a lead list: filter first, find the missing emails, verify only the addresses that came from somewhere other than Emelia's finder, find mobile numbers only where they are worth 50 credits, then decide row by row who is sendable, who is on hold and who is dropped. Ends by routing the rows to separate destinations, one list per destination: addresses found go to the email campaign list, rows with no address but a valid LinkedIn profile URL are proposed as a separate LinkedIn campaign, and the rest is set aside and counted. Never pushes a whole enriched base into a single Emelia list. Runs under a credit budget fixed before the first call and stops when it is reached. Writes outreach/enrichment.json with every counter and updates outreach/leads.csv without losing a single original column, then fills the custom fields your sequence needs. Triggers on: enrich, enrichment, enrich my list, waterfall, find and verify, clean and enrich, contact data, credits budget, how much will this

Data & Documents 12 stars 2 forks Updated 2 days ago MIT

Install

View on GitHub

Quality Score: 82/100

Stars 20%
37
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
80
License 10%
100
Description 5%
100

Skill Content

# The enrichment waterfall ## What this does Runs the whole contact data chain on a filtered list, in the order that costs the least: find the missing addresses, verify the ones whose provenance you do not control, decide, then phone numbers for the small group that deserves a call. It runs under a credit budget you set before the first call and stops when it hits it. At the end every row carries a decision (`send`, `hold`, `drop`) and the file says why. Nothing is quietly dropped, nothing is quietly guessed, and nothing is verified twice. Then it **routes**. An enriched list is not one list: the rows with an address go to the email campaign, the rows with no address but a real LinkedIn profile are a different channel, and the rest goes nowhere. Each destination gets its own file and its own Emelia list. Pushing the whole base into one list is the mistake this step exists to prevent. ## When to use it Use it as the default enrichment step of a campaign, when you want one budget, one report and one pass over the list. Use the single skills instead when you want one thing only: `outreach-find-email`, `outreach-find-phone`, `outreach-verify`. This skill calls all three, so read them for the field level detail; it owns the order, the budget, the decision rule and the files. Never run it on an unfiltered list. `outreach-filter` first: exclusions, duplicates, existing customers, the blacklist, rows with no usable company. Credits spent on a row you delete ten minutes later a...

Details

Author
emelia-io
Repository
emelia-io/claude-outreach
Created
3 days ago
Last Updated
2 days ago
Language
Python
License
MIT

Similar Skills

Semantically similar based on skill content — not just same category

Data & Documents Solid

outreach-filter

Clean and segment a lead list before a single credit is spent on it. Deduplicates by email, by company domain and by LinkedIn profile, handling the awkward cases (subdomains, plus aliases, apostrophes and accents in names, Sales Navigator URLs that never string match a public profile), excludes existing customers, competitors and blacklisted addresses using find_contact and the Emelia blacklist endpoints, drops generic mailboxes such as contact@ and info@ and the junior roles that cannot buy, checks that geography and headcount match the ICP, and splits what survives into segments that each deserve a different message. Reads outreach/leads.csv and outreach/icp.json, writes a smaller leads.csv plus a report of every row removed and why. Triggers on: filter, clean the list, dedupe, deduplicate, duplicates, remove customers, exclusion list, blacklist, suppression list, generic emails, contact@, role address, segment the list, segmentation, list hygiene, data quality, before enrichment.

12 Updated 2 days ago
emelia-io
AI & Automation Solid

outreach-find-email

Find professional email addresses for the people on a lead list, one at a time or in bulk, with Emelia's email finder. Runs the three attempt fallback cascade that recovers the rows a single lookup misses: the domain first, then the company name, then the trade name. States the credit cost before spending anything, polls each job to completion, and records what was found, what was not and which attempt won in outreach/enrichment.json and outreach/leads.csv. What the finder returns is already verified and goes straight into a campaign, so it never needs a second pass through the verifier. Never guesses an address pattern and calls it found. Triggers on: find email, email finder, find emails, find the email of, email address, email lookup, email enrichment, enrich emails, missing emails, bulk email finder, retry the finder, email not found, get emails for my list.

12 Updated 2 days ago
emelia-io
Data & Documents Solid

outreach-leads

Build the lead list by actually querying the sources this repository supports: the Basile API for French B2B, where an ICP becomes a plan of several queries (adjacent job titles, size bands, zones, sources), each counted for free with countOnly before a single record is extracted, then merged, deduplicated and cut of what is obviously off target before any enrichment credit is spent; a LinkedIn Sales Navigator search collected through the Emelia LinkedIn scraper; or a CSV the user already has (encoding, separator and column mapping handled). Writes outreach/leads.csv with a fixed 26 column schema that every other skill in this repository reads, including a source and a source_url column on every row. Reads outreach/icp.json, a Sales Navigator URL or a file path. Triggers on: build a list, lead list, source leads, find companies, find prospects, Basile, api.basile.cc, docs.basile.cc, French companies, SIREN, NAF, activity filter, count before extracting, Sales Navigator, LinkedIn search, LinkedIn scraper, scra

12 Updated 2 days ago
emelia-io