// Work Experience

10 Years Building Production AI Systems.

Data platforms, cloud-native infrastructure, MLOps, LLMOps and agentic AI systems — delivered for large industrial organizations under real regulatory and legacy constraints. Each role summarized first; full engineering detail available under each entry.

  • Oct2021 - Current

    EDF (via NeoStair EURL)

    Senior Solution Architect — AI & GenAI Platform

    Mission. Lead the AI and GenAI platform architecture for EDF Group, serving 10+ data science and product teams across energy retail, grid operations, commercial analytics and customer experience.

    Challenge. The platform had become shared infrastructure that multiple business units depend on. At the same time, generative AI tooling was changing faster than any previous technology stack. The organization needed to adopt GenAI and agentic systems without destabilizing platforms already running business-critical workloads.

    Actions.

    • Defined the GenAI and ML platform roadmap, and led the Architecture Review Board across business units
    • Separated stable platform contracts from swappable application tooling, so teams could adopt new frameworks without platform migration
    • Built the evaluation infrastructure for LLM systems: versioned test datasets, automated regression testing, and quality scoring calibrated against human review
    • Established the reference architecture for agentic workflows, with human approval steps built into the system design rather than added afterwards
    • Introduced LLMOps practices: prompt versioning, guardrails, cost governance per team, and full trace logging for audit
    • Delivered an LLM-powered opportunity detection system giving commercial teams 12–24 months of advance visibility on photovoltaic self-consumption projects
    • Led the enterprise rollout of AI-assisted development tooling, including adoption strategy and cost governance

    Business impact.

    MetricResult
    Platform availability99.9% across 100+ daily ML workloads
    Infrastructure cost−30% through FinOps governance
    Incident resolution<90 min median, down from 4 hours
    Teams served10+ data science and product teams

    Stack — Python · LangChain · LangGraph · LlamaIndex · MCP · pgvector · Mistral · Gemini · Ollama · RAGAS · MLflow · Evidently · FastAPI · Kafka · Airflow · Kubernetes · OpenShift · AWS · Terraform · OpenTelemetry · Prometheus · Grafana · ELK

    Read the full engineering detail

    Governance under technology velocity. The governing tension is stability against velocity: 10+ teams depend on invariant infrastructure while the tooling landscape reorganizes continuously. The architectural resolution separates the two concerns — stable contracts at the platform layer, swappable implementations at the application layer. Serving topology, observability schemas and deployment pipelines remain invariant while teams migrate between orchestration frameworks. Reference blueprints are published and adopted rather than mandated.

    Evaluation as an operational discipline. Production LLM systems fail differently from classical ML. Accuracy metrics do not transfer, and distribution shift is semantic rather than statistical. The platform treats the evaluation harness as infrastructure rather than a pre-deployment checkpoint:

    • Golden datasets versioned alongside prompts, with regression suites executed on every prompt, model or retrieval change
    • LLM-as-judge scoring calibrated against human annotation, with inter-rater agreement tracked to detect judge drift
    • Retrieval quality measured independently of generation quality — recall@k and nDCG at retrieval, faithfulness and answer relevance at generation
    • Offline evaluation gates in CI, complemented by online evaluation on sampled production traces

    Agentic architecture. Agent reliability is a property of the harness, not of the model. The reference architecture is deliberately constrained: deterministic state machines over free-form LLM routing, with every transition typed, observable and restartable from checkpoint; explicit termination criteria and step budgets bounding runaway loops; tool schemas under strict validation with structured output enforced through constrained decoding; human approval expressed as a typed state transition rather than an external callback, eliminating race conditions; durable execution with checkpoint persistence, enabling recovery from mid-workflow faults without full replay. MCP adopted as the tool interoperability layer.

    Retrieval engineering. Production RAG diverges sharply from reference implementations. Hybrid retrieval combines BM25 lexical matching with dense embeddings through reciprocal rank fusion, followed by cross-encoder reranking on the candidate set — trading latency for precision where the corpus is adversarially self-similar. Chunking strategy is determined empirically per corpus: semantic boundaries outperform fixed windows on structured regulatory documents by a wide margin. Context compression preserves token budget on long-context queries.

    Inference economics. Cost is measured per resolved task, never per token. An architecture that halves token consumption while doubling retry rates is a regression that token-level accounting reports as an improvement. Controls in production: model routing and cascades, where smaller models absorb the tractable majority; semantic caching on high-repetition query classes; per-team cost attribution surfaced alongside latency and error rate.

    Sovereignty and regulation. Data residency is an architectural constraint, not a cost trade-off. Deployment paths for sovereign European models and on-premise inference maintain optionality without forcing a second architecture. EU AI Act obligations are translated into platform primitives: system classification at onboarding, model cards and data lineage as mandatory deployment artifacts, transparency enforced at the serving layer, human oversight expressed as architecture.

    Observability for non-deterministic systems. Span-level tracing aligned with OpenTelemetry GenAI semantic conventions. Every inference carries its prompt version, retrieved context, tool invocation trace, token accounting and evaluation scores. Embedding drift is monitored alongside classical feature drift — semantic shift within a corpus degrades retrieval quality before any downstream accuracy metric registers it.

  • Oct2019 - Sep2021

    EDF (via NeoStair EURL)

    Solution Architect — Cloud Native AI/ML Platform

    Mission. Design, build and operationalize a cloud-native internal development platform for EDF’s data division, replacing a fragmented shadow IT estate.

    Challenge. Business-critical logic was running in spreadsheets. SaaS tools were fragmented and unintegrated. There was no standard path from a data science prototype to a production system. A regulatory change created delivery urgency the existing approach could not absorb.

    Actions.

    • Designed and built the platform on OpenShift, with identical behaviour on AWS for cloud workloads
    • Exposed every capability as a reusable building block: event streaming, orchestration, transformation, caching, API contracts, service mesh
    • Delivered EDF’s first systematic MLOps stack: feature store, model registry, automated retraining, CI/CD, containerized serving
    • Restructured platform governance after a prescriptive first version stalled adoption
    • Led onboarding and enablement for 20+ developers across business units

    Business impact.

    BeforeAfter
    Delivery lead timeMonths per applicationDays
    Lead time improvement—9× faster
    Production applicationsAd-hoc20+
    Developers served—20+
    Automated workflowsManual100+ per day

    The lead time improvement changed what data teams could credibly commit to business stakeholders, and what those stakeholders could expect from an AI initiative.

    Stack — Python · FastAPI · Kubernetes · OpenShift · Docker · AWS · Terraform · Kafka · Airflow · DBT · Redis · MLflow · Istio · GitLab CI · Spark

    Read the full engineering detail

    What the platform replaced. A fragmented shadow IT estate gave way to a centralized cloud-native foundation. The governing design principle: application teams should ship production-grade business applications without rebuilding infrastructure each time.

    Every capability was exposed as a composable, pre-configured building block — Kafka for event streaming and decoupled data flow, Airflow for auditable orchestration with retry semantics, DBT for versioned transformation with lineage, Redis for low-latency serving-layer caching, FastAPI for standardized API contracts, and a service mesh for inter-service communication across the hybrid topology. Portability was a hard constraint: identical behaviour on OpenShift for regulated on-premise data and on AWS for cloud workloads.

    What almost failed. The first Architecture Review Board was too prescriptive. Teams read it as a gate rather than a service, and adoption stalled — the platform existed and went unused. The correction was structural: mandatory standards replaced by reference blueprints, quarterly review gates replaced by office hours and asynchronous feedback, all tooling made opt-in with documented upgrade paths. Adoption recovered within two months. The principle — governance without perceived value is indistinguishable from friction — has held across every subsequent platform generation.

    The MLOps layer. Before this work, model deployment was manual and undocumented. After: a trained model reached a production endpoint in five days, with monitoring, rollback and audit logging included by default.

  • Oct2017 - Sep2019

    EDF

    Big Data Engineer — Data Platform & Decision Systems

    Mission. Build the first generation of shared data platform components for EDF’s data division, and deliver a near real-time Customer 360 platform for retail decision-support systems.

    Challenge. Business units operated isolated data silos with incompatible schemas. Upstream CRM, billing and meter data systems could not be modified or replaced. Delivering reliable analytics required building shared infrastructure that teams would actually adopt.

    Actions.

    • Built reusable platform components — centralized logging, supervision, archival — adopted across 10+ production pipelines
    • Designed the data quality framework enforcing schema contracts at ingestion rather than at consumption
    • Delivered a near real-time Customer 360 platform on Spark, HBase, Apache Phoenix and Elasticsearch
    • Built EDF’s first centralized pipeline monitoring platform on Elasticsearch and Kibana

    Business impact. Unified customer data across heterogeneous source systems into a single queryable layer serving retail decision-support. Shared components reduced duplicated engineering effort across teams and established the observability standard that every subsequent platform generation inherited.

    Stack — Apache Spark · Hadoop · HDFS · Hive · HBase · Apache Phoenix · Elasticsearch · Kibana · Python · SQL

    Read the full engineering detail

    Platform engineering, not pipeline development. The strategic choice made early was to build reusable components rather than one-off pipelines — the distinction between a data organization that scales with headcount and one that scales by design. The cultural argument mattered as much as the technical one: adoption required demonstrating that shared infrastructure reduced each team’s operational burden rather than adding governance overhead.

    Near real-time Customer 360. The architecture combined Apache Spark for distributed processing, HBase with Apache Phoenix for low-latency key-value serving, and Elasticsearch for full-text and analytical queries. The binding constraint shaped every decision: upstream systems could not be modified. The platform consumed their outputs as-is, resolved inconsistencies downstream, and presented a coherent customer model to all consumers. Schema reconciliation and quality enforcement lived in the transformation layer by necessity.

    Observability from day one. Every pipeline exposed health metrics, SLA tracking and anomaly detection from its first day in production — the organization’s first systematic operational visibility layer for data infrastructure.

  • Feb2017 - Aug2017

    Sanofi

    Machine Learning Engineer — Supply Chain Forecasting

    Mission. Rebuild the demand forecasting layer for Sanofi’s pharmaceutical distribution centers and demonstrate measurable stock reduction without degrading service levels.

    Challenge. Forecasting models were several years past their last revision. Consumption volatility from seasonal epidemiology, promotional dynamics and supply disruption had outpaced their assumptions, producing chronic portfolio imbalance. In pharmaceutical distribution a stock-out carries a healthcare consequence, not only a financial one — which raised the bar for traceability and for how the model could be deployed.

    Actions.

    • Built demand forecasting models in Python with feature engineering from operational domain expertise: seasonal decomposition, promotional calendar encoding, lead time distributions, substitution clustering
    • Designed the ETL layer consuming SQL Server and SAP Business Objects, emitting forecasts directly compatible with the incumbent planning system
    • Ran a three-month parallel execution against the legacy forecast, product family by product family, before handover

    Business impact. 8% stock reduction across the distribution network with no degradation in service failure rates, measured over the parallel run period.

    The durable lesson concerns deployment rather than modeling: in regulated environments the adoption process is the deliverable. Model quality is necessary and insufficient.

    Stack — Python · scikit-learn · SQL Server · SAP Business Objects · QlikView

  • Nov2015 - Jul2016

    LIP6 — CNRS Research Laboratory

    Research Engineer — Distributed Multi-Agent Systems

    Mission. Research position at LIP6 (CNRS), co-supervised with École Nationale Polytechnique. Investigate whether autonomous, self-interested agents can coordinate toward near-optimal collective outcomes without a central planner.

    Challenge. Classical supply chain optimization assumes a central planner with complete information. Real multi-echelon supply chains violate that assumption: producers and suppliers hold private cost functions they have no incentive to disclose.

    Actions.

    • Designed a distributed multi-agent negotiation system where agents coordinate through structured bargaining on private state only
    • Implemented Nash bargaining mechanisms, revenue-sharing contracts for coalition stability, and belief-revision strategies
    • Modeled the architecture with AUML and the Gaia methodology, implemented in JADE
    • Validated against standard Bullwhip Effect benchmark topologies

    Outcome. Emergent equilibria were reached in configurations where centralized planning would have required full information disclosure from every participant. Published as a 188-page engineering thesis.

    Relevance today. This research addressed distributed multi-agent coordination before the recent emergence of agentic AI architectures. The coordination questions formalized then remain the right framework for evaluating agentic systems now: what is the communication protocol and is it typed; how is partial state reconciled across agent boundaries; what are the failure modes under contradictory signals; how does the system recover from a mid-execution fault; what bounds termination.

    Read the full thesis →

    Stack — Java · JADE · Nash Bargaining · Coalition Formation · Belief Revision · AUML · Gaia Methodology