<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Quam Bello</title>
    <description>The latest articles on DEV Community by Quam Bello (@nolimitsxl).</description>
    <link>https://dev.to/nolimitsxl</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3910140%2F0330843d-2742-4b6d-aeb0-b201c1d2b407.jpg</url>
      <title>DEV Community: Quam Bello</title>
      <link>https://dev.to/nolimitsxl</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nolimitsxl"/>
    <language>en</language>
    <item>
      <title>The Debrief: AI-Powered News Podcast</title>
      <dc:creator>Quam Bello</dc:creator>
      <pubDate>Sat, 23 May 2026 16:35:50 +0000</pubDate>
      <link>https://dev.to/nolimitsxl/the-debrief-ai-powered-news-podcast-ci7</link>
      <guid>https://dev.to/nolimitsxl/the-debrief-ai-powered-news-podcast-ci7</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-gemma-2026-05-06"&gt;Gemma 4 Challenge: Build with Gemma 4&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  What I Built
&lt;/h3&gt;

&lt;p&gt;I love listening to the news. But somewhere between the ads, the clickbait headlines, and the content rabbit holes, I always end up distracted and none the wiser.&lt;/p&gt;

&lt;p&gt;The deeper problem though? Even when I did pay attention, I often didn't understand &lt;em&gt;why&lt;/em&gt; something mattered. I remember when Nigeria removed the fuel subsidy. I knew it happened. I had no idea it would send the price of everything through the roof. Nobody broke it down for me in a way that connected the dots.&lt;/p&gt;

&lt;p&gt;That gap between &lt;em&gt;knowing&lt;/em&gt; the news and &lt;em&gt;understanding&lt;/em&gt; it, is &lt;br&gt;
what The Debrief is built to close.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Debrief&lt;/strong&gt; is an AI-powered podcast generator that transforms live news into a fully produced, multi-voice audio briefing automatically. Just tell it what you care about. It finds the news, analyses it through multiple expert lenses, writes the script, and delivers a broadcast quality episode with distinct voices. No human in the loop.&lt;/p&gt;


&lt;h3&gt;
  
  
  Demo
&lt;/h3&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/lWLk80McV9Q"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;🔗 Try it live: &lt;a href="https://debrief-studio.onrender.com/" rel="noopener noreferrer"&gt;https://debrief-studio.onrender.com/&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Code
&lt;/h3&gt;

&lt;p&gt;🐙 GitHub: &lt;a href="https://github.com/syncXL/thedebrief" rel="noopener noreferrer"&gt;link&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  How I Used Gemma 4
&lt;/h3&gt;

&lt;h4&gt;
  
  
  First: Getting Reliable News
&lt;/h4&gt;

&lt;p&gt;To build something useful, I needed a reliable, structured source of news. Through research I discovered that most news providers publish something called an &lt;strong&gt;RSS feed&lt;/strong&gt;, a URL that returns XML content containing article titles, publication dates, and links.&lt;/p&gt;

&lt;p&gt;I sourced feed data from &lt;a href="https://github.com/plenaryapp/awesome-rss-feeds" rel="noopener noreferrer"&gt;awesome-rss-feeds&lt;/a&gt; and a &lt;a href="https://www.kaggle.com/datasets/ceshine/rss-feeds-from-news-outlets" rel="noopener noreferrer"&gt;Kaggle dataset&lt;/a&gt;, &lt;br&gt;
then personally researched and verified additional RSS links specifically for Nigerian news sources since that coverage was thin. After cleaning and compiling everything, I ended up with &lt;strong&gt;3,166 verified data points&lt;/strong&gt; with columns: &lt;code&gt;feed_name&lt;/code&gt;, &lt;code&gt;country&lt;/code&gt;, &lt;code&gt;section&lt;/code&gt;, and &lt;code&gt;rss_link&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That catalog became the foundation of the entire system.&lt;/p&gt;




&lt;h4&gt;
  
  
  The Architecture: 4 Agents, One Brain
&lt;/h4&gt;

&lt;p&gt;The Debrief runs on &lt;strong&gt;4 agents&lt;/strong&gt;, all powered by &lt;strong&gt;Gemma 4&lt;/strong&gt; as the core reasoning engine, orchestrated with &lt;strong&gt;LangGraph&lt;/strong&gt;.&lt;/p&gt;




&lt;h5&gt;
  
  
  🔍 Agent 1: The Inquisitor
&lt;/h5&gt;

&lt;p&gt;&lt;em&gt;"Find me what's relevant."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The Inquisitor takes the user's natural language request and searches the RSS catalog for the most relevant sources. It's equipped with tools to query the dataset and selects the top 3 matching feeds based on country, section, and relevance to the request.&lt;/p&gt;

&lt;p&gt;Ask it &lt;em&gt;"Give me news about the music industry in Nigeria"&lt;/em&gt; and it will find Nigerian entertainment and music feeds, not generic world news.&lt;/p&gt;




&lt;h5&gt;
  
  
  📰 Agent 2: The Herald
&lt;/h5&gt;

&lt;p&gt;&lt;em&gt;"Here's what happened in the last 24 hours."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The Herald fetches articles published within the past 24-hour window from the selected feeds, then selects the &lt;strong&gt;top 5 most relevant stories&lt;/strong&gt; to the user's request. It produces clean structured output no hallucinations, no invented headlines.&lt;/p&gt;

&lt;p&gt;Technically the Herald doesn't use tools, but it's doing something deceptively hard: filtering signal from noise across multiple live sources and returning only what matters.&lt;/p&gt;




&lt;h5&gt;
  
  
  🧠 Agent 3: The Researcher
&lt;/h5&gt;

&lt;p&gt;&lt;em&gt;"Let me tell you what this actually means."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is where The Debrief earns its name. Each article is routed through two parallel subgraphs:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Subgraph 1: Context Research&lt;/strong&gt;&lt;br&gt;
The Researcher asks clarifying questions about the article and uses web search to fill in background context a listener might be missing. It then summarises its findings into a clean briefing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Subgraph 2: Persona Insights&lt;/strong&gt;&lt;br&gt;
This is where it gets interesting. News doesn't mean the same thing to everyone. A rate hike means something different to an economist than it does to a lawyer or a historian.&lt;/p&gt;

&lt;p&gt;So I defined 9 expert &lt;strong&gt;personas&lt;/strong&gt;, each with a distinct analytical &lt;br&gt;
lens:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Persona&lt;/th&gt;
&lt;th&gt;What They Bring&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Critic&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The skeptic in the room. Questions official narratives and asks the uncomfortable questions everyone is thinking but nobody is saying out loud.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Economist&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Follows the money. Analyses market impact, inflation, employment, and what the numbers actually mean for businesses and households.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Geopolitician&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Reads between the borders. Examines how international power dynamics, foreign policy, and treaties shape the story beneath the surface.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Historian&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Been here before. Draws parallels to past events and answers the most important question — the last time this happened, how did it end?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Lawyer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Reads the fine print. Breaks down regulatory, legal, and policy implications — what it means for compliance, liability, and institutional response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Politician&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Understands the room. Analyses the political motivations and stakeholder pressures behind a story — who benefits and who doesn't.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Scientist&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Follows the evidence. Cuts through speculation on health, climate, energy, and technology stories with data-backed context.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Socialite&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Has the receipts. Tracks what high-profile individuals — CEOs, public figures, politicians — are publicly saying and what the cultural conversation looks like.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tech Analyst&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sees the disruption coming. Examines the technological implications of a story and what it means for innovation and industry.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A &lt;strong&gt;Persona Router&lt;/strong&gt; (powered by Gemma 4) reads each article and selects the most relevant 2–4 personas to weigh in. Not every story needs all nine. A sports story doesn't need the Lawyer. A policy bill doesn't need the Tech Analyst.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Historian always runs last&lt;/strong&gt; because their insight contextualises what the other personas found, drawing historical parallels that only make sense once the full picture is assembled.&lt;/p&gt;

&lt;p&gt;All personas have access to web search. They don't just reason from &lt;br&gt;
the article, they go looking for evidence.&lt;/p&gt;




&lt;h5&gt;
  
  
  🎬 Agent 4: The Director
&lt;/h5&gt;

&lt;p&gt;&lt;em&gt;"Let's make this sound like a show."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The Director takes everything the Researcher produced and turns it into a broadcast-ready podcast episode. It runs in two stages:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 1: The Headline Segment&lt;/strong&gt;&lt;br&gt;
The anchor opens the episode with a brief overview of all 5 stories, introduces the deep dive section, and sets the tone for what's coming.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 2: Deep Dive (per story)&lt;/strong&gt;&lt;br&gt;
Each story gets its own deep dive segment, a natural conversation between two voices: one asking questions, one answering, both drawing from the full research, context, and persona insights assembled by The Researcher.&lt;/p&gt;

&lt;p&gt;I originally wanted each persona to have their own distinct voice. But Gemini TTS supports a maximum of 2 voices per call and honestly, more than 2 voices creates confusion rather than comprehension. So the conversation format (one interviewer, one expert) turned out to be the right call both technically and editorially.&lt;/p&gt;

&lt;p&gt;Gemma 4 generates the transcript. Gemini TTS converts it to audio with two distinct speaker voices. The last deep dive wraps up the episode and credits the sources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Post-processing:&lt;/strong&gt; all audio segments (headline + deep dives) are stitched together with pydub and stored on Cloudinary.&lt;/p&gt;




&lt;h4&gt;
  
  
  Model Choices
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;The Director&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gemma-4-31b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Long-form script generation needs full reasoning capability&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Inquisitor, Herald, Researcher&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;gemma-4-27b&lt;/code&gt; (MoE)&lt;/td&gt;
&lt;td&gt;Faster, efficient, handles routing and structured tasks cleanly&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The MoE architecture of Gemma 4 27B activates only a fraction of parameters per token near-31B quality at significantly lower latency. Perfect for the high-frequency nodes.&lt;/p&gt;




&lt;h4&gt;
  
  
  Performance
&lt;/h4&gt;

&lt;p&gt;For &lt;strong&gt;5 articles&lt;/strong&gt;, The Debrief takes approximately &lt;strong&gt;8 minutes&lt;/strong&gt; to complete accounting for web searches, persona analysis, transcript generation, TTS conversion, and audio stitching.&lt;/p&gt;

&lt;p&gt;The output is approximately &lt;strong&gt;21 minutes of audio&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;~4 min 30s per deep dive segment&lt;/li&gt;
&lt;li&gt;~3 min for the headline segment&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Known Limitations &amp;amp; What's Next
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Transitions between deep dives&lt;/strong&gt; need smoothing: the handoff between stories is functional but not yet seamless&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persona-specific tools&lt;/strong&gt; would take this further giving the 
Socialite access to X (formerly Twitter) for real-time public 
sentiment, for example.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generation time&lt;/strong&gt; is the main UX friction 7 minutes is 
acceptable for a scheduled daily briefing, less ideal for breaking 
news&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nigerian source coverage&lt;/strong&gt; is still growing, if you're 
requesting very niche local Nigerian news, some feeds may not return 
results depending on your location&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;All I have to do now is type in a request, and within minutes I have a fully produced audio briefing on exactly what I care about no ads, no distractions, no rabbit holes. It makes perfect sense to listen while exercising, commuting, or doing literally anything else.&lt;/p&gt;

&lt;p&gt;Gemma 4 turned out to be exactly the right model for this. The reasoning quality, the structured output reliability, and the MoE efficiency made it possible to run a multi-agent pipeline of this complexity at scale. I'll definitely be using it for future experiments.&lt;/p&gt;




&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/plenaryapp/awesome-rss-feeds" rel="noopener noreferrer"&gt;awesome-rss-feeds&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.kaggle.com/datasets/ceshine/rss-feeds-from-news-outlets" rel="noopener noreferrer"&gt;RSS Feeds Kaggle Dataset&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aistudio.google.com" rel="noopener noreferrer"&gt;Google AI Studio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://langchain-ai.github.io/langgraph/" rel="noopener noreferrer"&gt;LangGraph Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/syncXL/thedebrief" rel="noopener noreferrer"&gt;link&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>gemmachallenge</category>
      <category>gemma</category>
    </item>
  </channel>
</rss>
