Skip to content
← Projects

SIDE PROJECT · IN PROGRESS

Vibe Finder

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 ↓

What it is

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.

How the algorithm thinks

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 schema

Stack

Next.js 16React 19TypeScriptTailwindFramer MotionGroq · llama-3.1-8b-instant (free tier)Supabase (feedback + training data)Vercel

What we’re testing

Open hypotheses driving the next round of work.

H1

LLM quality is the current bottleneck (not the algorithm)

test: A/B prompt variations on Groq

H2

Mood-tag autocomplete improves query quality

test: Suggestion chips on input

H3

“Why this match?” reasoning increases trust

test: Display top 3 scoring factors

H4

21 playlists is the floor; 50+ unlocks better matching

test: Add 10 playlists per quarter

H5

Time-of-day suggestions shorten query length

test: Inject contextual prompts

Already shipped

  • Top-3 weighted randomization (variety without losing fit)
  • Embedded lite version on the music page
  • Tightened LLM system prompt with explicit mood→audio targets
  • Free LLM tier for the MVP — Groq's llama-3.1-8b-instant. Not the strongest model, but enough to ship.

What’s next

  • Upgrade to a better LLM API for sharper, more nuanced scoring
  • Recruit a small test group — feed real human feedback back into the algorithm
  • +10 hand-curated playlists per quarter
  • “Surprise me” button for low-cognitive-load discovery
  • Opt-in personalization (last 3 queries via local storage)
  • Surface save-to-Spotify flow inside the result card
  • Spin out the full app to vibe-finder.gilkopel.com

Try it

Tell the engine the moment — it’ll send you to the matching playlist on the music page.