Gardienne : un bouclier IA contre le cyberharcèlement | 2ᵉ au hackathon Girls in STEAM
Retour au blog
·11 min readIACyberharcèlementProjet

Gardienne : un bouclier IA contre le cyberharcèlement | 2ᵉ au hackathon Girls in STEAM

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.

Présentation de Gardienne pendant le speech au jury

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 :

  1. « Est-ce que c'est vraiment grave ? » : le doute paralyse.
  2. « Je n'ai aucune preuve. » : une capture d'écran, ça se conteste en deux secondes.
  3. « 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 :

  1. 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.
  2. Gardienne analyse et classe : insulte, harcèlement répété, menace, ou chantage/sextorsion, avec un niveau de gravité.
  3. 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.
  4. 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. »

Le verdict de gravité affiché par Gardienne

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.

La preuve scellée : empreinte SHA-256 et horodatage certifié

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 :

Seul derrière l'écran, concentré en pleine session de code

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.

Le bot Telegram Gardienne analyse une image truquée

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.

ComposantTechnologieRôleCoût
FrameworkNext.js 16 + TypeScriptWeb app + routes API, en un seul projetGratuit
Détection langueLexique camfranglais/pidgin fait main + règlesComprendre les menaces locales, hors-ligneGratuit
Détection IAtransformers.js : Xenova/toxic-bert (navigateur)Généraliser la toxicitéGratuit
PreuveWeb Crypto SHA-256 + HMAC serveurSceller et horodaterGratuit
Assistant juridiqueRAG + Groq gpt-oss-20bRépondre selon la loi camerounaise, sources citéesGratuit*
Analyse de captureGroq Llama 4 Scout (vision)Extraire auteur / heure / message d'une captureGratuit*
Bot imageNode + Hugging Face (dima806)Détecter photo truquée / générée par IAGratuit
ProvenanceC2PA Content Credentials (OpenAI, Google…)Lire la signature d'origine d'une imageGratuit
DéploiementVercel + GitHubMise en ligne automatique au pushGratuit

*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

Photo de groupe avec les lauréats et les organisateurs
Avec la promotrice de l'événement
Remise du prix au Technipole SupValor
Photo avec le prix de la 2e place
Les lots remis : PC portable et chèque factice sur une table
Assis avec les autres finalistes en attendant les résultats
La salle du hackathon, les participantes concentrées sur leurs écrans
Un membre du jury ouvre l'application Gardienne sur son téléphone

Pour aller plus loin

Le code est sur GitHub :

github.com/zoom-BT/Gardienne

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

#Cybersécurité#Cameroun#Hackathon#Next.js#Deepfake

Partager

XLinkedInWhatsApp

Commentaires

Les commentaires utilisent GitHub Discussions. Connectez-vous avec votre compte GitHub.