Appearance
Reporting Cadence Workflow
Proposed owner: Data Agent (orchestrated by Master Agent)
The Schedule
Sam reports to Slack 3 times per day at fixed windows:
| Window | PST | UTC | Duration |
|---|---|---|---|
| Morning | 10:00 AM | 5:00 PM | ~15–30 min |
| Afternoon | 2:00 PM | 9:00 PM | ~15–30 min |
| Evening | 6:00 PM | 1:00 AM | ~15–30 min |
Outside these windows: Sam replies HEARTBEAT_OK and does nothing. (This is the rule — whether it follows it is another question.)
What Gets Checked at Each Window
1. Slack Channels
| Channel | Action |
|---|---|
sam-chat (C0AJVMAHM50) | Read last 15 messages, respond if team needs something |
funnel-squad (C0AJ67B5VP1) | Read last 10 messages, respond if needed |
2. Funnel Metrics (post to sam-chat)
Format: plain text, no code blocks (John's preference — code blocks were causing tool_call XML leakage)
Metrics posted:
- Overall CVR (landing → purchase), target 1.5%
- Active test results:
- Order Bump: AOV, purchases, upsell rate vs baseline
- SMS Disclaimer: lead view → lead CVR (baseline 74.7%)
- SEMA route (current path + CVR)
- Mounjaro routing (CVR, volume)
- Express Pay (CVR vs upsell rate tradeoff)
- Attribution breakdown by channel (Meta/Google/TikTok/Braze via
person.properties.affid)
3. GitHub Funnel Monitor (silent + conditional)
- Check funnel, funnel-cms, landing-pages, checkout repos
- Log changes to
memory/funnel-changes.mdsilently - Alert John only if commit correlates with >5% CVR shift
What Gets DM'd to John vs. Posted to Channels
| Trigger | Destination |
|---|---|
| Routine metrics update | sam-chat channel (team visibility) |
| Significant CVR shift (>5%) | DM to John directly |
| New major finding | sam-chat + mention relevant team members |
| Urgent issue | DM to John directly |
Actual Sample Reporting
From 2026-03-18.md memory:
Morning (9:45am): "Performance down today: 0.47% CVR, Meta spend only $14.6K (vs $42.7K yesterday). WEGO-PILL showing only 2 purchases from 817 results entries."
2pm check: "87 purchases, 0.65% CVR — below yesterday. Posted update to sam-chat."
Evening close: "174 purchases, 0.78% CVR for the day."
The Problem: Over-Reporting History
Before the HEARTBEAT.md discipline was enforced, Sam was:
- Reporting GitHub commits every 30 minutes
- Posting to sam-chat at every heartbeat poll
- Checking PostHog outside the 3×/day windows
- John asked to stop this behavior 5 times
The current HEARTBEAT.md has an explicit ⛔ STOP section at the top.
Format Issues
Two known formatting problems:
- tool_call XML in Slack messages: When Sam uses the message tool to send DMs, raw JSON/code leaks into John's view. Fix: reply with plain text directly, don't use message tool for DMs to John.
- sam-chat update formatting is fine: John wants to keep the formatted updates in sam-chat. Only DMs should be plain text.
Why Dedicated Data Agent Makes Sense
Problem with current setup:
- Reporting requires pulling from PostHog (funnel CVR) + Looker (dashboards) + Braze (flow health)
- All these API calls happen in the same session that's also handling creative work and GitHub monitoring
- Context gets large, responses get slow, errors are harder to isolate
Dedicated Data Agent benefits:
- Lightweight, focused context: only reporting/analytics knowledge
- Can maintain historical baselines for anomaly detection
- Can be faster (cheaper model, smaller context)
- Reports become more reliable when not competing with creative work for context
See also: Data Agent | Funnel Monitoring | Known Issues