paytrail: Payments Medallion Lakehouse
A governed bronze/silver/gold lakehouse over 6.3M synthetic payments on Databricks and Delta: idempotent out-of-order-safe loads, Unity Catalog governance, 51 CI-gated dbt tests, and a code-first BI dashboard.
“Why?” is my favorite data point.
I work on data infrastructure and machine learning models. Also, I will try any gelato flavor once, and I bring the same energy to a new tool or dataset. I learn it properly, get obsessed, build something with it. That’s basically the story behind every project below.
⠀⠀⠀⠀⢠⡶⠚⢷⣤⡀⠀⠀⠀⠀⠀⣲⡶⠛⠻⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⢠⡿⠁⠀⠀⠙⣷⣄⠀⢀⣴⡟⠁⠀⠀⢷⢹⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⣾⠃⠀⠠⠶⠚⠛⠛⠛⠛⠋⠀⠀⣀⡀⢸⠈⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⢸⣏⡔⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠚⠉⠉⣿⠀⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⢾⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⢠⣿⢠⣶⡆⠀⠀⠀⠀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀ ⢒⡾⠁⠘⠟⠁⠀⠀⠀⠀⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀ ⠉⣧⠀⠀⠀⠀⠃⠀⠀⠀⠈⠉⠠⣍⠀⠀⠀⠀⠀⠀⣸⡇⢀⣤⠶⠛⠛⠻⢦⣄ ⠀⠸⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⡟⣴⠟⠁⠀⠀⠀⠀⠀⢻ ⠀⠀⠀⠛⣷⡦⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⡴⠞⠋⢠⡟⠀⠀⠀⠀⠀⠀⢀⡾ ⠀⠀⠀⢰⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠳⣤⡀⢸⠃⠀⠀⠀⠀⢠⡶⠟⠁ ⠀⠀⠀⣸⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢷⣹⡄⠀⠀⠀⠀⣼⠀⠀⠀ ⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣇⠀⠀⠀⠀⢹⡄⠀⠀ ⠀⠀⠀⢸⡀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⡄⠀⠀⠀⠈⣧⠀⠀ ⠀⠀⠀⢸⡇⠘⡇⠀⠀⠀⠀⠀⠀⠀⣀⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⢹⡇⠀ ⠀⠀⠀⢸⡇⠀⠙⠀⠀⠀⠀⠀⢠⠞⠁⠀⠀⠀⠀⠀⠀⠀⣿⠇⠀⠀⠀⢸⡇⠀ ⠀⠀⠀⢸⡇⠀⢸⡆⠀⠀⠀⠀⣟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠀⠀⠀⠀⣸⠇⠀ ⠀⠀⠀⢸⣿⠀⠀⡇⠀⠀⠀⠀⣿⡀⠀⠀⠀⠀⠀⠀⠀⢀⡇⠀⠀⢀⣴⡟⠁⠀ ⠀⠀⠀⠘⠿⠶⢶⢧⣦⣦⡴⢾⣥⣽⣤⣤⣤⣤⣤⣤⡴⣯⡤⠴⠶⠛⠋⠀⠀⠀
I’m wrapping up an MSc in Computer Science (Data Science) at Leiden, and I work with data at Prysmian in Delft. I like being in all the parts of a data problem: shaping raw tables, building models, judging when their output can be trusted, and getting a result into a form people can act on. I like different parts on different days, and I’m growing most into the engineering that holds it all together.
The human side of things has always pulled at me, sociology, anthropology, biology, so taking my CS degree alongside marketing and lean-startup courses felt natural. Who reads the output, and what do they change because of it? It’s the piece I look for first in any new project.

A governed bronze/silver/gold lakehouse over 6.3M synthetic payments on Databricks and Delta: idempotent out-of-order-safe loads, Unity Catalog governance, 51 CI-gated dbt tests, and a code-first BI dashboard.
Built an end-to-end batch pipeline ingesting 688K+ OSHA workplace-injury records into a PostgreSQL star-schema warehouse (1 fact + 5 dimensions) with dbt, orchestrated by a 7-task Airflow DAG, runnable with a single docker compose up. Added an LLM enrichment layer using a locally-hosted model via Ollama that classified incident narratives at 96.5% coverage at $0 inference cost. Enforced data quality with 81 automated tests wired into a GitHub Actions CI pipeline that fails the build on any data-contract violation.
Forecast six weeks of sales for 1,115 stores with a single LightGBM model, placing top 5% of 3,738 Kaggle teams. Used walk-forward cross-validation to prevent lookahead leakage. A GitHub Actions workflow runs automated tests on the feature engineering pipeline on every push, keeping model inputs validated and the project reproducible.
A two-stage movie recommender on MovieLens 25M: Two-Tower retrieval (PyTorch, FAISS) feeding a 306-feature LightGBM ranker that scores Recall@10 of 0.147 and 0.9206 val AUC. The engagement/diversity trade-off is simulated offline as a 12-point Pareto frontier, with candidate policies validated by SNIPS counterfactual evaluation.
Does a model's explanation survive being replaced by an equally accurate one? My thesis tests this across the Rashomon set on 6 forecasting benchmarks.
A two-stage recommender on 31M H&M transactions: BigQuery SQL retrieval feeding a CatBoost ranker (MAP@12 0.029 vs 0.0053 baseline, a 5.5x lift with a 95% bootstrap CI), plus a temporal-leakage gate, diversity guardrails, a typed FastAPI endpoint, and 80+ tests.
Consolidated fragmented payment, CRM and ERP data from Stripe, Salesforce and NetSuite into a single customer view across ~2M rows, resolving 98% of foreign-key mismatches.
Designed a relational schema for lead-to-member conversion, containerised the Postgres database with Docker, and built a dashboard prototype letting business managers explore 4 revenue KPIs directly.
Fine-tuned BioBERT to extract adverse drug reactions from noisy biomedical text, using Focal Loss to handle severe class imbalance. Rare-entity classes improved by over 20% F1, with 88.92% overall accuracy.
Built PySpark pipelines across 2 years of fashion sales data covering 9 categories, 10 styles and 5 regions. The pipeline found that mid-range pricing ($50 to $150) drives the highest volume and that style preferences split sharply by market, framed as category-level assortment signals.
Forecast hydro generation across Eastern India from 16 months of National Power Portal data, with model selection driven by AIC and BIC.
Implemented REINFORCE, Actor-Critic, and A2C policy gradient algorithms on CartPole-v1 in TensorFlow, then ran 5 independent 1M-step experiments with logging, smoothing, and comparison plots. Extended the environment with transaction-cost penalties to simulate real-world P&L drift and evaluated final reward stability across methods.
Evaluated 4 anonymization methods across 5 real-world graphs, measuring structural preservation (modularity shift under 3%) and re-identification risk (under 1%). Findings show that aggressive anonymization degrades community structure faster than degree distribution, with implications for privacy-utility trade-offs in graph-based ML pipelines.