Work
Everything worth showing, grouped by what it is, with the stuff I’m proudest of up top.
Showing 14 of 14 projects.
Apps
Consumer products, taken from an idea to something installable.

Beyond25
LiveIt reads the music press before it builds you a playlist.
An AI music curator that does the reading first and remembers what you like. It searches the web live, shows you its sources, and checks every track against a real catalog so nothing it hands you is invented. Save it to Apple Music or YouTube Music in one tap, or send it on to Spotify.
- Expo
- React Native
- TypeScript
- FastAPI
- PostgreSQL
- pgvector

Kate
LiveLike Apple Music, but for songs you recorded yourself.
- Expo
- React Native
- TypeScript
- Swift

Ourlee
In betaOne private space for a couple, or a whole household.
- Expo
- React Native
- React Native Web
- TypeScript

Project Yoked
Shut downThe most ambitious thing I've built. It's off, not gone.
An all-in-one fitness platform: workout tracking, a short-form video feed, nutrition, per-muscle recovery modeling against an anatomical diagram, AI coaching, an Apple Watch app and a trail mapping system. I was co-founder and CTO and built the stack. It's shut down now. The marketing site still loads, the platform behind it doesn't.
- FastAPI
- Python
- React
- React Native
- PostgreSQL
- PostGIS
Client work
Built to a brief, for a business that isn't mine.

EagleChair
In developmentCatalog, quoting and a full CMS for a Houston chair maker.
My first full website for a client: the whole online side of a family-owned commercial seating manufacturer in Houston. Their customers browse the catalog, configure a chair and send a quote. Their staff run all of it from an admin panel with its own CMS, media library, image editor, PDF catalog builder and an AI assistant that's only allowed to suggest.
- FastAPI
- Python
- React
- MySQL
- SQLAlchemy
- Redis

AfriGlyph
LiveAn AI-generated one-pager, rebuilt as a real site.
AfriGlyph sells a reactions API to African fintechs: one call after a payment succeeds returns culturally specific celebration art for the success screen. The founder had got a long way building the landing page with AI, but it was one 174KB HTML file. I rebuilt it as an Astro site, did the mobile layout properly, rewrote the copy and added the API code block.
- Astro
- TypeScript
- CSS custom properties
- GitHub Actions
- GitHub Pages
Games
Where this started, and what it keeps coming back to.
Open source
Tools I needed, published so somebody else doesn't have to write them.

Crucible
LiveGrades what an AI agent just wrote or drew, and names the fix.
An MCP server and CLI that checks game content an agent just generated, then hands back a specific named fix so it can try again. It never calls a model to do that. One tier is deterministic pattern and pixel analysis; the other hands the calling agent a named rubric item and records the verdict it comes back with.
- TypeScript
- Model Context Protocol
- Zod
- resvg
- Commander
- Vitest

YokedCache
LiveOne async API, five backends, and tags that really invalidate.
- Python
- asyncio
- Redis
- Memcached

EncodeForge
LiveAn FFmpeg GUI that doesn't make you learn FFmpeg.
- Python
- PySide6
- Qt 6
- FFmpeg

Kickstart Exchange for Expo
LiveA Swift-only banner SDK, installable from npm.
- TypeScript
- Swift
- SwiftUI
- Expo Modules API

Expo Media Engine
LiveVideo editing in Expo, without the per-year license.
- Kotlin
- Swift
- TypeScript
- Expo Modules API
Older
Kept for the record rather than for the pitch.
