Mobile
06Cross-platform and native, shipped to both stores.

I build software products end to end — the model that makes them intelligent, the checks that prove the output is right, and the app it all ships in.
I founded AppCraft Studios to ship my own work. Slip-Scan is the first out of it and is live on both app stores: line-item OCR, role-based approval workflows and direct sync into Xero and Sage. Four more products are in development behind it, including AfriBush — a wilderness OS with its own LoRa mesh hardware.
Alongside that I built CapeFinAI for a commercial lender — it reads bank statement PDFs, rebuilds the ledger and reconciles it against the totals the bank printed on the page, across a corpus of 246,000 transactions.
Before all of it I rebuilt a yacht club's entire mobile ecosystem alone, trained an MRI classifier past 95% accuracy, and fine-tuned a 7B model to write WebAssembly that actually compiles.
AppCraft StudiosEst. 2025 · Cape Town
Slip-ScanReceipt & invoice captureLive
FinYang AIStatement intelligenceLive
CraveMatchSwipe to your next mealBuilding
TripKitOffline flight copilotBuilding
AfriBushWilderness OS & LoRa meshBuilding“Strategic, entrepreneurial, and technically deep — the combination is the point.”
A financial capture platform that turns a photograph of a receipt into reconciled, approved accounting data.
Line-item OCR reads merchants, dates, taxes, tips and individual items into structured fields — not a photograph filed away, but data a ledger can use.
Teams run on role-based workspaces: owners, managers, accountants and employees, with multi-tier approval workflows, per-employee spend reporting and shared workspace codes.
Eleven report types cover expense, category, profit & loss, tax, line-item and organisation breakdowns, exporting to Excel, PDF, CSV or a zipped archive.
Live on the App Store and Google Play, with direct sync into Xero and Sage.
Role — Founder · Principal Developer
Reads bank statement PDFs, rebuilds the ledger, reconciles it against the bank's own printed totals, and computes DSCR for underwriters.
Extraction runs one stage per request so it fits inside a 60-second serverless limit: a layout-aware text layer is built first, and any page without one escalates to Google Document AI, paged fifteen at a time with the resume position checkpointed against the document.
A regex row parser reads the ledger first; four layout readers — stacked-cell, column-major, column-stream and balance-less — plus cell repair take over where it cannot cope, re-anchoring rows against the statement's running-balance chain so a misread digit is caught by arithmetic rather than by a pattern.
Correctness is proven rather than asserted. Each bank's own printed opening balance, closing balance and, where the layout carries it, turnover are read back off the page and reconciled against the parsed ledger, resolving to one of eight statuses. A figure the statement never printed is never counted against it.
Every number a credit committee reads — DSCR, CFADS, monthly net movement — is computed in a single module, and a lexical guard in the build fails if any other file re-derives one from a raw backend field.

Role — Sole engineer · Commercial lending client
The generalisation of the CapeFin engine into a product: region detection, layout parsing and self-verifying ledgers.
Where CapeFin was built around South African statement layouts, FinYang infers the country from the document itself — scoring currency codes, regulator boilerplate, bank domains, dialling prefixes and identifier shapes against a 68-country registry, and reporting low confidence rather than guessing when two regions score within three points of each other.
Five South African banks have dedicated layout readers; every other institution falls through to a generic ledger parser and is named from its own letterhead. A test fails the build if a borrower's name or a memorised figure ever appears in executable code.
The same self-verification idea carries over: a statement prints the totals its own ledger has to reproduce, and anything short of that publishes as PARTIAL or UNVERIFIABLE rather than as a clean result.

Role — Founder · Principal Developer
A South African software studio building a portfolio of AI and financial-automation products.
Founded AppCraft Studios (Pty) Ltd to design, build and ship products under one roof rather than one client engagement at a time.
Five products sit in the portfolio: Slip-Scan in production, with FinYang AI, CraveMatch, TripKit and AfriBush in development.
The studio also takes on select engineering work — cross-platform apps, cloud backends, bespoke models and design systems.

Role — Founder · Principal Developer
A fine-tuned 7B model that emits executable WebAssembly, verified symbolically before it runs.
Fine-tuned a 7B parameter language model on more than 28,000 synthetic samples to generate WebAssembly binaries.
A neuro-symbolic verification layer checks every output, achieving 100% compilation validity across the evaluation set.

Role — Research · Engineering
A physics-driven swipe deck that scores recipes against your taste vector and what is already in your fridge.
Every swipe recalibrates a taste vector, so the deck sharpens as you use it rather than reshuffling the same suggestions.
Recipes are scored by overlap with your pantry inventory, which turns 'what do I cook' into 'what can I cook without shopping'.
Draws on 797+ chef collections, from Gordon Ramsay and Jamie Oliver through to street food.

Role — Founder · Principal Developer
In-flight telemetry, itineraries and peer-to-peer games — all working with the Wi-Fi off.
Reads GNSS directly in airplane mode for altitude, ground speed and route ETA, with no connection at all.
Day-by-day itineraries pull live destination weather, gates and reservations while you still have signal, then keep working when you do not.
An offline lounge runs peer-to-peer multiplayer Rummikub and chess between passengers, plus a travel wallet for stacked boarding passes and eSIM data.

Role — Founder · Principal Developer
A sovereign wilderness operating system and the radio hardware to run it, where there is no signal at all.
Offline satellite navigation across Greater Kruger and the Mara: reserve GIS, roads and tracks rendered from vector tiles held on the device, with no connection expected at any point.
The ATLAS X1 unit carries a 15 km vehicle-to-vehicle LoRa mesh, so a convoy keeps position, telemetry and messaging between its own vehicles once the towers are gone.
Bush ID reads whisker-spot and trait patterns to identify individual animals from a photograph, and ten percent of proceeds is committed to anti-poaching work.

Role — Founder · Principal Developer
A Temporal Fusion Transformer that forecasts crude oil direction from a decade of supply-chain signal.
Engineered a Temporal Fusion Transformer over ten years of multi-modal supply chain data to forecast WTI crude price direction.
The model reads tanker movement, inventory and macro series together rather than treating price as a lone time series.
Role — Research · Engineering
A binary classifier trained on 4,500+ MRI scans to flag the presence of brain tumours.
Trained a binary logistic regression classifier on over 4,500 MRI images, reaching 95%+ accuracy on held-out data.
The pipeline handles preprocessing, feature extraction and evaluation end to end.

Role — AI Solutions · Emeris
A cybersecurity agent that reasons over language using edit distance, cosine similarity and GloVe.
Combined Levenshtein edit distance, cosine similarity and GloVe embeddings into a single scoring pipeline.
The result is an agent that recognises malicious intent phrased in ways a keyword filter would miss.

Role — Engineering
Took over an ageing Tempus ecosystem and rebuilt it cross-platform, alone.
Overhauled the existing ecosystem, using Flutter to bring the club onto one cross-platform codebase.
Stripped out redundant systems, untangled outdated transitive dependencies, redesigned the interface and cloned the infrastructure for a safe cutover.

Role — Sole Mobile App Developer
Mobile, web, models and infrastructure. I ship products where every layer is mine, which is why they get finished.
Cross-platform and native, shipped to both stores.
Product surfaces that hold up in production.
Models trained, fine-tuned and verified.
The parts nobody sees and everybody depends on.
Deploy, automate, keep it running.
Ethical hacking as a discipline, not a hobby.
Photograph a receipt or pull a batch from the gallery. Line-item OCR reads the merchant, date, tax, tips and every individual item — including handwritten totals and margin notes.
Everything lands in a searchable gallery, filterable by role, team member, vendor and date. Foreign currencies are detected automatically and receipts translate from over a hundred languages.
Approved expenses push straight into Xero and Sage from the phone itself — reconciled without a laptop, which as far as the market goes is a first.
A business dashboard tracks spend, tax totals and top spenders across the workspace — with an AI assistant you can simply ask, and exports to Excel, PDF or CSV.




A layout-aware text layer is built first. Any page without one escalates to Document AI, paged fifteen at a time and checkpointed so every request finishes inside a 60-second serverless limit.
Where the row parser cannot cope, stacked-cell, column-major, column-stream and balance-less readers take over — re-anchoring rows against the running-balance chain, so a misread digit is caught by arithmetic rather than by a pattern.
The statement prints the totals its own ledger must reproduce. Anything short of a full match publishes as PARTIAL, OPENING-ONLY or UNVERIFIABLE — and a figure the bank never printed is never counted against the document.
CFADS, pre- and post-deal DSCR and twenty-one weighted conduct-risk indicators are computed deterministically, then a Gemini pass cross-audits the summary against the ledger totals.



