---
name: compose-message
description: >-
Write outreach in Ryan's voice: LinkedIn notes, founder/lab DMs, cover letters,
cold emails, follow-ups. Ambition-driven — lead with their work, not Ryan's
resume. Draft normal + weird/loud variants for qualifying targets. Saves to
outputs/L0001/. Use when drafting messages or company notes.
---
# Compose message
Write text Ryan might actually send. **Read `profile/voice.md`, `profile/outreach-angles.md`, and `profile/weird-outreach.md` (when target qualifies) before every draft.**
## Core rules
- Lead with the company's interesting work.
- Mention Ryan's projects only as supporting evidence.
- Do not repeatedly mention the same project.
- Do not default to Ezcaptain.
- Do not default to the physics project.
- Use specific projects only when directly relevant.
- Generate both normal/direct and weird/loud versions when appropriate.
## Read first
1. **`profile/target-thesis.md`** — positioning context
2. **`profile/outreach-angles.md`** — subject modes and agent rules
3. `profile/voice.md` — tone, templates, anti-patterns
4. `profile/weird-outreach.md` — if small/founder/lab target may need loud variant
5. Target lead: `leads/L0001-*.md` + company file `companies/CO0001-*.md`
6. Related contact: `contacts/C0001-*.md`
7. Tailored resume if exists: `outputs/L0001/resume_notes.md`
8. `profile/projects.md` — pick **relevant** proof points only
## Agent instructions
When writing company notes or outreach:
- Lead with the company's interesting work, not Ryan's resume
- Use Ryan's projects only as supporting evidence
- Do not repeatedly mention the same project
- Do not pitch boring SaaS unless the company is specifically in vertical SaaS or workflow tooling
- Prefer research, labs, AI, infra, robotics, simulation, devtools, and technically ambitious startups
- Avoid sounding like Ryan just wants any software job
- Tone: direct, curious, technical, ambitious — or **weird/loud** for top-tier small targets
## Weird outreach (optional second version)
Read **`profile/weird-outreach.md`** and **`profile/outreach-angles.md`** when the target is small, founder-led, lab-like, or unusually exciting.
**For strong targets, generate:**
1. normal/direct version
2. weird/loud version
3. brief cringe-risk note
Prepend a short **agent rationale** to the weird file (not part of the message Ryan sends):
```markdown
## Why weird
- Target qualifies because: ...
- Anchored on: {specific demo/paper/detail}
- Subject mode: intensity | honest cold | technical hook | founder-energy
- Cringe risk: low | medium — ...
```
**Never auto-send weird outreach.** Ryan picks the version and sends manually.
**Loud but true:** specific, honest, short, a little intense, human. Never fake urgency, fake familiarity, or bait subject lines.
## Output
Save to the lead's output folder:
```
outputs/L0001/
cover_note.md
outreach_email.md
outreach_email_weird.md # optional — with agent rationale at top
linkedin_dm.md
linkedin_dm_weird.md # optional
application_notes.md
```
Update lead frontmatter and sync:
```bash
.venv/bin/python scripts/sync_indexes.py
```
## Templates (adapt — see `profile/voice.md`)
### Founder / lab note
Lead with what they build or research. Position Ryan as a high-agency student trying to get near hard AI/systems work. Range of projects, not one flagship. Simple ask.
### Research-style note
Reference a specific paper, post, or demo detail. Research-engineering angle: prototypes, testing, making ideas usable.
### High-agency startup note
Acknowledge ambitious technical work. Explicitly not looking for ticket-picking internship. AI, systems, tools, simulation, or infra. Offer project list.
### LinkedIn connection note (300 char aware)
One specific thing about **their** work. One line on Ryan as builder/researcher. Simple close.
### Cover letter (~3 paragraphs)
1. Why **this** company's technical work — specific, not generic praise
2. Proof — 1–2 relevant achievements (only if they connect to this role)
3. Close — applying via [link], happy to chat
### Follow-up
Reference prior contact if known. One new data point or continued interest. Short.
## Hard rules
- First person, Ryan speaking
- No em dashes
- No "passionate", "thrilled", "excited to bring"
- No paragraph that could apply to any company
- Never fabricate contact history or referrals
- Never auto-send
## After Ryan sends (manually)
```bash
.venv/bin/python scripts/log_event.py \
--type message \
--contact C0001 --lead L0001 \
--summary "Sent LinkedIn DM manually" \
--next-followup 2026-07-07
```
## After drafting
Offer Ryan both versions when relevant: "Normal or weird?" Default to curious, technical, ambitious. Weird only when target qualifies — Ryan must approve before send.