Loading
I build data pipelines that hold up in production — reliable, tested, and reproducible from raw source to queryable tables. I work in Python, SQL, dbt and DuckDB, with a background in AI and machine learning. Computer Science student at the University of Adelaide.
About
I'm David, a Computer Science (AI) student at the University of Adelaide. I build data pipelines end-to-end — ingestion, modelling and the quality checks that make the output trustworthy — and I care as much about whether a pipeline can be re-run as whether it runs at all.
Most recently I've been a Research Intern in Machine Learning at the University of Adelaide, building reproducible Python experiment pipelines. Before that I worked as an ML engineer at Kaopiz, building computer-vision data pipelines for document images, and as a software engineer at Ecosmartvietnam.
Education
B. Computer Science (AI), Univ. of Adelaide
Experience
Research Intern (ML) at Univ. of Adelaide; Kaopiz, Ecosmartvietnam
Location
Adelaide, Australia
Focus
Data Engineering · Pipelines · Analytics
Skills
Selected Work
An end-to-end pipeline over ROS 2 robot telemetry: raw bag recordings (IMU, odometry, LiDAR) are landed as partitioned Parquet, then transformed through a bronze→silver→gold medallion architecture in dbt and DuckDB. Derives sensor rates from the data rather than trusting nominal rates, so a session that silently dropped 35% of its IMU messages is flagged as degraded. Idempotency is proven, not claimed: make verify rebuilds the warehouse twice and compares the gold layer byte-for-byte.
An autonomous multi-agent system that drives a data-engineering task end-to-end through role-specialised subagents (Planner, Builder, Verifier) in a plan-build-verify loop that returns a machine-checkable pass/fail. Reliability comes from agent design rather than prompting — each role has restricted tools and a file-based data contract is the sole hand-off between stages.
An agentic LLM journaling app that turns unstructured spoken input into typed, schema-validated PostgreSQL rows: a small-model driver runs a reflect-then-probe interview, a strong model extracts Zod-validated structured data with a retry loop, and an editable document writes corrections back through the data layer rather than around it.
A controlled benchmark holding task, data and hardware fixed across four 3D representations (point cloud, dense voxel, sparse voxel, multi-view) on ModelNet40, varying only the representation to isolate its effect on compute. Found multi-view ran up to ~9x faster per epoch than dense voxel at comparable accuracy, and that parameter count did not predict speed.
A Deep Q-Network built from scratch in PyTorch (experience replay, target network, epsilon-greedy) with no RL libraries, reaching a mean score of 28/30 pipes over 100 evaluation episodes. Structured into single-responsibility modules with deterministic PyTest coverage and a seeded, reproducible training pipeline.
A computer-vision pipeline in Python and OpenCV to detect and localise Japanese characters in document images, scripting reproducible preprocessing from raw images to extracted character regions using contour detection and morphological operations.
A full-stack restaurant platform with an ASP.NET Core Web API (Dapper and parameterised raw SQL on PostgreSQL) and React frontends. Modelled a normalised PostgreSQL schema with constraints and indexes backing the hot read paths, routed real-time order data over WebSockets, and persisted third-party events (Stripe payments, Lightspeed POS sync) consistently alongside order records.
Contact
I'm always interested in new opportunities and exciting projects. The fastest way to reach me is email.