/cold-email, the full pipeline
Usage: /cold-email "<Person Name>" Space42
Produces one draft at <person>/drafts/YYYY-MM-DD-<company>.md with status: ready, for a human to read and send.
Preconditions
Stop and say so if any of these fail:
<person>/profile.md exists and contains no TBD in the fields the email needs
- Every open question in that sender's
profile.md is answered — role type (internship versus permanent), public profile URL, target sector, and any domain exposure the pitch leans on. Both the target list and the email structure depend on them
- The company is on
shared/targets.md
- The daily cap has room: 5 first contacts per person per day
- The tracker does not already show this company contacted by this person
Steps
Dossier. If shared/companies/<slug>.md is missing or older than a month, run /target-research <company>.
Contact. If the dossier has no verified contact, run /find-contact <company>. If nothing verifies, stop and report the alternative route. Do not draft against a guessed address.
Match. Spawn profile_matcher. It picks one lead project, at most two supporting facts, names what to leave out, and does the gap analysis. If it returns weak fit and recommends skipping, report that and stop.
Draft. Spawn email_writer with the dossier, the match report, the person's profile, evidence, signature and voice section. Under 150 words. Three ranked subject lines. Status: draft.
Edit. Spawn editor. Cuts length, strips AI tells, fixes the ask, runs the swap test on paragraph 1, verifies facts survived unchanged. Status: edited. If it sends the draft back, loop once through step 4 and no further — a draft that fails twice has a wrong angle, which is a decision for the human.
QA. Spawn send_qa. Full checklist. Every blocking issue goes back to the owning agent. On pass, status: ready.
Update the tracker with the company, contact, verification state and status.
Hand off. Show the human the final email in full — subject, body, signature — the word count, the risks, and the exact next step.
Output format
## Ready to send: <person> → <company>
**To:** <name> <<address>> · <title>
**Verified:** <source>
**Subject:** <subject>
---
<the complete email, exactly as it should be sent>
---
**Words:** <n>
**Angle:** <one line>
**Links:** <URLs, each confirmed to resolve>
**Attachments:** none
**Before you send**
- <anything worth knowing>
**After you send**
1. Move the file to `<person>/sent/`
2. Set `sent:` in the frontmatter and update the tracker
3. Follow-up due <date>. One follow-up only
Rules
- Never send. No mail client, no SMTP, no automation of the send step. Not once.
- Never draft for a profile containing
TBD.
- Never draft against a
pattern or unverified address.
- One email per company per person.
- Never mix the two people's evidence. Read only the folder of the person named in the command.
- Every claim traces to a source. If a sentence needs a number nobody has, the sentence goes without it.
- If any step fails, report where it failed and what would unblock it. Do not push a broken draft through to
ready.
1---2name: cold-email3description: Run the full pipeline to produce one ready-to-send internship cold email for one person at one company — research, contact, match, draft, edit, QA. Use whenever an email to a new company is needed. Produces a draft for a human to send; never sends anything.4---56# /cold-email, the full pipeline78Usage: `/cold-email "<Person Name>" Space42`910Produces one draft at `<person>/drafts/YYYY-MM-DD-<company>.md` with `status: ready`, for a human to read and send.1112## Preconditions1314Stop and say so if any of these fail:1516- `<person>/profile.md` exists and contains no `TBD` in the fields the email needs17- **Every open question in that sender's `profile.md` is answered** — role type (internship versus permanent), public profile URL, target sector, and any domain exposure the pitch leans on. Both the target list and the email structure depend on them18- The company is on `shared/targets.md`19- The daily cap has room: 5 first contacts per person per day20- The tracker does not already show this company contacted by this person2122## Steps23241. **Dossier.** If `shared/companies/<slug>.md` is missing or older than a month, run `/target-research <company>`.25262. **Contact.** If the dossier has no `verified` contact, run `/find-contact <company>`. If nothing verifies, stop and report the alternative route. Do not draft against a guessed address.27283. **Match.** Spawn `profile_matcher`. It picks one lead project, at most two supporting facts, names what to leave out, and does the gap analysis. If it returns `weak` fit and recommends skipping, report that and stop.29304. **Draft.** Spawn `email_writer` with the dossier, the match report, the person's profile, evidence, signature and voice section. Under 150 words. Three ranked subject lines. Status: `draft`.31325. **Edit.** Spawn `editor`. Cuts length, strips AI tells, fixes the ask, runs the swap test on paragraph 1, verifies facts survived unchanged. Status: `edited`. If it sends the draft back, loop once through step 4 and no further — a draft that fails twice has a wrong angle, which is a decision for the human.33346. **QA.** Spawn `send_qa`. Full checklist. Every blocking issue goes back to the owning agent. On pass, status: `ready`.35367. **Update the tracker** with the company, contact, verification state and status.37388. **Hand off.** Show the human the final email in full — subject, body, signature — the word count, the risks, and the exact next step.3940## Output format4142```43## Ready to send: <person> → <company>4445**To:** <name> <<address>> · <title>46**Verified:** <source>47**Subject:** <subject>4849---50<the complete email, exactly as it should be sent>51---5253**Words:** <n>54**Angle:** <one line>55**Links:** <URLs, each confirmed to resolve>56**Attachments:** none5758**Before you send**59- <anything worth knowing>6061**After you send**621. Move the file to `<person>/sent/`632. Set `sent:` in the frontmatter and update the tracker643. Follow-up due <date>. One follow-up only65```6667## Rules6869- **Never send.** No mail client, no SMTP, no automation of the send step. Not once.70- Never draft for a profile containing `TBD`.71- Never draft against a `pattern` or `unverified` address.72- One email per company per person.73- Never mix the two people's evidence. Read only the folder of the person named in the command.74- Every claim traces to a source. If a sentence needs a number nobody has, the sentence goes without it.75- If any step fails, report where it failed and what would unblock it. Do not push a broken draft through to `ready`.