I build software for a living and then carry on building it after hours. Most of what I ship sits in private repositories, so this page is the part I can talk about: my own products, the stack I reach for, and a contribution graph that is greener than my public repo count suggests.
| Web platforms | Next.js front ends on real-time backends. Dashboards, marketplaces, booking and ordering systems, customer portals. |
| Mobile apps | Native iOS in Swift when the app needs the system APIs, Expo and React Native when it needs to run everywhere. |
| Backend and data | Convex and Supabase. Schemas, auth, payments, webhooks, background jobs, the parts nobody sees until they fail. |
| AI where it earns its place | Drafting, extraction, classification and agents wired into products that already work, not demos that only work on stage. |
Front end
Backend and infrastructure
Tooling
| Project | What it is | Built with |
|---|---|---|
| Crooh | Field service management for service businesses. Job cards, scheduling, time tracking, inventory, inspections and the client comms around them. | Next.js, Convex, Expo |
| Crooh Rentals | The operations layer for property. Maintenance, inspections, statutory compliance, assets and contractors across residential and commercial portfolios, on the Crooh field-service engine. | Next.js, Convex |
| Bulq | Trade pricing for Shopify stores that are not on Plus. Admin UI, OAuth, webhooks and app proxy run from one deployment, and checkout pricing runs in a Shopify discount function. | Convex, Shopify Functions |
| Pauz | Identity-first habit app for iOS. Puts deliberate friction between you and the apps eating your day, and helps you build the habits you actually want to live into. | Swift, Screen Time APIs, watchOS |
| Hey Cardboard | Every card you own, priced. Scan a shelf of Pokemon, sports or Yu-Gi-Oh cards and know what the collection is worth. | iOS, Vercel |
Most of my work sits in private repositories, so the graph below is the honest picture of the last year.
Pair Extraordinaire at gold means 48 or more merged pull requests written with a co-author. Pull Shark at silver means 128 or more merged. Quickdraw is closing an issue or pull request inside five minutes, and YOLO is merging without review, which is either confidence or a bad Friday.



