NUO — The News You Never Knew You Needed

Inspiration

The algorithm decides what matters. Not journalists. Not editors. An algorithm optimised for engagement, not importance.

We kept noticing the gap: a celebrity scandal would dominate feeds for a week while a cholera outbreak killing thousands in the DRC got buried on page six. People aren't apathetic — they're just never shown the right things. We wanted to build the tool that shows them.

What It Does

NUO is a real-time global intelligence platform that monitors news across 20 countries and 6 categories — from armed conflict to scientific breakthroughs — and answers one question current media never asks: how much should a general audience actually care about this?

Every story gets scored across three independent dimensions by three separate AI agents:

  • Human Impact — how many people are directly affected?
  • Global Ripple — does this cross borders, move markets, shift policy?
  • Emotional Resonance — would an outsider feel alarmed, inspired, or morally compelled?

The results surface on an interactive world map where the colour of each country reflects what our agents collectively decided the world should be paying attention to. Ukraine's ongoing war sits at 79. China's Uyghur detention crisis at 75. Nigeria's simultaneous Lassa fever, cholera, and mpox outbreaks at 58. The stories that deserve attention — visible, finally.

How We Built It

NUO runs on a fully autonomous multi-agent pipeline built on Fetch.ai's uAgents framework. Seven agents run as independent processes, each with a single responsibility:

Orchestrator Agent fires every hour and drives the full pipeline — it sends requests, receives responses, tracks state across the chain, and writes to the database.

Currents Agent hits the Currents news API for every country-category pair, returning up to 8 article URLs per combination.

Trafilatura Agent receives those URLs and extracts full article text from each page — bypassing headlines to get the actual content.

Gemma Summary Agent reads all article content for a given pair and produces a concise 50-60 word factual summary using Google's Gemma 4-31b-it model.

Three Scoring Agents — Impact, Ripple, and Resonance — each receive the same articles independently and score them without seeing each other's results. Their scores are averaged into a single final_score.

All data flows through a FastAPI backend into MongoDB Atlas, where each country-category pair lives as a living document refreshed every hour. The frontend is a React app built with react-simple-maps, rendering every country as a heat-mapped data point on a globe.

Challenges We Ran Into

Blocking the event loop. The uAgents framework is async, but Gemma API calls and trafilatura URL fetching are synchronous. Calling them directly inside on_message handlers froze the entire agent — no responses ever came back. The fix was running every blocking call through asyncio.run_in_executor, keeping the event loop free while I/O happened in threads.

Rate limits at scale. 20 countries × 6 categories = 120 pairs. Each pair makes 4 Gemma calls (1 summary + 3 scores). That's 480 API calls per cycle against a 10 RPM free-tier quota. We implemented exponential backoff — 30s, 60s, 120s — so no call is ever dropped. The cycle takes longer but always completes.

News APIs and paywalls. The Currents API free tier rejects combined country + category filters. Trafilatura gets 403s from paywalled sites constantly. We built keyword-based fallbacks and description fallbacks at every stage so no pipeline step hard-fails.

Distributed state without shared memory. Each scoring agent runs in its own process. The orchestrator had to track which scores arrived for which item using persistent key-value storage, then patch MongoDB only once all three responses landed — a small distributed systems problem hiding inside a hackathon timeline.

What We're Proud Of

The scoring architecture is the part we're most proud of. Three LLM agents scoring the same content independently, from three philosophically distinct lenses, then averaging their judgment — it's a simple idea that produces surprisingly nuanced results. A local bureaucratic reform and a famine affecting 8 million people both get "news coverage," but they score very differently.

We also built an entirely autonomous data pipeline that requires zero human intervention after launch. NUO runs itself.

What We Learned

Autonomous agents are powerful but humbling. The moment you have seven processes communicating asynchronously, sharing an API quota, and writing to the same database, every assumption you made about ordering and timing turns out to be wrong.

We also learned that how you ask an AI matters as much as which AI you use. The same Gemma model, given three different frameworks to reason through, produces three meaningfully different scores on identical content. The architecture of the question shapes the quality of the answer.

What's Next for NUO

  • Live frontend connection — the map exists and the data exists; wiring them together is the immediate next step
  • Score history — tracking how a country's scores shift over time to surface not just what's underreported, but what's getting worse
  • User alerts — notify users when a story crosses a score threshold in a region they follow
  • Agentverse deployment — agents are already registered on Fetch.ai's Agentverse; moving to hosted infrastructure means NUO runs 24/7 without anyone keeping a laptop open
  • Expanded coverage — 20 countries today, 195 possible

Built With

Share this project:

Updates

Submission history