Data Engineering Manager

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.

0
database objects migrated to Snowflake
0
of BI downtime across a 12-month migration
0
source databases streaming into an ODS via CDC
0
less time on a pipeline build after moving to Maia
Selected work

Case studies

Click a card for the detail: the problem, what we did, and what changed.

SQL Server to Snowflake, without a dark day

~2,800 objects and 200 SSIS packages, 12 months, zero BI downtime
I joined Mukuru in February 2023 to build a Data Engineering team for one job first: move the enterprise warehouse off SQL Server and SSIS on EC2. We ran it with an implementation partner, migrated in waves with parallel runs and reconciliation, and cut over without interrupting reporting. Warehouse management effort dropped by about 90% and finance reporting now lands before 09:00 every day.
SnowflakeMatillionSSISAWS
Read more

An Operational Data Store on change data capture

34 source databases, 556 tables, about 30-minute latency
Batch extracts were too slow for fraud and operations teams. We built a CDC-fed Operational Data Store on Snowflake Openflow, with dynamic tables for downstream models. Finance, Application Support and Marketing now use it directly, and new source databases are CDC-enabled by default. Fraud data freshness went from twice a day to 30 minutes.
OpenflowCDCDynamic tablesMySQL
Read more

CI/CD for the data warehouse

20+ contributors, about 1,400 changesets, one standard for DE and BI
I designed and built the GitLab pipeline for Snowflake schema changes on Liquibase: merge-request validation, automatic QA deploys, production on merge, drift detection and policy checks that block destructive SQL. It became the standard way both Data Engineering and BI ship database changes.
LiquibaseGitLab CIPolicy checks
Read more

From four weeks to two hours with Maia

A stalled HubSpot integration, working in two hours; the whole estate now migrating
A marketing integration had stalled for weeks on legacy ETL tooling. We trialled Matillion Maia on it and had it working in about two hours. That result made the case to migrate all 670 Matillion ETL jobs. I negotiated the statement of work down from a 36-week vendor estimate to about five, with AI and PII data-handling clauses. Read the customer story.
Matillion MaiaAgentic ETLVendor management
Read more

Building the team

Six engineers, junior to lead; three promotions in October 2026
I wrote the role specs and technical assessment, hired a senior engineer who passed probation at an exceptional standard, converted an intern to a permanent role, and planned three promotions through the budget cycle. I moved our KPIs from competency descriptions to measurable outcomes cascaded from my goals, and introduced 1:1 charters, sprint ceremonies and fortnightly delivery reporting.
HiringKPIsScrumCoaching
Read more

AI on the data platform

Shared AI engineering skills for the team, and LLM apps inside Snowflake
I built the team's AI engineering platform: about 50 shared skills and rules deployed to Claude Code, Cursor and Snowflake Cortex, with per-user credit governance. We shipped a Cortex-powered Customer 360 app in Streamlit. The aim is engineers who spend their time on judgement, not boilerplate.
Snowflake CortexStreamlitClaude Code
Read more
Architecture

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.

Career

Twenty years in data

From BI developer to leading data engineering. Click a role to expand it.

Feb 2023 to present

Data Engineering Manager

Mukuru, cross-border payments, Cape Town
  • 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.
Sep 2021 to Feb 2023

Senior BI Developer

DealX, capital markets analytics (remote)
  • Designed the warehouse for a commercial mortgage-backed securities analytics product: cloud ELT and dimensional modelling in dbt.
  • Evaluated Snowflake, Redshift, BigQuery and Databricks.
May 2018 to Aug 2021

BI Team Lead

xneelo (formerly Hetzner South Africa)
  • 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.
Aug 2016 to Feb 2018

Senior Data Engineer

Aculocity, US automotive engineering
  • SSIS and SSAS Tabular, Master Data Services for a large bill of materials, and an ERP migration.
May 2015 to Mar 2016

BI Manager

Emergency Medical Services, Western Cape Government
  • Set up the EMS BI function, recruited and developed five analysts, and built the emergency dispatch warehouse.
2005 to 2015

BI developer and architect

Saratoga, Dimension Data, CSG, Computacenter, Maitland, MIH, IMQS, Aurecon
  • Warehousing, reporting and integration across fund administration, telecoms, engineering and public sector clients.
Speaking and press

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
Community

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.

COURT 2MATCH 1 OF 9
20:00
READY
Home
0
VS
Away
0

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.

KotlinReactWebSocketsS3

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.

0orders in one weekend
0customers
3weeks to build
Cloudflare PagesD1Playwright

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.

Contact

Let's talk

The fastest way to reach me is email. I am happy to walk through any of this work in more depth.