Back to home2026
Unscrolling, a news podcast made for one listener
An agent that reads the sources you follow and turns everything new into a few minutes of audio, so you can stop doomscrolling for it.
- Who it’s for
- People who follow a dozen feeds and spend much of that time scrolling past things they have already seen.
- What it changed
- Replaces that scrolling with a few minutes of audio covering only what is new, built and deployed as a working app in one weekend.
- Where
- HackEurope 2026, Dublin
- My part
- Backend API, TTS and video pipeline, frontend, deployment
- Team
- Four people, team “Pastel de Data”
- Built with
- Python, FastAPI, Google Gemini 2.5 Flash, Gemini TTS, Imagen, PostgreSQL, SQLAlchemy, React, TypeScript, Tailwind, Lovable, MoviePy, Docker, Railway
Listen to a briefing, then make your own
On the left is an episode the app generated during the hackathon, voiced by Gemini TTS. On the right, pick a few topics and the same pipeline runs live: it pulls today’s headlines from Google News, has a language model write the script, and your browser reads it aloud.
A real episode
The crosses of Novaya Zemlya
Click any paragraph to jump to it.
Your briefing
Pick up to three topics.
Built from these headlines
Model card
- Model
- Llama 3.1 8B Instruct on Cloudflare Workers AI writes the script; your browser’s built-in voice reads it.
- Input
- Up to four recent headlines for each of up to three topics from Google News, falling back to Bing News and then GDELT.
- Original
- At HackEurope, Gemini 2.5 Flash read the full articles and transcripts, and Gemini TTS voiced the result.
- Score
- Not measured. The recorded episode is what the full system sounded like.
Meant for A taste of the product, not a news source. Follow the article links before repeating anything it says.
Where it fails
It fills in what headlines leave out
The live version only sees headlines, and the model pads them with plausible context even though the prompt tells it not to. On 16 October, the Wall Street Journal headline “The riskiest corner of the AI trade is crashing into higher rates” became “according to The Wall Street Journal, this could be a major risk factor for AI companies”, a claim the headline doesn’t make.
Same story, several times
Duplicates are removed by URL only, so when three outlets cover one event, you can hear it three times in slightly different words.
The voice depends on your device
Browser voices range from decent to robotic, and some can’t pronounce names in other languages. Nothing in the demo controls which one you get.
The problem
Keeping up with the things you care about means checking a dozen feeds: YouTube channels, newsletters, X accounts, podcasts, news sites. Most of that time goes on scrolling past things you have already seen. We wanted an agent to do the scrolling and hand back a few minutes of audio covering only what’s new.
How it works
You tell Unscrolling what you follow, either specific sources or just topics. For each source it finds the latest item: the newest video on a YouTube channel, the newest entry in an RSS feed, posts from X through Nitter, LinkedIn posts through Apify. For topics it searches Google News, YouTube and X. Then it pulls the content itself. Articles are scraped and cleaned. YouTube videos use their transcript if there is one; if not, the audio is downloaded and transcribed with Gemini.
Everything new goes to Gemini 2.5 Flash, which writes a conversational podcast script. Gemini TTS then voices it. Long scripts are split at sentence boundaries into chunks of up to 4,000 characters, and the audio is stitched back into a single WAV. Episodes are cached per user, so replaying is instant and doesn’t cost another generation. Your topic preferences steer what gets pulled in next time.
On top of the audio there is a chat assistant that answers questions about your briefing, bookmarks, and a video mode. The video mode splits the transcript into slides timed to the audio, and illustrates each slide with an image from Google’s Imagen.
My part
Four of us built it over the weekend. I wrote most of the FastAPI backend and the endpoints the app runs on, the TTS and video generation, and most of the React frontend’s pages, and I deployed the whole thing with Docker on Railway. Daniel Borges built the source and topic fetchers and the transcription step.
About the demo
The recorded episode was generated by the app during the hackathon. The live half runs a compact version of the same pipeline on Cloudflare: Google News headlines for your topics, then the same script prompt as our backend, with an open model on Workers AI instead of Gemini. Your browser’s built-in voice reads the script instead of Gemini TTS, so it sounds less polished than the recording.