Inspiration
I was tired of doomscrolling through endless news feeds and realized that staying informed shouldn't feel like a chore. We wanted to bring back the experience of morning radio briefings -- personalized, engaging, and consumable during your commute or morning coffee. The idea was simple: what if AI could be your personal news anchor, delivering exactly the news you care about in a podcast-style format you'd actually enjoy listening to?
What it does
Paperboy generates personalized audio news briefings in under 60 seconds. Users select their preferences -- news categories (tech, sports, general), style (NPR, BBC, Joe Rogan, etc), language, and even specific stock tickers -- and Paperboy delivers a professional-quality audio brief with:
- Real-time news aggregation from trusted sources
- AI-generated conversational scripts that cite sources naturally
- Multi-voice narration with smooth transitions
- Intro/outro music with professional mixing
- Support for English, Spanish, French, Hindi
The entire experience feels like a custom podcast episode created just for you, every time.
How we built it
Tech Stack: Python FastAPI backend, Next.js frontend, OpenAI GPT-5 & 4o-tts-mini, ElevenLabs, Supabase, Langfuse observability, Docker.
Pipeline:
- News Retrieval: Used newspaper3k to scrape articles from curated sources and yfinance for real-time stock data
- AI Summarization: GPT-5-mini processes raw articles into conversational scripts with [switch_voice] markers for multi-voice narration
- Text-to-Speech: Parallel generation using ElevenLabs and OpenAI TTS with intelligent provider fallback and voice rotation
- Audio Production: pydub mixes TTS segments with intro/outro music and smooth fades
- Delivery: Supabase storage hosts the final MP3, delivered via Next.js frontend with real-time status polling
We implemented intelligent caching (1-hour TTL) to reduce costs, rate limiting to prevent abuse, and comprehensive Langfuse tracing to track every stage's cost and latency.
Challenges we ran into
- Provider reliability: TTS APIs would occasionally fail mid-generation. We built a robust fallback system (ElevenLabs → OpenAI) with per-chunk error handling and retries.
- Natural voice transitions: Getting the LLM to consistently insert [switch_voice] markers at natural conversation breaks required extensive prompt engineering.
- Cost control: Initial prototypes cost ~$0.30/brief. Through aggressive optimization (caching, model selection, prompt tightening), we reduced it to $0.05-$0.10.
- Scraping resilience: News sites have inconsistent structures. We implemented graceful degradation—failed sources are skipped without breaking the entire brief.
- Latency vs. quality: Balancing the 30-60s generation time with audio quality and content depth required careful tuning of article limits, TTS chunking, and parallel processing.
Accomplishments that we're proud of
- 73% latency reduction in TTS through parallelization, from 60s sequential to 15-30s parallel
- Multi-language support with provider-aware style instructions across 3+ languages
- End-to-end observability: Every brief is fully traced with cost breakdowns, enabling rapid iteration
What we learned
- Prompt engineering at scale: Small changes in system prompts had massive impacts on output quality and token usage (~15-20% swings)
- Provider diversity is essential: No single API is 100% reliable; fallback mechanisms are table stakes
- Observability pays dividends: Langfuse traces helped us identify and fix prompt bloat issues
- User experience > technical perfection: Polling for status updates was simpler than WebSockets and perfectly adequate for 60s workflows
What's next for Paperboy
- Personalization engine: Learn from user feedback and listening patterns to automatically tune content and style
- Voice cloning: Let users upload their own voice or customize narrator personalities
- Social features: Share favorite briefs, collaborative playlists, or team news digests
Built With
- docker
- elevenlabs
- fastapi
- gcp
- langfuse
- nextjs
- openai
- supabase
- vercel


Log in or sign up for Devpost to join the conversation.