---
description: Networking Outreach — drafts warm intros, cold DMs, recruiter responses, post-interview follow-ups. Voice-strict (Tier 4 Opus). Hard caps on length per channel. Anti-AI-tells gates. Triggered by 'draft a DM to [person]', 'reach out to [person]', 'recruiter responded — what do I say', '/outreach'.
---

# personal-networking-outreach

Outreach is voice-sensitive future-employer-content. **Tier 4 in main session.**

The bar is brutal: most networking DMs read AI-generated within the first sentence, get archived, never replied to. The discipline below targets that.

## Trigger phrases

- "Draft a DM to [name] at [company]"
- "Reach out to [name]"
- "[Recruiter] responded — what do I say"
- "Cold message to [name]"
- "Warm intro draft for [name] via [mutual]"
- `/outreach [scenario]`

## Outreach types & hard caps

| Type | Max words | Channel | Voice tolerance |
| --- | --- | --- | --- |
| Cold LinkedIn DM (recruiter to senior leader) | 75 | LinkedIn | Zero AI-tells |
| Cold LinkedIn DM (peer to peer) | 60 | LinkedIn | Conversational, low-stakes |
| Warm intro request (asking mutual to connect you) | 100 | Email/Slack | Specific, easy yes |
| Warm intro acceptance (replying after intro made) | 80 | Email | Gracious, forward-momentum |
| Recruiter response (initial) | 90 | Email/LinkedIn | Professional, qualifying |
| Post-interview follow-up | 120 | Email | Specific to conversation |
| Post-application status check | 60 | Email | Light, not pushy |
| Re-engage cold contact (>3mo silence) | 80 | LinkedIn/Email | Acknowledge silence, give before asking |

## Inputs

- Recipient name + role + company + (if known) prior interaction context
- The ask (job referral / coffee chat / informational interview / status update)
- `~/.career/voice-profile.md`
- `~/.career/companies/{slug}/brief.md` (if relevant company)
- Any prior thread context (Josh pastes or it's pulled from email if MCP available)

## Process

### Stage 1 — Context check (Tier 2 sub-agent if recipient has public signal)

If the recipient is publicly visible, delegate `research`: pull their LinkedIn (via stickerdaniel/linkedin-mcp-server if installed), recent posts, prior roles. Returns ≤200 tokens.

What we want: 1 specific thing that makes the message NOT generic.

### Stage 2 — Draft (Tier 4 main, Opus)

Apply the type's hard cap. Use the structure for that type.

**Universal rules across all types:**

1. **First sentence is earned.** NEVER:
   - "I hope this message finds you well"
   - "I came across your profile and..."
   - "I'd love to connect"
   - "I'm reaching out because..."

   YES:
   - Reference the specific thing (their post / their role move / the mutual connection / the JD)
   - Or skip the preamble entirely and open with the ask

2. **The ask is specific and easy to say yes to.** "Would love to chat about your career sometime" is dead. "Would you be open to a 15-minute call about how Acme is approaching X — happy to work around your calendar" is alive.

3. **No flattery.** "Your impressive career" / "your incredible journey" — kill it.

4. **No AI clichés.** Run the cliché grep before output: leverage, synergy, passionate, dynamic, results-driven, ecosystem, holistic, robust, journey, navigate.

5. **Em-dash count = 0.** Literal grep before output.

6. **Personal-pronoun ratio under 50% sentence-start "I"s.**

### Stage 3 — Voice smell test (mandatory)

Run all checks before output. Any failure = redraft. Don't show Josh a draft that fails.

### Stage 4 — Output

Format:

```markdown
**Outreach draft** for [Recipient] — [Type]

**Word count:** [N] / [cap]
**Voice Smell Test:** all green

**Channel:** [LinkedIn / Email]
**Subject** (if email): [...]

---
[the message]
---

**Voice profile applied:** v[N]
**Specific reference used:** [what — the thing that makes this not generic]

**Open questions:**
- [Anything Josh should sanity-check before sending]

**Suggested send time:** [Tuesday-Thursday 9-11am their TZ for cold; immediately for warm response]
```

## Pre-publish gate (mandatory)

Networking DMs go to senior contacts whose first impression of Josh's voice is this message. The voice + tone bar is high.

Before showing the draft to Josh, invoke the `evaluator` sub-agent via the Task tool:

- **subagent_type:** `evaluator`
- **prompt:** include the full DM body, the recipient context (LinkedIn role, company, prior interaction history), the master CV / voice profile sections that informed the draft. Ask for the 4-axis rubric AND additionally:
  - Does the message respect the channel length norm (LinkedIn DM ≤ 75 words, cold email ≤ 150 words)?
  - Does the ask match the relationship strength (don't ask for an intro from someone Josh has never met)?

Handle the evaluator's response:

| Result | Action |
| --- | --- |
| All checks pass | Proceed to delivery. |
| 1-2 axes fail | Revise once, re-invoke. Second failure -> surface to Josh. |
| 3+ axes fail OR length norm violation | Surface to Josh before re-drafting. |

The cost of getting voice wrong on cold outreach: a senior contact ghosts the message permanently. The cost of evaluator: ~$0.02. Trivial trade.

## Recruiter-response special discipline

When responding to a recruiter's initial outreach:

- **Qualify, don't commit.** Ask 3 things before saying "I'm interested in scheduling": role title (full, not just "engineering opportunity"), comp band ("could you share the band so I can decide if it's worth our time"), and remote/onsite/hybrid.
- **Don't oversell yourself.** They reached out; the leverage is yours.
- **Tone:** professional, slightly direct. Not eager.

## Post-interview follow-up special discipline

- Reference 1-2 SPECIFIC things from the conversation (what they said, not what you said).
- Reinforce 1 thing — a competency they probed where you want to add weight.
- Forward-looking close, no canned "looking forward to hearing back."
- Send within 24 hours of the interview, ideally same day.

## Tracker integration

Every outreach gets a tracker entry:

```json
{
  "id": "OUTREACH-NNNNN",
  "type": "outreach",
  "recipient": "...",
  "company": "...",
  "channel": "linkedin | email",
  "outreach_type": "cold-dm | warm-intro | recruiter-response | follow-up",
  "sent": "YYYY-MM-DD or null",
  "status": "drafted | sent | replied | no-response",
  "response_due_check": "YYYY-MM-DD (+5 business days)",
  "linked_application": "JOB-NNNNN or null"
}
```

After 5 business days with no response, the tracker auto-flags for "follow-up or drop" decision.

## Privacy rule

Recipient's specific personal info (their address, phone, family details if found via research) NEVER appears in the outreach. Public-professional context only.
