Skip to main content
HomeProjectsSentinel

SENTINEL — Catching Fake Content Before It Spreads

Published Feb 14, 2026
Updated Jul 30, 2026
2 minutes read

Have you ever wondered how Singapore is supposed to win the race against fake news? Neither had I, until ahrefs put the problem statement in front of me at Hackomania:

How might we design AI-powered solutions that help local and multilingual communities in Singapore assess information credibility, understand context, and make informed decisions — especially during times of uncertainty?

SENTINEL is my answer. Send it anything — text, an image, a voice note, a video — and it tells you what it thinks and why, out loud. It lives on Telegram as @jwjbot and on a Cloud Run web console you can open right now.

Try it with this, which is the kind of thing that actually gets forwarded:

text
紧急通知:新加坡政府宣布派发1000元现金券,立即点击链接领取。

Two gaps, not one

The reactive gap is the obvious one: verification happens after the forward. You get the voice note, you believe the voice note.

The proactive gap is the one I did not expect to find. Every official announcement creates an information vacuum, and the vacuum fills with whatever is fastest. In February 2020, a DORSCON Orange advisory produced rice-shortage rumours on WhatsApp within two hours. The correction landed eight hours later, after 300,000 people had already queued.

So SENTINEL has a second mode. A comms officer pastes an announcement draft, and the system predicts the false narratives it is likely to spawn, then drafts counter-narratives in four languages before the announcement goes out.

Stack

Runtime
  • Python 3.11
  • FastAPI
  • Uvicorn
  • python-telegram-bot
Models
  • Gemini 2.5 Flash
  • Gemini Live (native audio)
  • SEA-LION GUARD
  • SEA-LION Gemma 27B-IT
Data
  • ClickHouse
  • Gemini embedding-001
  • cosineDistance search
Infra
  • Cloud Run (asia-southeast1)
  • Cloud Build
  • Docker
  • Google ADK

SEA-LION GUARD does the deterministic safety and AI-generation classification; the Gemini ensemble cross-checks it; SEA-LION Gemma handles EN↔ZH/MS/TA and Singlish. Every verdict is written to ClickHouse so I can look at false-positive rate by language rather than guess at it.

What I actually learned

Latency is the product. A person will wait 600 ms for an answer. At 1.5 s they have already scrolled. Almost all of my wins came from batching requests, not from a better model.

English benchmarks lie about Singapore. Accuracy on English-only evaluation says nothing about Bahasa Indonesia, Tamil, or Singlish. SEA-LION GUARD was the only part of the stack that handled Singlish without flattening it into "English, but wrong".

Calibration beats confidence. Telling someone "92% AI-generated" and being wrong destroys trust faster than saying "uncertain" honestly. The interface now reports a signal, not a verdict.

Containers are not scary. I learned Cloud Run and cloudbuild.yaml from Google's ADK workshops on YouTube — the way-back-home multimodal agent one genuinely changed how I think about building agents. Level 0 generated an avatar; level 1 taught me how three specialist subagents run in parallel to find one thing. I went from watching that to shipping a container that talks back to me.

And to be honest: Claude did a lot of the coding. What I brought was the problem framing, the SEA-language evaluation, and the stubbornness to keep cutting latency. I would rather say that plainly than pretend otherwise.

Where it goes next

Group-chat invocation, stronger privacy handling for forwarded content, and the full prediction engine rather than the demo path. Submitted to Hackomania 2026 (in person, 24 hours) and the Gemini Live Agent Challenge.