Technology Stack
A multi-agent, cross-model pipeline on serverless AWS. It reads the AI news, writes the show, voices the hosts and publishes every episode.
How an Episode Is Made
Daily and weekly episodes run with no human in the loop. Special episodes start from a human-written spec.
Intake
Curated AI newsletters arrive in a dedicated mailbox, an RSS aggregator pulls 30+ feeds with full-article extraction, and Joanna files her fact-checked social intel.
Story selection
Stories are classified and matched across sources with embeddings. A story-arc memory tracks what the show has already covered, so nothing is repeated as news.
Script
Claude writes the brief, carrying verbatim source quotes through every stage so the facts stay anchored to what the sources actually said.
Host voice
Gemini adapts the script for Thom or Lia (daily) or turns it into a two-host conversation (weekly). Each host has a persona and a memory of past positions.
Cross-check
A model from a different provider validates every step: freshness, repetition, length and style. Claude checks Gemini, and Gemini checks Claude.
Audio & art
Gemini TTS voices the hosts chunk by chunk, voice validation catches drift, theme music is mixed in, and Gemini generates and checks the cover art.
Publish
The episode goes to the RSS feed, which Apple Podcasts, Spotify and YouTube pick up. The website rebuilds daily from the latest data.
AI Models
Anthropic Claude and Google Gemini (via Vertex AI) do the core work, with OpenAI and SiliconFlow in supporting roles
| Job | Done by | Checked by |
|---|---|---|
| Daily news brief | Claude Sonnet | Gemini Flash |
| Daily host-voice adaptation | Gemini Flash | Claude Haiku |
| Weekly synthesis | Claude Opus | Gemini Flash |
| Weekly two-host dialogue | Gemini Pro | Claude Haiku |
| Special episodes | Claude Opus + Gemini Deep Research | Gemini Flash |
| Story classification & freshness | Gemini Flash | n/a |
| Social intel fact-check | Gemini Flash + Google Search grounding | n/a |
| Episode titles & image prompts | Claude Haiku | n/a |
| Cover art | Gemini Flash Image (OpenAI GPT Image fallback) | Gemini Flash |
| Host voices | Gemini Flash TTS (Lia: Aoede, Thom: Enceladus) | pyannote + Resemblyzer, Gemini listen check |
| Story matching | Qwen Embedding (SiliconFlow) | n/a |
| Host memory | Gemini Flash, Claude Sonnet, Claude Opus | Drift audit |
Models are managed in a single registry, so an upgrade is a one-line change that is tested against baseline runs before it goes live.
Joanna: The Social Network News Monitor
A separate agent that watches public social networks every morning and briefs the newsroom
Listen
Each morning, scans public posts on X and Bluesky for emerging AI news
Brief
Files a short briefing of the most promising leads, each with its source
Verify
Every tip is independently fact-checked before it can reach an episode
AWS Cloud Infrastructure
Fully serverless, running in Europe (Frankfurt and Ireland)
AWS Lambda
Dozens of single-purpose functions, mostly Docker container images
Step Functions
Orchestrates the daily, weekly, special, per-chunk audio and Joanna flows
EventBridge
Rules and Scheduler for daily runs and scheduled special episodes
Amazon S3
Audio, RSS feeds, images, transcripts, inbound email and Pulse data
CloudFront
CDN for the website and every media file; nothing is served from raw storage
DynamoDB
Episodes, briefs, story arcs, host memory, run history and monitors
Amazon SQS
Queues inbound newsletters and story-arc updates
Amazon SES
Branded mailboxes, newsletter intake and Joanna’s briefings
Amazon SNS
Alerts for failures, monitors and deployments
Amazon ECR
Container registry for the Lambda images (with a pinned FFmpeg build)
Secrets Manager
API keys and credentials, kept out of code and config files
API Gateway
Powers the AI News Pulse dashboard
CloudWatch
Logs, metrics and alarms behind the daily health monitors
Route 53
DNS for dailyaibyai.news, including email authentication records
Audio & Media
Turning scripts into consistent, natural-sounding episodes
FFmpeg + pydub
Audio assembly, chunk stitching and theme-music mixing
pyannote + Resemblyzer
Speaker diarization and voice matching, catching host voice drift
librosa + mutagen
Duration checks and audio metadata
Amazon Polly
Emergency fallback voice if Gemini TTS is unavailable
Website & Data Products
What you see and listen to
AI News Pulse →
Tracks how often 249 companies, products, people and concepts (370+ names and aliases) show up in AI news over time. You can compare up to eight at once.
Podcast RSS feed
One feed with Podcasting 2.0 transcripts feeds Apple Podcasts, Spotify, YouTube and any podcast app.
Next.js 15 + React 18
Static export, rebuilt every day from fresh episode data
TypeScript + Tailwind CSS
Type-safe components and utility-first styling
Recharts
Interactive trend charts on AI News Pulse
GitHub Actions
Daily build, S3 deploy, CDN invalidation and email notification
Google Analytics 4
Website usage analytics
How We Keep It Honest
The engineering practices behind an AI show you can trust
Cross-model validation
The model that writes is never the model that checks. Generator and validator always come from different providers.
Factual anchoring
Verbatim source quotes travel with each story from intake to final script, so claims can be traced to sources.
Verified social intel
Social posts are treated as leads, not facts. Each is checked against web search and labelled verified, unconfirmed or dropped.
Test mode
Every pipeline can run end to end with test=true, skipping writes to production data and the public feed.
Golden baselines
Model upgrades are A/B tested against recorded baseline runs before being promoted to production.
Health monitors
Daily and weekly monitors check each run (sources, intel, length, audio, publishing) and alert on anything off.
Built with Python, AWS CDK and the Claude Code and Pi (pi.dev) coding agent harnesses, which pair-programmed most of this stack.
Meet the Team Behind ItNever Miss an Episode
Subscribe on your favorite podcast platform to get daily AI news and weekly strategic analysis.