I build the pipelines finance and product both trust, and I write the runbook so the next person can fix them at 3am without calling me.
Eleven years moving data from where it is produced to where a decision gets made. Most of that has been in companies at the point where the spreadsheet stops working and nobody has yet agreed what a customer is.
I care most about the parts nobody demos: schema contracts, backfills that can be run twice, and a definition of revenue that survives the quarter it was written in.
- 11
- Years
- 4
- Roles
- 4 yr 7 mo
- In post
Experience
Staff Data Engineer · Nordvik Retail Group
Feb 2022 — Present·4 yr 7 mo
Copenhagen
Own the warehouse and the contracts around it for a 40-store retailer moving to same-day fulfilment.
- Rebuilt the nightly load as incremental dbt models; the 06:00 report went from 41 minutes late on a typical Monday to on time every day for the last 14 months.
- Introduced schema contracts between the eight producing services and the warehouse. Breaking changes now fail in the producer's CI rather than in a Monday board pack.
- Wrote the definitions for the nine metrics the leadership team argues about, with owners. Finance and trading have quoted the same revenue number since.
- dbt
- Snowflake
- Airflow
- Python
- Kafka
- Terraform
Senior Data Engineer · Meridian Health
Jun 2019 — Jan 2022·2 yr 7 mo
Copenhagen
Second data hire. Built the platform that took clinical reporting off a shared drive.
- Designed the patient-event model still in use, including the audit trail the 2021 inspection was passed on.
- Cut warehouse spend 38% by moving cold history to object storage and killing four dashboards nobody had opened in a year.
- Ran the on-call rota for the data platform and reduced paged incidents from about six a month to under one.
- BigQuery
- Airflow
- Python
- Looker
- Postgres
Data Engineer · Fold Analytics
Mar 2017 — May 2019·2 yr 2 mo
Aarhus
Consultancy. Six client engagements, mostly rescue work.
- Migrated three clients off hand-rolled cron ETL onto Airflow without a reporting outage.
- Built the ingestion framework the firm reused on every engagement after mine.
- Airflow
- Python
- Redshift
- Spark
Research Assistant, Databases · Aalborg University
Sep 2015 — Feb 2017·1 yr 5 mo
Aalborg
Query optimisation for time-series workloads.
- Co-authored two papers on compression for sensor archives; one is still cited by the group's current work.
- C
- Postgres
- R
Skills
Years of use, not a five-star rating. Green means still in use today.
Warehousing & modelling
- dbt6y
- Snowflake4y
- BigQuery5y
- Dimensional modelling9y
- Redshift3y
Pipelines & streaming
- Airflow8y
- Kafka4y
- Spark4y
- Dagster2y
Languages
- Python11y
- SQL11y
- Go3y
- C4y
Platform
- Terraform5y
- AWS7y
- Kubernetes4y
- Postgres10y
Selected work
Contract-first ingestion
Open source · 2025
A small library that turns a producer's schema into a test in that producer's own CI, so the warehouse stops being the place breakages are discovered.
Used by three teams outside my own; 1.1k downloads a month.
The backfill runbook
Writing · 2024
A long piece on making historical reloads idempotent, and on why most backfill bugs are really clock bugs.
Reprinted in two engineering newsletters.
Metric definitions, with owners
Internal, now a template · 2023
The nine-metric catalogue behind Nordvik's reporting: one definition each, a named owner, and a changelog so last quarter still reproduces.
Adopted by finance, trading and product.
Education
MSc Computer Science
Aalborg University · 2013 — 2015
Thesis on compression for time-series archives.
BSc Software Engineering
Aalborg University · 2010 — 2013
Certifications
SnowPro Advanced: Data Engineer
Earned 2024 · valid to 2027
AWS Solutions Architect — Associate
Earned 2022 · valid to 2025
Speaking
Schema contracts, or how to stop finding out on Monday
Nordic Data Forum · 2025
Backfills that can be run twice
dbt Meetup Copenhagen · 2024
References on request. Write to me and I will reply the same week.