I build data teams and the platforms finance runs on.
Twenty years in data, eight of them leading teams. I set up the Data Engineering function at Mukuru, a cross-border payments company, and led its move from SQL Server to Snowflake. Today my team runs the platform behind daily settlement, safeguarding and finance reporting.
Case studies
Click a card for the detail: the problem, what we did, and what changed.
An Operational Data Store on change data capture
CI/CD for the data warehouse
From four weeks to two hours with Maia
Building the team
AI on the data platform
Explore the platform
A simplified view of the stack my team runs. Select a component to see what it does and how it connects.
Sources
Ingest
Snowflake on AWS
Serve
Select a component
Each node lights up its upstream and downstream connections.
Twenty years in data
From BI developer to leading data engineering. Click a role to expand it.
Data Engineering Manager
- Established the Data Engineering function and led the SQL Server to Snowflake migration.
- Lead six engineers plus contractors; own platform budget, vendors and architecture standards.
- Accountable for business-critical finance pipelines, incident response and data access governance.
Senior BI Developer
- Designed the warehouse for a commercial mortgage-backed securities analytics product: cloud ELT and dimensional modelling in dbt.
- Evaluated Snowflake, Redshift, BigQuery and Databricks.
BI Team Lead
- Led engineers and analysts at South Africa's largest web host.
- Built an ODS from 10+ sources with Fivetran and Python, a Kimball model on top, and embedded Power BI with 30-minute latency.
Senior Data Engineer
- SSIS and SSAS Tabular, Master Data Services for a large bill of materials, and an ERP migration.
BI Manager
- Set up the EMS BI function, recruited and developed five analysts, and built the emergency dispatch warehouse.
BI developer and architect
- Warehousing, reporting and integration across fund administration, telecoms, engineering and public sector clients.
On stage and on the record
I was the first speaker at a Snowflake community event in South Africa, and I speak regularly at Datalab community events for Snowflake and Matillion.
"Sometimes the difference between our customers using Mukuru and not using Mukuru is whether a family will have a meal to eat tonight or not. That is essentially our mission."Quoted in Matillion's customer story, October 2026
Software for my squash club
I have served on squash committees since 2018. Today I sit on the Western Province Masters Squash committee and coordinate Masters squash at Evertsdal Squash Club. I also build the club's technology, and run it on tournament weekends.
A browser demo of the court timer. The real system runs one synchronised clock across four Android TV court displays, with markers scoring from their phones.
Court timers and live scoring
Kotlin on Android TV, a React and TypeScript controller, Node with WebSockets, and results to AWS S3. It survives power cuts and Wi-Fi drops mid-match. It runs a 30-night league for 96 players and a 36-team, 90-fixture relay weekend with live standings.
Bar ordering and payments
Players scan a QR code, order onto a tab with a wristband code and pay by card, cash or SnapScan. Bar and kitchen screens, reconciliation export to the club till. Built in under three weeks on Cloudflare.
Websites and tournament data
I look after the Evertsdal Squash Club site pro bono and have worked on the WP Squash site. Python pipelines produce tournament reports covering 170+ players and reconcile league fees against attendance.
Let's talk
The fastest way to reach me is email. I am happy to walk through any of this work in more depth.