Automated Morning Briefings: Agent Pipeline + Kindle PDF Delivery

I wake up and the day is already summarized. Weather, calendar, market context, overnight updates, and system status are waiting on my Kindle before my alarm goes off.

If you want the hardware/runtime context behind this setup, start with Building Regulus. If you’re designing multi-agent roles, this sub-agent breakdown is the companion piece.

TL;DR

  • Briefing starts at 4:30 AM MST.
  • Regulus orchestrates collection from services + specialist agents.
  • Output is filtered into a concise morning brief.
  • Full brief goes to Kindle (PDF); short summary goes to Discord/Telegram.
  • Optional TTS audio brief is posted to Discord for hands-free review.

Pipeline

The briefing runs daily at 4:30 AM MST using an agent-native workflow.

Flow:

  1. Trigger — A scheduled run kicks off the morning briefing workflow.
  2. Collection — Regulus gathers core context:
    • Weather (Castle Rock)
    • Calendar focus for today
    • Market context (futures / pre-market movers)
    • Overnight updates and system health
  3. Agent inputs — Specialist agents contribute only if there’s meaningful new signal.
  4. Filtering — Noise gets cut. The brief highlights what changed, what matters, and what needs action.
  5. Delivery — Full PDF to Kindle, compact text summary to Discord/Telegram, and optional TTS audio to Discord.

This keeps the briefing useful instead of turning it into a giant dump of notifications.

Agent contribution model

Each specialist only contributes in its lane:

  • Farsight: overnight business/research signal
  • Forge: fitness/recovery context when relevant
  • Centinel: market/trading context and notable moves

No contribution, no section. If nothing meaningful changed overnight, the briefing stays short.

That dynamic length is intentional. A good briefing is concise by default and detailed only when the day requires it.

PDF generation and Kindle delivery

The output is generated as a clean, readable PDF optimized for quick early-morning reading.

Why Kindle still wins for this use case:

  • e-ink is easier on eyes at 5–6 AM
  • fewer distractions than phone-first reading
  • one document, linear review, no app hopping

Telegram/Discord still gets a short fallback summary so I can scan quickly from my phone if needed.

I also added an optional text-to-speech output that posts the quick brief as audio in Discord. That makes the briefing usable while moving around in the morning, without opening the full PDF first.

How to implement this yourself (OpenClaw runbook)

This version is optimized for a copy/paste-and-run setup.

Prereqs (exact)

You need:

  • OpenClaw running
  • One orchestrator agent (main coordinator)
  • Optional specialist agents (business, fitness, markets)
  • One short-delivery channel (Discord or Telegram)
  • Optional long-form destination (Kindle email or email inbox)
  • Connected data sources:
    • weather
    • calendar
    • optional markets/news
    • basic system health signals

Step 1) Create the daily schedule

Set one daily run at 4:30 AM local time.

Example schedule config (concept):

  • name: morning-briefing
  • time: 04:30
  • timezone: your local timezone
  • target: orchestrator agent

Step 2) Paste this exact orchestrator instruction

Build and deliver the Morning Briefing.

1. Collect: local weather, today’s calendar, overnight system health, and market context (if configured).
2. Ask specialist agents for updates only if meaningful new signal exists.

Filtering rules:
- Include only meaningful changes, risks, blockers, and actions.
- Omit sections with no new signal.
- If a source fails, mark it “unavailable” and continue (never fail the whole briefing).

Produce two outputs:

A) FULL_BRIEF (long-form)
Format:
- Today at a Glance (3–5 bullets)
- Weather + schedule constraints
- Overnight changes
- Specialist deltas (only if relevant)
- Top actions this morning (max 5, numbered)

B) QUICK_BRIEF (chat-friendly)
Format:
- 6–10 bullets max
- One-screen scan
- Action-first wording
- End with: “Top Priority Now: …”

Delivery:
- Send FULL_BRIEF to [LONG_FORM_DESTINATION]
- Send QUICK_BRIEF to [CHAT_DESTINATION]

If PDF mode is enabled:
- Convert FULL_BRIEF to PDF
- Send PDF to [PDF_DESTINATION]
- On PDF failure, send FULL_BRIEF markdown fallback and note “PDF unavailable”

Quality gate before send:
- Remove repeated points
- Remove generic filler
- Ensure each bullet is either information, risk, or action
- If no significant overnight changes, send a short “quiet morning” version

Step 3) Force this section order every day

  1. Today at a glance (3–5 bullets)
  2. Weather + schedule constraints
  3. Critical updates overnight
  4. Market/business context (if relevant)
  5. System/agent health
  6. Actions for this morning (numbered, max 3)

If a section has no signal, skip it.

Step 4) Add signal thresholds (noise control)

Use these rules:

  • Calendar: include only today/next 24h events with prep, conflict, or deadline impact
  • Markets: include only position-impacting moves or unusual volatility
  • Agent updates: include only blockers, failures, non-routine changes, or clear opportunities
  • System health: include incidents/recoveries/degradation; otherwise one-line healthy status
  • Actions: max 5, concrete, and executable this morning

No trigger = no section.

Step 4.1) Specialist prompts (copy/paste)

[BUSINESS/RESEARCH SPECIALIST PROMPT]

Generate overnight business/research deltas for the last 24 hours.

Rules:
- Signal-only (no routine status/no filler)
- Max 5 bullets total
- Include only meaningful changes, risks, opportunities, or blockers
- If no meaningful updates, return exactly:
"No meaningful business/research update in the last 24 hours."

Output format:
- Change:
- Why it matters:
- Action Needed: [only if concrete next step exists; otherwise "None"]
[FITNESS SPECIALIST PROMPT]

Generate overnight fitness/recovery deltas for the last 24 hours.

Rules:
- Signal-only (no routine check-ins/no generic advice)
- Max 5 bullets total
- Include only deviations, recovery risks, schedule-impacting factors, or notable readiness changes
- If no meaningful updates, return exactly:
"No meaningful fitness/recovery update in the last 24 hours."

Output format:
- Change:
- Why it matters:
- Action Needed: [only if concrete next step exists; otherwise "None"]
[MARKETS SPECIALIST PROMPT]

Generate overnight market/trading deltas for the last 24 hours.

Rules:
- Signal-only (no broad market recap unless it changes decisions)
- Max 5 bullets total
- Include only position-impacting moves, volatility/regime shifts, execution blockers, or clear opportunities
- If no meaningful updates, return exactly:
"No meaningful market/trading update in the last 24 hours."

Output format:
- Change:
- Why it matters:
- Action Needed: [only if concrete next step exists; otherwise "None"]

Step 5) Add fallback behavior

Require these rules:

  • never fail the whole briefing because one source is down
  • mark missing sections explicitly (source unavailable)
  • deliver on schedule anyway

Reliability beats perfection.

Step 6) Split delivery by reading context

  • Short channel message: 6–12 lines, action-first
  • Long-form brief: full context (markdown/PDF/email/Kindle)

This prevents phone overload while preserving full detail.

Step 7) Weekly tuning loop

Every 7 days, adjust:

  • sections that are consistently noisy
  • thresholds that over/under-trigger
  • action list quality (too vague vs actionable)

Treat the briefing as a product, not a script.

Expected output examples

Short summary example (chat):

Morning Brief — 2026-02-16
- Day type: action-heavy
- 09:00 client call needs prep doc
- Weather: 34°F, wind 12mph (jacket + commute buffer)
- Overnight: one failed integration retry succeeded at 03:12
- Markets: 2 holdings with pre-market volatility >2%
Top actions:
1) finalize call prep notes
2) review volatile positions before open
3) confirm integration health after lunch

Long-form example (outline):

# Morning Briefing — 2026-02-16
## Today at a glance
## Weather + schedule constraints
## Critical updates overnight
## Market/business context
## System/agent health
## Actions for this morning (max 3)

Common failure fixes (if X fails, do Y)

  • Weather API fails → mark weather unavailable, continue briefing
  • Calendar auth expired → include warning + run with other sections
  • Market feed unavailable → omit markets section, keep actions from remaining signal
  • Specialist silent/no updates → skip section (do not add filler)
  • PDF generation fails → send short summary + markdown full brief to chat
  • Kindle/email delivery fails → send full markdown in long-form channel as fallback

Appendix: Technical builder notes

If you want to customize deeply:

  • keep one orchestrator job (avoid fragmented schedulers)
  • keep specialist output contracts strict (NO_UPDATES or structured bullets)
  • use deterministic formatting before PDF generation
  • prefer graceful degradation over hard-fail pipelines
  • log section-level failures for weekly threshold tuning

Reliability and fallback behavior

Morning workflows break when external APIs are flaky, so we handle this like an ops system, not a toy script.

  • If a source is unavailable, the briefing degrades gracefully instead of failing hard.
  • Missing sections are omitted rather than filled with junk.
  • The output still ships on time, with explicit notes where data is stale or unavailable.

Shipping a complete-enough brief every morning is better than occasionally shipping a perfect one.

What makes a briefing worth reading

The first versions had too much in them. Every unread message. Full weather detail. Every market line item.

The current rule is simple: if I wouldn’t mention it in a 5-minute coffee conversation, it doesn’t belong in the morning brief.

That means:

  • prioritize changes over static data
  • show decisions and risks, not raw feeds
  • keep defaults short
  • expand only when there’s real signal

The actual value

Before this: six apps, scattered attention, and context switching before coffee.

Now: one document, five to ten minutes, clear starting context for the day.

The high-value part isn’t PDF formatting. It’s that always-on agents accumulate context overnight, and the morning briefing turns that context into a human-readable decision surface.

That’s the process we’re using now.

If you run OpenClaw, copy the runbook, set conservative signal thresholds first, and tune weekly. The fastest way to kill a morning brief is letting it get noisy.