Portfolio

Selected work.

From everyday products to the systems underneath them. A selection of my recent work across full-stack software, native apps, and applied AI.

Household product & applied AI

Hearth

Household meal planning made easy.

A meal management web app designed to streamline planning, shopping, and cooking, using AI to smooth out recipe ingestion and grocery list building.

  • A connected recipe library, weekly meal planner, grocery catalog, and shopping list with duplicate-aware recipe-to-list selection.
  • AI-assisted ingredient matching pipeline with Jev AI: normalize recipe text, retrieve catalog candidates, review suggestions, and save reusable matches.
  • An OAuth-protected Model Context Protocol (MCP) server lets external AI assistants use the same household data and validation as the website.
Interface
React · TypeScript · Vite · Effect
Application & data
Cloudflare Workers · D1/SQLite · Workers AI · Jev AI · EffectTS
Agent access & verification
MCP SDK · OAuth · Cloudflare Access · Vitest · Miniflare
View Hearth on GitHub

Business marketing website and lead operations

Rexford Commercial Capital

From a financing question to a qualified conversation.

A marketing and inquiry platform for a commercial-financing business. Small-business owners can explore real estate, equipment, and working-capital financing, then contact a broker with their needs and referral context intact.

  • Seven financing-service pages with FAQs, structured data, and service-specific consultation forms.
  • Inquiry capture with server-side validation, Turnstile verification, rate limiting, persistent storage, and email delivery tracking.
  • Attribution-aware CRM handoff: campaign context and contact intent accompany inquiries into Attio.
Website
Hugo · Go templates · CSS · JavaScript
Intake & storage
TypeScript · Cloudflare Workers · D1/SQLite · Turnstile
Delivery & integrations
Cloudflare Pages · Attio API · GA4 · GitHub Actions
View Rexford Commercial Capital on GitHub

Cocktail notebook & cross-device sync

Mix Stamp

Find, save, and track your favorite cocktails.

A personal cocktail notebook for home-bar enthusiasts: keep the recipe, the variation, and the memory of making it. Mix Stamp pairs an offline-first iOS client with a React web app, both powered by a shared transactional backend. The web app is available now; the iPhone app is under App Store review.

  • Structured cocktail recipes and variations with quantities, preparation steps, garnish, source attribution, and ingredient scaling.
  • A searchable personal journal: find drinks by name or ingredient, save favorites, and record dated made-stamps and tasting notes.
  • A native iOS notebook with offline editing and incremental synchronization, alongside an online web app with shared-book administration, preset imports, and JSON backups.
  • OAuth-protected MCP tools let AI assistants search, create, and edit recipes through the same permissions and revision checks as the apps.
Native & web
Swift · SwiftUI · Core Data · React · TypeScript · Vite
API & synchronization
Effect · Cloudflare Workers · SQLite Durable Objects
Identity, integrations & verification
WorkOS AuthKit · OAuth · MCP · Vitest · Playwright · Swift tests
Visit Mix Stamp

Private source code

Personal iPhone workspace & AI assistant

Omni

Capture a thought. Keep your day moving.

A personal, offline-first iPhone workspace that brings rapid task capture, an AI assistant, downloaded podcasts, and official weather into one app. Built for a single owner rather than a multi-user productivity service, Omni prioritizes reliable local state and explicit boundaries between on-device data and assistant access. It is a private project, not a publicly available app.

  • Offline task capture by typing or Action Button dictation, using on-device speech recognition on supported devices and languages. Changes persist before networking.
  • A continuing AI-assistant conversation with delegated task agents and tools to read, add, edit, complete, and reopen todos through the app’s canonical mutation journal.
  • A podcast library with RSS import, bounded Wi-Fi downloads, saved playback position and speed, background audio, and lock-screen controls.
  • Official National Weather Service forecasts, alerts, and forecast discussions, with independent refreshes and cached data when a request fails.
Native experience
Swift · SwiftUI · App Intents · Speech · AVFoundation · MediaPlayer
Persistence & backend
Actor-owned JSON replica · TypeScript · Effect · Cloudflare Workers · SQLite Durable Objects
Assistant & access
Pi AI / Pi Durable · Cloudflare Agents · Executor · MCP · Cloudflare Access · Keychain

Private source code

Civic records & public-interest software

Town Crier

Public records. Preserved, searchable, traceable.

A civic records archive from Unhistoric Acts Foundation. Town Crier preserves public meeting records and makes them searchable, with a direct path from each excerpt to the underlying document. The independent archive covers West Orange, New Jersey, and South Portland, Maine, giving people and AI assistants access to source-backed local government information.

  • Preserve original public documents with content hashes, revision metadata, and source links, so readers can trace excerpts back to the record.
  • Extract searchable text from PDF, HTML, and Word documents, with OCR for scanned PDFs and page-linked excerpts.
  • Browse and search by town, public body, document type, and meeting date, with documents connected to their associated meetings.
  • Read-only MCP tools give AI assistants bounded access to document search, source text, meetings, and archive status with citations.
Interface
TypeScript · Browser DOM APIs · Vite · LinkeDOM
Application & agent access
Cloudflare Workers · Effect · TypeScript MCP SDK · Zod
Preservation & processing
D1/SQLite FTS5 · R2 · Cloudflare Workflows & Containers · unpdf · Poppler · Tesseract · antiword · Mammoth
Visit Town Crier

Private source code

Build something useful

Have a problem worth solving?

Get in touch