I build tools at the intersection of AI, real-time data, and delightful UX — mostly to scratch my own itch, often ending up as something others can use too.
Live audience engagement — physics-animated polling where votes become glowing spheres, plus dynamic word clouds with AI clustering. No app install — scan a QR code and watch results materialize on screen. Built for speakers, facilitators, and storytellers.
Turn any screen recording into an interactive click-through demo. Upload a video and get back a shareable HTML simulation — viewers click through each step at their own pace instead of watching a video. Perfect for product walkthroughs, training guides, and documentation.
Real-time kiln monitoring for ceramic artists at kilnsense.com. Sign in with your KilnAid account to track temperature, firing schedule, and kiln status from any browser.
An interactive AI adoption maturity assessment that guides organizations through a decision-tree questionnaire to evaluate their AI readiness across a three-phase model — Empower, Reshape, and Reinvent.
A Raspberry Pi kiosk app that tracks aircraft overhead in real time using OpenSky Network data. Features two display themes — a vintage Solari split-flap board and a modern Heathrow-style signage — designed for 7″ and 10″ touchscreens.
Brings the Orion Sleep mattress topper into Apple HomeKit. A Hubitat driver plus Postman collection that reverse-engineer the bed's API for temperature and thermal-relief ("hot flash") control — so a physical button can warm, cool, or trigger relief on either side of the bed.
Derived-sunlight automation for exterior shades. Combines solar position, Open-Meteo radiation, facade geometry, and dwell-gated hysteresis to safely control multiple one-way Somfy RTS/Bond shades.
A voice agent that places real phone calls on my behalf, shaped by an LLM's direction and grounding. Ask your assistant to "book a table for four Friday at 7," "confirm the repair appointment in my calendar," or "call this shop and ask if they have it in stock," and it makes the call — disclosing that it's an AI, negotiating only within bounds I set, never fabricating, and reporting back. It can even book a reservation in a language I don't speak: English and Japanese out of the box, with any other language added on the fly (translated prompt + a native voice). Built on Retell and exposed as a hosted MCP server, so any assistant (Claude, ChatGPT, Copilot) can drive it; it learns the details it was missing from each call and re-dials an unanswered call once.
A self-hosted MCP server that books salon appointments through SalonRunner — the booking system my hair salon uses. Ask your assistant to "find a haircut next Tuesday with my usual stylist" or "cancel my Friday appointment," and it lists services and stylists, finds real availability, and books or cancels on my behalf. It reverse-engineers the SalonRunner client API and is exposed to claude.ai as a remote connector — you sign in with your salon login on a consent screen, your credentials are encrypted into the token (so authorization survives scale-to-zero), and one deployment can serve any salon on SalonRunner.