Things I’m building
Works in progress

Furl
Work in progressOne link to collect documents from clients. Each file is read and ticked off a checklist, and reminders chase only what’s missing.
AI reads each upload; plain rules check the quantities (“one W-2 per employer”, “12 months of statements”). Teams, roles and reminder emails.
furldocs.com
Shape
Work in progressClean up a messy spreadsheet by saying what you want, then rerun the same cleanup on next month’s file.
Runs DuckDB in your browser: a million rows, and the file never leaves your computer.
shape.wrkr.run
Redact
Work in progressBlack out names, SSNs, account numbers and other personal details in PDFs and images, then download the redacted copy.
Finds names, SSNs and account numbers with OCR and a name model, entirely in the browser: the file is never uploaded.
pizza-pii.wrkr.run
Shape Media
PrototypeGet a batch of product photos ready for Instagram, Amazon, Etsy and your website at once. Next week’s batch is one click.
Image recipes on Cloudflare Images, with credits and a site-wide daily budget so a public demo can’t run up the bill.
shape-media.wrkr.runJust for fun
Games and toys

Middleword
Three little word puzzles every day: find the word that connects the two. Play with friends and keep your streak.
Daily streaks, stats and a friends board.
middleword.app
Rung
A daily word ladder. Change one letter at a time, every rung a real word, and reach the top in as few moves as you can.
Live presence over WebSockets on a Durable Object, push notifications when the new puzzle drops, and usage tracked in Buoy (below).
rung.sh
Koi World
A shared koi pond. Feed the koi, float a lantern, or swim as a koi yourself with everyone else who’s there.
Everyone in a pond shares one live room over WebSockets.
koi.wrkr.run
Let’s Pick Apples!
A cozy watercolor apple-picking game for little ones: tap, count, find colors, and meet the silly worm friends.
letspickapples.com
Songbird Automaton
A mechanical bird you work yourself. Turn the handwheel, or fling it and let the flywheel coast.
Real cams and gearing, with the drive train explained as it moves.
bird.wrkr.runBehind the scenes
Tools for the projects above
Buoy
Private dashboardMy own analytics for every app I ship. Apps send events from their servers, with no third-party scripts and no cookies on anyone, and Buoy answers “is it growing, and what does it cost?”: funnels by where people came from, with the cost of each step.
Every event is written twice: to D1 for the dashboard, and streamed into an Iceberg table (Parquet files on R2) that’s queryable with SQL, so an app can outgrow D1 without a migration. Rung reports to it.