Workshop
Tools I built for myself
Tools I built for my own use, with AI. None of them is for sale, and every screen here shows made-up data.
Gram Ledger
A one-page food tracker: one verdict for the day, four figures, and what to do next.
Built with: One HTML file, Claude Code
JARVIS Voice and the Command Center
A push-to-talk voice assistant that answers questions about my notes and tasks out loud, and a dashboard of every project's next step, rebuilt from the same notes.

Demo data. Captured 29 September 2026.
Where AI helped
- Its own code uses no npm packages: plain Node.js, ffmpeg for the microphone, and the Claude command line as the brain.
Where AI got it wrong
- For five days every answer was the same apology: the assistant's own Claude login had expired, and nothing said so. It now names the failure instead.
- An evening's conversation was filed under the next day's date, because the date was taken in UTC rather than local time.
Built with: Node.js, with no npm packages, ffmpeg for the microphone, edge-tts for the voice, Claude as the brain, Claude Code
The Studio
A local studio that turns a long screen recording into clips, captions, a long video and thumbnails, and names the one next step each day. Nothing it makes uploads by itself.
Where AI helped
- Four working rooms in one local app, with its own test suite, built with Claude Code.
- A second model (Codex) audited it and found real faults, now fixed: a render replaces a file only once it is checked.
Where AI got it wrong
- It shipped with every save route open to any web page; they now refuse other origins.
- Speech-to-text mishears brand names, so a fixed word list corrects each transcript.
- Its caption lines start up to half a second before their words, and placing words by time put the wrong words on screen. Words are now matched by text.
- Its mock mode once said it was a mock while writing to the real data folder.
Built with: Node.js, ffmpeg, whisper.cpp, HyperFrames, Claude Code
Paper Trail
A private money tracker: each month's bank and card statements read into one ledger that has to balance to the penny.
Built with: Claude Code