Senior Data Engineer · Machine Learning · RAG · LLM · MLOps · Bordeaux, France
Machine learning engineer for eight years, all of them in road traffic and mobility. An exchange year at UC Berkeley pulled me into data analysis, and a research internship at Lawrence Berkeley National Lab (US Department of Energy) confirmed it. I then spent four years at IFPEN as an ML research engineer on French and European programs: traffic flow and emissions models for SAM, the national autonomous-vehicle program, and a transport-mode classifier serving ~20,000 users of the GECO Air app.
Today, at a traffic analytics company owned by the Vinci Group, I build the neural networks that turn partial Floating Car Data into all-vehicle traffic flow, calibrated against road sensors and deployed across 23 territories. I own that chain end to end, raw ingestion through model serving, and as the in-house AI referent I help the team get real work out of AI.
The last two years added a second craft on top of the first: RAG, agent orchestration, MCP, LLMOps and evals, learned by shipping the repositories below and holding them to the standard of my traffic models. My ambition is simple: bring the statistical rigor of production ML to LLM systems. Every headline number here comes with a reproducible harness and a confidence interval; if I quote a number, I measured it.
These three projects run as one loop. The Multi-Agent Orchestrator executes my daily LLM workflows and records every decision as typed trace spans. The Eval Dataset Generator mines those production traces into labeled, provenance-stamped eval datasets, gated on measured human agreement (Cohen's κ 0.804). Those datasets score the next orchestrator build and set the bar for the Hybrid RAG's own eval harness, the same retrieval pipeline that grounds my LLM answers in my own work corpus. Each tool feeds the next: the agents produce the traces, the traces become the benchmark, and I ship only what passes it.
A six-stage pipeline from raw production logs to a validated evaluation dataset: boundary PII redaction, union-find dedup, HDBSCAN coverage, LLM-as-judge labeling, sha256 provenance.
Human-vs-judge agreement: Cohen's κ 0.804, CI95 [0.652, 0.933], with 0.870 on task type. I measure agreement double-blind; the judge never sees the human label. The gate blocked my first run at κ 0.263; I rewrote the annotation guideline and re-measured. I report that sequence as it happened, not as a controlled A/B. 677 offline tests, 6 ADRs.
evalgen-demo.mp4
An LLM agent orchestrator built as production-grade infrastructure: LangGraph planner-executor, a fail-closed race-safe tool registry, an HMAC-authenticated human-in-the-loop gate, Redis/Qdrant memory.
Worst-case execution is 96 node runs against a pinned ceiling of 229, and a test fails the build if that bound moves. Deterministic replay rebuilds any run span by span from its trace. Stored memory re-enters prompts as quarantined untrusted content, and the quarantine holds even when that content forges its own closing tag. 255 offline tests, 7 ADRs.
orchestrator-demo.mp4
Hybrid retrieval with the full chain: dense Qdrant plus sparse BM25, hand-written RRF fusion at k=60, cross-encoder reranking, citation-enforced generation.
Citation attribution: 1.000 (55/55), faithfulness 0.981. I compared four retrieval configs on recall@k, nDCG, and MRR with paired bootstrap CI95; deltas inside the interval stay labeled non-significant. The LangGraph corrective loop fired 0 times in 50 runs; I publish that as a non-gain. 370 offline tests, 9 ADRs.
rag-demo.mp4
The full-stack ML platform behind the traffic redressement: neural networks with custom multi-quantile losses, statistical evaluation with bootstrap CI95 and paired McNemar, bit-exact reproducible builds, Next.js + FastAPI + Docker.
Measured on Saint-Étienne sensor data: 82.5% of predictions within ±15%, R² 0.88, GEH under 5 on 98.4% of cases, with comparable results across 23 territories. 509 tests.
traffic-ml-demo.mp4
Strofe_ProspectionAgent: a side project, an autonomous B2B prospecting agent for carbon-assessment (BEGES) consulting. LLM email drafting, a multi-API data pipeline, GitHub Actions scheduling, a deduplicated and scored mirror of public registries.
glan-demo.mp4
ML & data: Python 3.11 (typed, Pydantic v2), TensorFlow/Keras, scikit-learn (HDBSCAN), NumPy/SciPy, pandas LLM systems: Anthropic SDK, LangGraph, MCP, hybrid RAG (Qdrant + BM25 + RRF), LLM-as-judge Serving & infra: FastAPI (async, SSE), Redis, Qdrant, Docker, GitHub Actions Evaluation gates: Cohen's κ, paired bootstrap CI95, McNemar, double-blind annotation protocols Reproducibility & provenance: bit-exact builds, git SHA + sha256 lineage, offline test suites, policy-as-code hooks, ADRs
