בס״ד

Proactive Morning Brief — Build spec

docs/daily-cadence-system/PROACTIVE_MORNING_BRIEF_SPEC.md · last changed (pre-VM history) · rendered from GitHub master

Proactive Morning Brief — Build spec

Sam ask 2026-05-11: "My Monday today came without me having a proactive briefing. By next Monday, I want that in place — without question."

Doctrine: manual → repeatable → VA-safe runbook → automated. First fire Tue 5/12 ~7:45 AM EDT.

Acceptance test

Data sources

Source Pull method What
Google Calendar CalendarApp.getEventsForDay(today) Today's events with times + locations
v1 Monthly Obligations sheet (1L_rxCSOnc...) direct read via SpreadsheetApp.openById Items due in next 7 days
MIS V11 sheet (1HEmRev...) Snapshot tab direct read Regime · VIX · top 3 ADD signals · holdings P&L line
BOS Action_Master (Command Center sheet 17XDHL...) direct read P0/P1 open loops by status flag
Gmail GmailApp.search('subject:⚡ OR subject:P0 OR is:starred newer_than:1d') Urgent inbox items
docs/CURRENT_STATE.md top section fetch via GitHub API on schedule Latest session state
docs/SCOPE_BACKLOG.md fetch via GitHub API on schedule Backburner items aging

Trigger

Email structure

Subject line

☀️ [Day] [Mon DD] · [N] today · [M] urgent · $[$$] week

Example: ☀️ Tue May 12 · 3 events · 1 urgent · $4,221 week

Header — light/dark adaptive table+bgcolor (same pattern as MIS BLUF)

[Dark band #0a0e1a]
☀️ Good morning, Sam
Tue May 12 · 7:45 AM EDT

[White bg row]
Cadence: weekday 7:45 AM · reply to re-shape today's picture

Section 1 — 🚨 NOW (top 3 items, reordered if urgent)

Pulled from: Calendar (time-sensitive events first), then Gmail urgent (⚡ subject), then BOS Action_Master P0 rows. Each line:

Section 2 — 📅 TODAY

Calendar events laid out as a timeline. Each event: time · title · location (if any) · attendees if more than just Sam.

Section 3 — 💰 MONEY (next 7 days)

Bake the obligations table INTO the email body (NOT a live fetch — Apps Script reads sheet directly at send time). Each row: days · amount · vendor · pay_from · status. Total at top.

Section 4 — 📊 MARKETS

One line: regime · VIX · SPY today (if market open) · top 3 ADD names · current portfolio P&L delta vs prior close.

Section 5 — ❓ CLARIFYING QUESTIONS (max 3)

Hard-coded today via prompting logic OR pulled from a QUESTIONS_QUEUE tab Sam can pre-load. Each question has: Q · Why · Default if no reply.

Section 6 — 🎯 IF YOU DON'T REPLY

What I'll proceed with as defaults. Lets silence still produce a sane day.

Section 7 — 🌱 BACKBURNER (1 item rotated)

Surface 1 aging item from SCOPE_BACKLOG.md (>14 days stale, has unblock_trigger). Per yesterday's backburner-ritual proposal.

Footer

Source trail · last commit hash · memory snapshot age · "Reply to this email — I'll re-shape my picture"

Build sequence

Phase 1 — manual MVP (Tue 5/12 morning)

Phase 2 — Apps Script function (Fri 5/16 or weekend)

Phase 3 — Reply-to-update handler (after form lock)

Phase 4 — Cross-channel (later)

Stop rules

Source

Source trail · docs/daily-cadence-system/PROACTIVE_MORNING_BRIEF_SPEC.md @ master · rendered 2026-07-02 7:23 PM EDT by scripts/build-docs.py · the .md in the repo is the truth; this page is the phone-readable view