Crate
Personal product · soloNext.js PWAAnonymous music discovery built around Builds: curator-authored discovery recipes (a search space, not a playlist) that generate fresh tracks per listener, per run. The north star: “how did I not know this existed?” Crate digging instead of feed consumption.
Problem
Feeds keep recommending what everyone else already hears, and playlists go stale once shared. I wanted discovery that stays generative: you share a recipe, and every listener digs up different tracks.
Technical highlights
- Builds are generators. A Build stores sliders (obscurity, weirdness, energy) plus free text, never a track list. Each run seeds a new exploration of the same space (documented as an ADR).
- Ratings are an append-only event stream. Current state is a fold over the latest event per user and track, and all interpretation happens downstream of storage, so gesture semantics can change without migrations.
- One scoring vocabulary, shared by client and server: novelty from listener counts, graph-hop depth, Rare Hit multipliers and an anti-gaming Build Score.
- Heuristic recommender: a Last.fm / MusicBrainz graph walk that records a “dig trail” for every track, shown in the player as provenance.
- Claude-powered vibe search over your history (“forgot the title, remember the feel”), with keyword ranking as the fallback.
- Runs at $0: keyless YouTube playback in a persistent dock that survives navigation, a graceful mock fallback without API keys, and pocket mode using the Screen Wake Lock API.
Stack
Role
Solo: product concept, domain model and ADRs, UX, frontend, API and recommender. It runs locally and is not publicly deployed.





