Construit sur 14 mois de données réelles de ventes après-vente (Afrique, concessionnaire K600)le même entrepôt de données que le projet TAE Analyst Agent. L'équipe commerciale avait 2 635 clients et aucun moyen de les prioriser au-delà du feeling : qui protéger, qui développer, qui vaut un appel téléphonique.
Le RFM classique suppose deux choses qui ne tiennent pas ici. Il n'y a aucune granularité journalière chaque date de facture est un arrêté mensuel, donc la récence doit se mesurer en mois, pas en jours. Et l'export source était plafonné à exactement 1 000 000 de lignes trois années de suite, ce qui n'a pas seulement tronqué des lignes de facture, mais a fait disparaître des clients entiers. Vérifié sur le seul segment de données propre disponible (les lignes non tronquées de 2025), ce plafond a coûté à la tranche 2024 84 % de son chiffre d'affaires réel et environ deux tiers des clients ayant réellement acheté quelque chose.
La solution est un niveau de fiabilité des données par client (vérifié contre l'entrepôt brut : 230 denses / 1 398 propres / 143 partiels / 864 invérifiables), reporté sur chaque tableau, graphique et export pour qu'un chiffre d'affaires plancher issu d'une fenêtre de 2 mois entièrement observée ne soit jamais comparé directement à celui d'une fenêtre de 12 mois tronquée.
Le clustering repose sur un balayage complet, pas sur un algorithme supposé correct d'emblée : 792 candidats sur 7 familles (centroïdes, hiérarchique, distribution, densité, graphe, type mixte, et un autoencodeur), 2 jeux de variables, 3 transformations d'asymétrie, k = 2 à 10, tout journalisé dans MLflow. Deux disqualifications ont compté plus que le gagnant :
KMeans, k=4 sur un RFM transformé en log1p, a été le seul finaliste à franchir ce seuil (ARI moyen de 0,970, pire des 100 rééchantillonnages encore à 0,800).
Quatre segments : Heavy Hitters (7 % des clients, 86 % du chiffre d'affaires), Steady Regulars (29 %, 12 %), Long Quiet (21 %, 1 %, et 95 % bâti sur des données invérifiables signalé honnêtement, pas traité comme un vrai profil client), et One-and-Done Buyers (44 %, moins de 1 %).
La liste de réactivation se scinde comme le système de niveaux l'exige : 45 clients confirmés dormants valant 668 810 $ contre 216 clients apparemment dormants valant 4,9 M$ dont le silence ne peut être distingué d'un bug d'export 7,4 fois plus gros, et jamais livré comme un seul chiffre combiné.
Moteur de scoring du risque de churn pour l'activité pièces détachées d'un concessionnaire, isolant une cohorte fiable de 230 comptes à partir d'un export de 3,1 M de lignes corrompu par un bug de plafonnement ayant fait disparaître 63 % des clients, et surpassant les modèles de référence récence/fréquence avec un PR-AUC de 0,51 validé par bootstrap.
Combine process mining et machine learning pour détecter les réclamations d'assurance frauduleuses à partir de journaux d'événements.
Application web en microservices en production (Django + ReactJS) automatisant le calcul des aides et la génération des réclamations, réduisant un processus de plusieurs jours à quelques minutes.