Totals from synced weekly buckets (additions = lines added per provider APIs).
Additions and commits by week
Scaled smart metering across 350+ schools; ~720M litres and ~R52M water savings realised. Led real programme delivery for BridgIoT's schools potable-water work with Shoprite CSI, WCED and maintenance partners. Dropula meters were rolled out across hundreds of schools, while dashboards translated pulse data into baselines, leak and burst alerts, nighttime-flow diagnostics, sponsor reporting and targeted maintenance decisions. A later 2018 stakeholder report captured the operating model at scale: 350 schools and roughly 330,000 learners reached, 216M litres saved at that stage, 85% of schools showing day-to-day savings, and first-round maintenance improving usage at 81% of schools. The programme later contributed to about 720M litres saved and about R52M in water savings.
Replaced fragile spreadsheet planning with repeatable what-if production, procurement, and stockout runs. Personally built a production-planning and stockout simulator for hardware operations where demand, inventory, BOMs, supplier lead times and cash constraints all move at once. The Python/Streamlit app turns deployment plans, component stock, assembly BOMs, on-order inventory, minimum stock levels and supplier constraints into scenario-based production, procurement, stockout, cost and monthly reporting outputs. It replaced fragile spreadsheet-only planning with repeatable what-if runs, persisted scenarios, downloadable reports, BOM cost visibility and a simulation engine that can run through the UI or headlessly. Built in a real manufacturing context and presented as my own operations-software build, not as a commercial product listing.
Grew monitoring from ~2,500 manual checks to 15,870+ devices with automated daily triage. Led product ownership for Plentify's fleet monitoring workflow, moving daily hardware, sensor, connectivity, and heating checks from manual review toward automated detection, triage, and reporting. The work improved issue labeling, operator UX, metrics, detection logic, support handoffs, and feedback loops for data-science refinement. It helped the same team scale from monitoring roughly 2,500 units manually to 15,870+ deployed devices across 80+ deployments, with automated daily rollups, clearer escalation workflows, better reporting, and a continuously improving labeled dataset.
Stood up owned BI so the fleet team could self-serve metrics without a bespoke analytics build. Deployed and shaped a team-owned Metabase business-intelligence platform for Plentify fleet operations, then documented the operational databases well enough to make self-service analytics practical. The work included Follower and Precog data models, canonical joins, glossary terms, metric definitions, SQL quality checks, backup and extraction workflows, dashboard plans, communications rollups, and reliability-reporting pipelines. That documentation enabled safer natural-language SQL generation and reduced dependence on a costly bespoke analytics build: the result was a modifiable, owned, widely used BI capability that could evolve with the business.
Shipped a WhatsApp-first theft-response product across hardware, cloud, and recovery partners. Product-managed 3BO, a WhatsApp-first bicycle and last-mile asset tracking platform built around rapid theft response. The product scope covered embedded Teltonika tracker configuration, GPS telemetry ingestion, AWS serverless processing, MongoDB device and ride state, WhatsApp alerts and commands, recovery-partner escalation, React/TypeScript customer and admin dashboards, Metabase analytics, onboarding, and FOTA operations. My role was product framing, roadmap and backlog management, workflow definition, stakeholder alignment, QA coordination, and launch readiness across hardware, backend, messaging, analytics, and recovery workstreams.
Turned 100k+ SA legal sources into cited, searchable evidence via RAG infrastructure. Deployed and operate Avocado Legal Corpus, a South African legal retrieval platform that turns public legal sources into searchable, cited evidence. The system discovers and registers source URLs, downloads PDFs and HTML, processes layout-aware OCR, splits gazettes, manages review queues, and schedules vector ingestion from a registry of more than 100,000 source records. It chunks files with page metadata, embeds them with BGE, upserts Qdrant collections, exposes health/search/status APIs, and serves MCP tools that return quoted legal passages with citations rather than generic AI answers.
Built a +6h to +72h shore-diving visibility forecast from field reports and marine data. Built Vis, a Cape Peninsula diving-visibility forecasting system that combines field reports, marine conditions, coastal geometry, and review workflows into a practical forecasting pipeline. It mines WhatsApp, social, and public dive observations, routes labels through a Streamlit reviewer, enriches them with Open-Meteo and Copernicus history, and trains physics-first ML and analog models. The system produces a water-filtered H3 shore-diving grid, +6h to +72h forecasts, MVT/GeoJSON artifacts, access and MPA masks, and product contracts for a future map experience.
Cum Laude MEng that diagnosed copper sinter-infiltration defects and produced process guidance for industry. Completed the Cum Laude MEng project "A study of copper infiltration for conventional ferrous powder metallurgy" at Stellenbosch University. The research commissioned and refurbished a pusher furnace, calibrated process-gas controls, studied delubrication behaviour, and compared furnace operating strategies for copper sinter-infiltration of ferrous powder-metallurgy samples. It combined furnace modification, thermal analysis, controlled atmosphere experiments, sectioning, polishing, SEM/EDS microscopy, defect diagnosis, and process-guideline development to explain black residue, copper pooling, copper balling, and infiltration reliability.
Unified multi-provider SIM data into assignment, staleness, and connectivity intelligence. Built a multi-provider SIM operations platform for Plentify fleet connectivity work. The system integrates 1oT, SIM Control, Hologram, and Telit data; normalizes ICCID, EID, and IMEI identifiers; exports Follower database snapshots; validates cross-source SIM assignments; detects stale or unassociated SIMs; and analyzes deployment distance, network operators, and hourly connectivity. It now includes a Flask workflow API, async job tracking, downloadable outputs, Google Sheets refresh support, a Flutter web interface, and a path from CSV analysis to scheduled monitoring.
Redesigned and validated a low-power FAST sintering rig through to a successful cobalt sinter. Built and validated the final-year BEng project "Refinement of a FAST (Field Assisted Sintering Technique) Apparatus" at Stellenbosch University. The work assessed an existing low-power sintering rig, redesigned the force actuation system, repaired sealing and electrical paths, commissioned new graphite punches, and used FEM plus COMSOL multiphysics modelling to understand stress, resistance, and temperature limits. The apparatus successfully sintered a cobalt sample, supported microscopy and density analysis, and showed that FAST research could be performed with a smaller, lower-cost power supply than commercial systems.
Live Clifton & Praia weather/tide boards with shared automation so both sites stay in sync. Built a pair of location-specific Beach Ultimate weather dashboards for Clifton in Cape Town and Praia da Rocha in Portimao. The dashboards share one static GitHub Pages pattern with location configuration, automated data refreshes, generated HTML, weather and tide data, busyness signals, and lightweight charting for players deciding when conditions are worth a game. The project also solved the multi-repo maintenance problem: Clifton and Praia stay aligned through shared scripts, matching workflows, documented secrets, and a repeatable deployment process while keeping each public page location-specific.
ShareWear is the wardrobe a private circle actually uses. Friends and family catalogue clothes, ask to borrow a piece, and see what is already out on loan. I built it as Our Wardrobe, a Flutter and Firebase app, and locked the public name as ShareWear in October 2026. An email invite brings someone into a wardrobe. Each item can hold several photos. A borrow request becomes an active loan, and email notifications cover the handoff. Sign-in is Google, Apple, or email. One canonical item can appear in more than one wardrobe through a link, so the same garment is not copied into a second catalogue. Continuous integration deploys the web build to Firebase Hosting. The public site is sharewear.app, and the app itself is at sharewear.app/app/.
Two live rental sites from one Notion + Next.js publishing system. Built two production rental-property websites, Hiddingh Village and Camps Bay Vistas, from a reusable Next.js and Cloudflare deployment pattern. Each site has its own brand, domain, map link, inquiry flow, Notion-managed content, and Google Drive image gallery, while sharing the same reliable publishing model. The result is a repeatable small-property website system: owners can update copy and imagery through familiar tools, and each public site remains fast, maintainable, and tailored to the property instead of becoming a fragile one-off static page.
Governed multi-agent runtime for research, ops, retrieval, and maintenance workflows. Built and operate OpenClaw Personal, a self-hosted multi-agent operations platform that coordinates specialist assistants across research, task management, retrieval, compliance, procurement, and infrastructure workflows. The project brings together agent identities, model fallback tiers, MCP integrations, skills, plugins, deployment automation, scheduled maintenance, and knowledge-map tooling into one governed runtime. Its value is not another chatbot; it is a durable personal automation layer with clear responsibilities, auditable workflows, and reusable integration patterns.
Daily AP/client monitoring with roam/association events tied back to fleet records. Built an Edgecore ecCLOUD monitoring interface for Plentify fleet operations. The system polls managed access-point sites, records AP health and last-contact status, captures wireless client association snapshots, detects association, disassociation, and roaming events, and enriches MAC observations against fleet records. The first production workflow runs as a scheduled daily sync with review tabs for AP status, current associations, event history, poll audit, and registry data, establishing the data model for higher-frequency monitoring when needed.
This site: Notion as CMS, with SEO, OG, profile.json, and llm.txt built in. Built this Notion-backed personal website as a structured public portfolio rather than a hand-edited resume page. Notion is the content system for projects, experience, skills, and profile data; the Next.js site renders that content into a project-first interface with SEO metadata, Open Graph output, JSON profile data, llm.txt, sitemap and robots routes, PDF assets, and gated reveal flows for sensitive links. The current migration work moves the site from a VM-hosted Docker deployment toward Cloudflare Pages so the same public URLs can run with less operational fragility.
Delivered a certified warehouse climbing wall under budget, with a safe access operating model. Designed and delivered a 9 m by 2.44 m self-supporting steel-frame climbing wall for the Plentify warehouse. The project moved from concept and budgeting through fabrication, route setting, safety controls, certification, and employee access governance. It was completed under budget, which left room to buy shared climbing shoes, and the operating model requires signed indemnities, belay certification, mandatory climbing shoes, controlled access, and yearly structural inspection. The outcome was a durable staff-wellness asset with the safety process needed to keep it usable.
Pipeline from ChatGPT exports to structured, Notion/Outline-ready knowledge bases. Built a local ChatGPT export and knowledge-base migration pipeline that turns conversation history into structured, publishable reference material. The Python workflow discovers workspaces and projects, resumes interrupted exports, writes full conversation JSON atomically, routes conversations into personal and work knowledge trees, synthesizes domain articles with Gemini/Vertex AI, splits long outputs into Notion-ready sub-pages, and supports publishing to Notion or Outline through configured integrations. Raw exports, generated knowledge bases, settings, and secrets stay local unless a publishing target is explicitly configured.
Privacy-first, ephemeral PDF unlock API with rate limits and auto-cleanup. Built the backend foundation for a privacy-first PDF password removal service for users who already know their document passwords. The FastAPI service creates short-lived sessions, validates PDF uploads by size and file signature, tests user-provided password candidates with pikepdf, returns per-file success or failure, and serves unlocked PDFs from ephemeral storage. It is packaged for Cloud Run with IP and session rate limits, 30-minute cleanup, file and password caps, CORS controls, health checks, OpenAPI docs, Docker packaging, and integration tests using generated locked PDFs.
WinDirStat-style Drive storage treemap from resumable metadata scans. Built DriveStat, a Google Drive storage analyzer that turns Drive metadata into a WinDirStat-style dashboard. The Google Apps Script and Sheets workflow scans My Drive or visible shared drives in resumable batches, writes raw file metadata to Sheets, aggregates folder totals and hierarchy views, and builds dashboards for top folders, top files, file types, depth summaries, and stacked folder charts. It also serves an HTML Google Charts treemap, while staying read-only against Drive content and accounting for quota behavior around Google-native files.
Early solo CAD/aero build that started the engineering practice. Completed a solo F1 in Schools model-car project before formal engineering training, using it to self-teach SolidWorks, CAD iteration, and first-principles aerodynamic tradeoffs. The design centered on a whale-tail-inspired rear aerofoil for stability while prioritizing low-drag airflow over downforce-heavy alternatives. The final car combined a CNC-machined balsa body, printed rear wing, and lightweight low-friction wheels, making the project an early practical exercise in design constraints, manufacturing, testing, and engineering judgement.
A group gift should stay a surprise, and the organiser should not have to run a second spreadsheet. Piñata is a WhatsApp-native gift circle. The owner shares one link and sees the wishlist. Friends claim items and pool a contribution behind a single buyer. The owner sees that a gift is covered, not who is paying. The app does not hold the money. I am building it for the Meta Global AI Developer Hackathon, and it is not a launched service. On 27 October 2026 the local app passed 393 Vitest tests, a production build, and 10 Chromium flows. Live WhatsApp delivery and possession-checked login are still open.
Beekeepers lose a hand to the bellows while they work the frames. Beesmoke is a retrofit electric blower handle for a standard metal bee smoker. It holds a steady draw so the fire stays lit, and the beekeeper keeps the canister they already trust. I am designing the hardware under the engineering name HoneyPot, with the electronics in KiCad and Altium. The public site at beesmoke.co.za is a waitlist. A hardware preview exists, and its specs are still estimates until design sign-off, so this card does not quote them and does not say the handle is shipping.
A standing desk that packs flat and changes height without a motor. In 2021 I took Outstanding Desks from CAD into a production-run nest: sheet parts for a wooden standing desk, side panels with a row of slots so the top moves to a new height, and laptop-stand pieces nested in the same sheets. This is the design that was drawn and nested for manufacture. It is not a product on sale. This card does not carry prices or a claim about how many were built.
Passwords were landing in project files and in chat. I run a personal Vaultwarden instance so those secrets stay in a vault I control, on a small virtual machine, with off-machine backups and a local broker. The broker lets a coding agent ask for a secret by name and receive it in the process, so the value is not written into the repository. The vault address stays off this card, along with machine names, backup credentials, and which projects have been moved.
Coding agents on this machine were each reading a different copy of the same instructions. Skills Management keeps one library, and a junction points every agent folder at that store. The desktop app lists and searches the skills, scores instruction files, checks the junctions, and shows hooks and copies inside product repositories that have drifted. A local command-line tool and JSON API sit under the app. On 2 November 2026 a count of that library showed 582 skills, 152 listed and 430 unlisted.