Outreach
The other skills end at "found the contact, here's the email". This one writes
the message — and its value is that the message rides a specific, dated fact you
already collected, not a generic template every competitor also sends.
The rule behind everything: could this exact message be sent to another
company? Yes → generic, rewrite or don't send. No → ready. This "mental test"
is the skill's core; run it literally on every draft.
Step 0 — the offer (once per user, before any draft)
The message has three slots: [their detail] — [your offer, one line] — [question].
The middle slot is about the SENDER, and no other skill in the pack knows it.
Establish it once and reuse:
- what you sell, in one plain line;
- one number that matters (a price, a metric) — optional but strong;
- 1–2 proof points (a named customer, a hard figure) for touches 3–4;
- words to avoid (competitor names in touch 1, internal jargon).
Ask the user if it isn't already saved. Store it next to the CRM profile
(~/.claude/skills/anysite-crm-profile/) so future sessions skip the question.
(Do not import anysite's own pitch — "$1 per 1k", "don't mention LinkedIn" are
that internal playbook's rules, not yours; see the gold examples file only for
STYLE, not content.)
Where the detail comes from — and it must be fresh
You already have these from the sourcing/signal skills. A detail without a date
is not a detail — stale facts are worse than none ("congrats on the round" about a
2021 raise reads as a bot). Freshness gates:
| Source skill |
Detail |
Fresh if |
anysite-crm-champions |
job change / were your champion at |
≤180 days |
anysite-crm-signals |
funding round, exec hire, hiring surge, layoff, news |
≤90 days, and DATED |
anysite-crm-competitor-intel |
uses + a pain from its reviews |
pain quote is timeless; usage claim must be PROVEN |
anysite-crm-account-brief / anysite-people-sourcing |
a recent post/comment, a stated priority |
post ≤30 days |
anysite-company-sourcing |
homepage quote, product name, a specific metric |
timeless |
Two traps proven on live data:
secondary_market / post_ipo funding rows are NOT a raise — don't
congratulate. Take the newest row whose type is a real round AND whose amount is
non-null AND whose date is within the gate. (Fireflies' newest funding_rounds
row was a 2025 secondary with money_raised_usd: null; the real raise was 2021.)
- Competitor usage from technographics is a SAMPLE, not proof. Claim "you use
X" only with direct evidence (their job post requiring it, their review, a case
study). Otherwise phrase as a hypothesis or drop it.
No fresh, specific detail → do NOT manufacture one. Manufactured insight reads
as mansplaining. Either ask the user for a category angle to use as a plainly
generic template, or mark the lead "weak data, skip" and say so. (There is no
built-in template library — don't promise one.)
The formula (first touch)
[one detail about THEM] — [your offer, one line] — [one simple question]?
Constraints (violate none):
- ≤2 sentences, ~25–40 words. Five seconds to read. This holds for enterprise
too — short cold copy converts on every segment.
- One detail — but a detail can be a single COMPOUND thesis built from a few
facts (anchor + competitor + pain is ONE displacement angle, not three details;
it passes the mental test precisely because the combination is non-transferable).
- One number of YOURS. A number inside the detail ("across 4 channels", "back
after 5 years") doesn't count against this — it's theirs.
- End on a question, not a CTA. "worth a look?" / "open to a test?"
- Plain language. No analyst-speak, no sycophancy ("you say X — agreed"), no
"Saw…/I noticed…" openers (mass-mail tell).
Modulate by seniority (ATL vs BTL)
search_sql_users returns seniority — use it. To a CXO/VP, the offer line is a
business outcome or risk ("keeps data cost invisible as you scale"); to an IC/
manager, it's the workflow specifics they own ("fresh records into your sequence
without the monthly credit cliff"). Same detail, different value slot. This is the
highest-leverage upgrade over a one-size message.
Channel differences
- Email: give 2–3 subject options (2–4 words, lower-case, the detail itself —
"your series b", "stale lists" — never the pitch; run the mental test on the
subject too). But opens follow the subject while REPLIES follow the first line —
make the first line carry the detail, not a greeting. Deliverability today is
domain reputation + SPF/DKIM/DMARC + warmup, not word-filters — so the real
advice is "confirm domain auth and warmup" and "keep trigger words ('free',
'guarantee') out of the SUBJECT and avoid links in touch 1". Legal: cold
commercial email needs a working opt-out, sender identity and a physical address
(CAN-SPAM; EU/UK also a legitimate-interest basis) — the unsubscribe line sits
OUTSIDE the 25–40 word count.
- LinkedIn DM: lower-case start, no subject, and don't write the word
"linkedin" in the body (moderation). Even tighter.
Email address gate
Send only to a WORK email confirmed against the person's CURRENT company domain.
Note which cascade step it came from (anysite-mcp → Email finding): only step 2
(user_find_email_by_url) returns valid_email/email_status; step 1
(user_email) has no validation and its found is always true — treat step-1
addresses as unverified (send at own risk or run them through step 2 first).
The sequence (4 touches, one idea each)
| # |
Job |
Length |
Contents |
| 1 Hook |
catch them with the detail |
25–40 w |
detail + offer line + simple question |
| 2 Math/Fit |
the value in THEIR numbers |
30–45 w |
their scale × the stakes + "worth comparing?" |
| 3 Proof |
one proof point |
30–50 w |
a named customer + one figure + soft CTA |
| 4 Break-up |
close, door open |
20–30 w |
"no worries" + a low-friction offer if ever useful |
Incentives (a trial, a credit grant) belong in touch 3–4, never touch 1.
Voice-of-customer: quote, don't paraphrase
When anysite-crm-competitor-intel has a verbatim review line, use it verbatim —
a real "after your credits are gone it's a brick tool" beats any paraphrase. Keep
the source; never invent a quote.
Self-check before it ships (all must pass)
Fail one → rewrite. Deterministic, ported from the validate_hook discipline.
Boundaries & routing
- Cold only, drafts only. For an inbound lead or a live thread, answer the
question and offer a slot — don't apply this formula;
anysite-crm-inbound
scopes the inbound case. This skill produces text; the operator sends.
- Supersedes the ad-hoc outreach lines in
anysite-lead-generation and
anysite-vc-analyst — when the task is "write the cold message", use this skill's
rules, not theirs.
- Storing the copy:
anysite-crm-* can write it to a mapped field (e.g.
hook_text) via the profile — dry-run first, per the Writing rules.
- Style reference (gold examples + four failure modes):
sales_agent/anysite_hook_style_guide.md — for STYLE, not for anysite's offer.
1---2name: anysite-outreach3description: Write COLD first-touch and follow-up outreach (email, LinkedIn DM) grounded in a real, dated detail collected by the other anysite skills - a funding round, a job change, a recent post, a competitor switch. Not generic personalization. Turns "we found the contact" into "here's the message". Use when the user wants to draft cold outreach, a first-touch email/DM, a follow-up sequence, or subject lines - "напиши письмо", "cold email", "аутрич", "холодное сообщение". NOT for replying to an inbound lead or an existing thread (that needs a real answer, not this cold formula - see anysite-crm-inbound). Drafts text only; the operator sends via their own tool.4---56# Outreach78The other skills end at "found the contact, here's the email". This one writes9the message — and its value is that the message rides a **specific, dated fact you10already collected**, not a generic template every competitor also sends.1112The rule behind everything: **could this exact message be sent to another13company?** Yes → generic, rewrite or don't send. No → ready. This "mental test"14is the skill's core; run it literally on every draft.1516## Step 0 — the offer (once per user, before any draft)1718The message has three slots: `[their detail] — [your offer, one line] — [question]`.19The middle slot is about the SENDER, and no other skill in the pack knows it.20Establish it once and reuse:2122- what you sell, in one plain line;23- one number that matters (a price, a metric) — optional but strong;24- 1–2 proof points (a named customer, a hard figure) for touches 3–4;25- words to avoid (competitor names in touch 1, internal jargon).2627Ask the user if it isn't already saved. Store it next to the CRM profile28(`~/.claude/skills/anysite-crm-profile/`) so future sessions skip the question.29(Do not import anysite's own pitch — "$1 per 1k", "don't mention LinkedIn" are30that internal playbook's rules, not yours; see the gold examples file only for31STYLE, not content.)3233## Where the detail comes from — and it must be fresh3435You already have these from the sourcing/signal skills. A detail without a date36is not a detail — stale facts are worse than none ("congrats on the round" about a372021 raise reads as a bot). Freshness gates:3839| Source skill | Detail | Fresh if |40|---|---|---|41| `anysite-crm-champions` | job change / were your champion at <old co> | ≤180 days |42| `anysite-crm-signals` | funding round, exec hire, hiring surge, layoff, news | ≤90 days, and DATED |43| `anysite-crm-competitor-intel` | uses <competitor> + a pain from its reviews | pain quote is timeless; usage claim must be PROVEN |44| `anysite-crm-account-brief` / `anysite-people-sourcing` | a recent post/comment, a stated priority | post ≤30 days |45| `anysite-company-sourcing` | homepage quote, product name, a specific metric | timeless |4647Two traps proven on live data:48- **`secondary_market` / `post_ipo` funding rows are NOT a raise** — don't49 congratulate. Take the newest row whose type is a real round AND whose amount is50 non-null AND whose date is within the gate. (Fireflies' newest `funding_rounds`51 row was a 2025 secondary with `money_raised_usd: null`; the real raise was 2021.)52- **Competitor usage from technographics is a SAMPLE, not proof.** Claim "you use53 X" only with direct evidence (their job post requiring it, their review, a case54 study). Otherwise phrase as a hypothesis or drop it.5556**No fresh, specific detail → do NOT manufacture one.** Manufactured insight reads57as mansplaining. Either ask the user for a category angle to use as a plainly58generic template, or mark the lead "weak data, skip" and say so. (There is no59built-in template library — don't promise one.)6061## The formula (first touch)6263```64[one detail about THEM] — [your offer, one line] — [one simple question]?65```6667Constraints (violate none):68- **≤2 sentences, ~25–40 words.** Five seconds to read. This holds for enterprise69 too — short cold copy converts on every segment.70- **One detail** — but a detail can be a single COMPOUND thesis built from a few71 facts (anchor + competitor + pain is ONE displacement angle, not three details;72 it passes the mental test precisely because the combination is non-transferable).73- **One number of YOURS.** A number inside the detail ("across 4 channels", "back74 after 5 years") doesn't count against this — it's theirs.75- **End on a question, not a CTA.** "worth a look?" / "open to a test?"76- **Plain language.** No analyst-speak, no sycophancy ("you say X — agreed"), no77 "Saw…/I noticed…" openers (mass-mail tell).7879## Modulate by seniority (ATL vs BTL)8081`search_sql_users` returns `seniority` — use it. To a CXO/VP, the offer line is a82business outcome or risk ("keeps data cost invisible as you scale"); to an IC/83manager, it's the workflow specifics they own ("fresh records into your sequence84without the monthly credit cliff"). Same detail, different value slot. This is the85highest-leverage upgrade over a one-size message.8687## Channel differences8889- **Email:** give 2–3 subject options (2–4 words, lower-case, the detail itself —90 "your series b", "stale lists" — never the pitch; run the mental test on the91 subject too). But opens follow the subject while REPLIES follow the first line —92 make the first line carry the detail, not a greeting. Deliverability today is93 domain reputation + SPF/DKIM/DMARC + warmup, not word-filters — so the real94 advice is "confirm domain auth and warmup" and "keep trigger words ('free',95 'guarantee') out of the SUBJECT and avoid links in touch 1". Legal: cold96 commercial email needs a working opt-out, sender identity and a physical address97 (CAN-SPAM; EU/UK also a legitimate-interest basis) — the unsubscribe line sits98 OUTSIDE the 25–40 word count.99- **LinkedIn DM:** lower-case start, no subject, and don't write the word100 "linkedin" in the body (moderation). Even tighter.101102## Email address gate103104Send only to a WORK email confirmed against the person's CURRENT company domain.105Note which cascade step it came from (`anysite-mcp` → Email finding): only step 2106(`user_find_email_by_url`) returns `valid_email`/`email_status`; step 1107(`user_email`) has no validation and its `found` is always true — treat step-1108addresses as unverified (send at own risk or run them through step 2 first).109110## The sequence (4 touches, one idea each)111112| # | Job | Length | Contents |113|---|---|---|---|114| 1 Hook | catch them with the detail | 25–40 w | detail + offer line + simple question |115| 2 Math/Fit | the value in THEIR numbers | 30–45 w | their scale × the stakes + "worth comparing?" |116| 3 Proof | one proof point | 30–50 w | a named customer + one figure + soft CTA |117| 4 Break-up | close, door open | 20–30 w | "no worries" + a low-friction offer if ever useful |118119Incentives (a trial, a credit grant) belong in touch 3–4, never touch 1.120121## Voice-of-customer: quote, don't paraphrase122123When `anysite-crm-competitor-intel` has a verbatim review line, use it verbatim —124a real "after your credits are gone it's a brick tool" beats any paraphrase. Keep125the source; never invent a quote.126127## Self-check before it ships (all must pass)128129- [ ] One detail (or one compound thesis), concrete AND dated within its gate.130- [ ] Mental test passes on the body AND the subject.131- [ ] One number of yours (a number inside the detail is fine). Ends on a132 question. ≤2 sentences.133- [ ] No "Saw…", no analyst-speak, no forced agreement.134- [ ] Offer line matches the recipient's seniority.135- [ ] Email: 2–3 subjects, first line carries the detail, opt-out present (uncounted),136 address is a domain-matched work email (step-2 validated, or flagged unverified).137- [ ] DM: lower-case, no "linkedin" in the body.138- [ ] Nothing invented — every claim traces to dated collected data; competitor139 usage only if directly proven.140141Fail one → rewrite. Deterministic, ported from the `validate_hook` discipline.142143## Boundaries & routing144145- **Cold only, drafts only.** For an inbound lead or a live thread, answer the146 question and offer a slot — don't apply this formula; `anysite-crm-inbound`147 scopes the inbound case. This skill produces text; the operator sends.148- Supersedes the ad-hoc outreach lines in `anysite-lead-generation` and149 `anysite-vc-analyst` — when the task is "write the cold message", use this skill's150 rules, not theirs.151- Storing the copy: `anysite-crm-*` can write it to a mapped field (e.g.152 `hook_text`) via the profile — dry-run first, per the Writing rules.153- Style reference (gold examples + four failure modes):154 `sales_agent/anysite_hook_style_guide.md` — for STYLE, not for anysite's offer.