bt.

Apps

Each one started as a problem for one person. All screenshots are the real thing.

Season Palette

iPhone + web · since Dec 2024

My girlfriend wanted a color analysis, the kind people fly to Korea for. I talked her out of the flight and built her an app instead.

made for my girlfriend
Season Palette: color analysis report with season wheelSeason Palette: your 35 best colorsSeason Palette: ready-made outfitsSeason Palette: colors to avoidseasonpalette.app homepage

How it works

  1. Take one daylight selfie. On-device MediaPipe and Core ML split out your skin, hair and eyes.
  2. A Cloudflare Worker asks Gemini to place you in one of the 12 seasons, then builds your palette.
  3. The palette then styles clothes, makeup, hair and jewelry. Virtual try-on runs on Gemini's image model.

Built with

SwiftUIMediaPipeCore MLGeminiCloudflare WorkersFirebaseRevenueCatNext.js

Audio Notes AI

iPhone + web · since May 2026

I got tired of people yapping when all I wanted was the TL;DR. So I made an app that tidies the notes for me.

made for me
Audio Notes AI: never take notes againAudio Notes AI: one-click transcriptAudio Notes AI: AI summary and action itemsAudio Notes AI: ask anything about your recordinggetaudionote.com homepage

How it works

  1. Record on your iPhone or in the browser, or upload a file.
  2. A Cloudflare Worker queues the job. Whisper large-v3 transcribes it, then an LLM writes the summary and action items.
  3. About a minute later you can search every word, ask questions, translate or share a link that expires.

Built with

SwiftUIHonoCloudflare WorkersD1 · R2 · QueuesWhisperOpenRouterRevenueCat

Thoccy

Mac · since Apr 2026

My girlfriend loves the thock of a mechanical keyboard. I wanted it on my MacBook, so I built it.

made for her ears, my keyboard
Thoccy menu-bar panel with switch pickerthoccy.com homepage

How it works

  1. A menu-bar app that plays a real recorded switch on every keystroke, in every app.
  2. Pick Topre, MX Blue, MX Brown, Oreo or Crystal. Sparkle handles updates.
  3. You buy once through Stripe. Licence keys are signed with Ed25519 and checked by Cloudflare Pages Functions and D1.

Built with

SwiftSwiftUISparkleStripeCloudflare PagesD1Next.js