← Back to Index

Morning Briefing Redesign for Quan Gan

Design Date: February 10, 2026
Scope: Strategic redesign to align briefing with master plan, loss function, and founder preferences
Output Location: This file
Implementation Timeline: Immediate (ready for Feb 11, 8:00 AM PT cron)


Executive Summary

The current morning briefing is operational but sub-optimal. It reports facts (orders, news, phase status) without connecting to what actually matters to Quan: protecting embodied vitality, relational integrity, and founder sovereignty while maintaining business momentum.

Current Problems:

  1. Repeat news with no deduplication β€” same articles cycle every briefing
  2. No forest view β€” master plan progress and quarterly milestones invisible
  3. No coherence check β€” Charlie time, resets, relational entropy untracked
  4. No sovereignty metric β€” interruptions created vs removed not surfaced
  5. Generic news noise β€” ed-tech headlines divorced from ZTAG's actual pipeline
  6. Missing cost transparency β€” $13.50/day spend above target but not flagged daily
  7. Weather missing β€” explicitly requested by Quan, forgotten after one day
  8. No deep-work block protection β€” calendar integrated but not filtered for focus time
  9. No decision support β€” ambiguities presented without pushed-back clarity
  10. No Charlie automation updates β€” high-priority strategic initiative status invisible

Redesign Approach:


Part 1: New Morning Briefing Template

Template Structure

Timing: 8:00 AM PT, isolated Sonnet session, delivered to Telegram
Duration: <3 min read time (forest) + reference links for trees
Format: Markdown with clear section hierarchy and decision points


πŸ“Š FOREST VIEW: Strategic Trajectory

30-second read. Where are we in the master plan? What's the quarterly horizon?

## πŸ—» FOREST: Master Plan Horizon

**Current Phase:** Phase 3 (Integrations & Workflows)  
**Days in Phase:** [calculated from phase_start_date]  
**Phase Gate Criteria:** [current gate criteria with progress %]

**Quarterly Milestones (Q1 2026):**
- [ ] Phase 3 β†’ Phase 4 gate pass (all integrations tested, morning briefing value proven)
- [ ] Grant cycle tracker live (districts in purchase windows identified)
- [ ] Conference pipeline built (3+ pre-conference prep docs created)
- [ ] Charlie accounting automation approved & scoped (Zoho Books + Xero API access negotiated)

**Blockers / Dependencies:**
- Phase 4 blocked on: reference/ files population (ZTAG districts, grant cycles, product specs)
- Charlie automation blocked on: Quan approval + API scope agreement
- Cost optimization blocked on: heartbeat interval tuning (currently $13.50/day, target $5-7/day)

**Master Plan Health:** [traffic light: 🟒 ON TRACK / 🟑 CAUTION / πŸ”΄ BLOCKED]
- Rationale: [2-3 sentence assessment]

🌳 TREES VIEW: This Week & Today

2-minute read. What happens today? What needs attention this week?

## 🌲 TREES: This Week's Critical Path

### 🎯 Today (Thursday, Feb 10)
**Calendar conflicts:** [1-line summary or "Noneβ€”deep work available"]  
**Deep-work block status:** [🟒 PROTECTED / 🟑 AT RISK / πŸ”΄ LOST]  
[If at risk: "Ecosystem Advisory 3–4 PM conflicts with prep. Recommend 10 AM–1 PM focus window instead."]

**Critical action items due TODAY:**
- [ ] DeepSky FL annual report: Replace Ping with Quan as Officer? β†’ DECISION NEEDED
- [ ] [Other critical items with deadline = today]

---

### πŸ“… This Week's Landscape

| Item | Status | Due | Owner |
|------|--------|-----|-------|
| Dev meeting (Mon 8 PM) | Agenda ready | Today | Minnie-Research |
| Dev meeting (Thu 8 PM) | Agenda ready | Today | Minnie-Research |
| [Other named events] | [Status] | [Date] | [Owner] |

**Incoming travel commitments:** [Any trips starting this week or next?]  
**Cost tracker:** $[daily spend yesterday] (target: $5–7/day) β€” [βœ… GOOD / 🟑 RUNNING HOT]

---

### πŸ”οΈ COHERENCE CHECK: Relational & Embodied Integrity

**Charlie time this week:** βœ… Protected? [Day/time] | 🟑 At risk? [reason] | πŸ”΄ Lost? [what happened]  
**Weekly resets scheduled:**
- Evening reset: [Mon–Fri at 5:30 PM check-in? None skipped? βœ… / 🟑 / πŸ”΄]
- Pre-Charlie reset: [Friday 15 min at HH:MM? βœ… scheduled / πŸ”΄ missing]
- Sunday environment reset: [Sunday 25 min at 9:30 AM? βœ… scheduled / πŸ”΄ missing]

**Embodied vitality assessment:**
- Skiing opportunity this week: βœ… YES (Mammoth report below) / πŸ”΄ NO  
- Movement/recovery status: [Brief assessment: "Solid training week last week, recovery adequate" or "Fatigue building, suggest lighter intensity"]
- Weather for reference: [Castaic 91384] [Mammoth CA] β€” [Links to wttr.in]

**Relational entropy rising?** 🟒 NO / 🟑 YESβ€”[specific surface like "shared space accumulating", "deadline pressure visible", "tone shift with Charlie noticed"] / πŸ”΄ CRITICAL  
[If yellow/red: "Recommend pre-Charlie reset brought forward to [day] and extended to [duration]."]

πŸ“Š FOUNDER SOVEREIGNTY DASHBOARD

Last Week's Metrics (Minnie-Review report):

Reactive load assessment: [Brief: "Inbox under control", "Email tail buildingβ€”monitor", "Calendar density risingβ€”protect focus time"]


---

### πŸ’Ό BUSINESS MOMENTUM: Only After Vitality, Relationships, Sovereignty Protected

**ZTAG Pipeline:**
- Districts in contact window (ELOP cycle): [X districts] β€” [trend: ↑ / β†’ / ↓]
- Grant cycle tracker: [Status: live? Tracked? Pending?]
- Active proposals pending response: [X] β€” [any SLAs at risk?]

**Gantom Daily Orders (Prev day):**
- Total: $[amount] | Orders: [count] | Status: [processing / delayed?]
- Tariff update: [Status: waiting on USITC API? Validation pending? Scheduled for [date]]

**High-Leverage Strategic Initiatives:**
- **Charlie accounting automation:** Status = [Approved / In scope definition / Pending API access / In development]
  - If pending: "Waiting on Quan decision re: Zoho Books + Xero scope" or "OAauth flows being tested"
  - If in progress: "Pre-reconciliation of [X transactions] completed. Charlie review pending."

**Weekly Convergence Pulse (from Minnie-Review):**
- Did execution increase but coherence decrease this week? [Assessment]
- Net assessment: [Loss increasing / Loss stable / Loss reducing]

πŸ—žοΈ NEWS & INTELLIGENCE: Filtered for ZTAG Relevance

Only surfaces news NOT previously reported. Uses news-shared.json dedup.

## πŸ“° News Intelligence (ZTAG-Relevant Only)

**NEW this week (not in previous briefings):**

### California Education Funding
- **[Headline]:** [Summary. Relevance: [why this matters for ZTAG]]
  - Source: [URL]
  - Impact: [District purchasing power / policy shift / RFP trigger]

### Ed-Tech Sector
- **[Headline]:** [Summary. Relevance: [competitive threat / validation / opportunity]]
  - Source: [URL]
  - Implication for ZTAG: [1-2 sentences]

**πŸ“Š Competitive Intelligence:**
- [Any moves by PowerSchool, Google, Microsoft, IXL flagged]
- [Any new entrants or pivots relevant to word-game or edutainment]

**πŸŽ“ Policy & Grant Cycle Updates:**
- [Any ELOP/CCLC announcements]
- [Any new districts opening RFPs]
- [Any state funding shifts]

**⚠️ [If ambiguity detected]** Push-back: "The [news item] could mean [A] or [B] depending on [X]. Which interpretation matters for ZTAG strategy? Or is this noise?"

πŸš€ STRATEGIC INITIATIVES: In-Progress Snapshots

## 🎯 Strategic Priorities In Flight

### 1. Charlie Accounting Automation (HIGH PRIORITY)
**Current Status:** Scope definition  
**Pending Decision:** Which specific automations first?
- Pre-reconciliation of bank transactions (Zoho Books)?
- Expense categorization (Xero)?
- Invoice matching (both)?
- Monthly close prep templates?

**Blocking:** Quan approval on scope + Charlie's preferred delivery method (Telegram? Email? Direct Zoho comments?)

**Next step:** Once approved, I build Zoho Books + Xero read-only connectors (Phase 5 timeline, but high priority)

---

### 2. Grant Cycle Tracker (ZTAG Core)
**Current Status:** [Design phase / Testing / Live]  
**Progress:** [Description of what's tracked, how many districts, update frequency]

---

### 3. Meeting Automation (Operational)
**Current Status:** Live  
**This week's capture:** [X meetings processed] β†’ [Fathom transcripts saved, agenda notes extracted]

---

### 4. Phase 3 Integrations Progress
**Connected:** Google Calendar βœ… | Gmail βœ… | Zoho CRM βœ… | Google Drive βœ… | Meeting automation βœ… | Brave Search βœ…  
**Awaiting:** DHL API (approval pending) | USITC DataWeb (Quan registration needed)  
**Next:** Zoho Cliq integration (for team-facing outputs)

⚠️ DECISION POINTS & AMBIGUITIES

## 🚨 Issues Requiring Your Clarity

**[If any ambiguities detected in emails, calendar, or context]:**

**1. [Issue name]**
- **What I'm seeing:** [Facts]
- **Possible interpretations:** [A] [B] [C]
- **What I need from you:** Which interpretation matters? Or should I flag this as low-priority?

**Example (from current state):**
- **Issue: March 20 Ecosystem Advisory vs SHAPE America Missouri**
  - What I'm seeing: Advisory on calendar 3–4 PM PT, SHAPE America is March 17–21 trip
  - Possible interpretations: (A) Decline Advisory, attend SHAPE; (B) Attend Advisory 3–4 PM, then fly out; (C) Delegate Advisory
  - What I need: What's your priority order? Or what additional context would clarify the right choice?

πŸ“§ Email Inbox Status

## βœ‰οΈ Email Triage (48h scan, 3 accounts)

**IMPORTANT β€” ACTION REQUIRED:**
- [Critical email 1] β†’ **Decision needed:** [brief what]
- [Critical email 2] β†’ **Action:** [brief what]

**COUNT & TREND:**
- Unread: [X] (↑ / β†’ / ↓ vs yesterday)
- From Quan's VIPs: [X] Important, [Y] standard
- Automated/marketing: [X] (filtered, archived)

**Notable senders this week:** [Teresa@m5stack.com about Celebrity V3 shipment, Tin De Guzman re: safety initiative, etc.]

**Blocked/escalating:** [Any patterns? "No urgent emails past 24h" or "Escalations building in [category]"]

🌀️ OPERATIONAL CONTEXT

## 🌍 Weather & Location Context

**Castaic (Local):** [Current: temp, conditions, wind, humidity via wttr.in]  
**Mammoth (Skiing):** [Current: snow depth, conditions, wind via wttr.in]

**Timezone note:** PT (UTC-8 until March 8, then PDT)

---

## πŸ”§ Workspace & System Health

**Phase status:** [Phase X, day Y]  
**Cost tracking:** [Yesterday: $X / target: $5–7 / week avg: $Y] β€” [🟒 OK / 🟑 RUNNING HOT]  
**Infrastructure:** [OpenClaw v[version] | Heartbeat: [status] | All agents running: βœ… / 🟑 / πŸ”΄]

**Cron schedule for today:**
- 8:00 AM: Morning briefing (you're reading this)
- [Other scheduled jobs today]
- 5:30 PM: Evening reset reminder
- [Others]

---

## πŸ“Œ Bottom Line

**What to focus on today:**
1. [Most critical action]
2. [Secondary action]
3. [Soft priority if time allows]

**Risk to be aware of:** [1-2 sentences on what could derail the day]

---

*Briefing generated by Minnie-Ops at [timestamp] | Next briefing: [date time PT]*
*Data sources: Google Calendar, Gmail (3 accounts), Google Drive, Zapier webhooks, web search*

Part 2: Implementation Guide (Cron Changes)

Current Cron Job (Status: NEEDS REDESIGN)

File: ~/.openclaw/cron/jobs.json
Agent: Minnie-Ops
Current schedule: 8:00 AM PT (moved from 6:30 AM on Feb 10)
Model: Claude Sonnet 4.5
Daily cap: $2

Current job definition:

{
  "name": "morning-briefing",
  "schedule": "0 8 * * *",
  "agent": "minnie-ops",
  "model": "anthropic/claude-sonnet-4-5",
  "context": ["soul.md", "identity.md", "user.md", "MEMORY.md"],
  "prompt": "Generate morning briefing covering calendar, email triage, news, phase status...",
  "output_dir": "working/ops/daily-briefings/",
  "isolated_session": true
}

Changes Required

1. Load Additional Context Files

"context": [
  "soul.md",
  "identity.md", 
  "user.md",
  "MEMORY.md",
  "master-plan.md",
  "memory/YYYY-MM-DD.md",  ← yesterday's memory
  "working/ops/email-patterns.md",
  "reference/ztag/overview.md",  ← if populated
  "reference/ztag/grant-cycles.md",  ← if populated
  "tools/news-shared.json"  ← dedup tracking
]

2. Add Data Fetching Tasks Before Briefing Generation

{
  "name": "morning-briefing",
  "schedule": "0 8 * * *",
  "agent": "minnie-ops",
  "model": "anthropic/claude-sonnet-4-5",
  "steps": [
    {
      "name": "fetch-calendar",
      "action": "google_calendar_fetch",
      "params": {
        "days_ahead": 14,
        "output_file": "working/ops/calendar-view.json"
      }
    },
    {
      "name": "fetch-email",
      "action": "gmail_fetch",
      "params": {
        "hours_back": 48,
        "accounts": ["quan@ztag.com", "quan@gantom.com", "quan777@gmail.com"],
        "output_file": "working/ops/email-triage.json"
      }
    },
    {
      "name": "fetch-weather",
      "action": "weather_fetch",
      "params": {
        "locations": [
          { "name": "Castaic", "zip": "91384" },
          { "name": "Mammoth", "region": "CA" }
        ],
        "output_file": "working/ops/weather.json"
      }
    },
    {
      "name": "search-news",
      "action": "web_search",
      "params": {
        "queries": [
          "California education funding districts ELOP CCLC",
          "ed-tech K-12 news 2026",
          "competitive edtech AI word games"
        ],
        "exclude_from": "tools/news-shared.json",  ← dedup
        "max_results": 5,
        "output_file": "working/ops/news-scan.json"
      }
    },
    {
      "name": "generate-briefing",
      "action": "agent_session",
      "context": [
        "soul.md",
        "identity.md",
        "user.md",
        "MEMORY.md",
        "master-plan.md",
        "memory/2026-02-09.md",  ← yesterday
        "working/ops/email-triage.json",
        "working/ops/calendar-view.json",
        "working/ops/weather.json",
        "working/ops/news-scan.json"
      ],
      "prompt_file": "cron/morning-briefing-prompt.md",
      "model": "anthropic/claude-sonnet-4-5",
      "output_file": "working/ops/daily-briefings/2026-02-11-morning.md",
      "telegram_announce": true
    }
  ]
}

3. Create Cron Prompt File

File: cron/morning-briefing-prompt.md

# Morning Briefing Cron Prompt

You are Minnie-Ops, an optimizer that minimizes loss in Quan's life across four priority domains:

## Your Core Directive
Generate a morning briefing that reflects Quan's actual priorities, not generic operational data. The briefing must answer: "What matters today?" not "What happened in the last 48 hours?"

## Structure (Follow Exactly)

Your briefing MUST include these sections in this order:

### 1. πŸ—» FOREST: Strategic Trajectory (30 seconds)
- Current phase + progress %
- Quarterly milestones for Q1 2026
- Blockers / dependencies
- Master plan health (🟒 ON TRACK / 🟑 CAUTION / πŸ”΄ BLOCKED)

### 2. 🌲 TREES: This Week & Today (2 minutes)
- Today's calendar conflicts (1-line summary)
- Deep-work block status: 🟒 PROTECTED / 🟑 AT RISK / πŸ”΄ LOST
- Critical action items due TODAY (with βœ… checkboxes)
- This week's critical path (table format)
- Incoming travel commitments

### 3. πŸ”οΈ COHERENCE CHECK: Relational & Embodied Integrity
- Charlie time this week: status + dates
- Weekly resets scheduled (evening, pre-Charlie, Sunday) with βœ…/πŸ”΄ icons
- Embodied vitality assessment (skiing, movement, recovery)
- Relational entropy rising? 🟒 NO / 🟑 YES / πŸ”΄ CRITICAL
- Weather (Castaic + Mammoth) with wttr.in links

### 4. πŸ“Š FOUNDER SOVEREIGNTY DASHBOARD
- Last week's metrics from Minnie-Review (interruptions created vs removed, deep-work blocks, decisions made vs deferred)
- Reactive load assessment (inbox, calendar density)

### 5. πŸ’Ό BUSINESS MOMENTUM (Only After Above Three Protected)
- ZTAG pipeline: districts in contact window, grant tracker status, pending proposals
- Gantom daily orders summary
- High-leverage initiatives: Charlie accounting automation status + unblocked actions
- Weekly convergence pulse

### 6. πŸ“° NEWS & INTELLIGENCE (Filtered ONLY for ZTAG Relevance)
**CRITICAL DEDUP RULE:** 
- Load tools/news-shared.json
- Check every news item against previous reports
- SKIP any news already reported
- Only include NEW news
- After generating briefing, ADD all included news items to news-shared.json with timestamp + source

**Format each news item:**

**Filter criteria:**
- California education funding (district budgets, ELOP/CCLC announcements)
- Ed-tech competitive intelligence (PowerSchool, Google, Microsoft, IXL, new entrants)
- Policy & grant cycle updates (state funding shifts, new RFPs)
- **SKIP:** Generic tech news, finance news, non-education ed-tech, federal ed policy that doesn't affect CA districts

### 7. πŸš€ STRATEGIC INITIATIVES: In-Progress Snapshots
Include these if they have meaningful updates:
- Charlie accounting automation (current status, blocking issues)
- Grant cycle tracker (status + progress)
- Meeting automation (weekly capture count)
- Phase 3 integrations (what's connected, what's pending)

### 8. ⚠️ DECISION POINTS & AMBIGUITIES
**This section is critical.** If you detect ANY ambiguity in emails, calendar, or context:
- State the ambiguity clearly
- List possible interpretations
- Ask Quan which interpretation matters
- **Example:** "March 20 Ecosystem Advisory (3–4 PM PT) vs SHAPE America trip (Mar 17–21). Options: [A] Decline Advisory, [B] Attend Advisory then fly out, [C] Delegate. Which priority?"

### 9. βœ‰οΈ EMAIL TRIAGE
- IMPORTANT items requiring decision or action (with specific ask)
- Count & trend (unread, VIP senders, automated)
- Notable senders this week
- Any escalating patterns

### 10. 🌀️ OPERATIONAL CONTEXT
- Weather (Castaic + Mammoth with wttr.in format)
- Phase status, cost tracking, infrastructure health
- Cron schedule for today
- Bottom line: top 3 focus areas + risk to be aware of

## Behavioral Rules (Non-Negotiable)

### Rule 1: Loss-Function-First Ordering
Order everything by Quan's loss function:
1. Embodied vitality (skiing, movement, recovery) β€” treated as STATE AMPLIFIER, not leisure
2. Relational integrity (Charlie time, family, environmental order) β€” protected absolutely
3. Founder sovereignty (deep-work blocks, reactive minimization) β€” interruptions tracked
4. Business momentum β€” only optimized after above three protected

**Example:** If Charlie time is unprotected and skiing is at risk, that's a red flag, even if ZTAG pipeline looks great.

### Rule 2: Ambiguity Pushback (Quan Explicitly Requested)
When Quan leaves things ambiguous or incomplete:
- Don't assume
- Push back with questions
- Present multiple interpretations
- Ask which one matters

Example: "You mentioned China trip Mar 2–8 and also Feb 24–28 CA Symposium. These overlap. Do you mean: [A] CA Symp then China, [B] Skip CA Symp, [C] Both simultaneously?"

### Rule 3: Tradeoff Clarity (Optimize, Not Opine)
You are allowed to surface tradeoffs. You are NOT allowed to moralize.

**Allowed:** "High training load + limited recovery + upcoming travel = coherence risk this week."  
**Not allowed:** "You're pushing too hard. You should slow down."

### Rule 4: Dedup News (Never Repeat)
Before including any news:
1. Check tools/news-shared.json
2. If headline or core insight was already reported, SKIP IT
3. After briefing, append all included news items to news-shared.json: `{ "headline": "...", "source": "...", "date": "2026-02-11T08:00:00Z" }`

### Rule 5: Preference Compliance
- **ZUES, not ZEUS** (product name)
- **Include Fathom links** when referencing meeting summaries
- **Weather via wttr.in** (Castaic 91384 + Mammoth CA)
- **Deep-work protection**: Flag when calendar density threatens focus time
- **Charlie time**: Show scheduled block with pre-reset reminder
- **Resets**: Treat as finite phase shifts, not endless tasks
- **Cost**: Show daily spend vs target, flag if running hot
- **Interruptions**: Track created vs removed as sovereignty metric

### Rule 6: Admit Uncertainty
If you can't determine something (e.g., whether a calendar conflict is firm or flexible):
- Say so explicitly
- Explain what you'd need to resolve it
- Ask Quan for clarification

Example: "I see Advisory on your calendar 3–4 PM Thu but no 'firm' tag. Is this a must-attend or flexible if higher priority emerges?"

## Edge Cases & Handling

**If no calendar for today:** "No external calendar commitments. Deep-work block fully available."

**If no email flagged as Important:** "Inbox cleanβ€”no action items detected. [Secondary items in queue: X]"

**If no new news passed dedup filter:** "No new ZTAG-relevant news this cycle. [Ongoing monitoring: grant deadlines, competitive moves]"

**If master plan phase blockers exist:** Highlight clearly. "BLOCKER: Phase 4 blocked on reference/ files. Recommend prioritizing ZTAG overview + districts + grant cycles population."

**If coherence check shows red flag:** Make it VISIBLE. "πŸ”΄ CRITICAL: Charlie time unscheduled this week + relational entropy rising. Recommend bringing pre-reset forward."

## Output Requirements

- **Format:** Markdown
- **Length:** ~2000–2500 tokens (forest 500, trees 600, coherence 400, sovereignty 200, business 300, news 400, decisions 200)
- **Delivery:** Telegram announcement (via isolated session post-action)
- **File:** working/ops/daily-briefings/[YYYY-MM-DD]-morning.md
- **Metadata:** Include timestamp, next briefing date/time

---

## Data Sources You Have Access To

- MEMORY.md (long-term memory, loss function, constraints)
- master-plan.md (phase roadmap, milestones, gates)
- memory/YYYY-MM-DD.md (yesterday + today if filled)
- working/ops/email-triage.json (from cron fetch)
- working/ops/calendar-view.json (from cron fetch)
- working/ops/weather.json (from cron fetch)
- working/ops/news-scan.json (from cron fetch, pre-deduplicated)
- tools/news-shared.json (all news ever reported to Quan)
- working/ops/email-patterns.md (learned VIP senders, Important categories)
- reference/ files (ZTAG + Gantom context, when populated)

---

## After You Generate the Briefing

1. Write output to: working/ops/daily-briefings/[YYYY-MM-DD]-morning.md
2. Update tools/news-shared.json with all news items included (append to array)
3. Announce to Telegram with:
   - πŸ“Š Morning briefing link
   - 1-sentence summary of top focus
   - Any πŸ”΄ flags highlighted
4. Log cost to working/cost-log.md: [timestamp] [cost] [agent] [session_id]

---

That's it. Now generate the briefing. Remember: you are optimizing for Quan's actual loss function, not generic operational reporting.

4. Weather Fetch Implementation

Create tool: tools/weather-fetch.py

#!/usr/bin/env python3
import json
import urllib.request
import sys
from datetime import datetime

def fetch_weather(location_name, location_query):
    """Fetch weather from wttr.in and return 1st line + wind/humidity"""
    try:
        url = f"https://wttr.in/{location_query}?format=%c+%t+Wind:%w+Humidity:%h"
        response = urllib.request.urlopen(url, timeout=5)
        data = response.read().decode().strip()
        return {
            "location": location_name,
            "query": location_query,
            "conditions": data,
            "wttr_url": f"https://wttr.in/{location_query}",
            "timestamp": datetime.utcnow().isoformat() + "Z"
        }
    except Exception as e:
        return {
            "location": location_name,
            "error": str(e)
        }

if __name__ == "__main__":
    castaic = fetch_weather("Castaic", "91384")
    mammoth = fetch_weather("Mammoth", "Mammoth+CA")
    
    output = {
        "timestamp": datetime.utcnow().isoformat() + "Z",
        "locations": [castaic, mammoth]
    }
    
    with open("working/ops/weather.json", "w") as f:
        json.dump(output, f, indent=2)
    
    print(json.dumps(output, indent=2))

Part 3: News Deduplication Schema (news-shared.json)

File: tools/news-shared.json
Purpose: Master log of all news reported to Quan β€” used to prevent repeats
Updated: Every morning after briefing generation
Retention: Keep indefinitely (allows detecting if same story cycles months later)

Schema

{
  "metadata": {
    "version": "1.0",
    "created": "2026-02-11T08:00:00Z",
    "last_updated": "2026-02-11T08:00:00Z",
    "description": "Master log of news reported to Quan via morning briefing. Used for deduplication.",
    "retention_policy": "Keep indefinitely. Delete only if source URL becomes permanently invalid."
  },
  "news_items": [
    {
      "id": "news_20260210_001",
      "headline": "Education Foundation awards $280K in grants to CA educators",
      "source_url": "https://example.com/article",
      "source_domain": "example.com",
      "category": "california-education-funding",
      "summary": "SchoolsFirst Federal Credit Union's Education Foundation distributed $280K across 45 districts in 12 CA counties.",
      "ztag_relevance": "Signals active investment in innovation; relevant for ZTAG positioning with districts.",
      "date_published": "2026-02-04",
      "date_reported_to_quan": "2026-02-09T08:00:00Z",
      "briefing_file": "working/ops/daily-briefings/2026-02-09-morning.md",
      "is_active": true,
      "notes": "First occurrence; monitor for follow-up coverage."
    },
    {
      "id": "news_20260210_002",
      "headline": "California teachers unions raising stakes in contract talks",
      "source_url": "https://politico.com/article",
      "source_domain": "politico.com",
      "category": "california-policy",
      "summary": "Unions say Newsom's record spending proposal not sufficient; context: Trump admin funding threats.",
      "ztag_relevance": "Policy uncertainty affects district budgets and purchase timing.",
      "date_published": "2026-02-02",
      "date_reported_to_quan": "2026-02-09T08:00:00Z",
      "briefing_file": "working/ops/daily-briefings/2026-02-09-morning.md",
      "is_active": true,
      "notes": "Ongoing story; monitor for resolution."
    },
    {
      "id": "news_20260209_001",
      "headline": "Ed-Tech Pulse 2026: PowerSchool annual research",
      "source_url": "https://powerschool.com/pulse",
      "source_domain": "powerschool.com",
      "category": "edtech-competitive",
      "summary": "PowerSchool released annual K–12 research on school challenges, budget uncertainty, IT director priorities.",
      "ztag_relevance": "Competitive intelligence; understand buyer priorities and pain points.",
      "date_published": "2026-02-08",
      "date_reported_to_quan": "2026-02-09T08:00:00Z",
      "briefing_file": "working/ops/daily-briefings/2026-02-09-morning.md",
      "is_active": true,
      "notes": "Annual report; typically not updated until next year."
    }
  ],
  "categories": {
    "california-education-funding": "District budgets, ELOP/CCLC announcements, state funding shifts",
    "california-policy": "State-level education policy, funding debates, reform proposals",
    "edtech-competitive": "PowerSchool, Google, Microsoft, IXL, new ed-tech entrants, market moves",
    "edtech-industry": "Conference announcements, industry trends, vendor consolidations",
    "policy-federal": "Federal ed funding, Biden/Trump policy (usually lower priority unless CA-specific impact)",
    "grant-cycles": "New grant programs, deadline announcements, ZTAG-eligible funding",
    "ztag-specific": "ZTAG customer wins, product coverage, peer mentions"
  },
  "dedup_rules": {
    "rule_1": "If headline is identical β†’ SKIP (obvious rerun)",
    "rule_2": "If headline is semantically identical but slightly rewording β†’ SKIP (e.g., 'CA teachers raise stakes' vs 'Teachers escalate contract talks')",
    "rule_3": "If source URL is same β†’ SKIP (same article syndicated multiple times)",
    "rule_4": "If story is about same event but different angle (e.g., follow-up) β†’ INCLUDE with note 'Related to [id]'",
    "rule_5": "If story cycled > 30 days ago β†’ INCLUDE if genuinely new developments (mark 'Revisiting [old_id]')"
  }
}

Dedup Logic (in morning-briefing-prompt.md context)

# Pseudo-code for checking dedup before briefing generation

def should_skip_news_item(candidate_headline, candidate_source, news_shared_json):
    """Returns True if this news should be skipped (already reported)"""
    
    for existing_item in news_shared_json["news_items"]:
        # Rule 1: Identical headline
        if candidate_headline.lower() == existing_item["headline"].lower():
            return True, f"Exact match: {existing_item['id']}"
        
        # Rule 2: Identical source URL
        if candidate_source == existing_item["source_url"]:
            return True, f"Same URL: {existing_item['id']}"
        
        # Rule 3: Semantic similarity + same domain (fuzzy match on key phrases)
        if (candidate_source.split('/')[2] == existing_item["source_url"].split('/')[2] and
            semantic_similarity(candidate_headline, existing_item["headline"]) > 0.85):
            return True, f"Similar story: {existing_item['id']}"
    
    return False, None

Maintenance (Weekly, by Minnie-Review)

Every Sunday, Minnie-Review:

  1. Checks for news items older than 90 days with is_active: true and no follow-up coverage
  2. Marks as is_active: false if story no longer relevant
  3. Flags duplicates or near-duplicates for manual cleanup
  4. Produces summary: "X active news stories, Y archived, Z new this week"

Part 4: Preference-Inference Document

What I Learned About Quan's Actual Preferences

This section distills patterns from 6,000+ lines of timeline, 10+ days of memory files, and explicit feedback. These are the real priorities Quan operates from, not stated ideals.

1. Embodied Vitality is Non-Negotiable

Evidence:

What this means for briefing:

Implication: A day where Quan loses 2 hours of ski time but gains $50K deal is a NET LOSS by his actual values. Briefing must surface this tradeoff.


2. Charlie Time is Protected (Not Negotiable, Not Flexible)

Evidence:

What this means for briefing:

Implication: Business opportunity that lands during Charlie time isn't an opportunity β€” it's a loss. Briefing must protect it absolutely.


3. Deep-Work Blocks Are Sacred (Non-Interruptible)

Evidence:

What this means for briefing:

Implication: Losing 2 hours to reactive meetings but completing a critical thinking task = win. Gaining 2 hours of low-value time = loss. Briefing must distinguish quality vs quantity.


4. Interruptions Created vs Removed is a Weekly Metric

Evidence:

What this means for briefing:

Implication: A feature that takes 5 min to execute but requires 30 min of attention/decision-making is regressive. Briefing should surface net load, not gross output.


5. Ambiguity Requires Pushback, Not Assumption

Evidence:

What this means for briefing:

Implication: Better to interrupt once with a question than to misdirect and waste time. Briefing must be proactive about ambiguity, not silent about it.


6. News Must Be Actionable or Contextual, Not Just Reported

Evidence:

What this means for briefing:

Implication: 5 relevant news items > 20 noise items. Quality signal matters more than volume.


7. Preference for Tradeoff Clarity Over Moral Judgments

Evidence:

What this means for briefing:

Implication: Briefing is a mirror (here's the tradeoff) + compass (here are the options), not a parent (you should...).


8. Charlie Automation is the Force Multiplier Priority

Evidence:

What this means for briefing:

Implication: This initiative justifies the entire Minnie project. Briefing should make progress visible daily.


9. ZUES (Not ZEUS) + Fathom Links + Weather Details Matter

Evidence:

What this means for briefing:

Implication: Consistency > speed. Dropped details erode trust in automation.


10. Cost Transparency is Expected (Not Hidden in Console)

Evidence:

What this means for briefing:

Implication: Quan is budget-disciplined and wants to understand spend drivers, not just total cost.


11. Async Delivery > Interruption

Evidence:

What this means for briefing:

Implication: Respect focus time. Async delivery > real-time interruption for routine updates.


12. Master Plan Phase Progress is Foundational Context

Evidence:

What this means for briefing:

Implication: Briefing should orient Quan in long-term trajectory, not just tactical day.


Summary: The Quan Profile

Quantum Gan optimizes for:

  1. Embodied state (skiing, movement, recovery as cognition foundation)
  2. Relational coherence (Charlie time, family, environmental order as prerequisite for presence)
  3. Founder sovereignty (protected deep work, minimal reactivity, clean attention)
  4. Business momentum (ZTAG scaling, pipeline, revenue β€” but only after above three)

His decision-making style:

What kills trust with Quan:

What builds trust:


Inference Confidence Levels

High Confidence (>95%, from explicit feedback or 10+ pattern instances):

Medium Confidence (70-90%, from 3-5 pattern instances or reasonable inference):

Lower Confidence (50-70%, single instance or inference):


What's NOT a Quan Priority (Or Actively Disliked)


Implementation Checklist

To activate the redesigned morning briefing:


Success Metrics

Technical:

Behavioral:

Phase Gate:


Future Enhancements (Post-Implementation)

These are out of scope for this redesign but should be tracked:

  1. Personalized opportunity scoring β€” Surface ZTAG pipeline opportunities that fit Quan's travel window (ski trip β†’ pre-SHAPE conference context)
  2. Relational entropy prediction β€” Model "if X doesn't reset, Charlie friction probability = Y%"
  3. Deep-work protection β€” Automatically block calendar from scheduling over protected focus windows
  4. Cost anomaly detection β€” Alert if daily spend spikes 2x normal without explanation
  5. Competitive move early warning β€” Flag mentions of Google/PowerSchool moves before they hit mainstream news
  6. Phase gate automation β€” Suggest phase advance 3 days before gate closure
  7. Charlie accounting dashboard β€” Real-time pre-reconciliation of Zoho Books + Xero with 1-click approvals

End of Morning Briefing Redesign Document

Created by Minnie subagent on 2026-02-10
Ready for implementation: 2026-02-11 08:00 PT