Inspiration
The IGAD Hackathon 2026 theme — smarter early warning, stronger communities — got me thinking about a gap that's rarely talked about directly. During a real crisis, official warnings often arrive too late, in the wrong language, or don't arrive at all, while rumors and fabricated claims spread almost instantly. A false report of a disease outbreak, a fake evacuation order, or a panic-driven price rumor can do as much damage as the actual hazard, because people act on what they hear first, not on what's actually verified. I wanted to build something that tackles both sides of that gap at once: getting real warnings to people in a language they understand and giving anyone a fast way to check whether something they've heard is actually true.
What it does
Rumor Check is a two-sided platform built around trust. On one side, any community member can submit a claim they've heard — a rumor, a warning, a piece of news — and get back a clear verdict: Verified, Unverified, or False, backed by citations to real institutional sources, not a black-box AI opinion. On the other side, authorized officials can submit an official bulletin, which gets automatically simplified and translated into each subscriber's preferred language, then sent out by SMS grouped by county — so a warning doesn't just get sent, it gets understood. Every verdict is grounded in evidence deliberately restricted to trusted institutional domains — WHO, ReliefWeb, FEWS NET, ICPAC, and similar sources — and if nothing relevant and recent enough exists, the system says so honestly instead of guessing. We built this as a deliberate design principle, not an afterthought: a verification tool that confidently answers everything, including things it has no evidence for, is more dangerous than one that knows when it doesn't know.
How I built it
The stack is React with shadcn/ui on the frontend, Node.js/Express on the backend, and PostgreSQL via Supabase for storage. For the AI layer, we used Groq's hosted Llama models for both claim verification and bulletin translation, and Tavily's search API, restricted to a curated list of trusted domains, a fixed score threshold, and filtered by recency to ground every verdict in real, current sources rather than the model's own general knowledge. I deployed the backend on Render and the frontend on Vercel, with Africa's Talking handling SMS delivery.
Challenges I ran into
-Search relevance without hallucination: Early on, an impossible test claim still returned five "matching" sources, technically from trusted domains, but completely irrelevant, with very low relevance scores. I fixed this by enforcing a strict relevance threshold in code before the AI ever sees the sources, rather than trusting the model to notice the sources didn't fit. -Recency mattered as much as relevance:* I noticed a cited source for what read as a current disaster was actually years old. I added time-based filtering to prioritize sources from the current year, keeping the system focused on active, ongoing situations rather than historical noise.. **-Building trust into an authority feature: Since officials can broadcast SMS bulletins to entire counties, I added an access-code gate to that dashboard, and specifically had to fix a bug where an incorrect code still let the form render, which forced me to properly verify credentials server-side before granting UI access, not just before individual actions.
Accomplishments that I am proud of
I am also proud of building genuine multi-language support into the bulletin relay, grouping subscribers by their actual preferred language rather than treating the country as linguistically uniform, and scaling the location model to all 47 counties in Kenya so the design isn't limited to a couple of pilot wards.
What I learned
Beyond the technical stack, the biggest lesson was that trustworthy AI systems are made trustworthy by what you refuse to let the model decide — not by clever prompting alone. Every safeguard that mattered most in this build (the relevance threshold, the recency filter, the access-code check) was enforced in plain code, with the AI doing the part it's actually good at: reasoning over evidence it's been given, nothing more.
What's next for Rumor Check
Next, I'd like to add a lightweight clarification feature — letting SMS recipients reply if a bulletin wasn't clear, triggering an even simpler re-explanation — and expand real-time trending visibility so authorities can see which false claims are spreading where, and respond with corrective bulletins from the same dashboard that flagged the problem.
Built With
- africastalking
- express.js
- groq
- node.js
- postgresql
- react
- shadcn/ui
- supabase
- tavily
Log in or sign up for Devpost to join the conversation.