Case study / Automation / News delivery
News Aggregator
A daily email briefing that brings AI headlines and an optional stock watchlist into one digest.
01 / Context
The problem
Keeping up with AI news and stock-watchlist headlines means checking multiple searches throughout the day. I wanted a scheduled briefing that collects recent stories and delivers them directly to an inbox.
02 / Ownership
My contribution
- Built the RSS and Atom pipeline with publication-window filtering, exact-link deduplication and newest-first ordering.
- Created HTML and plain-text email templates and connected delivery to the Resend API.
- Added daily GitHub Actions scheduling, local preview controls, transient-error retries and partial-feed warnings.
03 / System design
Architecture
- 01Collect
A scheduled GitHub Actions job or local CLI loads configuration and fetches AI and optional stock-watchlist RSS feeds.
- 02Filter
Parse RSS and Atom, normalize dates to UTC, keep recent stories, remove duplicate links and apply the story limit.
- 03Render
Build HTML and plain-text digests with escaped feed content, validated links and partial-coverage notices.
- 04Deliver
Send through Resend with request timeouts, transient-error retries and a payload-based idempotency key.
04 / Evidence
Results
- Scheduled cloud workflow
- Daily
- Email formats
- HTML + plain text
- Third-party Python dependencies
- 0
The implemented pipeline collects, filters and delivers RSS headlines using Python's standard library. Dry-run mode previews the digest without sending email. Partial feed failures are shown in the digest, while a total feed outage stops delivery. The project does not report measured delivery reliability or readership results.
05 / Boundaries
Limitations
- Headlines and excerpts come from publisher RSS entries. The application does not generate summaries or use an LLM.
- Deduplication applies within each run; there is no persistent delivery history. Rolling publication windows can overlap or leave gaps when runs are delayed.
- Coverage depends on the available feeds, and GitHub Actions schedules can be delayed or missed. Resend API acceptance does not establish final inbox delivery.
06 / Explore the code
Run locally
Use Python 3.12 or newer; no package installation is required. Run python news_digest.py --dry-run --output preview.html to preview live feeds locally. Sending requires a Resend API key, an authorized sender and configured recipients. The repository also documents daily scheduling through GitHub Actions.
Setup instructions07 / References
Sources
- News Aggregator repository
Implementation, features, architecture, setup and documented reliability limits. The repository calls the application AI News Digest.