← Back to brief

feedback drafting standard

memory · feedback_drafting_standard.md

Before writing any email on Joseph's behalf, do all of this first — no exceptions:

1. Pull sent mail history with that recipient (from:joseph.bowens@skyrun.com to:[email]) and read actual messages to absorb his voice, cadence, and what's already been said
2. Read the full inbound thread — not just the snippet, the full body of every message
3. Read any documents in play — don't speculate about what they contain, open and read them
4. Read relevant transcripts — if there's a meeting in context, read it before writing
5. Only then write — with specific details from the above, not generic structure

Why: Joseph was frustrated that drafts read like "an AI agent just puked words on the page that were generic and kinda not relevant." The root cause was drafting off summaries and assumptions instead of the actual source material.

Voice patterns observed from actual sent mail to Rachel:

How to apply: Every draft, no matter how simple, starts with pulling real emails. If context isn't there yet, get it before writing — not after.

⛔ HARDWIRED 2026-05-08 — VOICE LINTER GATE (mandatory)

After the Trevor Pyle draft (Gmail id 19dfe060b5bea9b6, 2026-05-06) was rejected by Joseph as "super AI generated and not at all in my authentic voice," every draft now must pass voice_check.py before save/send.

Required workflow:
1. Pull sent history + transcripts (existing rule)
2. Compose the draft
3. Pipe the body through ~/Library/Application Support/SkyRun/voice_check.py
4. If REJECT (exit 1) → fix and re-run before saving
5. If WARN → review each warning before saving
6. Only when CLEAN (exit 0) → create the Gmail draft

The Trevor draft (canonical "what NOT to write"):

The Kina email (canonical voice that PASSES):

Anti-pattern blacklist: see reference_voice_anti_patterns.md for the full list of phrases + structures that auto-REJECT.