SIDE PROJECT · IN PROGRESS
Tell it the moment — get a hand-picked playlist or live mix that fits. Runs on my own DJ collection across Spotify and SoundCloud, so it doubles as a way to put my taste on display as a music collector and DJ.
Try it on this page ↓Mates keep asking me what to play. Cafe vibe. Sunset drive. 2am dancefloor. So I figured — why keep answering one by one when I can organise everything I’ve collected and let an LLM hand them the right one. Type the moment, get a playlist that fits.
Same idea works for the live mixes and DJ sets on my SoundCloud, not just Spotify playlists.
Mood is the semantic core (capped at 14 points, +5 per matched tag). Audio profile compares as a 4-vector — energy, danceability, happiness, acousticness — against expected targets per mood (cap 12). Genre uses weighted subgenres as the first-tier matcher, with main-genre and string fallbacks (cap 8). BPM, setting, decade, artist, popularity all add smaller signals.
The top result isn’t deterministic. The engine takes the top-3 scored playlists and picks one with weighted random sampling — higher score, more likely, but never the same playlist every time. That’s the difference between a recommender and a stale lookup table.
→ Full scoring breakdown & data schemaOpen hypotheses driving the next round of work.
LLM quality is the current bottleneck (not the algorithm)
test: A/B prompt variations on Groq
Mood-tag autocomplete improves query quality
test: Suggestion chips on input
“Why this match?” reasoning increases trust
test: Display top 3 scoring factors
21 playlists is the floor; 50+ unlocks better matching
test: Add 10 playlists per quarter
Time-of-day suggestions shorten query length
test: Inject contextual prompts
Tell the engine the moment — it’ll send you to the matching playlist on the music page.