Ce que vous pouvez vérifier vous-même
Chaque affirmation soulignée sur cette page renvoie à la pièce qui la prouve.
Prestations
Cinq pratiques. Les trois premières sont le point de départ de la plupart des missions.
Mission type : 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.
Mission type : 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.
Mission type : 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.
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.
Mission type : 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.
Mission type : 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.
Travaux sélectionnés
L'ingénierie de plateforme à l'échelle d'une organisation, puis l'analytique commerciale, puis la livraison de produit là où l'environnement résiste, puis les fondations statistiques qui portent tout le reste.
Plateforme et IA en production
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 la phase de stationnement après atterrissage, mesurer le temps de refroidissement du frein, et en déduire l'usure.
La difficulté, c'est que le temps de refroidissement n'est pas un signal propre. La température ambiante, le vent et les conditions du tarmac ce jour-là le déplacent tous, si bien que le même frein dans le même état ne se présente pas pareil à Dubaï et à Oslo. La méthode modélise donc l'environnement explicitement, par une régression XGBoost qui prédit comment ces conditions décalent le temps de refroidissement attendu, et lit l'usure dans ce que l'environnement n'explique pas. Le résultat : une surveillance par avion et par frein sur toute une flotte, en continu, sans que personne aille regarder.
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. Contrairement à tout le reste de la partie Safran, celui-ci se lit intégralement : un brevet publié est une divulgation publique par définition, donc la méthode, le choix de modélisation et le raisonnement sont tous dans le document.
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.
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 up donne à une équipe la boucle complète : JupyterLab pour l'exploration, MLflow pour le suivi d'expériences et le registre de modèles, PostgreSQL comme base de MLflow, MinIO comme stockage d'artefacts et de jeux de données compatible S3, et Nginx qui route le tout derrière des noms d'hôte propres au lieu d'une dispersion de ports localhost.
L'intérêt est dans ce que ça supprime. La plupart des équipes assemblent ces cinq briques à la main, différemment sur chaque poste, puis passent le premier mois d'un projet à comprendre pourquoi une expérience qui tournait en local ne se reproduit pas. La configuration passe par des variables d'environnement, le stockage est compatible S3 dès le premier jour, si bien que passer de ce bac à sable à un vrai stockage cloud est un changement d'URL et pas une réécriture.
Si vous cherchez quelqu'un pour monter votre environnement data ou ML, ce dépôt est le livrable, et vous pouvez l'inspecter avant qu'on se parle.
Analytique commerciale
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.
ECCBC connaissait ses propres points de vente mais ne savait presque rien des quartiers où ils se trouvaient. Chaque point de vente CHR du circuit recevait le même assortiment, parce qu'il n'existait aucune base pour leur en donner de différents. Zones pilotes : Marrakech et Tizi Ouzou. La chaîne se déroule ainsi : enrichir la base clients avec des données spatiales externes, segmenter dessus, modéliser la demande par produit dans chaque segment, puis utiliser ces modèles pour décider ce qui va dans chaque frigo.
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.
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.
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.
C'est organisé comme un pipeline (entrées, intermédiaires, puis un dossier par analyse) plutôt qu'en tas de notebooks, ce qui fait la différence entre une analyse que quelqu'un peut relancer le trimestre suivant et une analyse qu'il ne peut pas relancer.
Produits sous contrainte
Une association à Ouagadougou qui construit des modèles de parole et de traduction pour une langue sans presque aucun corpus numérique.
Tout est public : huggingface.co/burkimbia et github.com/BurkimbIA
Plateforme multi-tenant reliant patients, soignants et institutions, conçue pour des régions où voir un spécialiste veut dire voyager et où la connectivité n'est pas garantie.
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 peut-être pas, 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.rn pour la parole, un petit modèle de langage via cactus-react-native pour le brouillon de note clinique, mesurés sur les téléphones que les soignants portent réellement (Tecno, Infinix, Samsung série A) plutôt que sur un flagship : Whisper tiny contre small, Gemma 270M contre Qwen3 0,6B, sur la latence et la qualité. Les modèles se téléchargent une fois, ensuite plus rien ne quitte l'appareil.
Ce travail est devenu un guide pas à pas pour déployer un LLM sur mobile, écrit pour des ingénieurs backend et data qui n'ont jamais ouvert Android Studio.
Boutiques et grossistes à Ouagadougou. Le produit n'est pas une caisse enregistreuse, c'est une aide à la décision : marge, tendance, ce qui rapporte vraiment, ce qui dort sur l'étagère. L'analytique est le produit.
Offline-first par nécessité : le SQLite local est la source de vérité, un moteur de synchronisation surveille la connectivité et pousse les ventes en file par lots au retour du réseau. Le multi-tenant est appliqué par la row-level security de Postgres plutôt que par du code applicatif, pour qu'un bug de requête ne puisse pas faire fuiter les ventes d'un commerçant vers un autre.
La couche analytique est là où se trouve le vrai travail, et trois règles la séparent d'un tableau de bord :
Pendant la construction, j'ai audité les formules de stock d'un prototype voisin et trouvé que le calcul du délai d'écoulement des stocks 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 en avait déjà produit une. Sur un cas réel (350 F de prix d'achat, 26 unités de stock moyen, 8 vendues en 14 jours), le prototype renvoyait 0,16 jour contre 45,5 en vrai. L'erreur croissait avec le prix d'achat, ce n'était donc même pas un décalage constant. Le tableau de bord affichait depuis le début des chiffres plausibles et vides de sens.
Les tests sont délibérément démodés ici : 164 tests mobiles tournent contre un vrai moteur SQLite, et 9 tests backend contre un vrai Postgres. J'ai refusé jest-expo parce que ses mocks automatiques n'exécutent aucun SQL, donc la suite passerait sans rien prouver.
Fondations
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.
Méthode
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.
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.
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.
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.
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.
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.
Outillage
| Langages | Python (principal), R, SQL, SAS (certifié), TypeScript |
| LLM et agents | LangChain, LangGraph, pydantic-ai, LiteLLM, MCP, Transformers, Unsloth, PEFT |
| Évaluation et observabilité | Langfuse, MLflow, Prometheus, Grafana, harnais d'évaluation sur mesure, NLTK, spaCy |
| ML et statistique | PyTorch, 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, 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 |
Preuves publiques
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
Sur le RAG et les agents
Sur l'architecture et la livraison
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 | Onze modèles publiés, trois classements 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.
M2 MASERATI, Data Science, Université Paris-Est Créteil, 2022. Bourse d'excellence Eiffel.
Ingénieur d'État, modélisation statistique, INSEA Rabat, 2021. Mémoire chez Equatorial Coca-Cola Bottling Company.
Cycle préparatoire, mathématiques et physique, Fès, 2018. Bourse CIOSPB.
SAS Certified Specialist: Base Programming Using SAS 9.4
Du Burkina Faso au Maroc puis en France, boursier à chaque étape. Je le mentionne parce que c'est aussi pourquoi je travaille comme je travaille : je n'ai jamais eu le luxe de supposer que l'infrastructure serait là.
J'enseigne à 2iE à Ouagadougou, dans le master data science : Cloud, IA et Sécurité, plus Big Data et Spark, analyse de sentiment, et Python pour la data science. Je mentore aussi des personnes en reconversion vers la data science chez DataScientest, et j'ai animé le même programme de mentorat en interne chez Safran pour des collègues passant sur des postes data.
Ce n'est pas une ligne que je mets ici pour paraître complet. Enseigner un sujet quatre fois à des gens qui ne l'ont jamais vu, c'est ce qui force à le comprendre vraiment, et c'est pourquoi je peux expliquer un échec de recherche documentaire à un product owner sans me cacher derrière le vocabulaire. Si vous cherchez quelqu'un qui laissera votre équipe capable de maintenir ce qui a été construit, c'est la même compétence.
J'enseigne aussi latéralement, à des pairs plutôt qu'à des étudiants. J'ai animé une session sur la prédiction conforme et la quantification de l'incertitude pour des data scientists chez DataScientest, et j'ai passé une bonne partie du travail on-device de DOCFIRA à expliquer le déploiement mobile à des collègues qui n'avaient jamais ouvert Android Studio.
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 (niveau natif, C2), 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.
Travailler ensemble
Je travaille comme consultant indépendant, à distance, en français ou en anglais, et j'ai l'habitude des équipes réparties entre l'Europe et l'Afrique. Je mène déjà une mission client avec une institution multilatérale, donc je sais ce qu'il faut pour tenir un engagement de livraison en parallèle d'un travail existant plutôt que de promettre une disponibilité que je n'ai pas.
Un environnement data science ou MLOps opérationnel pour votre équipe, avec suivi d'expériences, stockage d'artefacts et espace de notebooks, reproductible sur chaque poste. DS-backbone est en gros ce que vous obtenez, adapté à votre cloud.
J'examine votre système LLM et je vous rends une évaluation écrite avec des constats priorisés et un plan de remédiation.
Harnais d'évaluation, pipeline RAG, système d'agents, ou la couche MLOps autour d'un modèle existant.
Revue d'architecture, revue de code, et un deuxième regard sur les mises en production.
Une description courte de votre système et de l'endroit où ça bloque suffit pour démarrer. Je vous dirai si je suis la bonne personne avant qu'on parle de périmètre.