A personal morning briefing, built by me, for me — searched, synthesised, narrated, and delivered to my inbox at 5am local time
I was spending too much time every morning piecing together what was happening in the world — and still feeling behind.
The Economist, NYT, BBC, TechCrunch, AI newsletters, podcasts — all in different apps, different inboxes, different formats. The signal was buried in the noise. By the time I'd cobbled something together, half my morning was gone.
What I wanted was a single briefing — structured by topic, sourced only from outlets I trust, deep enough to feel genuinely informed, and ready before I hit the road. So I built it.
At 5am, an email lands in my inbox. It contains:
Today's high, current conditions, and a clothing recommendation for both home and work — so I know what to wear before I leave the house.
World & Politics · India · Tech & AI · Business & Finance · Science & Health · Sports. Four to five stories per section, with real summaries — not just headlines — and a "Why it matters" note on the top stories.
A rotating discovery section that surfaces stories from sources outside my usual rotation — WIRED, MIT Technology Review, Quanta Magazine, Hacker News, Aeon, and more — to keep me from reading the same perspectives every day.
A persistent curated backlog — one longform read and one podcast episode, each with a day counter so I know how long it's been queued. Also tracks what I'm currently reading and listening to (book + audiobook). Items sync from my reading and listen lists; a nudge appears after Day 7.
The entire brief is narrated and delivered as an MP3, linked directly in the email. On days when I can't read, I listen instead.
A Python pipeline runs on GitHub Actions. No server, no database, no ongoing maintenance.
Currently paused — the scheduled run is switched off while the content model is being reworked. Everything below describes the pipeline as built, and it still runs on demand.
It's also travel-aware — by reading my Google Calendar ICS feed, it detects multi-day trips, figures out the destination timezone, and shifts delivery to 5am local time wherever I am. No manual changes needed.
Claude uses live web search to gather today's top stories across all categories, pulling from trusted outlets: The Economist, NYT, BBC, TechCrunch, Stratechery, and more.
Claude cross-references stories across sources and writes substantive summaries — not headline rewrites. Sources I subscribe to carry more weight. A post-synthesis validation layer then catches cross-section duplicates, meta-items, hallucinated sources, and explore stories without real URLs — code-level guardrails that work regardless of prompt compliance.
The brief is converted to a natural spoken script and sent to Deepgram's text-to-speech API, which produces the MP3 in your chosen voice. The audio covers the news sections and the Explore segment — the Deep Dive links are email-only.
An HTML email is generated and sent via Resend. The HTML and MP3 are committed to the repository so the email can link the audio at a public URL, then pruned by a retention step after 7 days. The Deep Dive section is email-only — it never reaches the public archive.
It costs roughly $1.00–1.15 per run, about $30–35 a month if it runs daily — almost entirely Anthropic API usage, dominated by the web searches and the tokens their results carry. Deepgram and Resend are pennies. GitHub Actions is free for public repositories.
For the engineers — the full stack, openly published:
Sources and categories are configurable via a single config.json file. Everything else is environment variables.
The full source code is on GitHub. Fork it — the README will walk you through setup.
View on GitHub →