yourcast!: Building a Personal News Podcast Generator
What is it?
yourcast! is an AI-powered personalized news app that generates unique podcasts tailored to your interests in just 2 minutes. Instead of scrolling through dozens of news sites or listening to generic podcasts covering stories you don't care about, yourcast! lets you pick your topics — whether it's World News, AI and ML, Football, or even custom topics of your own choosing — and generates a professional-quality podcast featuring only the stories relevant to you.
The app aggregates news from more than 200 RSS feeds daily, intelligently deduplicates coverage using AI-powered semantic clustering, and uses a multi-agent system to craft cohesive, naturally-flowing podcast scripts. The result is a personalized news briefing that sounds like it was made just for you, but that's probably because it was.
The Inspiration
yourcast! was born out of pure frustration.
Like many people my age, my attention span has been whittled down to mere minutes, and my interests have been massively diversified: music production, AI technology, MMA, world news, startups, film & tv. I found myself flipping through 10-15 news sites and YouTube channels every day just to stay informed and keep up with the latest happenings.
That wasn't the only issue. I wanted my news fix without being glued to my phone—at the gym, on the bus, lying in bed. A podcast seemed like the obvious solution—except every podcast I tried was either 2 hours of strangers debating stories I don't care about, generic news read by robots, or ragebait algorithms trying to keep me scrolling.
I wanted something that felt like a friend saying, "Hey, here's what happened today in the stuff you actually care about."
When I heard about the Google Cloud Run Hackathon, I knew exactly what to build.
The Vision
What if generating a personalized news podcast was as easy as picking topics and hitting a button?
Pick your interests → Click generate → Wait a couple minutes → Get a professional podcast. No duplicates. No fluff. No ads.
The Build
Challenge 1: The Deduplication Problem
Pull news from 200+ RSS feeds and you'll quickly discover that 50 websites all cover the same story. My early prototypes sounded like:
"OpenAI launched GPT-5 today. Also, OpenAI released GPT-5. And breaking: OpenAI announces GPT-5..."
The solution: AI-powered semantic clustering with Vertex AI + PostgreSQL's pgvector. Convert each article to a 768-dimensional vector, find similar articles (cosine similarity > 0.85), then let Gemini decide: "Are these the same story?"
Result: Podcasts full of fresh, DISTINCT stories.
But I hit a subtle bug: "India beats Australia in World Cup semi-final" had 0.87 similarity with "India beats South Africa in World Cup final." My AI merged them. Wrong—they're discrete events 72 hours apart.
The fix: Taught the clustering AI about time sensitivity. Events >24 hours apart are usually different stories. Different matches in a tournament = different stories. Semi-final ≠ final. Problem solved.
Challenge 2: Database Connection Pool Exhaustion
I set --min-instances=1 on my Cloud Run worker to eliminate cold starts. Perfect! Except podcast generation started mysteriously failing after a few hours with a database connection error.
What happened: Every EpisodeService() instance created a NEW database engine with 15 connections. Multiple instances per request meant connections accumulated until hitting Cloud SQL's 100-connection limit.
The fix: One shared database engine at module level that all instances reuse.
Before: 100+ connections → exhaustion. After: Max 15 total → perfect.
This was a production-only bug. Worked fine locally because my dev environment restarted frequently. min-instances=1 exposed the leak.
Challenge 3: When Articles Won't Load
Some news sites are slow. Some block bots. Some timeout. If the primary article fails to load, should the entire podcast segment be skipped?
The innovation: Cluster fallback strategy.
Since articles are already grouped into clusters (remember the deduplication?), when fetching article content fails, I query the database for up to 3 backup articles from the same cluster. If NYTimes times out, try BBC. If BBC blocks, try Reuters. All cover the same story (they're clustered), so content quality stays high.
Real-world impact: Article fetch success rate went from ~70% to ~98%.
How Script Generation Works
I built a multi-agent system using Google's Agent Development Kit (ADK) with 4 specialized agents: MetadataAgent sets tone and title, SummarizerAgent writes the description, FramingAgent generates intro/outro, and TopicScriptAgents write scripts in parallel.
Like a newsroom: The editor sets the tone, the host writes the intro, and writers simultaneously draft segments. Parallel agents cut generation from 5 minutes to 1. Parallel text-to-speech (8 workers): 10-15 seconds → 2-3 seconds.
What I Learned
1. Parallelism Is Your Best Friend
Three places where parallelism saved me:
- Agent execution: Multiple TopicScriptAgents running simultaneously
- TTS generation: 8 audio chunks processing at once
- RSS fetching: 10 parallel workers for feed discovery
Combined speedup: 3× faster generation.
2. Serverless Is Magic
I deployed 3 Cloud Run services, Cloud SQL, Cloud Tasks, and Cloud Scheduler. Total infrastructure management time? Zero hours.
No Kubernetes YAML. No EC2 instances. No load balancer config. Just gcloud run deploy and it works. Auto-scales from 0 → 1000+ instances.
3. Google Cloud's Ecosystem "Just Works"
Services integrate seamlessly: Application Default Credentials (no API keys), OIDC authentication (Cloud Tasks → Cloud Run with zero config), Unix sockets (Cloud Run → Cloud SQL with no public IPs), and IAM everywhere. It felt like the services were designed to work together.
The Stats
Today, here's where I stand:
- 16,640 articles/day from 200++ RSS feeds
- Up to 2-minute generation time per episode
- ~$37/month to run in production
- 4 AI agents orchestrated via Google ADK for script generation, and more for RSS discovery/clustering
- 0 infrastructure management (100% serverless)
- 95% article fetch success with cluster fallback
What's Next?
yourcast! works, but I'm just getting started:
- Mobile Apps: Build native iOS/Android apps with React Native for offline playback and push notifications
- Dynamic Cover Art: Use Gemini image generation to create unique cover art for each episode based on its content
- Gemini TTS: Switch to Gemini's native TTS once it exits preview (though i did use it for the demo video, current rate limits are too harsh for production)
- Chronological Story Tracking: Link clusters temporally—understand that "candidate wins election" comes AFTER "candidate's rally speech." Track what you've heard and automatically deliver follow-ups to ongoing stories you care about.
Final Thoughts
Four weeks ago, I was flipping through 10-15 news sites every day. Now I have a personalized podcast generator running in production for $37/month.
Building yourcast! taught me that google cloud platforms have reached a tipping point. You can build production-grade, AI-powered services as a solo developer in weeks. No DevOps team. No infrastructure expertise.
The future of software isn't managing servers—it's orchestrating intelligence. Multi-agent systems, semantic search, parallel processing, all glued together with serverless primitives.
I started wanting to solve my own news consumption problem, but I ended up building the future of efficient, personalized news media.
Now, if you'll excuse me, I need to listen to today's episode.
Built With
- fastapi
- firebase-auth
- gemini-2.0-flash-lite
- gemini-tts
- google-adk-(agent-development-kit)
- google-cloud
- google-cloud-run
- google-cloud-scheduler
- google-cloud-sql
- google-cloud-tasks
- google-vertex-ai
- next.js
- pgvector
- python
- text-embedding-004
Log in or sign up for Devpost to join the conversation.