Salif Sawadogo

Abidjan and Paris

Salif Sawadogo

AI engineer and patent inventor. I take LLM systems from prototype to production, and prove it.

Most GenAI projects stall at the demo. The gap is never the model. It is evaluation, observability, and the release process that lets you ship a change without breaking what already worked. That gap is what I close.

Tell me what is not working See the work

contact@salifsawadogo.com CV (PDF) LinkedIn Blog GitHub Hugging Face

Now
Independent consultant since January 2026. Engaged by the African Development Bank, building the AI platform behind its internal assistants.
Before that
Five years in production AI: three at Safran's Data Center of Excellence, and earlier at AXA and Coca-Cola Bottling.
Also
Co-founder of BurkimbIA, and I teach MLOps and cloud on a master's in computer science and AI.
Trained in statistics
State engineer in statistical modelling (INSEA Rabat), master's in data science (Paris-Est Créteil, Eiffel Excellence Scholarship). Knowing whether a 3-point score improvement is signal or noise is the whole job in evaluation work.

What I do

Five practices. The first three are where most engagements start.

Evaluation and observabilityThe measurement layer that tells you whether your system is good, before your users do.A scored eval suite, a dashboard, a release gate · 2 to 4 weeks

Scoring a RAG system means scoring two things, not one. Retrieval and generation fail for different reasons and the fix is never the same, so they are graded apart: answer correctness and similarity, answer relevancy and faithfulness on the generation side, contextual precision and contextual recall on the retrieval side. Faithfulness is the hallucination rate under a politer name.

Not everything belongs on a ten-point scale. Some facts are either in the answer or they are not, so required key facts and must-contain assertions run as deterministic checks beside the judge.

Where a judge is the right instrument, it gets treated like one. Pairwise comparison, three-vote majority, presentation order randomised so position bias cannot ride along, and rubrics calibrated separately for faithfulness, helpfulness and safety.

The dataset is the part teams want to skip and the part that decides everything else. Synthetic cases catch technical instability and hallucination at scale, but they cannot carry the nuance or the policy references a domain expert has in their head. So the golden set gets built with the business. Each case is three things: the question phrased the way a user would really ask it, the answer an expert would write, and the document that proves it. Then the negative tests, which are the questions the system has to refuse.

Around that sits the operational half. Service level indicators and objectives (SLI, SLO), with release gates that block a promotion when the numbers miss. Langfuse traces per request, token-level streaming, tool-call visualisation for multi-agent flows. Drift detection on Kolmogorov-Smirnov and Population Stability Index, alerting configurable. And where exact match and F1 break down on multilingual output, BLEU, METEOR, TER and chrF instead.

Then the statistics most evaluation work leaves out: power analysis before the test rather than after it, bootstrap confidence intervals, McNemar for paired binary outcomes, and alpha-spending so nobody peeks their way to a false positive.

you have a RAG or agent system in production and no idea if last week's prompt change made it better or worse. I give you a scored eval suite, a dashboard, and a release gate. Two to four weeks.

RAG and agentic systemsRetrieval that returns the right thing, and agents that stop rather than loop.Retrieval and generation audited separately · the failing layer fixed · the eval suite that proves it
  • Hybrid retrieval: BM25 plus dense embeddings, with reranking. Vector stores including Azure AI Search, LanceDB and pgvector.
  • Document ingestion at scale: crawling, Docling parsing, chunking strategies, metadata and breadcrumb-based section retrieval.
  • Agent orchestration with LangGraph, pydantic-ai, LangChain, and MCP tool integration.
  • Agent harnesses and tool calling. The framework is the easy part. The harness is what decides whether an agent is usable in production: typed tool contracts so a malformed call fails at the boundary instead of three steps later, tool surfaces scoped per use case rather than handing every agent everything, explicit termination and step budgets so a loop cannot run up a bill, retry and fallback behaviour when a tool errors or returns nothing, and per-turn logging that makes a bad trajectory readable after the fact. Model Context Protocol where tools need to be shared across systems.
  • Multi-agent routing: structural locks for deterministic paths, LLM routers for semantic ones, with fallbacks when a branch returns too little context.
  • LLM gateway patterns: one routing layer so applications never hardcode a provider SDK, which makes model swaps and cost control a configuration change.

your RAG answers are plausible but wrong, or your agent loops. I audit retrieval quality separately from generation quality, fix the layer that is actually failing, and leave you the eval suite that proves it.

MLOps and AI under constraintRegulated, offline, sovereign, or low-connectivity, where the standard playbook does not apply.The architecture and the compliance story designed together, not retrofitted
  • CI/CD with automated validation gates: code quality, model validation against golden datasets, infrastructure compatibility, dependency scanning.
  • MLflow Model Registry with staging to production promotion, approval gates, lineage tracking, and rollback to any prior version.
  • Blue-green and canary deployment, shadow traffic, automatic rollback on SLO violation.
  • Kubernetes (AWS EKS), Docker, Terraform, Azure Container Apps, serverless GPU inference.
  • Offline-first architecture: IndexedDB and SQLite cache-first reads, mutation queues, auto-replay on reconnect, AES-GCM encryption at rest.
  • On-device inference: quantized speech and language models running entirely on mid-range Android hardware, benchmarked on the phones users actually own rather than a flagship. Zero network, zero per-request cost, nothing leaving the device.
  • Privacy by design: GDPR-compliant pipelines, PHI encryption, multi-tenant isolation enforced at the database layer, consent modelling with scope and expiry.

you need AI in an environment with real constraints (health data, air-gapped, intermittent connectivity, a regulator). I design the architecture and the compliance story together, because retrofitting the second onto the first never works.

Uncertainty quantification and machine learningA point prediction with no error bar is an opinion.A calibrated uncertainty layer · a decision rule tuned to your real cost of error

Where a model output drives a decision that costs something to get wrong, I make the uncertainty explicit and calibrated.

Conformal prediction is the main tool. It wraps a model you have already trained and returns intervals or prediction sets with a finite-sample coverage guarantee, distribution-free and model-agnostic. For regression that means locally adaptive variants and conformalized quantile regression, so the interval widens where the model is genuinely unsure instead of staying a constant band. For classification it means prediction sets rather than a single forced label.

Producing intervals is the easy half. Judging them is the other: marginal coverage against the target, average interval width, adaptability across regimes, and the Winkler score when you need one number that penalizes both an interval too wide to be useful and one too narrow to be honest.

It also matters to know where the guarantee stops. Coverage is marginal, not conditional, so 90 percent overall can hide 60 percent on the subgroup you actually care about, which is why I check coverage per segment. The framework assumes exchangeability too, so it degrades under distribution shift and needs weighting or an adaptive scheme once the data drifts.

Where classical methods fit better they are the right answer: bootstrap confidence intervals, constrained estimation to tighten standard errors when the sign of an effect is known a priori, and power analysis before an experiment rather than after it.

None of it pays off without two things downstream. Calibration, so that a predicted probability of 0.8 means the event happens 80 percent of the time. And a cost-sensitive decision threshold, tuned against the actual business metric and the asymmetric cost of each error, rather than defaulting to 0.5 and accepting whatever the confusion matrix gives you.

your model is accurate enough on average and still makes expensive mistakes, because nothing downstream knows which predictions to distrust. I add the uncertainty layer and tune the decision rule against your actual cost of error.

Provenance The classical side is delivered work, in production for clients: confidence intervals, causal effect estimation, constrained models built specifically to narrow uncertainty bands. Conformal methods I have taught rather than shipped. I ran a session on them for fellow data scientists at DataScientest, which is a different kind of proof than a production system but not a weaker one: you cannot teach coverage guarantees to a room of practitioners without being able to answer why the interval breaks on their subgroup.
Revenue growth and retail analyticsThe commercial analytics stack for consumer goods and retail. Where I started.The analytical layer, rerunnable next quarter rather than a one-off deck

Geomarketing comes first on most of these: catchment area modelling, spatial indices, point-of-interest and footfall enrichment, geodesic distance over proper projections. It answers which outlets are comparable, and why.

That usually requires entity resolution, because internal customer master data rarely shares a key with anything external. Fuzzy matching against outside sources, with human-labelled ground truth rather than an unvalidated similarity threshold.

On the enriched base: customer segmentation by K-means and hierarchical clustering over behavioural and spatial features, with the segments profiled in the language the commercial team already uses, and a classifier to place new accounts into existing segments.

Then demand. Log-log fixed-effects specifications yield price and cross-price elasticities directly, with cannibalization and halo effects modelled explicitly through a substitution matrix. New products have no history, so they are estimated by analog or like-item modelling over attribute-space similarity. Forecasting is SARIMAX where the seasonal structure is the signal and gradient boosting where it is not.

The output feeds assortment and planogram optimization: greedy or constrained range construction that accounts for substitution as the shelf fills, against a volume or margin objective. SKU rationalization runs on the same machinery.

Alongside that sits the customer side, RFM, customer lifetime value and churn, including survival analysis when the business needs to know when rather than only whether.

you have transaction data and a commercial question (what should we stock, what will it sell, which customers are worth defending) and no analytical layer between the two. I build it, and I make it rerunnable next quarter rather than a one-off deck.

Twelve case studies, by what they prove

Platform engineering at organizational scale, commercial analytics, product shipped where the environment fights back, and the statistics underneath.

1 / 12

  1. Platform and production AI

    African Development Bank, AI Innovation LabCurrent engagement. Shared AI infrastructure plus six domain assistants. Every assistant now ships with an evaluation dataset built with the business and a published score.pydantic-ai · LangGraph · LiteLLM · Langfuse · MLflow · Azure Container Apps · Azure AI Search · MySQL · Docling · FastAPI · Angular

    A LiteLLM gateway routes every LLM call in the organization, with Langfuse for traces and MLflow for experiment tracking. Model pricing is configuration rather than code, so cost control and a provider swap do not need a deploy.

    The part I am proudest of is that evaluation became a shared service instead of something each bot team improvised. One FastAPI service scores every assistant on answer correctness, relevancy, faithfulness and contextual precision, alongside deterministic key-fact checks. Judge calls run through the same gateway, jobs run async, and results land in MLflow.

    Every bot now ships the same pair of deliverables: an evaluation dataset built with the business, then a published campaign score. The six assistants are isolated so one team's release cannot break another's, on one shared core for parsing, retrieval, history and agent plumbing.

  2. Products under constraint

    BurkimbIACo-founder. Around thirty open-source models for Mooré, a language with almost no digital corpus.PyTorch · Transformers · PEFT · Unsloth · RunPod · Hugging Face · Fly.io · S3 · WandB · FastAPI · Gradio

    A community building open speech and language models for a language with almost no digital corpus.

    Translation is fine-tuned NLLB and Mistral-7B. Speech recognition is Whisper. Speech synthesis covers SparkTTS, XTTSv2, VITS and ParlerTTS. On top sit instruction-tuned language models trained on seven structured tasks in Mooré, and a conversational assistant built on a general-purpose backbone adapted to the language, with a replay mix so it gains Mooré without losing the reasoning it already has.

    Measurement decides where the effort goes. Model size was worth nearly four times what decoder tuning was, and only in one translation direction. An averaged score would have hidden that.

    The interesting part is the synthetic data flywheel. Real speech trains the TTS model, the TTS model generates synthetic audio that augments the ASR corpus, the improved ASR transcribes more real audio, and that yields more text pairs for the next TTS round. It is how you get past a 1,000-pair starting corpus without funding a large recording campaign.

    Everything is public: huggingface.co/burkimbia and github.com/BurkimbIA

  3. Platform and production AI

    Safran, Data Center of ExcellenceNovember 2022 to December 2025. A patented virtual sensor for aircraft brake wear, and generative AI in production.AWS EKS · Kubernetes · MLflow · Langfuse · LangGraph · XGBoost · Spark · CI/CD

    A virtual sensor for aircraft brake wear, and a patent

    Checking how worn an aircraft brake heat sink is normally means sending someone to inspect it on the ground. We replaced the inspection with an estimate: read the temperature sensors during the parking phase after landing, measure how long the brake takes to cool, and infer wear from that.

    Filed by Safran with three named inventors, including me. French priority August 2024, PCT filing July 2025, published as WO2026032835A1 in February 2026. A published patent is a public disclosure by definition, so the method and the reasoning are in the document.

    Generative AI in production

    A multi-agent chatbot on an internal LLM-as-a-service layer, with tool use and MCP. An evaluation framework with enforced service level objectives on factual accuracy, toxicity, PII exposure, latency and availability, wired to release gates that blocked a promotion whenever a target was missed.

  4. Platform and production AI

    AI-assisted consultant screeningDocument intelligence for procurement and recruitment, African Development Bank. Reads a terms-of-reference document, reads a stack of CVs, produces defensible scores and a ranked shortlist.Azure OpenAI · Azure AI Search · Azure Translator · MySQL · SharePoint · webhooks · SSE
    • Split into an assessment service (business logic, consultations, criteria, scores, exports) and an intelligence service (extraction, analysis, scoring), communicating by webhook so a long LLM job never blocks a request.
    • Language normalization before scoring: text is extracted, language detected, then translated to a single working language. Without this step a French CV and an English CV are scored on different footings, which is the kind of bias nobody notices until an unsuccessful candidate asks why.
    • Retrieval-backed scoring against the terms of reference, not freeform prompting, so each score traces to specific evidence in the document.
    • Server-sent events for progress, Excel export, ranked shortlist output.

    This one generalizes well. Any workflow of the form "score many documents against one rubric, and be able to justify each score" is the same system.

  5. Platform and production AI

    DS-backboneA data science environment your team can stand up in one command. Public repository.Docker Compose · MLflow · PostgreSQL · MinIO · JupyterLab · Nginx

    The platform work I do at Safran and the African Development Bank sits behind NDAs. This is the same architecture, open, so you can read it before hiring me: github.com/sawallesalfo/DS-backbone

    One docker compose up gives a team the full loop: JupyterLab for exploration, MLflow for experiment tracking and the model registry, PostgreSQL as its backing store, MinIO for S3-compatible artifacts, and Nginx routing it all behind clean hostnames.

    The point is what it removes. Most teams assemble these five pieces by hand, differently on every laptop, then spend the first month of a project debugging why an experiment that ran locally will not reproduce. Configuration is environment variables and storage is S3-compatible from day one, so moving to real cloud storage is a URL change rather than a rewrite.

  6. Commercial analytics

    Equatorial Coca-Cola Bottling Company, MoroccoGeospatial segmentation and demand modelling. Worst-case test MAPE of 14 percent across every model. Thesis and algorithm both public.Python · Azure Databricks · Spark · scikit-learn · statsmodels · geospatial · web scraping

    The most complete piece of work I can show end to end, because the report is public and so is the core algorithm.

    Entity matching came first, and it was the hardest part. Internal records shared no key with any external source, so I built a composite similarity score over seven string metrics, weighted 75 percent on name, 15 on address and 10 on geodesic distance, and matched a 5,457-entry TripAdvisor corpus against the internal base. Then I validated it the honest way: a stratified 400-record sample checked by hand.

    On top of the matched base went the spatial enrichment, on three external sources: TripAdvisor for the corpus above, OpenStreetMap for points of interest, Flickr for footfall signals.

    The constrained demand models went into use in the data science department.

  7. Commercial analytics

    AXA DirectInsurance risk modelling under regulatory constraint. Processing time fell 40 percent, and a first-place competition win.Azure · Databricks · Python · R · scikit-learn · Spark · Power BI · CI/CD

    Insurance pricing is one of the few places where a model has to satisfy a regulator as well as a business. I migrated the pricing stack from traditional GLMs to machine learning without losing that: separate frequency and severity risk models meeting financial regulatory requirements, a big data migration to Azure with CI/CD integration, GDPR-compliant handling throughout, and continuous performance monitoring after release. Processing time fell 40 percent.

    The interesting constraint is explainability. An actuary can defend a GLM coefficient to a supervisor. Replacing it with a gradient-boosted model means you now owe an account of why the price moved, which shapes what you are allowed to build.

    Before joining, I won first place in AXA Direct's internal data science competition. Code is public, written in R.

  8. Commercial analytics

    CDandLPSemantic search for a vinyl marketplace. +29 percent user satisfaction, verified with causal inference.Python · BERT · Causal Forest · Double ML · propensity scores · NLP

    Replaced keyword matching with BERT-based semantic embeddings, on top of NLP-based deduplication and normalization of a messy product catalogue.

    Then measured it properly. Not a simultaneous A/B split: a gradual rollout over four weeks, which means randomization was imperfect and the naive before-and-after number could not be trusted. So the lift was estimated with causal inference. Causal Forest for heterogeneous treatment effects across user segments, Double Machine Learning to control for confounders, propensity score matching to correct the selection bias the rollout design introduced.

    +29 percent user satisfaction, significant at p < 0.01, and defensible because the seasonal and behavioural drift was modelled out rather than assumed away. The number I would have reported without that layer was larger and partly fictional.

  9. Commercial analytics

    Retail-360The full customer analytics stack, end to end. Public repository.Python · RFM · survival analysis · SARIMAX · XGBoost · LightGBM

    Built around seven questions a retailer actually asks: who are my best customers, who is about to leave, who could be worth more than they are, who is already gone, where retention effort pays off, who is loyal, and who will respond to this campaign. Public repository.

    • RFM segmentation as the foundation, because recency, frequency and monetary value are interpretable by the commercial team, and a segmentation nobody understands never gets used.
    • Customer lifetime value modelling on top of it.
    • Churn treated as survival analysis rather than a binary classifier, so the output is when a customer is likely to leave, not just whether.
    • Sales forecasting daily and weekly, SARIMAX for the seasonal structure, XGBoost and LightGBM where the relationships are not linear.
  10. Products under constraint

    DOCFIRADigital health for chronic disease in Africa. Offline-first, multi-tenant, with the clinical assistant running entirely on the phone.Next.js 15 · Hono · Drizzle · PostgreSQL · Dexie.js · Auth0 · Terraform · LangGraph · whisper.rn

    Multi-tenant platform connecting patients, clinicians and institutions, built for regions where specialist care means travelling and connectivity is not guaranteed. Offline-first by design: cache-first reads, queued mutations, automatic replay on reconnect, AES-GCM encryption for health data at rest in the browser, and two-level GDPR consent: storage, then per-clinician access with explicit scope and expiry.

    Running the whole clinical assistant on the phone. Cloud transcription is the easy answer and the wrong one here: it needs a network the clinic may not have, and it sends patient speech to a third party. So I built the offline path and measured it. Whisper via whisper.rn for speech, a small language model via cactus-react-native for the note draft, benchmarked on the phones clinicians actually carry rather than a flagship: Whisper tiny against small, Gemma 270M against Qwen3 0.6B. Models download once, then nothing leaves the device.

    That work became a step-by-step guide to deploying an LLM on mobile.

  11. Products under constraint

    IMETRIXBusiness intelligence for merchants who have never had any. Caught a neighbouring prototype reporting 0.16 days of inventory where the answer was 45.5.React Native · Expo · TypeScript · expo-sqlite · Supabase RLS · Nuxt 3 · EAS Build

    Retail shops and wholesalers in Ouagadougou. The product is not a cash register, it is a decision assistant: margin, trend, what actually earns, and what is sitting dead on the shelf. Offline-first out of necessity, with local SQLite as the source of truth and multi-tenancy enforced by Postgres row-level security rather than application code.

    While building it I audited a neighbouring prototype's inventory formulas and found the days-inventory-outstanding calculation dividing a quantity by an amount in currency, using closing stock where its own comment specified average, and multiplying by the period after the division had already produced one. On a real case (350 F purchase price, 26 units average stock, 8 sold in 14 days) it returned 0.16 days against a true 45.5. The error scaled with purchase price, so it was not even a constant offset.

  12. Foundations

    Econometric analysis of inflation in Burkina FasoApplied research, EDESAT and INSEA, 2021. VAR, VECM, Johansen cointegration. Slides public.R · time series · cointegration · Granger causality · variance decomposition

    Monthly series from 2004. Stationarity testing (Augmented Dickey-Fuller), Johansen cointegration, VAR and VECM specification with information-criterion lag selection, Granger causality, impulse response functions, and forecast error variance decomposition at a 12-month horizon. Full residual diagnostics: Jarque-Bera p = 0.38, White p = 0.45, Portmanteau p = 0.91. Included a COVID-19 shock analysis on the price level. Slides public.

    I list this because time series and causal identification keep coming back. Forecasting, anomaly detection, and any question of the form "did our change cause this" are the same toolkit.

How I work

  • Metric

    The model is a subcomponent

    What gets optimized is a business metric computed on decisions and actions, not a score on a held-out set. A model that improves AUC while the decision threshold stays wrong has improved nothing. I start from the decision and the cost of getting it wrong, then work backwards to what the model needs to output, which is often an interval or an abstention rather than a number.

  • Measurement

    Evaluation before optimization

    I will not tune a system that has no scoreboard. The first deliverable on most engagements is the measurement, because without it every subsequent change is a guess.

  • Limits

    Honest about limits

    Most of my production experimentation has been canary deployments, shadow traffic and gradual rollout rather than full simultaneous randomized A/B tests. If you need the latter I can design it, but I will tell you where my hands-on experience ends and where I am reasoning from method.

  • Honest numbers

    A metric that cannot be trusted is worse than no metric

    No metric leaves you cautious. A confident wrong number gets acted on. When something cannot be computed honestly I say so in the interface rather than defaulting to zero and letting it average into a total, and I will do the unglamorous manual validation when that is what makes the downstream numbers defensible.

  • Tests

    Tests run against the real engine

    Mocks that never execute the query pass whether the query is right or wrong. If the logic lives in SQL, the test talks to a database.

  • Delivery

    Documentation is part of delivery, and so is your codebase's style

    Architecture decision records, runbooks, and README files a new engineer can follow. I read the existing code before proposing anything, and I match its conventions rather than importing mine.

Stack

LanguagesPython (primary), R, SQL, SAS (certified), TypeScript
LLM and agentsLangChain, LangGraph, pydantic-ai, LiteLLM, MCP
Deep learningPyTorch, Transformers, fine-tuning (Whisper Large, NLLB 600M and 1.3B, Mistral-7B, SparkTTS on a Qwen2 backbone), LoRA and PEFT, Unsloth, GGUF and INT4 quantization
Evaluation and observabilityLangfuse, MLflow, Prometheus, Grafana, custom eval harnesses, NLTK, spaCy
ML and statisticsscikit-learn, TensorFlow, Spark, causal inference (DML, Causal Forest, propensity scores), uncertainty quantification (conformal prediction, CQR, MAPIE, bootstrap intervals), cost-sensitive threshold tuning, time series (VAR, VECM, cointegration, SARIMAX), Bayesian statistics, geostatistics
Serving and infrastructureFastAPI, Docker, Kubernetes, AWS (EKS, SageMaker, Lambda, S3), Azure (Container Apps, AI Search, Databricks), Terraform, RunPod
On-devicewhisper.rn, cactus-react-native, Qwen3 0.6B and Gemma 270M, GGUF and INT4 quantization, Expo EAS, benchmarking on mid-range Android
DataPostgreSQL, MySQL, pgvector, LanceDB, Azure AI Search, Redis, Airflow, SQLite
FrontendNext.js, React, React Native, Gradio, Streamlit

Writing

I publish a technical article roughly every two weeks at blog.salifsawadogo.com, in French, since 2024. It is the closest thing to a code sample I can offer for NDA-bound work, because the patterns are the same ones I ship.

On evaluation

On RAG and agents

On architecture and delivery

Code and records

WO2026032835A1Safran patent, aircraft brake wear monitoring. Named inventor. Published February 2026
CredlySAS Certified Specialist, Base Programming Using SAS 9.4
Rapport-universitaireThe full 161-page Coca-Cola thesis and the inflation econometrics slides
Super-Matching-AlgorithmThe entity matching engine from the Coca-Cola project
Mini_Kaggle_AXAFirst-place solution, AXA Direct competition, in R
Machine_Learning_JourneyClustering, LDA, CART, bagging, boosting, random forest, in R with R Markdown
DS-backboneOne-command data science environment: MLflow, MinIO, PostgreSQL, JupyterLab, Nginx
Retail-360RFM, customer lifetime value, survival-analysis churn, SARIMAX and gradient-boosted forecasting
Deployment_Data_Science_ProjectThe same model deployed five ways: local, server, API, cloud, Docker
huggingface.co/burkimbiaAround thirty published models, public leaderboards and benchmarks
claude-skillsReusable agent skills for architecture diagrams and technical documentation
RH-360 · Recommandation-EngineHR feature engineering, and visitor segmentation for e-commerce personalization
audio_processing_playground · Frame2Text4LLMSpeech and multimodal experiments feeding the BurkimbIA pipeline
Withheld, client internal Production figures stay off this page: Safran's service level objectives on latency and availability, and the published campaign scores at the African Development Bank. Measured, reviewed, and not mine to publish.

Background

If there is one thing I do across every project, it is asking whether a number is real before anyone acts on it. That looks like hand-verifying 400 matched records before trusting an entity resolution pipeline. It looks like running causal inference on a search improvement to find out how much of the lift was seasonality. It looks like refusing to display a margin computed from half the data, and catching an inventory formula that divided crates by currency and returned 0.16 days where the answer was 45.5. In LLM work it is the same instinct wearing different clothes: golden datasets, faithfulness scoring, and a release gate.

Where I have worked

Since Jan 2026Senior AI and ML engineer, consultant. African Development Bank, Abidjan
May to Jul 2026Adjunct lecturer, MSc in engineering and applied AI. Institut 2iE, Ouagadougou
Since Mar 2025Co-founder and CTO. BurkimbIA, from Paris
Nov 2022 to Dec 2025Data scientist, MLOps and generative AI. Safran Data Center of Excellence, Paris
Apr to Nov 2022Data scientist. Direct Assurance, AXA Group, Paris
Jan to Apr 2022Machine learning engineer. CDandLP, Paris
Feb to Sep 2021Spatial data scientist. Equatorial Coca-Cola Bottling Company, Casablanca

M2 MASERATI, Data Science, Université Paris-Est Créteil, 2022. Eiffel Excellence Scholarship.
State Engineer, Statistical Modelling, INSEA Rabat, 2021.
Preparatory cycle, Mathematics and Physics, Fès, 2018.
SAS Certified Specialist: Base Programming Using SAS 9.4

Teaching and mentoring

I teach MLOps and cloud at 2iE in Ouagadougou, on the IIAA master's in computer science, AI and applications. At DataScientest I mentored Safran engineers moving into data science and AI roles.

Teaching is why I can explain a retrieval failure to a product owner without hiding behind vocabulary.

I volunteer with Kodiko, which pairs refugees with professionals to help them re-enter the workforce in France.

Languages: French (native), English (professional, B2), Mooré (native).

I work across Europe and West Africa and I am comfortable in both. For a client building for African markets, that is not a diversity note, it is domain knowledge: I know why offline-first is not optional, why a French-only interface excludes users, and why the phone in the field is a Tecno and not an iPhone.

Download the CV