emelia-io
OrganizationUniversal B2B outreach skill for Claude Code. 16 sub-skills + 5 sub-agents: ICP targeting, lead sourcing, email finder, phone finder, verification, AI personalization, multichannel sequences, deliverability, campaign launch, reply handling and GDPR compliance.
Categories
Indexed Skills (17)
outreach
Universal B2B outreach skill. Define an ICP, build and clean a lead list, find and verify professional emails and mobile numbers, write and personalize a multichannel sequence, check deliverability, launch the campaign, handle replies, and read the results. Works with the Emelia MCP server or REST API, the Basile API for French B2B data, or a plain CSV. Triggers on: outreach, cold email, prospecting, lead list, lead generation, email finder, email verification, phone finder, sequence, campaign, follow-up, deliverability, warmup, SDR, ICP, personalization, reply handling.
outreach-audit
Audits the content of the emails in an outreach sequence, step by step, and says what is costing replies. Reads outreach/sequence.md or a live campaign pulled from the Emelia API, then checks nine things: one ask per email, the links that dilute it, whether the question can be answered with a thumb, length against a rendered line count, attachments, images, HTML weight, the signature, spam trigger words and hollow jargon. Gives a verdict per step, a verdict for the sequence and one priority fix. Writes outreach/audit.md. Triggers on: audit, audit my emails, review my copy, check my sequence, why no replies, is this email too long, too many links, one CTA, call to action, spam words, my email looks like a newsletter, attachment, signature, HTML email, review campaign copy, roast my cold email.
outreach-campaign
Creates the campaign in Emelia and gets it launched: finds or creates the contact list, loads the contacts in bulk with their custom variables, creates the email or LinkedIn campaign, attaches the list so new contacts flow in automatically, sets the cadence, the sending window and the sending accounts, runs a pre-flight checklist (deliverability green, list verified, unsubscribe link present, every variable resolved, test email read), asks for an explicit yes, then starts it. Writes outreach/campaign.json with the real Emelia identifiers. Triggers on: campaign, launch, launch campaign, create campaign, start sending, send the sequence, go live, attach list, contact list, cadence, daily limit, sending accounts, identities, schedule, pre-flight, sequence steps, multichannel campaign.
outreach-deliverability
Audits the sending setup before a campaign goes out: SPF, DKIM, DMARC and MX records read with dig, domain and tracking domain age, warmup state per mailbox, blacklist and health flags from Emelia, safe daily volume per mailbox and a week by week ramp plan, mailbox rotation, and the content patterns that push a cold email into spam. Returns one verdict, READY, READY WITH LIMITS or BLOCKED, with the exact list of things to fix, and writes outreach/deliverability.md. This skill is a gate: it is expected to say no. Triggers on: deliverability, spam, SPF, DKIM, DMARC, DNS, warmup, warm up, sender reputation, bounce, blacklist, inbox placement, landing in spam, daily limit, sending volume, ramp up, tracking domain, mailbox rotation, email health.
outreach-enrich
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
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.
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.
outreach-find-phone
Find direct mobile numbers for the people on a lead list with Emelia's phone finder, from their LinkedIn profile URL, one at a time or in bulk. States the credit cost before spending, polls each job to completion, handles found and not found honestly, and writes the numbers into outreach/leads.csv and outreach/enrichment.json. Emelia does not place the calls: the number goes to your phone or your CRM. Triggers on: find phone, phone finder, find mobile, mobile number, direct dial, phone number, cell number, find the number of, phone enrichment, cold call list, get phone numbers.
outreach-icp
Turn a vague outbound brief such as 'sell our tool to SaaS companies' into a targeting spec that a data source can actually execute: job titles with their real per-country variants, industries with NAF, NAICS and SIC codes, headcount band, geography, technographics, buying signals, and the exclusions that keep customers, competitors and unpayable prospects out of the list. Estimates the addressable market with free count calls before a single credit is spent, and splits the brief into separate campaigns when it covers too many audiences. Reads a brief in plain language, writes outreach/icp.json. Triggers on: ICP, ideal customer profile, targeting, target audience, who should I target, define my market, segment, segmentation, persona, buyer persona, job titles, NAF code, NAICS, SIC, headcount, firmographics, technographics, buying signals, exclusion list, TAM, addressable market, market sizing.
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
outreach-offer
Turns what you sell into an offer a stranger would answer. Starts from a sentence you write, from your website (it reads the homepage, the pricing page, the service pages, the case studies, the about page and the blog titles with WebFetch and WebSearch) or from nothing at all. Names the category you are filed under, writes out the sentence every one of your competitors already uses, and runs the swap test: if a competitor can put their logo on your sentence without changing a word, that is a description of your trade and not an offer. Then applies the levers that make an offer specific (a narrow segment, a result with a number, a named mechanism, a deadline, risk reversal, an unusual format, a contrarian angle), and refuses to manufacture proof you do not have. Writes outreach/offer.md, ending in a paste ready block that fills the COMPANY_INFO placeholder of the per contact writing prompt. Triggers on: offer, my offer, value proposition, value prop, positioning, what do I sell, what we sell, USP, unique selli
outreach-personalize
Personalizes a sequence at scale without inventing anything. Handles both shapes: a personalized opening line inside written copy, and a whole message written per person and pushed into a custom variable. Decides what can genuinely vary row by row and what must stay a segment, ranks the sources (role and company, recent LinkedIn content, company news, technology used), writes AI variables with fallbacks that cannot break when the data is missing, refuses fabricated personalization, states what the generation costs and where it runs before starting it, and forces a quality review on a 20 row sample before generating the other thousand. Also covers spintax and when it actually helps. Produces the personalization columns in outreach/leads.csv with their source and date. Triggers on: personalize, personalization, personalisation, icebreaker, ice breaker, first line, AI variable, custom variable, merge tag, merge field, fallback, spintax, variables, mass personalization, personalization at scale, accroche, message
outreach-pilot
Guided first outbound campaign on exactly 100 contacts, with a numbered checkpoint at every step. Asks who you sell to, builds and cleans a small list, verifies every address, writes the sequence with you, gates on deliverability, launches only on an explicit yes, then reads the results at day 3, day 7 and day 14 and tells you whether to scale, rewrite the message or change the target. Use it for a first campaign, a new market, a new offer, or a sending domain that has never carried cold email. Triggers on: pilot, first campaign, getting started, test campaign, try outreach, small batch, 100 contacts, new market, guided setup, walkthrough, onboarding, dry run.
outreach-replies
Triage the replies your Emelia campaigns received, and only those: the API exposes a campaign activity feed and a reply endpoint, it has no endpoint that lists a mailbox, so this is campaign reply handling and not an inbox client. Paginates the activity feed, sorts every reply by intent (interested, meeting request, not now with the follow up date extracted, out of office with the stand in contact extracted, wrong person with the referral, unsubscribe, negative), drafts an answer in the sender's own voice, blacklists every opt out immediately, and lists the manual tasks waiting on a human. Writes outreach/replies.md with one block per contact and the exact call to send each answer. It prepares, you send. Triggers on: replies, reply handling, campaign replies, answer, respond, triage, inbox, out of office, unsubscribe, opt out, blacklist, not interested, meeting request, follow up date, wrong person, referral, manual task, bounce, response rate.
outreach-sequence
Designs the multichannel flow of a campaign, starting from one of Emelia's five real campaign templates (Pure Cold Email, Pure Linkedin basic, Pure Linkedin Premium with InMail, LinkedIn then Email, Email then LinkedIn) rather than from a blank tree, and picking the template mechanically from the email and LinkedIn coverage the enrichment actually produced. Then: which steps exist in Emelia (email, LinkedIn visit, invitation, message, InMail, manual call task), how conditions and branches work (invitation accepted, email bounced, link clicked, reply received, contact fields such as the email and the LinkedIn profile URL), the delays that work and why, a clean A/B test with a sample size that makes the result mean something, what goes in the body of an email step (the message or its custom variable, then the signature, then a real unsubscribe link from step 2 on), and the conditions that stop a contact or stop the campaign. Produces outreach/campaign.json, the spec that outreach-campaign turns into a real camp
outreach-verify
Verify the email addresses you brought yourself before you send to them: a CSV, an export from another tool, an old CRM extract, a contact base that has been sitting for a year. Sorts each address into send, drop or hold, detects catch-all domains with a control test, keeps the projected bounce rate under the threshold that protects sender reputation, and writes the verdicts into outreach/leads.csv and outreach/enrichment.json. Not for addresses Emelia's email finder returned, which come back verified already, so paying to check them again buys nothing. Triggers on: verify email, email verification, email verifier, check emails, validate emails, bounce rate, hard bounce, catch-all, clean my list, list hygiene, old list, stale contacts, deliverability check, is this email valid.
outreach-write
Writes the copy of a cold outreach sequence: the angle, the subject lines, the opening line, the proof, the ask, the follow-ups and the break-up. Picks between one message written per person and pushed into a custom variable, and two A/B variants that test genuinely different approaches. Prices the generation before it starts, because a thousand per contact messages do not fit in a Claude Code subscription. Holds two house prompts that write those per contact messages, one for email and a separate one for LinkedIn, where you do not sign, you end on a question, you drop the closing formula and you barely introduce yourself because the profile is one click away. Asks the four questions it needs first: the language, the formal or informal you for languages that make the distinction, the gender of the person signing because the grammar agrees in French and it is never guessed from a first name, and the rules for that language. Lays out the step body the way Emelia actually sends it: the message, then the signatur
Bio shown is the top-scored skill's repo description as a fallback — real GitHub bios land in a future update.