Client work

Live

RateSmart Finance

A finance broker losing enquiries to a form nobody trusted. I owned delivery end to end: a guided multi-step quote funnel that asks only what it needs at each step, a live repayment estimator, and enquiry delivery with a fallback transport so a lead never silently disappears. It ships in two modes — a database-free public site, or the same codebase with a CMS back office when they want to run their own pipeline. Deployed to their own domain, with lint, typecheck, unit and Playwright gates standing between a commit and production.

  • Next.js
  • TypeScript
  • Payload CMS
  • PostgreSQL
  • Vercel
  • Playwright
Delivered

ERP replacement — regional IT services company

A Western Victoria tech company running a legacy Laravel website beside an ageing CRM, with the real business living in the gap between them. I replaced both with a single Odoo 18 platform — 11 custom modules spanning e-commerce, job management, printer leasing, BYOD school portals, barcoding and passkey/FIDO2 auth — and wrote the migration tooling that carried jobs, parts, pricing and stock history across. The constraint that shaped every decision: they had to keep trading through the cutover.

  • Odoo 18
  • Python
  • PostgreSQL
  • data migration & ETL
  • FIDO2/passkeys
  • Docker
In delivery

VANTIX Courier — operations platform

A Sydney same-day courier running on phone calls and memory. I built their operating system on Odoo 18: seven custom modules covering CRM and lead capture, dispatch, route and stop planning, a driver portal with photo proof-of-delivery, pricing, and the public booking funnel. A quote request on the website becomes a CRM lead, becomes a dispatch, becomes a delivery with evidence attached — one continuous path instead of four disconnected tools. Dockerised behind Nginx with HTTPS enforcement, Australian tax localisation, a tagged test suite, and nightly automated backups of database, filestore and addons.

  • Odoo 18
  • Python
  • PostgreSQL
  • Docker · Nginx
  • Cloudflare Tunnel
Internal platform — runs behind the client's login, so there's no public URL to show.
Live

Artscience Landscape Designs

A landscape documentation and 3D visualisation practice with no way to track a project enquiry past the inbox. Marketing site, project enquiry funnel, and a CMS-backed CRM with a kanban board for moving work from lead to job. The interesting part isn't the site — it's that I factored the shared spine out of the RateSmart build first, so this one shipped in a fraction of the time. Two clients, one maintained base, no copy-paste drift.

  • Next.js
  • Payload CMS
  • PostgreSQL
  • shared product base

Platform work

Live × 3

Hatchyverse — one product, three architectures

The consumer platform I led as Creative & Technical Director. I hired and ran the cross-disciplinary design, engineering and operations team, and owned architecture for the public product API — Node/TypeScript with TSOA-generated OpenAPI and C# clients, PostgreSQL, Firebase Auth, and PDF and image pipelines. Took it from concept to live users and a top-150 category placing.

Years later I'm still the engineer on it, and the AWS bill had outgrown the product. Rather than guess at a replacement, I ran the same platform on three different architectures and kept all three live so the trade-offs are measurable rather than theoretical: the original always-on backend, a serverless line on Vercel, and an experimental peer-seeded build where the site is distributed across seeding nodes instead of served from one origin. Cost, cold-start behaviour, and failure modes differ sharply between them.

The hard part was never the hosting. It was carrying real accounts across without dropping them — existing Google and wallet-linked identities had to survive every move — which meant a parity verification pass surface by surface before each cutover. I also rebuilt sign-in as a progressive ladder and closed session-revocation gaps server-side, so signing out actually ends the session.

  • Node · TypeScript
  • Next.js
  • TSOA · OpenAPI
  • PostgreSQL
  • serverless vs always-on
  • peer-to-peer distribution
  • auth hardening
  • parity testing

How the work is checked

Working without a colleague to review me, the review has to come from somewhere — so it is automated. Nothing lands without passing lint, typecheck, unit and end-to-end gates, and architecture decisions go through a multi-model adversarial review before they ship. I treat model output as untrusted input: typed interfaces, evidence-gated verification, and a live end-to-end proof against a running system rather than a passing mock. The valuable part is the gate, not the tooling around it.

  • typed/structured outputs
  • eval & gate loops
  • MCP servers
  • knowledge-graph impact analysis
Live

piconation & picoSpaces

A Rust-first, owner-controlled stack for identity, private collaboration, governance and signed publishing — built around one honest test: create an identity, run a community, publish a signed site, lose every device you own, and recover from independent holders. The completion board grades itself publicly and it is not graded generously; I'd rather ship a release that reports an F against its own contract than one that quietly claims a pass. Tauri desktop and Android clients, libp2p discovery, signed bootstrap manifests, release-time security gating.

  • Rust
  • Tauri
  • libp2p
  • signed manifests
  • release gating

picoRMM — multi-tenant monitoring

Go gRPC agents on customer endpoints stream telemetry through NATS JetStream into a FastAPI control plane on TimescaleDB. An analysis engine returns typed root-cause objects, and a per-tenant policy engine decides which proposed action is allowed to execute, logging every decision for audit. Hardened with refresh-token replay defence, MFA enrolment and rate limiting. The model gets to suggest; the policy engine gets to decide.

About

I'm based in rural Victoria and work remotely across Australia. I spent a decade leading product and design teams, and years before that in cross-industry operations — finance, construction, logistics, manufacturing, hospitality. That chapter is the reason I start by modelling the business rather than the schema, and the reason I can walk into an unfamiliar stack — Odoo, Laravel, Spring, Unity, Tauri, gRPC — and find where the work actually is.

What I want next is a team. The last year has been end-to-end ownership on my own, which taught me more about production consequences than any role I've held — but I learn fastest with people to review against, and that's the part I'm missing.

Get in touch

Open to mid-level permanent roles, and to contract work through my studio, PicoDevCo — fixed-scope builds, ongoing retainer, or day-rate augmentation. Remote across Australia, onsite in Sydney or Melbourne by arrangement. Clients own their code, domains and accounts, and I reply to every enquiry within one business day.