Outreach Personalization Skill

The Outreach Personalization Skill takes any contact — a name and company, an email, or a LinkedIn URL — verifies their current profile via the Lusha in Claude connector, checks for live buying signals at their account, and writes a first message that couldn’t have been sent to anyone else. Not a template with a first name swapped in. A message built around a specific signal, a specific role, and a specific moment at a specific company.

The difference between a message that gets a reply and one that gets ignored is almost always specificity. A rep who references a VP of Sales’s new role, their company’s recent hiring surge, and a relevant customer outcome in a similar position will get a response rate that a rep sending the same template to 500 contacts will never match. The problem is that level of personalization has always taken 20 minutes per contact. This skill does it in seconds — because the research, the verification, and the writing happen in one pass.

The skill writes one message per contact: a subject line, a body under 120 words, and a single low-friction call to action. If stacked signals are present at the account, the strongest one leads. If the contact is a recent hire, the message opens with the new role. If a funding event just closed, the message opens with the round. The signal determines the opening. The product determines the relevance. The contact determines the tone.

What it does

  • Contact verification — Confirms the contact is still in seat, their current title, and their tenure before writing a word. If the contact has departed, flags it immediately rather than writing a message that will bounce or land with the wrong person.
  • Live signal pull — Checks for buying signals at the account right now — executive moves, funding events, hiring surges, intent spikes — and uses the strongest one as the opening hook. No signal means no forced hook — the message leads with the contact’s role and a relevant outcome instead.
  • Seniority-calibrated tone — C-suite messages are shorter, more direct, and lead with business outcomes. VP and director messages are peer-to-peer and lead with the specific signal. Manager-level messages lead with the problem and the practical fix.
  • Single strong CTA — Every message ends with one ask. Not “let me know if you’d like to connect” — a specific, low-friction request tied to the signal and the outcome. A 20-minute call. A specific question. A relevant resource worth reading before a decision gets made.
  • Batch mode — Pass a list of contacts and the skill processes each one individually, returning a personalized message per contact rather than a single template applied to all of them.

Use cases

First touch on a signal-triggered prospect

A signal just fired at a target account. You have the contact. You need the message. Run the skill with the contact identifier and the signal as context — it verifies the contact, confirms the signal, and writes the first message in one pass. No tab-switching, no research, no template filling.

Personalizing a list before a sequence

You have a list of 20 accounts ready to enter a sequence. Instead of sending them all into the same step one, run the skill on each contact to generate a personalized opening message. The sequence handles steps two through five. Step one is the one that determines whether there is a step two.

Re-engagement after a signal change

A contact you’ve reached out to before just got promoted, changed companies, or had a funding event at their account. The previous outreach didn’t land — but the context has changed. Run the skill with the new signal as context and it writes a message that acknowledges the change without referencing the previous attempt.

Skill definition

---
name: outreach-personalization-skill
description: >
  Write a personalized first message for any contact.
  Verifies the contact via Lusha, pulls live account
  signals, and writes a message grounded in what's
  actually happening at their company right now.
  One contact or a list — one verified, personalized
  message per contact. Never a template.
connectors:
  required: lusha
campus_url: https://www.lusha.com/campus/plays/outreach-personalization-skill/
category: Skills
---

# Outreach Personalization Skill

Write a personalized first message grounded in verified
contact data and live account signals. Verify first.
Write second. Never use a template. Never send to a
contact who has departed.

## Input

The user will provide via $ARGUMENTS:

- Contact: name and company, email, or LinkedIn URL
  (one contact or a list of up to 20)
- What you sell: one sentence — product and the
  problem it solves
- Signal: [optional] — if the user knows the trigger
  event, pass it here. If not, the skill finds it.
- Target outcome: [optional] — default is
  "book a discovery call"
- Tone: [optional] — direct / conversational / formal
  Default is calibrated by seniority automatically.

If contact is missing, ask once.
If what you sell is missing, ask once.
For a list, process each contact individually.
Never write a message before verifying the contact.

## Workflow

1. CONTACT VERIFICATION
   Resolve and verify each contact via Lusha:
   - Current title and company confirmed
   - Tenure in current role
   - Verified email address
   - Seniority level: C-suite / VP / Director /
     Manager / IC
   - Flag departed contacts — do not write message,
     ask user for updated contact
   - Flag title changes — adjust message angle
     to reflect new role

2. SIGNAL PULL
   For each verified contact, check for live signals
   at their account:
   - Executive moves in last 30 days
   - Funding events in last 90 days
   - Hiring surges in target function
   - Intent signals above score 60
   - Tech stack changes relevant to product
   - Rank signals by strength and recency
   - If no signals found: note it and proceed
     with role and tenure as the hook instead

3. HOOK SELECTION
   Select the strongest opening hook:
   - Priority 1: stacked signals — multiple events
     at same account create urgency
   - Priority 2: single strong signal — specific,
     time-stamped, tied to the contact's role
   - Priority 3: recent hire — tenure under 6 months
     creates a natural opening
   - Priority 4: role and relevance — no signal but
     strong ICP fit and relevant outcome to reference

4. TONE CALIBRATION
   Calibrate message tone by seniority:
   - C-suite: under 80 words, outcome-first,
     no product features, one direct ask
   - VP: under 100 words, peer-to-peer, signal-led,
     one specific ask
   - Director / Manager: under 120 words,
     problem-led, practical, one low-friction ask
   - Override with user-specified tone if provided

5. WRITE THE MESSAGE
   For each contact:
   - Subject line: specific, references signal or
     account where possible, under 8 words
   - Body: opens with the hook, connects to a
     relevant outcome, closes with one ask
   - CTA: specific and low-friction — not
     "let me know if interested"
   - Under 120 words total for body copy

6. BATCH OUTPUT
   For a list of contacts, return each message
   individually — do not aggregate or average.
   Flag any contacts that could not be verified
   separately at the end.

7. PRIVACY RULES
   - Mask contact name to initials in output
   - Show email domain only: j.k@[company].com
   - Mask phone if shown: +1 415 555 ••••
   - Tag: Contact confirmed live via Lusha
     connector, [date]

## Output Format — single contact

### Contact verified

| Field | Value |
|---|---|
| Name | [initials] |
| Title | |
| Tenure | |
| Seniority | |
| Company | |
| Verified email | [domain only] |
| Status | Active / Departed / Title changed |

Contact confirmed live via Lusha connector, [date]

---

### Signal used

| Signal | Type | Score | Date |
|---|---|---|---|

Hook selected: [signal / recent hire / role and
relevance]

---

### Message

Subject: [subject line]

[body copy]

[CTA]

---

Word count: [X] words
Tone: [direct / conversational / formal]
Hook: [what the opening is based on]

---

## Output Format — batch

Return individual message blocks for each contact
in the same format as above.

After all messages, return a summary table:

| Contact | Company | Signal used | Hook type | Status |
|---|---|---|---|---|

Flag unverified or departed contacts separately:

Contacts not messaged:
- [Contact] at [Company] — [reason: departed /
  not found in Lusha / title changed]
  Recommended action: [find new contact /
  verify manually / skip]

How to use this skill

The skill definition above is the instruction set Claude uses to run this workflow.

Here’s how to put it to work:

Option 1 — Claude Project (recommended)

Create a new Claude Project, paste the full skill definition into the Project Instructions field, and connect the Lusha in Claude connector. Every conversation in that Project runs the skill automatically — no need to paste the instructions again. Name the Project “Outreach Personalization” and it’s available from your Project list every time you need it.

Option 2 — Claude Code

Save the skill definition as outreach-personalization-skill.md in your Claude Code skills folder. Claude Code picks it up automatically and the skill is available in any agentic workflow you build on top of it.

Option 3 — One-off session

Paste the full skill definition at the start of any Claude conversation, connect Lusha in Claude, and run it immediately. Use this for a one-off personalization pass before a specific outreach campaign — no setup required.

Running the skill

Once installed, give Claude one of these inputs and it runs the full workflow:

  • A single contact: Personalize outreach for [Name] at [Company]. I sell [product]. Target outcome: discovery call.
  • A list: Personalize outreach for this list. I sell [product]. followed by a list of names and companies.
  • With a known signal: Personalize outreach for [Name] at [Company]. Signal: Series B just closed. I sell [product].
Built by: Lusha
Tools: Claude, Lusha
Type: Skill

FAQ

  • How is this different from the Sequence Writer Skill?

    The Sequence Writer Skill takes a trigger event and writes a complete multi-step sequence — up to five emails with subject lines, body copy, send cadence, and a structured arc from opening to close. This skill writes one message: the best possible first touch for a specific contact grounded in verified data and live signals. Use this skill when you need step one to be as strong as it can be before it enters a sequence. Use the Sequence Writer Skill when you need the full sequence built around a trigger event from the start.

  • What if there are no signals at the account?

    The skill notes the absence of signals and falls back to the contact’s role and tenure as the opening hook. A VP of Sales who joined eight months ago and is building their team is a relevant opening even without a named signal — the hook becomes the role, the growth stage of the company, and a relevant customer outcome. The message is still personalized and still grounded in verified data. It just doesn’t have a named event to lead with. If you want to find a signal before writing the message, run the Find ICP-fit accounts showing intent right now play first.

  • How many contacts can I process in batch mode?

    Up to 20 contacts in a single session. For larger lists, split them into batches of 20 and run sequentially. Each contact gets a fully individual message — the skill doesn’t apply a template and swap names, it runs the full verification and signal check for each contact independently. For very large lists where individual personalization isn’t the priority, the Clean a Contact List Before a Campaign play handles verification and enrichment at scale before the messages are written.

  • Can I specify the product angle I want to lead with?

    Yes — pass it as additional context in the input. “I sell prospecting data. Lead with the SDR scaling angle, not the data quality angle” gives the skill a specific frame to work within. The signal and contact still determine the opening hook, but the product relevance is shaped by the angle you specify. If no angle is specified, the skill selects the most relevant one based on the signal type and the contact’s function.

  • Does the skill work for LinkedIn messages and calls, not just email?

    Yes — pass the format as part of the input. “Write a LinkedIn connection request” or “Write a cold call opening line” gives the skill the format constraint it needs to calibrate length and tone accordingly. LinkedIn messages run under 300 characters for connection requests and under 200 words for InMails. Cold call opening lines return a single sentence — the hook — plus a follow-up question to keep the conversation going. The verification and signal check runs the same way regardless of format.

Ready to run this?

Connect once, run anywhere. Works in Claude, ChatGPT, n8n, Clay, or any agent connected to Lusha.