Email personalization
Skill vivekkhimani/gtm-tools-template/.agents/skills/email-personalization
Agent-first GTM operating manual template: positioning, lead pipeline, outreach, playbooks, investor materials + 22 agent skills
npx -y skills add vivekkhimani/gtm-tools-template --skill email-personalizationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Draft a 90-word personalized first-touch cold email for a [COMPANY] prospect. Takes one company row (from leads_scored.csv or leads_enriched.csv) plus an optional buying signal, and produces a draft that follows the v1 sequence pattern. Use when drafting Email 1 of the 4-touch sequence (outreach/sequence-v1.md). Also triggers on "draft outreach email", "write cold email", "personalize email for {company}".
SKILL.md
6.8 KB, as published. Nobody here has run it
Email personalization
Generate a personalized Email-1 cold outreach draft for a [COMPANY] ICP target, matching the v1 sequence pattern in outreach/sequence-v1.md.
When to use
- Drafting first-touch emails for the top tier (T1/T2) of
pipeline/leads/leads_scored.csv. - Re-drafting after a signal changes (new buying signal, leadership change, compliance event).
- NOT for follow-up emails (2, 3, 4) — those are thread replies with simpler templates already in the sequence doc.
Inputs
| Input | Required | Source |
|---|---|---|
| Company row | Yes | A single row from pipeline/leads/leads_scored.csv or leads_enriched.csv. At minimum: Company Name, Short Description, Keywords, Company Country, # Employees. |
| Recipient name + title | Yes | First name, title, ideally verified via Findymail/Hunter |
| Buying signal | Optional but recommended | One-sentence specific fact: <!-- TODO: 2–3 example signals for YOUR industry, e.g. "took delivery of new capacity in March 2026", "hired a [BUYER_TITLE] in February", "recent compliance finding in [GEO_PRIMARY]" --> |
| Angle | Optional | One of: [ANGLE_A], [ANGLE_B], [ANGLE_C]. Default: pick the one best-matched to the signal. <!-- TODO: name your 2–3 messaging angles --> |
Process
-
Read
positioning/messaging.md,positioning/ICP.md, andoutreach/sequence-v1.md. The skill must conform to the voice and structural conventions already defined there. Do not invent claims that aren't in messaging.md. -
Classify segment for the company (A/B/C per
ICP.md). If unclear, infer from Short Description + Keywords, but prefer to ASK rather than guess on segment. -
Choose angle. Pick the angle that maps to:
- The provided signal. <!-- TODO: map signal types → angles, e.g. a compliance event → [ANGLE_A] -->
- The segment (Segment A favors
[ANGLE_A]; Segment B favors[ANGLE_B]; Segment C favors[ANGLE_C]).
-
Generate signal sentence. This is the most important sentence — first line of the email. It must reference a specific, verifiable fact about the company. Source it from:
- The provided signal input (preferred).
- The Short Description column (less specific but better than nothing).
- A recent news snippet if web search is available.
- DO NOT make up a signal. If you don't have one, return an explicit "needs signal research" output instead of a fabricated email.
-
Draft. Follow the structure in
outreach/sequence-v1.mdEmail 1. Constraints:- 80–95 words in the body.
- First sentence is the signal reference + the pain hook.
- One proof point (citing the canonical traction: "[METRIC_DEPLOYMENTS] / [METRIC_USERS]" — or "replaced [INCUMBENT] at [ANCHOR_CUSTOMER]" if a switch-out proof lands harder for the segment).
- One soft CTA ("worth a 15-min call?").
- Plain text, no HTML, no formatting.
- Lowercase, no exclamation marks, no "Hope this finds you well" or similar dead opens.
-
Subject line. Generate 3 candidate subject lines following the patterns in
outreach/sequence-v1.md. ≤8 words. Lowercase. No question marks at the end unless it's a real question. Reference a specific token (a product/category term, company name, role) — don't go generic. -
Output as YAML so it slots cleanly into Smartlead/Instantly imports:
to: {recipient_email}
recipient_name: {FirstName} {LastName}
recipient_title: {Title}
company: {Company}
segment: {A|B|C}
angle: {[ANGLE_A]|[ANGLE_B]|[ANGLE_C]}
signal_used: "{one-sentence signal}"
subject_options:
- {subject 1}
- {subject 2}
- {subject 3}
body: |
Hi {FirstName},
{body 80–95 words}
— [FOUNDER]
[DOMAIN] · [CALENDLY]
qc_checks:
word_count: {N}
has_signal: true|false
has_one_cta: true|false
no_banned_phrases: true|false # checks "hope this finds you", "circling back", "just checking in", "synergy", "leverage", "solution", "platform"
Banned phrases (never use)
- "Hope this finds you well"
- "Just checking in"
- "Circling back"
- "Touching base"
- "Synergy", "leverage", "solution" (as nouns), "platform" (generic)
- "10x", "best-in-class", "world-class"
- "I noticed you on LinkedIn..." (we are not on LinkedIn for this audience)
- Any subject line that's only "{Company}" with no other context
Voice constraints
- Use specific [INDUSTRY] terms when they fit. <!-- TODO: list the concrete vocabulary your buyer uses — product/category terms, regulation/standard codes, equipment, certifications — so drafts sound native, not like generic SaaS copy. -->
- The reader is a [INDUSTRY] operator, not a SaaS buyer. Match their register.
- Honest claims only — canonical traction is [METRIC_DEPLOYMENTS], [METRIC_USERS], [METRIC_COMPLETION], anchor customer [ANCHOR_CUSTOMER] with the incumbent replaced (name them only if cleared for external use). Don't inflate beyond these. Keep the wedge framing in cold email (the budgeted entry pain) — do NOT cold-open with "[PRODUCT_ONELINER]"; "platform" stays a banned generic noun here.
Failure modes (return explicitly rather than fake it)
- No signal available: return
status: needs-signal-researchwith a list of 3–5 specific signal queries to run. <!-- TODO: example queries for YOUR industry's data sources --> - Segment ambiguous: return
status: needs-segment-decisionwith two interpretations and your recommendation. - Recipient title doesn't match [COMPANY]'s buyer personas: return
status: wrong-personawith a recommended persona to find instead.
Example invocation
Draft an Email-1 for [TARGET_COMPANY] (row in leads_scored.csv) targeting their [BUYER_TITLE]. Signal: <!-- TODO: a specific, verifiable fact, e.g. "they were quoted in [TRADE_PRESS] last month about [a pain in your space]". -->
Expected output: a YAML block as specified above, with the angle matched to the signal, 3 subject candidates, and a body that opens with the signal reference.
Integration
This skill is invoked manually per email during the first weeks (we want human review of every draft). Once you've shipped ~50 drafts and feel confident the voice is right, wrap it in scripts/draft_emails.py to batch-process the top 20 weekly.
Track each draft in outreach/drafts/_template/{company-slug}.yaml (copy _TEMPLATE.yaml per prospect). Drafts are .gitignored if they include recipient emails; the templates without recipient emails are fine to commit for voice tuning.