Cameroonian Girls in STEAM forme et outille la jeunesse camerounaise sur les grands enjeux tech, un hackathon à la fois. L'initiative, fondée par Maëllys (Miss Cameroun Diaspora France, candidate à Miss Cameroun 2026), avait organisé son premier hackathon en février à Bamenda, avec Bamenda University, Polytechnic Bamenda et AWS. Cette seconde édition, accueillie au Technipole SupValor de l'ENSPY en partenariat avec Polytechnique Yaoundé, l'association Ne Regarde Plus Derrière Toi et The Okwelians, portait sur un thème brûlant : Girls in Cyberdefense, Cybersécurité & Cyberharcèlement.
Au départ, mon objectif était simple : repartir avec les crédits Claude AI prévus pour tous les participants, pas forcément gagner. Une fois sur place, mes idées ont changé. J'ai réalisé que l'événement n'était pas réservé aux filles uniquement, contrairement à ce que le titre laisse penser :) : garçons et filles concouraient ensemble. Le thème restait large, on pouvait par exemple partir sur la cyberattaque, comme les fraudes via Orange Money ou MTN Mobile Money, mais j'ai voulu faire différemment. Plutôt que d'apporter une solution générique comme dans n'importe quel hackathon, je me suis mis à la place d'une fille confrontée à un problème, et j'ai cherché un vrai problème de société que je pouvais résoudre à mon échelle. C'était aussi stratégique, vous voyez un peu ;).
Imagine une étudiante de 19 ans, à Yaoundé. Un matin, elle reçoit ce message : « si tu me quittes, je poste tes "nudes", everybody go see. » Elle a peur. Elle a honte. Et elle ne sait pas quoi faire.
Cette fille, elles sont des milliers.
Au Cameroun, la violence en ligne explose : 76 féminicides recensés en 2024, sur fond de deepfakes et de discours de haine. À l'échelle du continent, l'UNFPA estime que 58 % des adolescentes connectées ont déjà subi du harcèlement en ligne. Et derrière ces chiffres, une constante : la plupart des victimes se taisent. C'est exactement pour ça que j'ai construit Gardienne.
Trois murs, et une langue que personne n'écoute
Quand une fille est harcelée en ligne, elle se cogne à trois murs :
- « Est-ce que c'est vraiment grave ? » : le doute paralyse.
- « Je n'ai aucune preuve. » : une capture d'écran, ça se conteste en deux secondes.
- « Vers qui me tourner ? » : police, ANTIC, ONG… personne ne sait par où commencer.
Et il y a un quatrième mur, invisible : les outils ne comprennent pas notre façon de parler. « I go show everybody », « everybody go see », « tes tof »… le camfranglais et le pidgin passent sous le radar des filtres pensés pour l'anglais ou le français standard. Une menace bien réelle est classée « contenu non problématique ».
Gardienne s'attaque aux trois murs avec un mot d'ordre en trois temps : comprendre, prouver, agir.
Ce que fait Gardienne
Concrètement, une fille ouvre l'appli (installable sur n'importe quel téléphone, elle marche même hors-ligne) et :
- Elle colle un message, ou importe une capture d'écran, et notre modèle vision en extrait l'auteur, la plateforme, l'heure et le texte.
- Gardienne analyse et classe : insulte, harcèlement répété, menace, ou chantage/sextorsion, avec un niveau de gravité.
- En un clic, elle scelle la preuve (empreinte + horodatage) et génère un dossier de plainte pré-rempli pour le Procureur, articles de loi inclus.
- Une question de droit ? Un assistant juridique répond, fondé sur la vraie loi camerounaise.
Et en bonus, un bot Telegram vérifie si une photo est truquée ou générée par IA.
Un exemple concret : quand « everybody go see » veut dire prison
Reprenons le message de notre étudiante. Elle le colle, elle clique Analyser. Voici ce que Gardienne renvoie :
Chantage / sextorsion, gravité 95, CRITIQUE « Ce message mélange français et pidgin. "everybody go see" est une menace de diffusion. Combiné à un contenu intime, cela relève du chantage sexuel, puni par la loi camerounaise. Tu n'es pas seule, et ce n'est pas ta faute. »
Un filtre anglophone classique aurait haussé les épaules. Le nôtre, non, parce qu'il a été construit ici, pour ici.
La preuve scellée : transformer une capture en pièce à conviction
C'est le cœur cybersécurité du projet, et ma partie préférée.
Une simple capture d'écran a une valeur juridique faible : on peut la retoucher, la recadrer, contester sa date. Gardienne la transforme en preuve solide en deux gestes :
- Une empreinte SHA-256 du contenu : la moindre modification change l'empreinte. Preuve d'intégrité.
- Un horodatage signé côté serveur (HMAC) : impossible à antidater. Preuve qu'un contenu existait à une heure réelle.
Ça ne dit pas qui a envoyé : ça, c'est le rôle de l'ANTIC et du traçage IP. Mais ça fournit le chaînon manquant : une preuve préservée, datée, et mise en forme, prête à déposer.
Le cerveau : une détection hybride
Pourquoi ne pas juste balancer le message à ChatGPT ? Parce qu'un LLM générique rate le pidgin, coûte cher, exige une connexion, et peut halluciner. Face à une victime, il me fallait quelque chose de déterministe, gratuit, hors-ligne et explicable.
La solution : deux couches. Un lexique camfranglais/pidgin fait main (avec des règles), doublé d'un modèle de toxicité qui généralise. La règle dont je suis le plus fier repère le chantage sexuel même quand aucun mot n'est vulgaire :
// Repère la sextorsion même sans un seul gros mot
function detecterSextorsion(texte: string): boolean {
const menaceDiffusion = /\b(poste|publie|envoie|partage|balance|go\s?see|go\s?show)\b/; // "everybody go see" 👀
const contenuIntime = /\b(photo|nudes?|vid[eé]o|image|tof)\b/; // en camfranglais, une photo = "tof"
return menaceDiffusion.test(texte) && contenuIntime.test(texte); // les deux ? → gravité 92, critique
}
Voici le workflow que Gardienne exécute en coulisses quand le message arrive :
Le plus fou ? La détection de texte et le scellement tournent sur l'appareil. Aucun message ne quitte le téléphone pour être analysé.
Le bonus qui a failli me rendre fou : le bot anti-deepfake
Je voulais un bot Telegram capable de dire si une photo est truquée, pas juste pour moi, pour n'importe quelle camarade. Sur le papier, une heure de travail. En vrai, mes trois plus belles galères du hackathon :
Galère n°1 : l'endpoint fantôme. L'ancienne URL d'inférence Hugging Face avait été retirée. Le bot répondait… rien. Zéro. Il a fallu migrer vers le nouveau routeur pour que le moindre résultat revienne.
Galère n°2 : Telegram efface les preuves. J'envoie une image générée par IA au bot : « authentique, pas de signature. » Panique. En fait, Telegram recompresse les « photos » et supprime les métadonnées, donc la signature C2PA que laissent OpenAI et Google. La parade : envoyer l'image en Fichier, pas en Photo. Elle reste intacte, la signature redevient lisible. (« origine : Google », enfin.)
Galère n°3 : un seul modèle ne suffit pas. Le détecteur de deepfake ne regardait que les visages. Une image IA sans visage passait pour vraie. Solution : deux classifieurs (visages truqués et images générées par IA), et on retient le score le plus suspect.
Chaque blocage m'a appris un truc que je n'aurais jamais lu dans une doc. C'est ça, un hackathon.
La stack technique
Ce qui m'a marqué : construire tout ça sans dépenser un centime en outils IA.
| Composant | Technologie | Rôle | Coût |
|---|---|---|---|
| Framework | Next.js 16 + TypeScript | Web app + routes API, en un seul projet | Gratuit |
| Détection langue | Lexique camfranglais/pidgin fait main + règles | Comprendre les menaces locales, hors-ligne | Gratuit |
| Détection IA | transformers.js : Xenova/toxic-bert (navigateur) | Généraliser la toxicité | Gratuit |
| Preuve | Web Crypto SHA-256 + HMAC serveur | Sceller et horodater | Gratuit |
| Assistant juridique | RAG + Groq gpt-oss-20b | Répondre selon la loi camerounaise, sources citées | Gratuit* |
| Analyse de capture | Groq Llama 4 Scout (vision) | Extraire auteur / heure / message d'une capture | Gratuit* |
| Bot image | Node + Hugging Face (dima806) | Détecter photo truquée / générée par IA | Gratuit |
| Provenance | C2PA Content Credentials (OpenAI, Google…) | Lire la signature d'origine d'une image | Gratuit |
| Déploiement | Vercel + GitHub | Mise en ligne automatique au push | Gratuit |
*Généreux paliers gratuits, largement suffisants pour un prototype.
Ce que j'ai vraiment appris
Ce projet m'a appris bien plus que du code.
Protéger, c'est l'affaire de tous. Même si l'événement était ouvert aux garçons, j'ai choisi de me mettre à la place d'une fille pour concevoir Gardienne, avec et pour celles qui vivent ce que je ne vivrai jamais. Ça m'a obligé à vraiment écouter. La meilleure fonctionnalité de Gardienne, ce n'est pas le SHA-256. C'est la phrase qui s'affiche à côté du verdict : « Tu n'es pas seule, et ce n'est pas ta faute. »
La technique doit servir l'humain, pas l'inverse. Un hash, un modèle, un bot, ça n'a de sens que si, au bout, une fille de 19 ans se sent moins seule et sait quoi faire.
Et à la fin ? Gardienne a décroché la 2ᵉ place. 🥈 Pas seulement pour la technique, pour ce qu'elle essaie de réparer.
La cérémonie, en images
Pour aller plus loin
Le code est sur GitHub :
Le README explique tout : détection, preuve scellée, assistant juridique, bot Telegram. C'est un point de départ : le lexique s'enrichit en continu, et l'architecture s'étend à d'autres langues et d'autres pays d'Afrique francophone.
Le combat contre le cyberharcèlement mérite du code ouvert. Forkez, améliorez, partagez.
« À la fin, nous ne nous souviendrons pas des paroles de nos ennemis, mais du silence de nos amis. » Martin Luther King
Gardienne ne prétend pas effacer le harcèlement. Mais elle brise le silence : celui de la victime qui doute, et le nôtre, à nous qui pouvons agir. Cette étudiante de 19 ans du début ? Aujourd'hui, elle a un outil pour comprendre, une preuve pour se défendre, et une main tendue. C'est déjà beaucoup.
Aucune fille ne devrait affronter ça seule.
Le code source est disponible sur GitHub. N'hésite pas à ouvrir une issue, proposer une amélioration, ou simplement me dire ce que tu en penses.
Démo live
Démo
Récap de la cérémonie







