Nine years building models that have to survive contact with operations: demand forecasting, document NLP for logistics, and the MLOps that keeps them honest after launch.
Senior Machine Learning EngineerOstkante Mobility, Berlin
Own the demand-forecasting stack behind fleet rebalancing across 14 cities. Replaced 40 per-station LightGBM models with one hierarchical model using learned station embeddings; weekly MAPE fell from 18.4% to 11.2% on held-out stations.
Found a label-leakage bug in the backtest, where future bookings were leaking into lag features. Fixing it lowered the reported accuracy by about three points, and every model now reads features from a point-in-time-correct store.
Lead a team of three. Built drift monitoring on input PSI and output calibration; alerts fire when a city's error runs above its 14-day baseline, which caught two upstream sensor outages this year.
2019 — 2022
Machine Learning EngineerKiefernhof Logistik, Berlin
Shipped a transformer-based address-normalisation model for the parcel-sorting pipeline. Manual re-routing dropped from 6.1% to 1.7% of parcels after rollout to four hubs.
Quantised the model to INT8 with ONNX Runtime. p95 CPU latency went from 47 ms to 9 ms, so the hub edge boxes run it without a GPU.
Set up active learning on low-confidence splits with the operations team. The labelled set doubled in one quarter without adding annotation headcount.
2017 — 2019
Data ScientistHalden Energy Analytics, Berlin
Built load-forecasting models for two regional grid operators, using gradient-boosted trees over STL-decomposed demand. Beat the incumbent ARIMA baseline at 9 of 12 substations in the year-end review.
Wrote the smart-meter ingestion checks (gap detection, DST and timezone handling) that became the team's reference pipeline.
Automated weekly retraining on Airflow with experiments tracked in MLflow, turning a two-day manual refresh into an overnight job.
$cat skills
Python
PyTorch
LightGBM
Forecasting
MLflow
Kubeflow
ONNX Runtime
SQL
$ls projects/
./wordle-solverEntropy-maximising Wordle guesser that averages 3.6 guesses across the full answer list.
./onnx-benchLatency harness comparing ONNX Runtime, OpenVINO and TFLite on small vision models across CPU classes.
./ubahn-tilesVector-tile map of Berlin's U-Bahn network, rendered straight from GTFS in under 400 lines of Python.
$cat publications
Kovač, M. (2021). “Hierarchical station embeddings for sparse demand forecasting.”
Proceedings of the Nordic Workshop on Applied Time Series.