Experience
Romande Energie SA
Data Engineer → Data Architect · Promoted May 2026
2022 – present
- Built an interval-join pattern for data vault bridge tables — written up on Medium as "sweep join" — cutting runtime and warehouse cost on the temporal joins behind our core bridge tables
- Co-leading adoption of dbt across the analytics platform, standardising transformations across the full data warehouse
- Delivered end-to-end pipelines covering ingestion, dimensional and data vault modelling, and QlikSense reporting in a Snowflake / GitLab CI/CD environment
- Built and operates the MLOps pipeline for energy demand forecasting: 7 scikit-learn models in production, daily retraining, 15-min inference intervals — reducing energy imbalance on the grid, which lowers balancing costs
Swiss Triathlon Analytics Platform
Independent Project
2025
- Built and sold a race analytics platform to the Swiss Triathlon Federation covering 140,000+ athletes and 40+ years of official race results — primary use case: automated talent detection across age categories and disciplines
- Designed a Snowflake data mart (4 dimensions, 3 facts); applied AI extraction to convert unstructured race notes into structured information
- Delivered the end-to-end analytics layer: Snowflake to Power BI integration consumed daily by the federation's sports physiologist
Skills
Data Modeling
Platform & Orchestration
SQL & Python
Visualisation
Education
MSc Electrical Engineering — Data Science specialisation
EPFL, École Polytechnique Fédérale de Lausanne
2020 – 2023
- Deep learning of Koopman operator for non-linear dynamical systems (GNN + Koopman theory)
- Data-driven distributed control of microgrids via deep reinforcement learning
BSc Electrical Engineering
EPFL, École Polytechnique Fédérale de Lausanne
2016 – 2020
incl. Erasmus at Karlsruhe Institut für Technologie (KIT), Germany
Continuing Education & Certifications
Snowflake SnowPro Core Certified
Analytics Engineering Bootcamp Certified
Languages
Writing
How to Join Temporal Tables Without Losing Data
Compares three SQL approaches for joining tables with validity intervals, showing why a sweep join handles gaps, future dates, and phantom rows where inequality joins and calendar explosions fail.
Read on Medium →Your Temporal Joins Don't Need a Calendar Table. They Need This.
Walks through a sweep join as an alternative to calendar table joins, cutting intermediate rows from 347M to 885K while keeping interval semantics that standard joins cannot express.
Read on Medium →