Available now for remote contract work

Three products shipped since March. A fourth on the way.

Each started from what real users said or did. Agents wrote most of the code; nothing shipped without tests, review and a check in a real browser. Two are open source.

Live · real payments

SpiralClass

Booking, payments and video for independent teachers, in one place.

Why
Teachers juggle a calendar, payment links, a video app and chat. This puts it all in one place.
Hard part
Money never touches the platform: it lands in the teacher's own Stripe account. Wise covers countries Stripe doesn't.
Now
Live with one teacher and eight students, taking real payments. Built and run solo.
  • 9,351unit tests
  • 146decision records
  • TypeScript
  • Next.js
  • Postgres
  • Stripe Connect
  • Wise
  • LiveKit
Pilot · one hostel, to 14 October

WantToJoin

Tonight's outings at a hostel, and who's going, on one link.

Why
I read 2,800 messages from a hostel's WhatsApp group first. Hosts posted the same outing all day, so I built for hosts, not guests.
Hard part
Fitting how hosts already work. AI drafts each post in English and Spanish; code checks the times, place and price.
Now
One-week pilot at that hostel. Results, good or bad, go on the case study.
  • 3 daysfrom research to live pilot
  • 50 / 50AI drafts pass every check, at ~$0.0003 each
  • Cloudflare Workers
  • D1
  • PostHog
  • Claude Haiku
Live · open source

Beckon

Your coding agent is waiting. Answer it from your phone.

Why
Agents stop to ask a question while nobody's watching the terminal.
Hard part
Making one tap safe. End-to-end encrypted, and the phone sends a signed choice, never keystrokes.
Now
Live with billing, and self-hostable. No outside users yet.
  • ~20 sto roll back production
  • Go + TSAGPL server, MIT helper
  • Go
  • TypeScript
  • Next.js
  • Postgres
  • WebSockets
  • Web Push
Building now

Stackquake

A change radar for the services your product runs on.

Why
Vendors change pricing and licences in posts nobody reads. Dependency scanners miss hosted services.
Hard part
Notes you can trust. Claude writes them, but a note only publishes if its quote is word for word in the vendor's page.
Now
Running and watching 222 sources across 59 services. Not announced; no users yet.
  • 6 / 6changes caught in the last eval, no false alarms
  • 222sources watched
  • Cloudflare Workers
  • D1
  • TypeScript
  • Claude Haiku
  • Claude Opus

Build with me

The code is open. Pull up a chair.

Beckon and SpiralClass are public, with contributor guides and issues written as plain problems.

Know a problem better than anyone? I'm open to building something new with the right person. Tell me what you've seen.

Need a first version, or a second pair of hands?

Email what you're building and what you need first. I'll reply within a working day.