← ClaudeAtlas

outreach-personalizelisted

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
emelia-io/claude-outreach · ★ 15 · AI & Automation · score 81
Install: claude install-skill emelia-io/claude-outreach
# Personalize at scale ## What this does Fills the per contact parts of a sequence: the icebreaker sentence, the cleaned company name, the whole message when the campaign is written one person at a time, and any other custom variable the copy uses. It writes those columns into `outreach/leads.csv` with the source and the date behind each one, so every sentence you send can be traced back to something somebody actually read. ## When to use it Use it after the copy exists and before the campaign is built, because the copy tells you which variables are needed and the coverage tells you whether the copy can use them. Use it again when a list ages and the icebreakers no longer match reality. Use a different skill when: you are writing the sentences of the sequence itself ([outreach-write](../outreach-write/SKILL.md)), splitting a list into segments (`outreach-filter`), or finding emails and phone numbers (`outreach-enrich`). ## Inputs | Input | Where it comes from | If it is missing | |---|---|---| | The list | `outreach/leads.csv`, one row per contact | Stop, there is nothing to personalize | | The mode | `outreach/sequence.md` header line `Mode:` | Ask. A means a whole message per person, B means two variants and only small variables | | The variables the copy uses | `outreach/sequence.md` header line `Variables used:` | Read the `{{...}}` tokens out of the body | | Source material per row | LinkedIn URL, company website, news, job posts already in the list | Leave the ro