Abidjan et Paris
Salif Sawadogo
Ingénieur IA et inventeur breveté. Je fais passer les LLM du prototype à la production, et je le prouve.
La plupart des projets GenAI s'arrêtent à la démo. Le problème n'est jamais le modèle. C'est l'évaluation, l'observabilité, et le processus de mise en production qui permet de livrer un changement sans casser ce qui marchait déjà. C'est cet écart que je comble.
- Aujourd'hui
- Consultant indépendant depuis janvier 2026. En mission pour la Banque africaine de développement, où je construis la plateforme IA derrière ses assistants internes.
- Avant cela
- Cinq ans d'IA en production : trois au Data Center of Excellence de Safran, et auparavant chez AXA et Coca-Cola Bottling.
- Par ailleurs
- Cofondateur de BurkimbIA, et j'enseigne le MLOps et le cloud dans un master en informatique et IA.
- Formation statistique
- Ingénieur d'État en modélisation statistique (INSEA Rabat), master en data science (Paris-Est Créteil, bourse d'excellence Eiffel). Savoir si trois points de score en plus sont du signal ou du bruit, c'est tout le métier en évaluation.
Ce que je fais
Cinq pratiques. Les trois premières sont le point de départ de la plupart des missions.
Évaluation et observabilitéLa couche de mesure qui vous dit si votre système est bon, avant que vos utilisateurs ne le fassent.Une suite d'évaluation notée, un tableau de bord, une porte de livraison · 2 à 4 semaines
Évaluer un système RAG, c'est évaluer deux choses et non une. La recherche et la génération échouent pour des raisons différentes et le correctif n'est jamais le même : elles sont donc notées séparément. Côté génération, l'exactitude et la similarité de la réponse, sa pertinence et sa fidélité. Côté recherche, la précision et le rappel contextuels. La fidélité, c'est le taux d'hallucination sous un nom plus poli.
Tout ne se note pas sur dix. Certains faits sont dans la réponse ou n'y sont pas : les faits clés obligatoires et les assertions de présence tournent donc comme contrôles déterministes, à côté du juge.
Là où un juge LLM est le bon instrument, il est traité comme tel. Comparaison par paires, majorité sur trois votes, ordre de présentation randomisé pour que le biais de position ne passe pas avec, et des grilles calibrées séparément pour la fidélité, l'utilité et la sûreté.
Le jeu de données est la partie que les équipes veulent sauter et celle qui décide de tout le reste. Les cas synthétiques attrapent l'instabilité technique et l'hallucination à grande échelle, mais ils ne portent ni la nuance ni les références réglementaires qu'un expert métier a en tête. Le jeu de référence se construit donc avec le métier. Chaque cas tient en trois choses : la question formulée comme un utilisateur la poserait vraiment, la réponse qu'un expert écrirait, et le document qui la prouve. Puis les tests négatifs, c'est-à-dire les questions que le système doit refuser.
Autour de ça, la moitié opérationnelle. Des indicateurs et objectifs de niveau de service (SLI, SLO), avec des portes de release qui bloquent une promotion quand les chiffres n'y sont pas. Des traces Langfuse par requête, du streaming au niveau du token, la visualisation des appels d'outils pour les flux multi-agents. La détection de dérive sur Kolmogorov-Smirnov et l'indice de stabilité de population, avec alerting configurable. Et là où l'exact match et le F1 s'effondrent sur du multilingue, BLEU, METEOR, TER et chrF à la place.
Puis les statistiques que la plupart des travaux d'évaluation laissent de côté : l'analyse de puissance avant le test plutôt qu'après, les intervalles de confiance par bootstrap, McNemar pour les résultats binaires appariés, et l'alpha-spending pour que personne n'arrive à un faux positif à force de regarder.
vous avez un système RAG ou agentique en production et aucune idée de si le changement de prompt de la semaine dernière l'a amélioré ou dégradé. Je vous livre une suite d'évaluation notée, un tableau de bord, et une porte de livraison. Deux à quatre semaines.
Systèmes RAG et agentiquesUne recherche qui remonte la bonne chose, et des agents qui s'arrêtent au lieu de boucler.Récupération et génération auditées séparément · la couche fautive corrigée · la suite d'évaluation qui le prouve
- Recherche hybride : BM25 plus embeddings denses, avec reranking. Bases vectorielles dont Azure AI Search, LanceDB et pgvector.
- Ingestion documentaire à l'échelle : crawling, parsing Docling, stratégies de découpage, métadonnées et récupération par section via fil d'Ariane.
- Orchestration d'agents avec LangGraph, pydantic-ai, LangChain, et intégration d'outils MCP.
- Harnais d'agents et appel d'outils. Le framework est la partie facile. C'est le harnais qui décide si un agent est utilisable en production : contrats d'outils typés pour qu'un appel malformé échoue à la frontière plutôt que trois étapes plus loin, surfaces d'outils délimitées par cas d'usage plutôt que de tout donner à chaque agent, terminaison explicite et budgets d'étapes pour qu'une boucle ne fasse pas exploser la facture, comportement de reprise et de repli quand un outil échoue ou ne renvoie rien, et journalisation par tour qui rend une mauvaise trajectoire lisible après coup. Model Context Protocol quand les outils doivent être partagés entre systèmes.
- Routage multi-agents : verrous structurels pour les chemins déterministes, routeurs LLM pour les chemins sémantiques, avec des replis quand une branche remonte trop peu de contexte.
- Patterns de passerelle LLM : une seule couche de routage pour que les applications ne codent jamais en dur le SDK d'un fournisseur, ce qui fait du changement de modèle et du contrôle des coûts une affaire de configuration.
vos réponses RAG sont plausibles mais fausses, ou votre agent boucle. J'audite la qualité de récupération séparément de la qualité de génération, je corrige la couche qui échoue réellement, et je vous laisse la suite d'évaluation qui le prouve.
MLOps et IA sous contrainteEnvironnements réglementés, hors ligne, souverains ou à faible connectivité, où le manuel habituel ne s'applique pas.L'architecture et le récit de conformité conçus ensemble, pas greffés l'un sur l'autre
- CI/CD avec portes de validation automatisées : qualité du code, validation du modèle contre des jeux de référence, compatibilité d'infrastructure, analyse des dépendances.
- MLflow Model Registry avec promotion de staging vers production, portes d'approbation, traçabilité de lignage, et retour arrière vers n'importe quelle version antérieure.
- Déploiement blue-green et canary, trafic miroir, retour arrière automatique en cas de violation de SLO.
- Kubernetes (AWS EKS), Docker, Terraform, Azure Container Apps, inférence GPU serverless.
- Architecture offline-first : lectures cache-first IndexedDB et SQLite, files de mutations, rejeu automatique à la reconnexion, chiffrement AES-GCM au repos.
- Inférence sur l'appareil : modèles de parole et de langage quantifiés tournant entièrement sur du matériel Android de milieu de gamme, mesurés sur les téléphones que les gens possèdent vraiment plutôt que sur un flagship. Zéro réseau, zéro coût par requête, rien qui quitte l'appareil.
- Privacy by design : pipelines conformes RGPD, chiffrement des données de santé, isolation multi-tenant appliquée au niveau de la base, modélisation du consentement avec portée et expiration.
vous avez besoin d'IA dans un environnement à contraintes réelles (données de santé, réseau isolé, connectivité intermittente, un régulateur). Je conçois l'architecture et le récit de conformité ensemble, parce que greffer le second sur la première après coup ne marche jamais.
Quantification de l'incertitude et machine learningUne prédiction ponctuelle sans barre d'erreur est un avis.Une couche d'incertitude calibrée · une règle de décision réglée sur votre coût d'erreur réel
Quand la sortie d'un modèle pilote une décision dont l'erreur coûte quelque chose, je rends l'incertitude explicite et calibrée.
La prédiction conforme est l’outil principal. Elle enveloppe un modèle déjà entraîné et renvoie des intervalles ou des ensembles de prédiction avec une garantie de couverture à distance finie, sans hypothèse de distribution et indépendante du modèle. En régression, ça veut dire des variantes localement adaptatives et de la régression quantile conformalisée, pour que l’intervalle s’élargisse là où le modèle est vraiment incertain au lieu de rester une bande constante. En classification, des ensembles de prédiction plutôt qu’une étiquette unique forcée.
Produire des intervalles est la partie facile. Les juger est l’autre : couverture marginale contre la cible, largeur moyenne d’intervalle, adaptabilité selon les régimes, et le score de Winkler quand il faut un seul chiffre qui pénalise à la fois un intervalle trop large pour servir et un intervalle trop étroit pour être honnête.
Il faut aussi savoir où la garantie s’arrête. La couverture est marginale et non conditionnelle : 90 pour cent au global peuvent cacher 60 pour cent sur le sous-groupe qui vous intéresse, d’où la vérification de la couverture par segment. Le cadre suppose aussi l’échangeabilité : il se dégrade sous dérive de distribution et demande une pondération ou un schéma adaptatif dès que les données bougent.
Là où les méthodes classiques conviennent mieux, ce sont elles qui répondent : intervalles de confiance par bootstrap, estimation sous contraintes pour resserrer les erreurs standard quand le signe d’un effet est connu a priori, et analyse de puissance avant l’expérience plutôt qu’après.
Rien de tout ça ne sert sans deux choses en aval. La calibration, pour qu’une probabilité prédite de 0,8 corresponde à un événement qui arrive 80 pour cent du temps. Et un seuil de décision sensible au coût, réglé sur la vraie métrique métier et le coût asymétrique de chaque erreur, plutôt que 0,5 par défaut en acceptant ce que donne la matrice de confusion.
votre modèle est assez juste en moyenne et fait quand même des erreurs coûteuses, parce que rien en aval ne sait quelles prédictions il faut se méfier. J'ajoute la couche d'incertitude et je règle la règle de décision sur votre coût d'erreur réel.
Revenue growth et analytique retailLa chaîne analytique commerciale pour les biens de consommation et le retail. Là où j'ai commencé.La couche analytique, réexécutable le trimestre suivant plutôt qu'un deck à usage unique
Le géomarketing vient en premier sur la plupart de ces missions : modélisation de zone de chalandise, indices spatiaux, enrichissement par points d’intérêt et fréquentation, distance géodésique sur de vraies projections. Ça répond à la question de savoir quels points de vente sont comparables, et pourquoi.
Ce qui suppose en général une résolution d’entités, parce que les données clients internes ne partagent presque jamais de clé avec l’extérieur. Appariement flou contre des sources externes, avec une vérité terrain étiquetée à la main plutôt qu’un seuil de similarité non validé.
Sur la base enrichie : segmentation client par K-means et classification hiérarchique sur variables comportementales et spatiales, avec des segments profilés dans le vocabulaire qu’emploie déjà l’équipe commerciale, et un classifieur pour ranger les nouveaux comptes dans les segments existants.
Puis la demande. Des spécifications log-log à effets fixes donnent directement les élasticités prix et prix croisés, avec cannibalisation et effets de halo modélisés explicitement par une matrice de substitution. Les nouveaux produits n’ont pas d’historique : ils sont estimés par modélisation analogue sur la similarité d’attributs. La prévision, c’est SARIMAX quand la structure saisonnière est le signal, et du gradient boosting quand elle ne l’est pas.
La sortie alimente l’optimisation d’assortiment et de planogramme : construction de gamme gloutonne ou sous contraintes, qui tient compte de la substitution à mesure que le linéaire se remplit, contre un objectif de volume ou de marge. La rationalisation de SKU tourne sur la même mécanique.
À côté de ça, le versant client : RFM, valeur vie client et churn, avec de l’analyse de survie quand le métier a besoin de savoir quand et pas seulement si.
vous avez des données transactionnelles et une question commerciale (que faut-il référencer, combien ça va se vendre, quels clients valent la peine d'être défendus) et aucune couche analytique entre les deux. Je la construis, et je la rends réexécutable le trimestre suivant plutôt que d'en faire un deck à usage unique.
Douze études de cas, par ce qu’elles prouvent
Plateforme à l'échelle d'une organisation, analytique commerciale, produit livré là où l'environnement résiste, fondations statistiques dessous.
1 / 12
- Banque africaine de développement, AI Innovation LabMission en cours. Infrastructure IA mutualisée plus six assistants métier. Chaque assistant livre désormais un jeu d'évaluation construit avec le métier et un score publié.pydantic-ai · LangGraph · LiteLLM · Langfuse · MLflow · Azure Container Apps · Azure AI Search · MySQL · Docling · FastAPI · Angular
Une passerelle LiteLLM route chaque appel LLM de l'organisation, avec Langfuse pour les traces et MLflow pour le suivi des expériences. Le prix des modèles est de la configuration et non du code : le contrôle des coûts et un changement de fournisseur ne demandent pas de déploiement.
Ce dont je suis le plus fier, c'est que l'évaluation soit devenue un service partagé au lieu de quelque chose que chaque équipe bricolait dans son coin. Un seul service FastAPI note chaque assistant sur l'exactitude, la pertinence, la fidélité et la précision contextuelle, à côté de contrôles déterministes de faits clés. Les appels au juge passent par la même passerelle, les jobs tournent en asynchrone, les résultats atterrissent dans MLflow.
Chaque bot livre désormais la même paire : un jeu d'évaluation construit avec le métier, puis un score de campagne publié. Les six assistants sont isolés pour qu'une release d'une équipe ne casse pas celle d'une autre, sur un même package coeur pour le parsing, la recherche, l'historique et la plomberie agent.
- BurkimbIACofondateur. Une trentaine de modèles open source pour le mooré, une langue sans presque aucun corpus numérique.PyTorch · Transformers · PEFT · Unsloth · RunPod · Hugging Face · Fly.io · S3 · WandB · FastAPI · Gradio
Une communauté qui construit des modèles de parole et de langue en libre accès pour une langue sans presque aucun corpus numérique.
La traduction, c’est NLLB et Mistral-7B fine-tunés. La reconnaissance vocale, c’est Whisper. La synthèse vocale couvre SparkTTS, XTTSv2, VITS et ParlerTTS. Au-dessus viennent des modèles instruits sur sept tâches structurées en mooré, et un assistant conversationnel construit sur une dorsale généraliste adaptée à la langue, avec un mélange de réinjection pour qu’il gagne le mooré sans perdre le raisonnement qu’il a déjà.
C’est la mesure qui décide où porter l’effort. La taille du modèle valait près de quatre fois ce que valait le réglage du décodeur, et seulement dans un sens de traduction. Une moyenne l’aurait caché.
La partie intéressante, c’est le volant de données synthétiques. De la parole réelle entraîne le modèle TTS, le modèle TTS génère de l’audio synthétique qui augmente le corpus ASR, l’ASR amélioré transcrit plus d’audio réel, ce qui donne plus de paires pour le tour suivant. C’est comme ça qu’on dépasse un corpus de départ de 1 000 paires sans grande campagne d’enregistrement.
Tout est public : huggingface.co/burkimbia et github.com/BurkimbIA
- Safran, Data Center of ExcellenceNovembre 2022 à décembre 2025. Un capteur virtuel breveté pour l'usure des freins d'avion, et de l'IA générative en production.AWS EKS · Kubernetes · MLflow · Langfuse · LangGraph · XGBoost · Spark · CI/CD
Un capteur virtuel pour l'usure des freins d'avion, et un brevet
Vérifier l'usure d'un puits de chaleur de frein d'avion suppose normalement d'envoyer quelqu'un l'inspecter au sol. Nous avons remplacé l'inspection par une estimation : lire les capteurs de température pendant le stationnement après atterrissage, mesurer le temps de refroidissement du frein, et en déduire l'usure.
Déposé par Safran avec trois inventeurs nommés, dont moi. Priorité française en août 2024, dépôt PCT en juillet 2025, publié sous WO2026032835A1 en février 2026. Un brevet publié est une divulgation publique par définition : la méthode et le raisonnement sont dans le document.
IA générative en production
Un chatbot multi-agents sur une couche LLM-as-a-service interne, avec appel d'outils et MCP. Un cadre d'évaluation aux objectifs de niveau de service imposés sur l'exactitude factuelle, la toxicité, l'exposition de données personnelles, la latence et la disponibilité, câblé à des portes de livraison qui bloquaient toute mise en production ratant une cible.
- Présélection de consultants assistée par IAIntelligence documentaire pour les acquisitions et le recrutement, Banque africaine de développement. Lit des termes de référence, lit une pile de CV, produit des notes défendables et une liste courte classée.Azure OpenAI · Azure AI Search · Azure Translator · MySQL · SharePoint · webhooks · SSE
- Découpé en un service d'évaluation (logique métier, consultations, critères, notes, exports) et un service d'intelligence (extraction, analyse, scoring), communiquant par webhook pour qu'un long job LLM ne bloque jamais une requête.
- Normalisation linguistique avant notation : le texte est extrait, la langue détectée, puis traduite vers une langue de travail unique. Sans cette étape, un CV en français et un CV en anglais sont notés sur des bases différentes, ce qui est le genre de biais que personne ne remarque jusqu'à ce qu'un candidat non retenu demande pourquoi.
- Notation adossée à la recherche documentaire contre les termes de référence, pas à du prompting libre, pour que chaque note remonte à une preuve précise dans le document.
- Server-sent events pour la progression, export Excel, sortie en liste courte classée.
Celui-ci se généralise bien. Tout flux de la forme « noter beaucoup de documents contre une seule grille, et pouvoir justifier chaque note » est le même système.
- DS-backboneUn environnement data science que votre équipe monte en une commande. Dépôt public.Docker Compose · MLflow · PostgreSQL · MinIO · JupyterLab · Nginx
Le travail de plateforme que je fais chez Safran et à la Banque africaine de développement est sous NDA. Voici la même architecture, ouverte, pour que vous puissiez la lire avant de m'embaucher : github.com/sawallesalfo/DS-backbone
Un seul
docker compose updonne à une équipe la boucle complète : JupyterLab pour l'exploration, MLflow pour le suivi des expériences et le registre de modèles, PostgreSQL comme base derrière, MinIO pour les artefacts compatibles S3, et Nginx qui route le tout derrière des noms d'hôtes propres.Ce qui compte, c'est ce que ça supprime. La plupart des équipes assemblent ces cinq pièces à la main, différemment sur chaque poste, puis passent le premier mois d'un projet à déboguer pourquoi une expérience qui tournait en local ne se reproduit pas. La configuration passe par des variables d'environnement et le stockage est compatible S3 dès le premier jour : passer au vrai cloud est un changement d'URL, pas une réécriture.
- Equatorial Coca-Cola Bottling Company, MarocSegmentation géospatiale et modélisation de la demande. MAPE de test au pire de 14 pour cent sur l'ensemble des modèles. Mémoire et algorithme tous deux publics.Python · Azure Databricks · Spark · scikit-learn · statsmodels · géospatial · web scraping
Le travail le plus complet que je puisse montrer de bout en bout, parce que le rapport est public et l'algorithme cœur aussi.
L'appariement d'entités est venu en premier, et c'était le plus dur. Les enregistrements internes ne partageaient aucune clé avec une source externe : j'ai donc construit un score de similarité composite sur sept métriques de chaînes, pondéré à 75 pour cent sur le nom, 15 sur l'adresse et 10 sur la distance géodésique, et apparié un corpus TripAdvisor de 5 457 entrées à la base interne. Puis je l'ai validé honnêtement : un échantillon stratifié de 400 enregistrements vérifié à la main.
Sur cette base appariée s'ajoute l'enrichissement spatial, sur trois sources externes : TripAdvisor pour le corpus ci-dessus, OpenStreetMap pour les points d'intérêt, Flickr pour les signaux de fréquentation.
Les modèles de demande sous contraintes sont entrés en usage dans le département data science.
- AXA DirectModélisation du risque en assurance sous contrainte réglementaire. Temps de traitement réduit de 40 pour cent, et une première place en concours.Azure · Databricks · Python · R · scikit-learn · Spark · Power BI · CI/CD
La tarification en assurance est un des rares endroits où un modèle doit satisfaire un régulateur autant qu'un métier. J'ai migré la chaîne de tarification des GLM traditionnels vers le machine learning sans perdre cela : modèles de risque de fréquence et de coût séparés, répondant aux exigences réglementaires financières, une migration big data vers Azure avec intégration CI/CD, un traitement conforme RGPD de bout en bout, et un suivi de performance continu après mise en production. Le temps de traitement a baissé de 40 pour cent.
La contrainte intéressante, c'est l'explicabilité. Un actuaire sait défendre un coefficient de GLM devant un superviseur. Le remplacer par un modèle à gradient boosting veut dire que vous devez désormais rendre compte de pourquoi le prix a bougé, ce qui façonne ce que vous avez le droit de construire.
Avant d'y entrer, j'ai gagné la première place du concours interne de data science d'AXA Direct. Le code est public, écrit en R.
- CDandLPRecherche sémantique pour une marketplace de vinyles. +29 pour cent de satisfaction utilisateur, vérifié par inférence causale.Python · BERT · Causal Forest · Double ML · scores de propension · NLP
Remplacement de la recherche par mots-clés par des embeddings sémantiques à base de BERT, par-dessus une déduplication et une normalisation NLP d'un catalogue produit en désordre.
Puis mesure sérieuse. Pas un split A/B simultané : un déploiement progressif sur quatre semaines, ce qui veut dire que la randomisation était imparfaite et que le chiffre avant-après naïf n'était pas fiable. L'effet a donc été estimé par inférence causale. Causal Forest pour les effets de traitement hétérogènes selon les segments d'utilisateurs, Double Machine Learning pour contrôler les facteurs de confusion, appariement par score de propension pour corriger le biais de sélection introduit par le design du déploiement.
+29 pour cent de satisfaction utilisateur, significatif à p < 0,01, et défendable parce que la dérive saisonnière et comportementale a été modélisée au lieu d'être écartée par hypothèse. Le chiffre que j'aurais annoncé sans cette couche était plus élevé et en partie fictif.
- Retail-360La chaîne complète d'analytique client, de bout en bout. Dépôt public.Python · RFM · analyse de survie · SARIMAX · XGBoost · LightGBM
Construit autour de sept questions qu'un détaillant se pose vraiment : qui sont mes meilleurs clients, qui est sur le point de partir, qui pourrait valoir plus qu'aujourd'hui, qui est déjà parti, où l'effort de rétention est rentable, qui est fidèle, et qui répondra à cette campagne. Dépôt public.
- Segmentation RFM comme fondation, parce que récence, fréquence et montant sont interprétables par l'équipe commerciale, et qu'une segmentation que personne ne comprend ne sert jamais.
- Valeur vie client modélisée par-dessus.
- Attrition traitée en analyse de survie plutôt qu'en classifieur binaire : la sortie dit quand un client risque de partir, pas seulement s'il partira.
- Prévision des ventes au jour et à la semaine, SARIMAX pour la structure saisonnière, XGBoost et LightGBM là où les relations ne sont pas linéaires.
- DOCFIRASanté numérique pour les maladies chroniques en Afrique. Offline-first, multi-tenant, avec l'assistant clinique qui tourne entièrement sur le téléphone.Next.js 15 · Hono · Drizzle · PostgreSQL · Dexie.js · Auth0 · Terraform · LangGraph · whisper.rn
Plateforme multi-tenant reliant patients, cliniciens et institutions, pour des régions où voir un spécialiste suppose de voyager et où la connectivité n'est pas garantie. Offline-first par conception : lectures servies par le cache, mutations mises en file, rejeu automatique à la reconnexion, chiffrement AES-GCM des données de santé au repos dans le navigateur, et consentement RGPD à deux niveaux, stockage puis accès par clinicien.
Faire tourner tout l'assistant clinique sur le téléphone. La transcription dans le cloud est la réponse facile et la mauvaise ici : elle demande un réseau que la clinique n'a pas toujours, et elle envoie la parole du patient à un tiers. J'ai donc construit le chemin hors ligne et je l'ai mesuré. Whisper via
whisper.rnpour la parole, un petit modèle de langue viacactus-react-nativepour le brouillon de note, mesurés sur les téléphones des cliniciens, pas sur un haut de gamme : Whisper tiny contre small, Gemma 270M contre Qwen3 0,6B. Les modèles se téléchargent une fois, puis rien ne quitte l'appareil.Ce travail est devenu un guide pas à pas pour déployer un LLM sur mobile.
- IMETRIXDe la business intelligence pour des commerçants qui n'en ont jamais eu. Prototype voisin pris en défaut : 0,16 jour de stock affiché là où la réponse était 45,5.React Native · Expo · TypeScript · expo-sqlite · Supabase RLS · Nuxt 3 · EAS Build
Boutiques et grossistes à Ouagadougou. Le produit n'est pas une caisse enregistreuse, c'est un assistant de décision : marge, tendance, ce qui rapporte vraiment, et ce qui dort sur l'étagère. Offline-first par nécessité, avec le SQLite local comme source de vérité et une multi-location imposée par la sécurité au niveau des lignes de Postgres plutôt que par le code applicatif.
Pendant la construction, j'ai audité les formules de stock d'un prototype voisin et trouvé que le calcul des jours de stock divisait une quantité par un montant en devise, utilisait le stock de clôture là où son propre commentaire spécifiait la moyenne, et multipliait par la période après que la division l'avait déjà produite. Sur un cas réel (350 F de prix d'achat, 26 unités de stock moyen, 8 vendues en 14 jours) il renvoyait 0,16 jour contre 45,5 en vérité. L'erreur croissait avec le prix d'achat : ce n'était même pas un décalage constant.
- Analyse économétrique de l'inflation au Burkina FasoRecherche appliquée, EDESAT et INSEA, 2021. VAR, VECM, cointégration de Johansen. Diapositives publiques.R · séries temporelles · cointégration · causalité de Granger · décomposition de variance
Séries mensuelles depuis 2004. Tests de stationnarité (Dickey-Fuller augmenté), cointégration de Johansen, spécification VAR et VECM avec sélection du retard par critère d'information, causalité de Granger, fonctions de réponse impulsionnelle, et décomposition de la variance de l'erreur de prévision à horizon 12 mois. Diagnostics de résidus complets : Jarque-Bera p = 0,38, White p = 0,45, Portmanteau p = 0,91. Incluait une analyse du choc COVID-19 sur le niveau des prix. Diapositives publiques.
Je le mentionne parce que les séries temporelles et l'identification causale reviennent sans arrêt. La prévision, la détection d'anomalies, et toute question de la forme « est-ce notre changement qui a causé ça » relèvent de la même boîte à outils.
Ma façon de travailler
-
Métrique
Le modèle est un sous-composant
Ce qu'on optimise est une métrique métier calculée sur des décisions et des actions, pas un score sur un jeu de test. Un modèle qui améliore l'AUC pendant que le seuil de décision reste faux n'a rien amélioré. Je pars de la décision et du coût de l'erreur, puis je remonte vers ce que le modèle doit sortir, ce qui est souvent un intervalle ou une abstention plutôt qu'un nombre.
-
Mesure
L'évaluation avant l'optimisation
Je ne règle pas un système qui n'a pas de tableau d'affichage. Le premier livrable sur la plupart des missions est la mesure, parce que sans elle chaque changement suivant est une supposition.
-
Limites
Honnête sur les limites
L'essentiel de mon expérimentation en production a pris la forme de déploiements canary, de trafic miroir et de déploiement progressif plutôt que de vrais tests A/B randomisés simultanés. Si vous avez besoin de ces derniers, je sais les concevoir, mais je vous dirai où s'arrête mon expérience pratique et où je raisonne à partir de la méthode.
-
Chiffres honnêtes
Une métrique à laquelle on ne peut pas se fier est pire que pas de métrique
Pas de métrique, vous restez prudent. Un chiffre faux et confiant, on agit dessus. Quand quelque chose ne peut pas être calculé honnêtement, je le dis dans l'interface plutôt que de mettre zéro par défaut et de le laisser se fondre dans un total, et je fais la validation manuelle ingrate quand c'est ce qui rend les chiffres en aval défendables.
-
Tests
Les tests tournent contre le vrai moteur
Des mocks qui n'exécutent jamais la requête passent, que la requête soit juste ou fausse. Si la logique vit dans le SQL, le test parle à une base de données.
-
Livraison
La documentation fait partie de la livraison, et le style de votre code aussi
Décisions d'architecture consignées, runbooks, et des README qu'un nouvel ingénieur peut suivre. Je lis le code existant avant de proposer quoi que ce soit, et j'épouse ses conventions plutôt que d'importer les miennes.
Stack
| Langages | Python (principal), R, SQL, SAS (certifié), TypeScript |
| LLM et agents | LangChain, LangGraph, pydantic-ai, LiteLLM, MCP |
| Apprentissage profond | PyTorch, Transformers, fine-tuning (Whisper Large, NLLB 600M et 1,3B, Mistral-7B, SparkTTS sur base Qwen2), LoRA et PEFT, Unsloth, quantification GGUF et INT4 |
| Évaluation et observabilité | Langfuse, MLflow, Prometheus, Grafana, harnais d'évaluation sur mesure, NLTK, spaCy |
| ML et statistique | scikit-learn, TensorFlow, Spark, inférence causale (DML, Causal Forest, scores de propension), quantification de l'incertitude (prédiction conforme, CQR, MAPIE, intervalles bootstrap), seuils sensibles au coût, séries temporelles (VAR, VECM, cointégration, SARIMAX), statistique bayésienne, géostatistique |
| Serving et infrastructure | FastAPI, Docker, Kubernetes, AWS (EKS, SageMaker, Lambda, S3), Azure (Container Apps, AI Search, Databricks), Terraform, RunPod |
| Sur l'appareil | whisper.rn, cactus-react-native, Qwen3 0,6B et Gemma 270M, quantification GGUF et INT4, Expo EAS, mesures sur Android de milieu de gamme |
| Données | PostgreSQL, MySQL, pgvector, LanceDB, Azure AI Search, Redis, Airflow, SQLite |
| Frontend | Next.js, React, React Native, Gradio, Streamlit |
Publications
Je publie un article technique environ toutes les deux semaines sur blog.salifsawadogo.com, en français, depuis 2024. C'est ce qui se rapproche le plus d'un échantillon de code que je puisse offrir pour du travail sous NDA, parce que ce sont les mêmes patterns que ceux que je livre.
Sur l'évaluation
- Évaluer un système RAG, partie 1 : le framework technique
- Partie 2 : le pilotage en production
- Évaluer les capacités des LLMs : les benchmarks
- Conformité et qualité : guider un agent vers des standards métier exigeants
Sur le RAG et les agents
- Le RAG ne se limite pas aux embeddings : l'importance de la recherche hybride
- Au-delà de la recherche : le RAG agentique et le pattern Navigator
- Concevoir un système agentique : de la théorie à la réalité terrain
- Du PDF au Markdown : choisir le bon pipeline d'ingestion pour son RAG
Sur l'architecture et la livraison
- Trop de SDK pour les LLMs : passer à une LLMFactory (ou des adapters) avec LiteLLM
- Finis les timeouts : comment j'intègre mes moteurs IA via webhooks
- Automatiser la génération de documents complexes : mon approche agentique
- Déployer un LLM sur mobile : guide pas à pas pour ingénieurs ML
Code et pièces
| WO2026032835A1 | Brevet Safran, surveillance de l'usure des freins d'avion. Inventeur nommé. Publié en février 2026 |
| Credly | SAS Certified Specialist, Base Programming Using SAS 9.4 |
| Rapport-universitaire | Le mémoire Coca-Cola complet de 161 pages et les diapositives d'économétrie de l'inflation |
| Super-Matching-Algorithm | Le moteur d'appariement d'entités du projet Coca-Cola |
| Mini_Kaggle_AXA | Solution première place, concours AXA Direct, en R |
| Machine_Learning_Journey | Clustering, LDA, CART, bagging, boosting, forêt aléatoire, en R avec R Markdown |
| DS-backbone | Environnement data science en une commande : MLflow, MinIO, PostgreSQL, JupyterLab, Nginx |
| Retail-360 | RFM, valeur vie client, attrition par analyse de survie, prévision SARIMAX et gradient boosting |
| Deployment_Data_Science_Project | Le même modèle déployé de cinq façons : local, serveur, API, cloud, Docker |
| huggingface.co/burkimbia | Une trentaine de modèles publiés, classements et benchmarks publics |
| claude-skills | Compétences d'agent réutilisables pour les schémas d'architecture et la documentation technique |
| RH-360 · Recommandation-Engine | Feature engineering RH, et segmentation de visiteurs pour la personnalisation e-commerce |
| audio_processing_playground · Frame2Text4LLM | Expérimentations parole et multimodal alimentant le pipeline BurkimbIA |
Parcours
S'il y a une chose que je fais sur chaque projet, c'est demander si un chiffre est réel avant que quiconque agisse dessus. Ça ressemble à vérifier 400 appariements à la main avant de faire confiance à un pipeline de résolution d'entités. Ça ressemble à faire de l'inférence causale sur une amélioration de recherche pour savoir quelle part du gain venait de la saisonnalité. Ça ressemble à refuser d'afficher une marge calculée sur la moitié des données, et à attraper une formule de stock qui divisait des caisses par une devise et renvoyait 0,16 jour là où la réponse était 45,5. En LLM c'est le même réflexe habillé autrement : jeux de données de référence, notation de la fidélité, et une porte de livraison.
Où j'ai travaillé
| Depuis janv. 2026 | Ingénieur IA et ML senior, consultant. Banque africaine de développement, Abidjan |
| Mai à juil. 2026 | Enseignant vacataire, master ingénierie et IA appliquée. Institut 2iE, Ouagadougou |
| Depuis mars 2025 | Cofondateur et CTO. BurkimbIA, depuis Paris |
| Nov. 2022 à déc. 2025 | Data scientist, MLOps et IA générative. Safran, Data Center of Excellence, Paris |
| Avr. à nov. 2022 | Data scientist. Direct Assurance, groupe AXA, Paris |
| Janv. à avr. 2022 | Ingénieur machine learning. CDandLP, Paris |
| Févr. à sept. 2021 | Data scientist spatial. Equatorial Coca-Cola Bottling Company, Casablanca |
M2 MASERATI, Data Science, Université Paris-Est Créteil, 2022. Bourse d'excellence Eiffel.
Ingénieur d'État, modélisation statistique, INSEA Rabat, 2021.
Cycle préparatoire, mathématiques et physique, Fès, 2018.
SAS Certified Specialist: Base Programming Using SAS 9.4
Enseignement et mentorat
J'enseigne le MLOps et le cloud à 2iE à Ouagadougou, dans le master IIAA (informatique, intelligence artificielle et applications). Chez DataScientest, j'ai encadré des ingénieurs Safran passant sur des postes data science et IA.
Enseigner est ce qui me permet d'expliquer un échec de recherche documentaire à un product owner sans me cacher derrière le vocabulaire.
Je suis bénévole chez Kodiko, qui met en relation des personnes réfugiées avec des professionnels pour les aider à revenir sur le marché du travail en France.
Langues : français (natif), anglais (professionnel, B2), mooré (natif).
Je travaille entre l'Europe et l'Afrique de l'Ouest et je suis à l'aise dans les deux. Pour un client qui construit pour les marchés africains, ce n'est pas une note de diversité, c'est de la connaissance métier : je sais pourquoi l'offline-first n'est pas optionnel, pourquoi une interface uniquement en français exclut des utilisateurs, et pourquoi le téléphone sur le terrain est un Tecno et pas un iPhone.