write-outreach
Write personalised cold outreach — email and LinkedIn — using Saber signal results and contact data as personalisation context.
Stage: Outreach
Write Outreach
Use this skill to write a personalised cold email or LinkedIn message for a specific contact, using Saber signal results (company-level and contact-level) as the personalisation engine.
Goal
Produce 1–3 outreach variants (cold email, LinkedIn connection request, LinkedIn InMail) that reference specific, timely signals rather than generic opener lines.
Step 1 — Gather contact context
Ask for or confirm from conversation context:
- Contact name and title
- Company name and domain
- LinkedIn URL (if available — needed for contact-level signals)
- Your name and company (the sender)
Step 2 — Pull signal data from Saber
Signal results are the personalisation fuel. Pull as much as is available.
If the Saber CLI is available (saber --help works):
Company-level signals — check for existing subscription results for this domain:
saber subscription list
saber subscription get <subscriptionId> # for any subscription covering this companyIf no results exist for this company, offer to run a quick spot-check:
saber signal --domain <domain> --question "<question>" --answer-type booleanSuggested spot-check questions if no signals are pre-defined:
- "Is this company actively hiring in sales or revenue roles?"
- "Has this company raised funding in the last 12 months?"
- "Is this company expanding into new markets or geographies?"
Contact-level signals — if a LinkedIn URL is available:
saber signal --profile <linkedin-url> --question "Is this person posting about [relevant topic]?"
saber signal --profile <linkedin-url> --question "Has this person recently changed roles or been promoted?"If the Saber CLI is not available: ask the user to share any signal results they have, or describe what they know about the contact and company. Proceed with whatever context is available.
Step 3 — Identify the best personalisation angle
From the signal results and context, pick the strongest hook — the one most likely to resonate with this specific contact. Prioritise:
- Recent, specific events (funding, launch, hiring surge, leadership change) — shows you did your homework
- Role-specific pain (their title implies a problem; signals confirm it) — shows relevance
- Contact's own words (if contact-level signals show recent posts or activity) — most personal
Avoid generic openers like "I noticed you're growing fast" unless signals specifically confirm growth.
Step 4 — Confirm value prop and ask
Before writing, confirm:
- What outcome does the sender want from this message? (book a call, get a reply, share a resource)
- What's the core value prop in one sentence?
If this is already clear from conversation context (e.g. previous signal-discovery run), use it directly.
Step 5 — Write the outreach
Write all three variants using the chosen personalisation angle:
Cold email
- Subject line: specific, not clever — reference the signal hook
- Opening line: the personalisation hook (1 sentence, no fluff)
- Value prop: what you do and why it's relevant to them right now (2–3 sentences)
- CTA: one clear, low-friction ask (reply, 15-min call, a specific question)
- Length: under 120 words in the body
LinkedIn connection request (300 chars max)
- Lead with the personalisation hook
- One-line value prop
- No hard CTA — the connection itself is the ask
LinkedIn InMail
- Similar structure to the cold email but slightly warmer tone
- Can be slightly longer (150 words) given the LinkedIn context
Step 6 — Present variants and offer to adjust
Show all three variants clearly labelled. Ask:
- Which angle feels most accurate to the contact's situation?
- Does the value prop feel right?
- Offer to write 2–3 subject line alternatives for the email
Notes on quality
- Never fabricate signal data — only reference what was actually returned
- If a signal came back negative or ambiguous, don't use it as a hook
- The best outreach sounds like it was written by someone who actually read the signals, not generated by AI