About
I ship AI systems that hold up in production.
My supply-chain copilot runs on Azure today. It hands every calculation to 1 of 7 exact solvers instead of letting the language model guess, it stops and waits for a person on any decision above $10,000, and it went live behind 168 automated tests and a red-team gate that turned away 98% of injection attempts. The fuel system I built in Cameroon still runs at telecom base stations, and it helped account for 84,617 liters of diesel.
I'm a machine learning researcher and engineer, and I own the whole path: the data, the model, the deployment, and the number you check it against. The mathematics behind that is my PhD, where I proved when gradient descent reaches a good solution and how large a training step it can safely take. Springer Nature published the result in 2024. It's why I can usually tell you where a system will break before your users do.
Every system I ship answers one question before it goes live: when it gets something wrong, what catches it?
The path
2018 · Cameroon
The first system that had to work
Telecom base stations in Cameroon run on diesel generators through constant grid outages, and fuel was going missing faster than anyone could account for it. In 2018 almost no one aimed machine learning at stationary power plants; the research pointed at car engines. I read that automotive work and carried the methods across to generators.
I sat with the maintenance technicians, ran the exploratory analysis, compared 4 models, and shipped the strongest one as a web application the operators still use. It helped account for 84,617 liters of fuel and cut reporting from days to seconds. That project set the standard I've kept: a model that nobody can run is a model that doesn't count.
2019 to 2025 · RWTH Aachen and LMU Munich
Six years on why gradient descent works
The fuel models worked, and I couldn't fully say why. That gap set the direction of my PhD. I studied when gradient descent, the algorithm underneath almost all of deep learning, reaches a good solution in a loss landscape full of bad ones.
I proved the iterates stay bounded, so the weights can't blow up mid-training, which let me apply a discrete Lojasiewicz inequality and force convergence to a global minimum. The step size that comes out of it holds at any depth, which earlier results couldn't offer. Then I checked the bound on nonlinear tanh networks, and it held. The practical version of that work is short: you can know how hard to push a training run before you start it, and you can see the run that's about to diverge.
Since 2025 · what I build now
Where the guessing stops
I build agentic systems on one rule: keep the language model on the language, and hand every calculation to something that can't hallucinate. In the supply-chain copilot, a LangGraph agent reads a planner's request in plain English and routes it to 1 of 7 exact operations-research solvers. Every solver call crosses a typed contract, and any decision above $10,000 pauses for a manager. A wrong reading of the request picks the wrong tool, which a person catches. It can't produce a wrong number that looks right.
The same discipline runs through the rest. The scientific question-answering system cites its sources at 0.84 precision on QASPER and returns "insufficient context" rather than a confident fabrication. In the alignment work, I train models to prefer answers that can be checked over answers that only sound right. What a team gets from me is a system that ships with the test suite, the deployment, and the number it is held to.
Proof you can open
Every number above traces to a case study. Open one.
- $10,000 gate · 7 solvers A supply-chain copilot that won't sign on its own A LangGraph agent turns a planner's question into a call to an exact operations-research solver, across typed contracts. Any spend above the gate waits for a manager.
- 0.84 citation precision Scientific answers that cite real sources A four-stage retrieval pipeline (SPECTER2 and BM25, ColBERT v2 reranking, a CRAG relevance gate), scored on 84 QASPER questions. It says "insufficient context" rather than inventing a source.
- 84,617 liters A fuel-forecasting system operators still run Built in Cameroon before the PhD: a Random Forest model, deployed as a Flask web app, that flags consumption deviations at telecom base stations and cut reporting from days to seconds.
- Springer Nature, 2024 A training step size you can compute before the run The convergence result behind the engineering: global-minimum guarantees for gradient descent, with a learning-rate bound that stops shrinking as the network deepens.
Teaching, and where I come from
For 6 years I ran the exercise classes for continuous optimization, mathematics of data science, and higher mathematics at RWTH Aachen and LMU Munich. The job was to take a convergence proof and give a room the intuition instead of the algebra. It's the same job a cross-functional team needs done when a model has to be understood before anyone will trust it, and it's the part of consulting work I'm fastest at.
I also reviewed and fixed the teaching materials other assistants worked from, and I stood in for my chair to present our findings at an international conference. I came up through a Mastercard Foundation scholarship, across 3 countries and a research group of 9 nationalities. Passing on what I was taught matters to me.
Verify
Check any of it:
- Springer Nature paper (2024)
- arXiv preprint 2108.02040
- Google Scholar profile
- GitHub repositories
- Download the CV (PDF, 166 KB)
PhD in applied mathematics, LMU Munich and RWTH Aachen University. Mastercard Foundation Scholar. Member of the Munich Center for Machine Learning. Certified in MLOps, advanced agent coding, and advanced prompt engineering.
How I work
- I ship. Every project has a Docker image and a deployment story, not just a notebook.
- I decide what "working" means, and the number that proves it, before I write the code.
- I read the primary sources (NeurIPS, ICML, ICLR, arXiv) before I read the tutorials.
- I write down the trade-offs and the open problems next to the results.
What I'm reading right now
4 papers on the desk this month. They rotate.
| Paper | Authors | Venue | Why it matters to me |
|---|---|---|---|
| Direct Preference Optimization | Rafailov et al. | NeurIPS 2023 | I use DPO in the alignment work. This is the paper that made reward-model-free preference optimization click for me. |
| Corrective Retrieval-Augmented Generation | Yan et al. | arXiv 2024 | CRAG is the relevance gate in my retrieval systems. I keep returning to how it decides when a retrieved passage is good enough to use. |
| Can Large Language Models Reason and Plan? | Kambhampati et al. | arXiv 2024 | A sober read on what language models can and cannot plan. It backs the split I build around: language to the model, math to the solvers. |
| On the Convergence of Adam and Beyond | Reddi, Kale, Kumar | ICLR 2018 | Back to my roots. A clean case of an optimizer everyone trusted turning out to have a convergence hole worth understanding. |