Before you send money, ṣọ́ra.
Paste a suspicious SMS, WhatsApp message or screenshot. Ṣọ́ra points at the exact words that give the scam away, then tells your parents what to do in English, Pidgin, Yorùbá, Hausa or Igbo, with a voice note they can play. No smartphone? It works by SMS and USSD too.
- 5
- languages
- 2G
- button phones via USSD & SMS
- 0
- messages stored
Ṣọ́ra (Yorùbá): “be careful.”
Evidence, not vibes. Every red flag points at real words.
The pipeline
- 01
Read
Gemma 4 transcribes screenshots, sender ID and links included.
- 02
Rules
Fixed checks for PIN/OTP/BVN requests, fees, fake links, lookalike senders.
- 03
Reason
Gemma 4 weighs context and quotes the exact words that worry it.
- 04
Ground
Any quote that isn't really in the message is thrown away.
- 05
Explain
A calm verdict, 1–3 steps, five languages, a voice note.
Rules set the floor
A PIN, OTP or fee request can never be marked “no red flags”, whatever the model says. The model can raise a verdict, but it can't wave a scam through.
No invented evidence
Gemma must copy each suspicious phrase word for word. If the quote isn't in the message, it's dropped and counted. We report that rate.
Five languages. Real voices.
English, Pidgin, Yorùbá, Hausa and Igbo, with full tone marks. Voice notes come from YarnGPT2, an open Nigerian-accent TTS model.
Nothing is stored
Messages are processed in memory and forgotten. No accounts, no logs of what you paste.
Never says “safe”
The calmest verdict is “no red flags found, still confirm with your bank”. Ṣọ́ra is a second opinion, not a guarantee.
The best check happens before the scam arrives.
A one-minute game in five languages. Each answer shows the exact words that give a scam away, using the same rules as the checker. Play it with your parents, then send them the challenge.
Scam or real?
8 messages, about a minute. Learn the signs before the next one lands on your phone.
No smartphone? Dial it.
The people scammers target most often use phones with buttons, not apps. Ṣọ́ra meets them there, on the same engine, in their own language.
USSD menu
Dial the code, pick a language, type the key words. The verdict comes back in one screen.
Forward the SMS
Forward the strange text to Ṣọ́ra. Start with YO, HA, IG or PCM to get the reply in that language.
Fits a 2G screen
Replies drop tone marks for GSM-7 and stay within two SMS, so they show on any handset and cost the same.
Falls back safely
USSD sessions time out after about 20 s. If the model is slow, the rules answer instead of leaving a blank screen.
Sora demo line Dial *384*7672# then press the green key.
*384*7672#
Live simulator using the same endpoints a telco would call. *384*7672# is a demo code; a real shortcode needs provisioning through Africa's Talking.
Measured, not promised.
150 messages: 89 scams and 61 real alerts, OTPs and family texts. Missing a scam is the worst failure, but crying wolf on a real bank alert teaches people to ignore warnings, so we track both.
# reproduce in one command
npm run eval -- --backend geminiGemma 4 · gemma-4-26b-a4b-it + rules
98.9%
of scams caught
1.6%
false alarms on real messages
98.7%
overall accuracy
100% of the model’s quoted evidence was found word for word in the message.
| Engine | Scam recall | False alarms | Accuracy | p50 |
|---|---|---|---|---|
| Rules only (no model) | 98.9% | 1.6% | 98.7% | 0 ms |
| Gemma 4 · gemma-4-26b-a4b-it + rules | 98.9% | 1.6% | 98.7% | 6.6 s |
The dataset is small and synthetic: written from public scam warnings, with no real personal data. Rules were revised twice after error analysis on this set, so rules-only numbers are optimistic. Full method and limitations are in the repository.
Open weights, open licence, open data.
Gemma 4
Reads screenshots, judges context, quotes evidence, writes five languages
26B A4B hosted via the Gemini API for the live demo; E4B runs on a laptop with Ollama.
YarnGPT2
Nigerian-accent voice notes in Yorùbá, Hausa, Igbo and English
Self-hosted voice service (services/voice) built on Hugging Face transformers.
# run it yourself git clone https://github.com/daodudestiny56-netizen/Sora.git cd Sora && npm install cp .env.example .env # add a free Gemini key, or use Ollama npm run dev
Code is Apache 2.0. The eval set is CC BY 4.0. We chose Gemma 4 over N-ATLaS because N-ATLaS’s licence caps use at 1,000 monthly users and it can’t read images. The reasoning is written up in the README.
Read the code