AI/ML Research Engineer
M.Sc. Statistics & Data Science, LMU Munich · Munich, Germany
I build models and the machinery that keeps them running — fine-tuning, evaluation harnesses, deployment, monitoring. My working rule is that a result only counts if it is measured against a published baseline, reported with a confidence interval, and survives a rerun.
Right now that means multimodal vision-language models for surgical video, in a research collaboration between LMU Munich and ZEISS, plus self-supervised segmentation of archaeological LiDAR data. Outside the lab I work on agentic systems: tool calling, MCP, structured outputs, and how they break.
gnhf runs a coding agent in an unattended loop against an objective. Its --max-tokens
safety cap was undercounting spend by 183x: the provider adapters report four token buckets,
the orchestrator stored only two, and the budget check silently dropped cache reads and cache
writes. One reported run believed it was at 22% of a 1,000,000-token budget while it had
already billed 41.1M tokens and $48.64. The cap never fired.
I widened orchestrator state to carry all four buckets and normalized the adapter boundary so
they stay mutually exclusive — Claude was folding cache reads into inputTokens,
and Codex nests cached tokens inside OpenAI's input_tokens — then threaded the
corrected total through the renderer, exit summary and CLI help so the displayed numbers agree
with the enforced cap. Merged through the maintainer's no-mistakes review gate
after three AI review rounds, with 760 tests and 6 CI checks green.
Fine-tuned SigLIP2 into a surgical-domain vision encoder powering a multimodal VLM specialised in endoscopy, and built the standing evaluation harnesses around it — classification, VQA and video tasks, scored with confidence intervals and per-class error analysis against published baselines.
Beats MedSigLIP, Qwen3-VL-8B and LLaVA-OneVision-7B by more than 10 points balanced accuracy on 16-class frame classification (Hyper-Kvasir). Scaled to videos of up to 120 minutes.
Repository private — research collaboration. Happy to walk through the work.
A vision-language model that grounds natural-language queries, segments workflow phases and steps, and estimates remaining surgery duration on full-length procedures up to 2 hours — with a calibrated-abstention reward and a procedure-graph consistency constraint — trained and served entirely on a single 24 GB consumer GPU, no cluster required. Separate from the LMU × ZEISS collaboration above — its own repo, own datasets, own design.
Data pipeline and task/metric harness built and merged (93 tests green); three training datasets landing on an owned RTX 4090 now; first zero-shot baselines next.
An autoencoder pipeline that segments aerial LiDAR point clouds spanning more than ten hectares and automatically flags anomalies for targeted expert review, replacing full-site manual inspection and sharply cutting survey time.
Second author on a paper in preparation for ISPRS GeoSpatial Week 2027 (not yet submitted).
Code private while the paper is in preparation.
A reproducible analysis of a cleaned field survey on compensation applications, agricultural losses, policy support and tolerance toward wild boars in two Chinese counties. The project turns the full questionnaire into an auditable evidence trail, from exploratory data analysis and measurement validation through ordinal models, Bayesian checks, PLS-SEM, mediation, prediction and stress testing.
The public artifact explains every analysis script line by line and reports the limits of causal interpretation, including county-period confounding, measurement overlap, structural missingness and unmeasured confounding.
Python harnesses and prompt suites that drive tool-using agents (GPT-OSS, Gemma) through adversarial multi-step scenarios. The deliverable is not a clever one-off jailbreak: it is a reproducible failure — one that survives a rerun, has an isolated cause in the tool-calling or context-handling path, and can be turned into a regression test.
Currently ranked 498 of 4,127 teams — top 12% — with a score of 89. The competition closes 1 September 2026.
A silent-speech interface project: eight sEMG electrodes across the face, and the question is how many of the 39 English phonemes they can tell apart — silently as well as out loud. I own evaluation and interpretability (channel/feature importance, confusion analysis against phonetic groupings) alongside teammates on preprocessing and modelling, and built the shared four-stage data pipeline (two recording rigs, one schema), five interchangeable sEMG feature paths, and the four CTC model architectures (LSTM/RNN/CNN/Transformer) the leave-one-session-out benchmark will run on.
A feature-ablation feasibility study already reaches 21% exact phoneme match (39-way, chance 2.6%) from two summary statistics per channel on pilot data. The primary recording is 7 of 15 sessions in as of writing; the full leave-one-session-out benchmark across four model classes is still to come.
An enterprise service desk where a front router receives a request, retrieves policy evidence with citations, and delegates to a bounded ERP, CRM, HR or scheduling specialist. The model classifies and drafts; trusted Python code validates its output, picks the only permitted tools, and holds every protected write behind an IT approval step.
The model never sees raw records, never chooses an arbitrary tool and never executes a mutation. Unavailable, malformed, unsafe or low-confidence output falls through to human review by design, not by accident.
The whole path a model takes to reach an IoT device: synthetic building telemetry, a trainer with a fixed seed, a checksummed JSON artifact, C firmware constants generated from it, and dependency-free inference running on the device. The cloud is a fleet-management and observability layer — it never needs the raw samples to know a device found a problem.
The same inference contract implemented twice, in Python and in C, with the artifact checksum verified before use. Telemetry ingestion is idempotent and deployments are audited.
Describe a circuit in plain English and an agent designs it, checks its own electrical and design rules against live component stock, repairs what it gets wrong, and exports Gerbers a factory can build. Every view — schematic, PCB, 3D, BOM, fab files — derives from one Circuit JSON, so they cannot disagree with each other.
Built in one 20-hour window. I owned the distributor-availability layer: the Mouser integration for lifecycle, stock depth and minimum order quantity, plus a web-scraping sub-agent layer so the design loop never depended on a single stock source.
A PaliGemma2-3B model fine-tuned with LoRA/PEFT on ScienceQA, wrapped in a full production stack: DVC data versioning, Hydra configs, cloud training, a FastAPI service with hot-swappable adapters, drift monitoring and CI/CD.
72.2% exact-match. A prompt-ordering fix found by systematic ablation was worth +16 points on its own; int4 quantization cut GPU memory by 51%.
Coursework repository — not mine to publish.
Demand-forecasting models for daily sales across all stores, built around feature engineering on 1.5 years of historical sales and store attributes, and delivered and explained to the retail partner.
24% WAPE on 14-day-ahead forecasts.
Repository private pending a data-sharing check.
A SQL-backed database of carbon offset projects, built by scraping a public project registry so that supply of carbon credits can be queried by region, methodology and vintage.
Designed a new decision-theoretic acquisition policy for Bayesian optimization and benchmarked it against standard test functions.
neetcode-gpt — a GPT built from scratch · NN-from-scratch · NVIDIA Nemotron reasoning challenge · BirdCLEF+ acoustic species identification · InstaSHAP benchmarks
Self-Supervised Learning for Semantic Segmentation of Archaeological LiDAR Point Cloud
Data
Second author · in preparation for ISPRS GeoSpatial Week 2027 · not yet submitted
M.Sc. Statistics & Data Science — LMU Munich · 2025 – present
B.Sc. Statistics & Data Science (Computer Science minor) — LMU Munich · 2021 – 2025 · final grade 1.8