Skip to content
← Projets
silvere@ouaga:~/projects/yembi

Yembi

[ LIVE ]

Suivi du mobile money au Burkina Faso, développé chez DOKAL-Africa. Transforme les SMS Orange Money et Moov Money en finances structurées, entièrement hors ligne. Je l’ai dirigé du premier commit au Play Store.

99%+
précision du parsing
<50ms
requêtes sur 1M+ lignes
7
types de transactions
1→2
ingénieurs, du lancement à aujourd’hui
  • Kotlin
  • Jetpack Compose
  • Room + SQLCipher
  • Hilt
  • Node.js/TypeScript
  • MySQL
  • Docker/AWS ECR
  • Angular/Ionic
Yembi — fil de transactions extraites des SMS opérateurs Yembi — vue d’ensemble revenus/dépenses sur 30 jours en FCFA Yembi — graphiques de dépenses par catégorie

Le problème

Au Burkina Faso, votre « relevé » de mobile money est une pile de SMS. Orange Money et Moov Money font circuler des milliards de FCFA par an, et la seule trace qui reste à l’utilisateur, ce sont des messages bruts en ordre chronologique inversé. Pas de catégories, pas de totaux, pas d’historique consultable.

Yembi règle ça. L’app intercepte les SMS des opérateurs directement sur le téléphone, les transforme en transactions structurées et donne enfin un vrai tableau de bord financier : soldes par compte, dépenses par catégorie, historique complet et cherchable. Sans intégration bancaire, sans API, sans Internet.

Mon rôle

Yembi est le produit phare grand public de DOKAL-Africa, et j’en ai été le seul ingénieur du premier commit jusqu’à bien après le lancement, quand nous avons recruté un deuxième développeur que j’accompagne aujourd’hui. Ça couvrait toute la surface :

  • l’app Android (Kotlin, Jetpack Compose, Room chiffré avec SQLCipher)
  • le backend de gestion (Node.js/TypeScript, MySQL, images Docker déployées sur AWS ECR)
  • l’application web d’administration (Angular/Ionic) qui sert à opérer le produit
  • l’outillage assisté par ML pour entraîner et noter le parser de SMS
  • la fiche Play Store, le processus de release et les visuels du store

Comment ça marche

Un BroadcastReceiver intercepte les messages opérateurs en temps réel. Un pipeline de parsing, calibré par opérateur et par type de transaction sur un corpus de vrais messages anonymisés, extrait montant, contrepartie, identifiant de transaction, solde et type. Il couvre aujourd’hui sept types de transactions, du retrait agent au paiement marchand, avec plus de 99 % de précision mesurée.

Tout atterrit dans une base locale chiffrée : l’app fonctionne sans aucune connexion. La synchronisation vers le backend est un plus, pas une dépendance. Les téléphones burkinabè portent souvent deux SIM sur deux opérateurs, donc la détection de SIM rattache chaque message au bon compte et suit les soldes séparément.

La synchro elle-même est conçue pour des connexions 2G qui coupent en pleine requête : file persistante, clés d’idempotence SHA-256, backoff exponentiel. Un retry ne peut jamais créer de doublon, parce que le doublon ne peut pas être représenté.

Ce que ça m’a appris

Les formats SMS des opérateurs changent sans préavis. Le parser est piloté par configuration : un changement de format part comme une mise à jour de données, pas comme une release. Je peux réagir à un nouveau gabarit Orange en une heure environ. Et la base est indexée pour les questions que les utilisateurs posent vraiment (« combien en factures le mois dernier ? »), ce qui garde les requêtes par période sous les 50 ms sur des tables de plus d’un million de lignes, sur de l’Android milieu de gamme.

Sur le Play Store depuis mars 2026.