I work with small businesses and nonprofits to identify problems and build the right tech solutions — so they can focus on their work, not their tools. If you have a problem, big or small, that you think software or data could help solve, .
Professional Experience
MakaseData EngineerSept 2025 – Present · Remote
Built the billing and payments core of Makase, a practice-management platform for law firms — a multi-tenant TypeScript monorepo (Hono API, React, Postgres/Supabase) with row-level security isolating every firm's data
Designed a legal-grade billing engine: versioned fee agreements with a four-tier rate hierarchy, flat-fee credits that net against hourly work, invoice amounts frozen at approval, and an append-only payment ledger that respects IOLTA trust accounting
Shipped online invoice payments on Stripe Connect — embedded KYC onboarding gives each firm its own account, clients pay by card or ACH through a least-privilege portal, and an idempotent webhook worker ensures no event can ever double-record a dollar
Backed it with production discipline: a fine-grained role/permission catalog, integration tests pinning bookkeeping invariants, and tenant-scoping audits on privileged code paths
MakaseData EngineerSept 2025 – Present · Remote
Built the billing and payments core of Makase, a practice-management platform for law firms — a multi-tenant TypeScript monorepo (Hono API, React, Postgres/Supabase) with row-level security isolating every firm's data
Designed a legal-grade billing engine: versioned fee agreements with a four-tier rate hierarchy, flat-fee credits that net against hourly work, invoice amounts frozen at approval, and an append-only payment ledger that respects IOLTA trust accounting
Shipped online invoice payments on Stripe Connect — embedded KYC onboarding gives each firm its own account, clients pay by card or ACH through a least-privilege portal, and an idempotent webhook worker ensures no event can ever double-record a dollar
Backed it with production discipline: a fine-grained role/permission catalog, integration tests pinning bookkeeping invariants, and tenant-scoping audits on privileged code paths
Street sweeping occurs on the second and fourth Monday and Thursday on the streets near my house. I've gotten quite a few tickets because I forget to move my car in the morning.
Solution
An iOS Shortcut shares your location, the app identifies your exact street and block side using geospatial analysis of SF Open Data, and a cron job sends push notifications before upcoming sweeps. Self-hosted on a $12/month Digital Ocean droplet.
I want to see more music at these really cool local venues, but I don't know most of the artists coming into town. I'd sit at home scrolling through the venue website, typing each artist into Spotify, listening, and deciding if I wanted to go. It was time consuming.
Solution
Scrapes your favorite venue lineups and automatically builds Spotify playlists with tracks from upcoming artists. Connect your Spotify account, pick your venues, and the playlists update themselves.
Can you predict how dangerous an intersection is just from an aerial photo?
Solution
Scraped 1,731 aerial images from Google Maps, combined them with 20 years of SF collision data, and trained a multi-modal model using ResNet50 image embeddings merged with infrastructure features. Achieved 79% accuracy (R²=0.79) — the built environment accounts for nearly 80% of collision frequency variation.