Cameroonian Girls in STEAM trains and equips Cameroonian youth on major tech issues, one hackathon at a time. The initiative, founded by Maëllys (Miss Cameroun Diaspora France, candidate for Miss Cameroun 2026), held its first hackathon in February in Bamenda, with Bamenda University, Polytechnic Bamenda, and AWS. This second edition, hosted at ENSPY's Technipole SupValor in partnership with Polytechnique Yaoundé, the association Ne Regarde Plus Derrière Toi, and The Okwelians, focused on a burning theme: Girls in Cyberdefense, Cybersecurity & Cyberharassment.
At first, my goal was simple: leave with the Claude AI credits given to every participant, not necessarily to win. Once on-site, my ideas changed. I realized the event wasn't girls-only, despite what the title suggests :) : boys and girls competed together. The theme stayed broad, you could, for instance, tackle cyberattacks and fraud via Orange Money or MTN Mobile Money, but I wanted to do things differently. Instead of bringing a generic solution like in any hackathon, I put myself in the shoes of a girl facing this problem, and looked for a real societal issue I could actually solve. It was also strategic, you know ;).
Picture a 19-year-old student in Yaoundé. One morning, she gets this message: "if you leave me, I'll post your nudes, everybody go see." She's scared. She's ashamed. And she has no idea what to do.
And she's one of thousands.
In Cameroon, online violence is surging: 76 femicides recorded in 2024, against a backdrop of deepfakes and hate speech. Across the continent, UNFPA estimates that 58% of connected teenage girls have already experienced online harassment. And behind these numbers, one constant: most victims stay silent. That's exactly why I built Gardienne.
Three walls, and a language nobody listens to
When a girl is harassed online, she hits three walls:
- "Is this actually serious?": the doubt is paralyzing.
- "I have no proof.": a screenshot is dismissed in two seconds.
- "Who do I even turn to?": police, ANTIC, NGOs… nobody knows where to start.
And there's a fourth, invisible wall: the tools don't understand how we speak. "I go show everybody", "everybody go see", "your tof"… Camfranglais and Pidgin slip right under filters designed for standard English or French. A very real threat gets labeled "non-problematic content."
Gardienne tackles all three walls with a three-beat motto: understand, prove, act.
What Gardienne does
In practice, a girl opens the app (installable on any phone, works even offline) and:
- She pastes a message, or imports a screenshot, and our vision model extracts the author, platform, time, and text.
- Gardienne analyzes and classifies: insult, repeated harassment, threat, or sexual blackmail/sextortion, with a severity level.
- In one tap, she seals the evidence (hash + timestamp) and generates a pre-filled complaint file for the Prosecutor, law articles included.
- A legal question? A legal assistant answers, grounded in actual Cameroonian law.
And as a bonus, a Telegram bot checks whether a photo is fake or AI-generated.
A concrete example: when "everybody go see" means prison
Back to our student's message. She pastes it, taps Analyze. Here's what Gardienne returns:
Sexual blackmail / sextortion, severity 95, CRITICAL "This message mixes French and Pidgin. 'everybody go see' is a threat to distribute. Combined with intimate content, it constitutes sexual blackmail, punishable under Cameroonian law. You are not alone, and it is not your fault."
A standard English-only filter would have shrugged. Ours didn't, because it was built here, for here.
Sealed evidence: turning a screenshot into a piece of proof
This is the cybersecurity heart of the project, and my favorite part.
A plain screenshot carries weak legal weight: it can be edited, cropped, its date contested. Gardienne turns it into solid evidence in two moves:
- A SHA-256 hash of the content: the smallest change alters the hash. Proof of integrity.
- A server-signed timestamp (HMAC): impossible to backdate. Proof that content existed at a real moment in time.
It doesn't prove who sent it: that's the job of ANTIC and IP tracing. But it delivers the missing link: preserved, dated, formatted evidence, ready to file.
The brain: hybrid detection
Why not just throw the message at ChatGPT? Because a generic LLM misses Pidgin, costs money, needs a connection, and can hallucinate. Facing a victim, I needed something deterministic, free, offline, and explainable.
The answer: two layers. A hand-built Camfranglais/Pidgin lexicon (with rules), paired with a toxicity model that generalizes. The rule I'm proudest of catches sexual blackmail even when no word is vulgar:
// Catches sextortion even without a single swear word
function detectSextortion(text: string): boolean {
const shareThreat = /\b(post|publish|send|share|leak|go\s?see|go\s?show)\b/; // "everybody go see" 👀
const intimateItem = /\b(photo|nudes?|vid(eo)?|image|tof)\b/; // in Camfranglais, a photo is "tof"
return shareThreat.test(text) && intimateItem.test(text); // both? → severity 92, critical
}
Here's the workflow Gardienne runs behind the scenes when the message lands:
The wild part? Text detection and sealing run on the device. No message leaves the phone to be analyzed.
The bonus that nearly broke me: the anti-deepfake bot
I wanted a Telegram bot that could tell whether a photo is fake, not just for me, for any classmate. On paper, an hour of work. In reality, my three finest struggles of the hackathon:
Struggle #1: the ghost endpoint. The old Hugging Face inference URL had been retired. The bot returned… nothing. Zero. I had to migrate to the new router before a single result came back.
Struggle #2: Telegram erases the evidence. I send an AI-generated image to the bot: "authentic, no signature." Panic. It turns out Telegram recompresses "photos" and strips metadata, including the C2PA signature OpenAI and Google leave behind. The fix: send the image as a File, not a Photo. It stays intact, the signature becomes readable again. ("origin: Google", finally.)
Struggle #3: one model isn't enough. The deepfake detector only looked at faces. An AI image with no face passed as real. Fix: two classifiers (fake faces and AI-generated images), keeping the most suspicious score.
Every blocker taught me something no doc ever would. That's what a hackathon is.
The tech stack
What struck me: building all of this without spending a cent on AI tools.
| Component | Technology | Role | Cost |
|---|---|---|---|
| Framework | Next.js 16 + TypeScript | Web app + API routes, in a single project | Free |
| Language detection | Hand-built Camfranglais/Pidgin lexicon + rules | Understand local threats, offline | Free |
| AI detection | transformers.js: Xenova/toxic-bert (browser) | Generalize toxicity | Free |
| Evidence | Web Crypto SHA-256 + server HMAC | Seal and timestamp | Free |
| Legal assistant | RAG + Groq gpt-oss-20b | Answer per Cameroonian law, sources cited | Free* |
| Screenshot analysis | Groq Llama 4 Scout (vision) | Extract author / time / message from a screenshot | Free* |
| Image bot | Node + Hugging Face (dima806) | Detect fake / AI-generated photos | Free |
| Provenance | C2PA Content Credentials (OpenAI, Google…) | Read an image's origin signature | Free |
| Deployment | Vercel + GitHub | Auto-deploy on push | Free |
*Generous free tiers, more than enough for a prototype.
What I truly learned
This project taught me far more than code.
Protecting is everyone's job. Even though the event was open to boys, I chose to put myself in a girl's shoes to design Gardienne, with and for the ones living through what I never will. It forced me to really listen. Gardienne's best feature isn't the SHA-256. It's the line that appears next to the verdict: "You are not alone, and it is not your fault."
Tech should serve people, not the other way around. A hash, a model, a bot, they only matter if, at the end of the chain, a 19-year-old feels less alone and knows what to do.
And in the end? Gardienne took 2nd place. 🥈 Not just for the tech, for what it's trying to repair.
The ceremony, in pictures
Going further
The code is on GitHub:
The README covers it all: detection, sealed evidence, legal assistant, Telegram bot. It's a starting point: the lexicon keeps growing, and the architecture extends to other languages and other French-speaking African countries.
The fight against cyberharassment deserves open code. Fork it, improve it, share it.
"In the end, we will remember not the words of our enemies, but the silence of our friends." Martin Luther King
Gardienne doesn't claim to erase harassment. But it breaks the silence: the victim's, when she doubts, and ours, when we could act. That 19-year-old student from the start? Today she has a tool to understand, evidence to defend herself, and a hand reaching out. That's already a lot.
No girl should have to face this alone.
The source code is available on GitHub. Feel free to open an issue, suggest an improvement, or just let me know what you think.
Live demo
Demo
Ceremony recap







