Selected work
Five client engagements, with numbers. Clients are abstracted where confidentiality requires; the metrics are as delivered. Each one carries the disagreement it had to survive, because that is usually what decided whether it shipped.
~1.5B+ req/month
A major Dutch grocery retailer
Cloud Gateway — federated cross-cloud API platform
20+ fragmented gateways unified into one self-service platform across AWS and Azure.
The disagreement
Nobody wanted to give up a gateway they controlled for a dependency on a central team, and no one had the authority to order a migration.
- AWS API Gateway
- Azure APIM
- Terraform
- OAuth2/OIDC
- Datadog
3 estates, 1 contract
A major Dutch grocery retailer · current, 2026
SAP event backbone — three estates, one contract
Three platform teams, three estates, one event contract nobody owned before.
The disagreement
Three teams with three definitions of the boundary, and every question that mattered sat in the gap between them.
- SAP Advanced Event Mesh
- AMQP 1.0
- S/4HANA
- AWS Lambda
- Terraform
12 interfaces, 1 runtime
A major Dutch grocery retailer
Integration platform — one runtime, twelve interfaces
A new interface became a config change instead of a codebase, and the platform team stopped being the queue.
The disagreement
A shared runtime asks domain teams to give up code they control, and concentrates the blast radius on a platform team that did not previously carry it.
- AWS Lambda
- SNS/SQS
- S3
- DynamoDB
- Terraform
- JSONata
- Datadog
~30+ company codes
A global manufacturing client (DACH region)
SAP S/4HANA Finance → Snowflake
A legacy SAP Finance estate turned into a cloud-native analytics backbone.
The disagreement
Finance already had a ledger it trusted, and the contract at the handover moved work onto a SAP team that had no obligations toward analytics before.
- AWS EMR
- AWS Glue
- PySpark
- Snowflake
- Terraform
20+ data products
A major UK telecom operator
Kafka data-product platform on Cloudera
Streaming data productised across domains, with governed schemas.
The disagreement
Productising a stream means the producing domain accepts consumers it never asked for, plus a schema promise and an SLA.
- Apache Kafka
- Cloudera CDP
- Schema Registry
- Hive LLAP
- Spark 3
These are the engagements I can describe accurately and defend under questioning, including what each one cost the teams it landed on. Self-built demos live on the portfolio, labelled as demos.