Inspiration
Picture a grandmother in a family WhatsApp group of fourteen. One morning a message arrives: "Eating raw garlic CURES coronavirus, even doctors confirm it. No need for hospital. Forward to everyone you love." She is not careless. The message looks official, and three people she trusts have already shared it. She has about ten seconds to decide whether to forward it.
There is nowhere to check it in those ten seconds. That gap is the whole problem. Misinformation does not spread in newspapers anymore; it spreads inside closed group chats, faster than any fact-checker can react. False news travels about six times faster than the truth (Vosoughi et al., Science, 2018), and the correction, when it finally comes, reaches a fraction of the people, in the wrong language, days too late. Around 800 people died in 2020 acting on a single viral "cure." We built Viveka for that exact moment: the person, the scary forward, and the ten seconds before "send."
What it does
Paste a forward, snap a photo of it, or say it out loud, in any language. About twenty seconds later Viveka gives you a clear verdict with real sources behind it, a reply you can send straight back into the group, and a safe next step. When the evidence is not strong enough, it tells you that instead of guessing.
How we built it
One engine sits behind every input. A forward comes in as text, an image (read with OCR), or a voice note (transcribed locally). The engine splits it into separate factual claims, writes the question that would settle each one, and retrieves real evidence in parallel from web search, Wikipedia, and Google Fact Check, reading full articles rather than snippets. Instead of asking a model "is this true," it rates all four AVeriTeC labels on a one-to-five scale and softmaxes them into a distribution. A calibration step rewrites the confidence, and a domain-aware margin decides whether to commit or hand the case to a human.
The stack is free tier end to end: FastAPI and Gemma 4 on the backend, React, Vite, and Tailwind on the front, with keyless retrieval. No paid service anywhere.
Challenges we ran into
The hard part was never the verdict. It was knowing when not to give one. Our first version abstained on almost everything and felt useless. The second was overconfident and occasionally, dangerously wrong. We also found that the model's own confidence is close to meaningless: it reports about 98 percent sure and is right roughly 65 percent of the time (we measured an expected calibration error of 0.327). So we stopped trusting it and rebuilt confidence from a signal that actually tracks being right, like whether an independent panel agrees.
Accomplishments that we're proud of
We measured whether the thing works, which most projects skip. On AVeriTeC, the academic benchmark for real-world claim checking, the engine scores 0.733 macro-F1 when handed gold evidence, and a humbler 0.398 end to end when it has to find its own, which we publish rather than hide. Even with perfect evidence it backs off on about a third of cases on purpose. We checked fairness too: run in English and again in Hindi, the verdict agreed 100 percent of the time. And the part we care about most works: on a panicky child-kidnapping rumour, Viveka refuses to act and routes it to a human, because a wrong call there could get someone hurt.
What we learned
Restraint is the product, not a limitation of it. A tool that always sounds sure would have helped this kind of panic spread. The real win was making confidence honest and making the ability to act depend on it. Viveka explains and equips; it never makes the final, consequential call for you.
What's next
A WhatsApp last mile, so a forward can be checked without leaving the chat where it arrived. A measured multilingual track, with evidence retrieval that works beyond English. And the antibody memory, the store of rumours Viveka has already seen, opened up as shared public infrastructure so the whole network gets faster every time anyone checks something.
Built With
- claude-code
- css
- ddgs
- fastapi
- gemini-embedding
- gemma
- google-fact-check-tools-api
- google-generative-language-api
- html
- javascript
- python
- rank-bm25
- react
- tailwindcss
- trafilatura
- vite
- wikipedia-api
Log in or sign up for Devpost to join the conversation.