Stage 01 — Trigger
One phrase fires the run.
“Run morning briefing.” That phrase, typed once, is the only input. A preflight step loads the runtime config — voice rules, priority-sender list, watched channels, the rolling lookback windows — before any source is touched. No schedule in v1; the founder pace is the schedule.
Stage 02 — Sources
Six sources, in parallel, read-only.
Email scanned by priority sender, time-sensitive keywords, and CC patterns. Four calendars checked for the day's availability. Team chat queried across watched channels and DMs over a twenty-four-hour window. Five case-tracking operations databases pulled for fresh activity. The task tracker queried for urgent and overdue items. Granola meeting notes pulled for action items from the day before. Every connector is read-only by design.
Stage 03 — Claude's read
Claude reads everything against a written spec. A second pass catches repeating themes.
Claude reads the day's raw material against a written spec — what counts as a signal for this operator, in this voice. A second pass scans for repeating themes (three or more related signals in the last week) so a pattern doesn't hide behind individual rows. Two separate reads, one for what the day says, one for what the week is saying.
Stage 04 — Output
One briefing. Rendered inline. Not emailed.
The briefing composes against the voice spec, runs a format pass, and renders inline in the same Claude session the founder triggered the run from. Nothing is mailed, Slack-posted, or sent on the founder's behalf — the inline render is the delivery surface. The briefing is read in place and acted on the same session.
Stage 05 — Archive
Dated session log. Lookback-ready.
Every run writes a dated session log — the assembled raw material, the classified output, the clusters surfaced, the briefing as rendered. The next morning's run reads yesterday's log as part of its lookback window so carryover and follow-through are visible without being re-derived. Read-only on sources; write-only on the log.