Inspiration
The modern news cycle is relentless. Every day, hundreds of video broadcasts are published — each packed with figures, claims, events, and bias. Yet consuming them requires the same manual, slow, human effort. We wanted to flip that: a single YouTube link that autonomously produces a structured intelligence brief in under 30 seconds.
What it does
NewsForge converts a raw news video URL into a verified intelligence feed — fully autonomously.
Paste any YouTube news broadcast URL and click Analyze Broadcast. The pipeline springs to life:
Video Understanding — Reka Vision extracts a full transcript and answers six parallel analytical queries: events, sentiment, locations, key claims, notable quotes, and topic tags.
NLP Structuring — Fastino GLiNER 2 runs four concurrent extraction tasks: Named Entity Recognition (persons, organizations, locations, dates), sentiment classification, media bias classification, and structured event extraction with timestamps, categories, and severity scores.
Claim Verification — Yutori Research dispatches up to 5 parallel deep-web research tasks, one per extracted claim, using 100+ MCP tools to return verdicts (
verified,disputed,unclear) with cited sources.
The result is an 8-metric intelligence dashboard with credibility scoring, alert level, entity cloud, sentiment timeline, topic distribution, bias indicator, broadcast mood, and story count — all rendered live via Server-Sent Events.
How we built it
Frontend: Next.js 16 (React 19.2) + TypeScript + Tailwind CSS v4 + Zustand. A custom useSSEStream hook reads the raw SSE byte stream directly from FastAPI, bypassing Next.js proxy buffering for true real-time delivery.
Backend: FastAPI + Python 3 with httpx for async HTTP and sse-starlette for streaming. The orchestrator runs maximum parallelism via asyncio.gather:
Stage 1 — Reka upload + indexing (sequential, ~10s)
Stage 2 — 6× Reka QA prompts (fully concurrent)
Stage 3 — 4× Fastino + 5× Yutori (concurrent, start after Stage 2)
All 15 AI API calls are in-flight simultaneously wherever the dependency graph allows.
Challenges we ran into
SSE buffering. Next.js route handlers buffer responses, killing real-time streaming. Fixed by bypassing the Next.js API layer entirely — the frontend calls http://localhost:8000 directly.
API shape discovery. Each sponsor API had undocumented edge cases: Reka's chat_response key, Fastino's singular result.category, Yutori's 202 status on task creation.
Parallelism with partial failures. Used asyncio.gather(..., return_exceptions=True) so the dashboard always renders whatever succeeded.
Claim extraction from free text. Built a robust text splitter that handles numbered lists, dash-prefixed bullets, and filters fragments.
Accomplishments that we're proud of
- True end-to-end autonomy — one URL click triggers 15 parallel AI API calls with zero manual steps
- Sub-30s turnaround for a full intelligence brief on real news broadcasts
- Live streaming terminal UI — users can watch each pipeline stage complete in real-time
- Credibility scoring grounded in actual claim verification, not heuristics
- Demo mode — full animated simulation without API keys
What we learned
- Autonomous agents shine on well-defined extraction tasks — the Reka → Fastino → Yutori assembly line creates clean agent-to-agent handoffs
- SSE is underrated — much better UX than polling for long-running AI pipelines
- Parallelism multiplies value — sequential execution of 15 API calls would make the app unusable
- API contract assumptions are expensive — always test status codes, response shapes, and auth formats
What's next for News Forge
- Live broadcast monitoring — ingest RSS/YouTube feeds and emit alerts when credibility drops
- Cross-source corroboration — compare claim verdicts across multiple broadcasts
- Temporal sentiment tracking — plot $\text{sentiment}(t)$ across full broadcast timelines
- Export as structured JSON/RSS — pipe intelligence feeds directly into CMS systems
- Multi-language support — leverage Reka's multilingual capabilities for Arabic, Spanish, Mandarin
Log in or sign up for Devpost to join the conversation.