Selected work

Systems I've built

A focused set of full systems, not snippets. Labelled honestly: what's live, what's still in development, and what's team work.

The Locked In dashboard: a focus-task queue with completed sessions and a year-long deep-work activity heatmap.

Locked In

  • Shipped
  • Live

A focus tool that blocks distractions based on what you're actually trying to do, not a fixed blocklist. Shipped to the Chrome Web Store.

  • A full three-tier system: an MV3 extension + a serverless GCP backend (Hono on Firebase Functions) + a React dashboard, coordinated through Firebase Auth.
  • Goal-aware blocking: a quadratics video passes while a gaming video is blocked, served by Gemini 2.5 Flash with Zod-validated input and output.
  • Real cost/latency engineering: a local verdict cache cuts repeat checks from ~300ms to under 10ms.
  • TypeScript
  • React
  • Chrome MV3
  • Firebase Functions
  • Vertex AI · Gemini
  • Hono

Watt The Hack

  • Lead Engineer · MLAI
  • Team

A Kaggle-style competition platform that securely runs and scores untrusted competitor code at scale. I led the engineering.

  • Worked with MLAI to build an energy-grid simulation engine for a live hackathon that drew 160 participants over 22 teams: modelling solar curtailment, demand/price forecasting, frequency response (FCAS), and adversarial cyberattack scenarios, with hidden-variant scoring against optimal-cost baselines.
  • Architected and deployed a Kubernetes-based (GKE Autopilot) evaluation platform that automatically ran and scored every participant’s submitted control algorithm against hidden grid scenarios, powering a live leaderboard.
  • Led a team of 8 engineers across ML, backend, and infrastructure to design, build, and ship the platform end-to-end.
  • Python
  • FastAPI
  • Kubernetes · GKE
  • Docker · Kaniko
  • RabbitMQ
  • PostgreSQL
The Viterbi Ink canvas library on a tablet: folders of handwritten canvases.

Viterbi

  • Launching soon

The only infinite-canvas ink and handwriting app on Android: smooth vector strokes on a surface that never runs out of room. Launching soon on the Google Play Store.

  • A pressure-aware vector ink engine: strokes are stored as resolution-independent paths, so handwriting stays crisp at any zoom on an effectively infinite canvas.
  • Built natively with Jetpack Compose and a custom Canvas/graphics pipeline, with pan, zoom, and low-latency stroke capture tuned for stylus input.
  • Kotlin
  • Jetpack Compose
  • Android
  • Canvas / Graphics
  • Vector ink
The Modus workflow editor: a saved multi-monitor layout with apps placed on a visual map of the displays.

Modus

  • v0.13.0 released
  • Actively iterating
  • Personal

A Windows 11 tray app that treats a whole working context (apps, a dedicated Chrome profile window, an exact multi-monitor layout) as one named workflow you activate on demand.

  • DPI-safe window placement: positions are stored as fractions of each monitor’s work area, so layouts survive DPI changes and a portrait rotation.
  • Safelist-aware minimize of everything else, four CLI verbs, a tray app with first-run onboarding, and a consumer installer.
  • Ships publicly as a versioned Windows installer with a published SHA-256 checksum; currently v0.13.0, verified live on a mixed-DPI two-monitor desktop.
  • C#
  • .NET 9
  • WPF
  • Win32 API
  • Inno Setup

Gait-Based Early Dementia Detection

  • Final-year project · Monash
  • In development

A self-powered smart insole that captures gait and uses AI to track its variability as an early biomarker of dementia. Predictive, not diagnostic. Built to supplement a GP pathway.

  • A CNN+LSTM model tracks short- and long-term gait variability as an early biomarker of dementia. Predictive, not diagnostic, it supplements a GP pathway.
  • Self-powered hardware: PVDF piezo energy harvesting with hybrid supercapacitor/LiPo storage, FSR pressure sensors and a 6-DOF IMU sampled at ≥100 Hz on a Nordic nRF54L15.
  • Sensor data bursts over BLE to a phone app that runs the model. FYP A (initial paper) done; FYP B (final paper + prototype) in progress, 2026.
  • Nordic nRF54L15
  • PVDF energy harvesting
  • FSR + 6-DOF IMU
  • BLE
  • CNN + LSTM
The Omni AR interface describing a live scene: camera view with scene description, voice controls and memory actions.

Omni AR

  • DeepNeuron · Team
  • Completed

An AR assistant that watches a scene, remembers it, and answers questions about it later. Built for everyday recall, and for people living with memory impairment.

  • A hand-rolled vector memory store with normalized cosine similarity, time-windowed recall, and disk persistence.
  • A low-latency streaming voice pipeline: Whisper → Gemini intent router → sentence-chunked parallel TTS over SSE, tuned for time-to-first-audio.
  • Python
  • Flask
  • React
  • Gemini Vision
  • Whisper
  • SSE
The AutoSMS Play Store feature graphic: scheduled texts shown on two phones, captioned 'Schedule Your Life'.

AutoSMS

  • Live on Google Play

An AI-powered daily SMS scheduler for Android, in clean MVVM Kotlin with production-grade rate-limit backoff.

  • Clean MVVM Kotlin with production-grade rate-limit backoff.
  • Kotlin
  • WorkManager
  • Room
The Heritage wizard: describe a job in plain English on the left, a live ATO-compliant invoice preview on the right.

Heritage

  • Shipped

Describe a job in plain English; get a compliant, print-ready Australian tax invoice in one click.

  • Real ATO tax logic as a single source of truth: GST titling, the $1,000 buyer-ID rule, 47% no-ABN withholding, and a genuine ABN checksum.
  • Plain English → strict JSON via OpenAI Structured Outputs, with an offline fallback parser so it still works with no API key.
  • React
  • Vite
  • OpenAI Structured Outputs
  • @react-pdf
  • Vercel
Quill's settings: transcription shortcut, push-to-talk and on-device model options.

Quill

  • Open source
  • Fork of Handy

A free, open-source speech-to-text desktop app that works completely offline: press a shortcut, speak, and your words appear in any text field.

  • Privacy-focused and fully on-device: transcription happens locally, without sending any audio to the cloud.
  • A fork of Handy by cjpais. The offline transcription foundation is upstream’s work. My contribution is the app-aware post-processing layer the original didn’t have. It formats dictation for the app you’re focused on: code in an editor, a structured email in Outlook, a quick line in Slack.
  • Added local-model integration with Ollama and LM Studio, so transcription can run on fully local models of your choice.
  • Rust
  • Tauri
  • React
  • TypeScript
  • Whisper
The LLM Cost Lab catalog: blended $/1M-token cost meters across providers, with live-sync pricing.

LLM Cost Lab

  • Personal

Compare current (2026) AI model pricing and context windows side by side, then estimate what a real workload would cost per month.

  • Covers Anthropic, OpenAI, Google, Meta, Mistral, and DeepSeek: a sortable spec table, $/1M-token meters, and an estimator that ranks every model by monthly cost for your workload.
  • A self-contained, dependency-light single-page app (no backend, no tracking, no API keys) built with Vite and strict TypeScript, with the cost math covered by vitest.
  • TypeScript
  • Vite
  • Hand-rolled SVG charts
  • vitest

Other builds

  • FrameLift Turn a phone video into a publish-ready still: AI frame selection, HDR-correct colour, and 4× upscaling.
    Python · OpenCV · PyTorch Source
  • Recess Put your LinkedIn feed on a curfew: one mindful 30-minute session a week. Messaging, jobs, and search stay open.
    JavaScript · Chrome MV3 · Shadow DOM Source coming
  • Forge A local-first TypeScript AI agent framework with a pluggable provider layer. Early scaffold: the public types and module layout are in place; implementations land module by module.
    TypeScript · zod · vitest Source coming
  • Pegasus A personal AI agent I run on my own machine and reach from my phone. The interesting part is the permission layer: it asks before doing anything it can't undo.
    TypeScript · Claude Agent SDK · Fastify · Next.js PWA · Tailscale Writeup coming
  • Relay An offline-first AI messaging engine for small business: scheduled SMS/WhatsApp campaigns and a 24/7 AI auto-responder.
    TypeScript · Expo · React Native · Hono · Drizzle · PostgreSQL · Twilio Source