outreach-personalizelisted
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