All projects

Everything I've
shipped.

The full catalog, not just the highlights: AI tooling, production apps, systems software, and the tooling that keeps it all honest.

01
01·Gmail (OAuth)02·Ingestion03·Gemini Suggestion04·Human Review05·Board
Human-in-the-loop AI
AI / Productivity

Flowmail

An AI email productivity platform on Cloud Run with Supabase, integrating Gmail via OAuth. A Gemini-powered feature suggests board organization and automated rules with a human-in-the-loop accept/reject workflow.

Next.jsNode.jsSupabaseGemini API
02
01·Question02·Site Crawler03·SQLite Knowledge Graph04·Tool-calling Agent05·Answer
RAG · tool calling
AI / Enterprise

Drupal Copilot

A working prototype of an LLM tool-calling agent that answers natural-language questions about a Drupal site's content and configuration, backed by a crawler that builds a searchable SQLite knowledge graph.

Next.jsOpenRouterSQLite
03
01·Tenant Action02·Ledger Engine03·KYC Verification04·RLS Storage05·Balance
Solo build, in production
Product / Solo Build

Rynto

A live property management app in daily production, designed and shipped solo. A double-entry ledger tracks balances, with tenant KYC verification and row-level-security private storage.

Expo / React NativeTypeScriptSupabasePostgreSQL
04
01·macOS App State02·WebSocket Server03·Local Network04·RN Companion App
Native menu bar app
Systems / Desktop

Overwatch Node

A native macOS menu bar app in Swift that exposes running apps and system state over a local WebSocket server, paired with a React Native companion app for real-time switching over the local network.

SwiftReact Native (Expo)WebSocket
05
01·Filesystem Scan02·Signature Detection03·SQLite Index04·Git + Disk Enrichment05·Project Page
A local GitHub for your machine
Developer Tooling / Desktop

Roost

A local-first desktop app for developers with hundreds of repos on disk: it scans your machine, gives every project a landing page with git status and README, tracks how much space node_modules and build/target folders are wasting, and cleans them safely through the OS trash. A cross-platform Tauri rewrite of a native macOS app I built first in Swift.

TauriRustReactTypeScript
06
01·SMS / Quick-Entry02·PDF Statement Import03·On-device Parsing04·Reconciliation Engine05·Local SQLite
Offline-first, by design
Finance / On-device

Finance Analyst

A fully on-device personal finance app for Android that reconciles two capture paths, real-time SMS parsing and a one-tap quick-entry prompt, against a monthly bank PDF or CSV statement parsed natively on the phone. Every parser, the database, and the reconciliation engine run locally; no server, no cloud sync, financial data never leaves the device.

Expo / React NativeTypeScriptSQLiteNative Modules
07
01·Sitemap Crawl02·BackstopJS Diff03·GitHub Actions04·Vercel Deploy
Visual regression testing
Testing / Tooling

BackstopJS-UI

A self-hosted visual regression testing tool built on top of BackstopJS, with a GitHub Actions pipeline that crawls a sitemap and deploys reference/test screenshots to Vercel. Built to catch visual regressions before they ship. This kind of automated gate is what let my teams push deployment velocity up 40% without trading away release confidence.

ViteReactPlaywrightBackstopJS