Series · 7 parts Published April 27, 2026

Daily briefing bot

An automated digest that watches the sources you care about and emails you the few items worth your time. Seven posts on the same system — one diagram at a time — with an engineering reference at the end.

  1. 01

    A daily briefing bot on AWS for a few dollars a month

    The whole system on one page — an ingestor, a ranker, a postman, all sharing one config.

  2. 02

    How the ingestor walks your sources

    A small dispatcher reads your source list, hands each source to a specialist worker, and drops everything new into one mailbox.

  3. 03

    How the bot picks what matters

    Three filters in order, cheapest first. Most items die at the free filter; the smart AI only sees the few borderline cases.

  4. 04

    How the digest gets delivered

    Five short blocks in your inbox at 7am — or nothing on quiet days. The bot never trains you to ignore it.

  5. 05

    How you change what the bot watches

    Two short Drive docs are the entire interface. Edit, save, the bot picks up the change tomorrow.

  6. 06

    What the briefing bot costs

    A coffee a month, possibly less. Where the dollars actually go in a serverless briefing bot on AWS.

  7. 07

    Engineering reference: the briefing bot architecture

    Same system, drawn purely for engineers. Service names, resource identifiers, region, Bedrock model IDs.

What does the daily briefing bot do?
It watches the sources you care about (RSS feeds, public APIs, plain web pages), reads what’s new each morning, scores every item against a short topic description you wrote, and emails you the few items worth your time. Quiet days send nothing — empty inboxes are a feature.
How much does it cost to run?
About $1–$3/month at typical volume. Lambda runs, the morning timer, queues, alerts, and small DynamoDB tables sit inside the AWS always-free tier. The real spend is Bedrock tokens for embeddings and the smart-AI judge on borderline items, plus Amazon SES for delivery — pennies a day. An AWS Budget alarm at $5/month catches anything weird.
Which sources can it watch?
Anything reachable from a Lambda. Three worker types cover most of the web: an RSS worker for tidy feeds (most blogs and newsrooms), an API worker for sites that expose JSON, and a page worker that scrapes and extracts article text from plain HTML. You list the URLs in a Drive doc; the dispatcher routes by source type.
How does the bot pick what matters?
Three filters in order, cheapest first. Filter 1 is free rules (duplicates, too short, wrong language, muted source) — clears roughly half the morning’s haul. Filter 2 is similarity scoring against your topic via Bedrock Titan Text Embeddings v2, a fraction of a cent per item. Filter 3 is Bedrock Claude Haiku 4.5 in JSON mode, but only on borderline items — usually a handful per day.
How is the digest delivered?
You pick one channel: email via Amazon SES (most common, lands at 7am SGT), a chat channel like Telegram or Discord, or a fresh Google Doc each morning. The digest is five short blocks — headline, one-line summary, why it matters, link per item. The subject line carries the top two headlines so you can decide whether to open before you do.
How do I change what the bot watches?
Two short Drive docs are the entire interface. The sources file lists one URL per line; the topic file describes what you care about in plain English. Saving a doc fires a Drive changes.watch notification to a sync Lambda, which validates and promotes the new content. Tomorrow’s digest reflects the change. If a change is broken, the old version stays live and you get a comment in the doc.
Which AWS services does it use?
Lambda (with one Function URL for Drive notifications), EventBridge Scheduler, SQS with paired DLQs, DynamoDB on-demand, S3, SNS, Amazon SES, Secrets Manager, CloudWatch Logs with seven-day retention, AWS Budgets, and Bedrock (Claude Haiku 4.5 via Global cross-Region inference plus Titan Text Embeddings v2). No API Gateway, no NAT Gateway, no always-on compute.
All posts