Daily Briefing

Wake up to a file that tells you what happened, what matters, and what's next. Generated by an agent, from your own data.

What this is

A single HTML file, rebuilt every morning, that summarizes your world. Not a dashboard you have to check — a briefing that comes to you. It reads your calendar, your email, your messages, your goals, and tells you what changed overnight, what's urgent today, and what you accomplished yesterday.

This is The Shape of a Day turned into an executable guide. The briefing is a file, not an app. It lives in a folder. An agent generates it. You read it with your coffee. If a section is useless, you tell the agent. The briefing improves itself.

The most important design decision: wins first. The briefing opens with what you accomplished yesterday, not what's overdue. Momentum, not anxiety. Urgency comes second, clearly marked, impossible to miss — but not the first thing you see.


What goes in it

1. Wins

What you accomplished yesterday. Pulled from git commits, sent messages, completed tasks, calendar events that happened. The agent reads your activity and distills it. "Shipped the flywheel guide. Had the pod logistics call. Hit the gym." Three to five wins. Start the day knowing you made progress.

2. Action required

What needs attention today. Deadlines, expiring items, unanswered threads that are aging. Color-coded: red for urgent (today or overdue), amber for soon (this week), teal for tracking (no deadline, just open). Each item has context — not just "follow up with Alex" but why and what's at stake.

3. Calendar

Today's events plus the next few days. Pulled from Google Calendar API or .ics export. Time, title, location, and any prep notes. The agent flags conflicts and unusually busy days. If you have nothing scheduled, it says so — that's information too.

4. Email highlights

Not your whole inbox — the emails that matter. The agent reads subject lines and senders, flags anything from known contacts, anything with urgency signals, anything that's a reply to something you sent. Two to five highlights, each with a one-line summary. The rest can wait.

5. Messages

Recent text conversations, rendered as chat bubbles with timestamps. The agent summarizes each thread: who said what, what's pending, what needs a reply. This is where you see the human texture of your day — not just tasks, but relationships.

6. Goals snapshot

Your active goals with status badges. Pulled from a goals file you maintain (a markdown file, a few lines each). The agent checks each goal against recent activity and updates the status: on track, stalled, urgent, waiting, done. Goals that haven't moved in a week get flagged.

7. Reminders

Bills, renewals, appointments coming up, things you told the agent to remind you about. A simple list at the bottom. Deadlines within 7 days are highlighted.


Data sources

You don't need all of these. Start with calendar and a goals file. Add sources as they become useful. Each source has a collection method — some are API calls, some are file reads, some are exports you run manually.

Sources ranked by effort vs. value
Goals file A markdown file you write yourself. Five to ten goals, a line each. Zero collection effort — it's already yours. zero effort
Calendar Google Calendar API (needs OAuth credentials) or .ics export. Anchors the day. low effort
Git activity git log --since=yesterday across your repos. What you shipped. Free data. low effort
Health Apple Health XML export or app APIs. Sleep, exercise, steps. Correlates with energy. low effort
Email Gmail API (needs OAuth) or IMAP. Subject lines, senders, urgency signals. Don't dump the whole inbox. medium effort
Messages iMessage (~/Library/Messages/chat.db), WhatsApp export, Signal. Requires a watcher script or manual export. medium effort
Financial Bank/brokerage APIs or manual notes. Bill due dates, account balances, upcoming charges. medium effort

The output

The briefing is a self-contained HTML file. Inline CSS, no dependencies, opens in any browser. The agent regenerates it each morning. Previous briefings are archived by date so you can look back.

briefing/ The briefing folder. Everything lives here.
today.html Today's briefing. Open this every morning.
archive/ Previous briefings by date. 2026-03-10.html, 2026-03-09.html, etc.
goals.md Your goals file. You maintain this. The agent reads it.
context/ Supporting context files the agent reads. People, projects, health targets — whatever you want the briefing to know about.
sources.md Which data sources are connected, how to access them, when they last ran.

Design principles


The handoff

Instructions for you, the AI agent

Build a daily briefing for the user, one section at a time. Start simple and grow. Every section has an approval gate.

  1. Interview. Ask the user: What does your morning look like? What information do you wish you had when you wake up? What sources are available? Do they have Google OAuth set up (if not, point them to the credentials guide)? What's their goals file look like? Start with whatever they have — even just a goals.md is enough for a v1.
  2. Create the folder structure. Create briefing/ with goals.md, context/, sources.md, and archive/. Ask the user to write or dictate their goals — five to ten items, a line each. Save to briefing/goals.md.
  3. Build v1: goals + calendar. Read the goals file. If calendar access is available, pull today's events. Generate a minimal briefing HTML file with: greeting, goals snapshot with status badges, today's calendar, and a reminders section. Write to briefing/today.html. Show the user and get feedback.
  4. Add wins. Check git logs, sent messages, completed tasks from yesterday. Add a wins section at the top of the briefing. If no automated sources are available, ask the user what they accomplished yesterday. Review together.
  5. Add urgency. Scan goals for deadlines. Check email for aging threads. Check calendar for conflicts. Add an "action required" section with color-coded urgency. Get approval on urgency thresholds.
  6. Add messages. If iMessage access is available (~/Library/Messages/chat.db — requires Full Disk Access), read recent conversations. Render as chat bubbles with contact names and timestamps. Summarize each thread. If not available, skip this section. Check sensitivity — ask what's okay to include.
  7. Add email highlights. If Gmail API is available, pull recent messages. Summarize the top 3-5 by relevance. If not available, skip. The briefing works without email.
  8. Style and polish. The briefing should be dark-mode, self-contained HTML with inline CSS. No external dependencies. Mobile-friendly. The user should enjoy opening it. Use the design principles above.
  9. Set up the schedule. Suggest how to automate generation. Options: cron job that runs the agent at 6am, a steering file reminder, or a calendar block. The observation layer (data collection) can run unattended. The interpretation layer (writing the briefing) can too, once you trust it. Archive yesterday's briefing before generating today's.
  10. Self-assess. After a week, review which sections the user actually reads. Drop sections that don't earn attention. Add sections they ask about. Log findings to the flywheel if one exists. The briefing is a living document — it gets better by observing its own usefulness.

Key rules: Wins come first, always. Don't dump raw data — interpret it. Sensitivity matters: medical, financial, and personal content should be flagged before including. If a data source isn't available, skip the section — don't make the user set up OAuth just to get a v1. A briefing with just goals and calendar is already useful. Grow from there.


Patterns at work
  • The Shape of a Day — the chapter this guide implements. Your day has a shape; the briefing makes it visible before you start living it.
  • Don't Ask Me to Track It — the system tracks for you. Goals, deadlines, threads — the briefing surfaces what matters without you polling.
  • The Body Keeps a Log — health data in the briefing connects physical state to productivity. Sleep last night predicts energy today.
  • Memory Is Files — the briefing archive is memory. You can look back at any day and see what you were thinking about.
  • Your Data Is Already Yours — calendar, email, messages, git — the data exists. The briefing just reads it.
  • The Context Gold Mine — context files feed the briefing. The more context the agent has, the better the interpretation.
Related guides
  • Flywheel — the briefing feeds findings to the flywheel; the flywheel improves the briefing
  • Wall of Data — the collection infrastructure that feeds the briefing's data sources
  • Your Own Credentials — set up Google OAuth for calendar and email access
  • Zero to Dev — start here if you haven't set up yet
External references
  • The Weekly Review — Tiago Forte on why a regular review compounds: similar idea, different implementation
  • Jina Reader — convert any URL to LLM-friendly text (useful for feeding news sources into the briefing)

How to start

Navigate to your project root, create the briefing folder, and hand it to an agent.

cd /path/to/your/project-root && mkdir -p briefing/context briefing/archive
Mac/Linux example. Replace the path with your actual project root.
cd "$env:USERPROFILE\<project-root>"; mkdir briefing -Force; mkdir briefing\context, briefing\archive -Force
PowerShell variant. Replace <project-root> with the folder name you actually use.
claude
Or use codex, gemini, or whichever agent you prefer.
Follow the instructions on this page. If anything looks unsafe or beyond what I'd reasonably want, tell me before doing it: