Digital verification for Cameroon: send a link, message, image, voice note, video or PDF and get an honest verdict — is it real, and from who it claims? FastAPI + HF-hosted models + Gemini.
# 237Sentinel — API
> **You send us something. We tell you if it's real, and why.**
Backend for 237Sentinel, a digital verification
platform for Cameroon. A citizen sends anything suspicious — a link, message,
image, voice note, video or PDF — and it answers, in plain EN/FR, whether to
trust it and what to do next. It asks *"is this what it claims to be, and from
who it claims?"* — **never** *"was AI involved?"*.
- **Live site:** sentinel237cm.web.app
- **Live API + docs:** two37sentinel-api.onrender.…
- **Frontend repo:** JohnnyPoks/237sentinel-web
## The three verdicts
| Verdict | Meaning | When |
|---|---|---|
| **VERIFIED** | "This is really them." | Sender matches a registered official channel, no strong manipulation. |
| **UNCONFIRMED** | "We cannot confirm this." | Not in the registry, no strong evidence either way. The honest, most common default — *not-in-registry never means fake*. |
| **ALTERED** | "This was altered." | Strong forensic evidence of synthesis/alteration. |
## How it works
`POST /api/v1/analyze` → content router detects the type → per-modality service
(link / text / image / audio / video / document) → **semantic layer** (what is
this, who does it claim to be, what does it want?) → registry lookup → the
verification engine picks one verdict → plain-language EN/FR explanation.
The models run on **Hugging Face** (called over HTTPS) and the reasoning uses a
fallback chain **Gemini → HF router (Llama-3.3-70B / Llama-4 vision) →
rule-based**, so the backend stays light and never hard-fails. Details:
docs/ARCHITECTURE.md · docs/MODELS.md ·
docs/API.md.
## Run locally
Python 3.11 (3.10 works too).
```bash
python -m venv .venv && source .venv/Scripts/activate # .venv/bin/activate on mac/linux
pip install -r requirements.txt
cp .env.example .env # runs with zero keys (rule-based fallback + SQLite)
python -m scripts.seed # seed the registry + scam patterns
uvicorn app.main:ap …