Discover Your Next Favorite Track

A stateless music recommendation engine that combines audio features with artist relationships from MusicBrainz, Wikidata, and Last.fm. Recommendations are boosted by influence chains and similar artists. No account needed.

Content-Based Filtering MusicBrainz + Wikidata Last.fm Similar Artists Real-Time WebSocket
Connecting...
Searching...
Initializing...

How NextTrack Works

1

Search

Find tracks from our 30k+ catalog or live from Spotify via real-time WebSocket search.

2

Build

Add tracks to build your playlist. Each track's audio features define your taste profile.

3

Discover

Get recommendations enhanced by artist relationships and refined by your feedback.

How It Works

The Recommendation Algorithm

NextTrack uses a hybrid recommendation system that combines content-based filtering with external data enrichment. Here's exactly how it works:

Step 1: Vector Space Model

Each track is represented as a 5-dimensional feature vector:

  • Energy (0-1) - Intensity and activity level
  • Valence (0-1) - Musical positiveness/mood
  • Danceability (0-1) - Rhythm and beat strength
  • Acousticness (0-1) - Acoustic vs electronic sound
  • Tempo (BPM/200) - Normalized beats per minute

Your playlist's centroid (average vector) represents your taste profile. We rank candidates by Euclidean distance - tracks closest to your centroid score highest.

Step 2: External Data Enhancements

After initial scoring, we apply multiplicative boosts based on artist relationships:

  • Similar Artists (+20%) - From Last.fm's collaborative filtering. If fans of your playlist artists also like Artist X, tracks by X get boosted.
  • Influence Chain (+15%) - From Wikidata P737 property. If The Beatles influenced your playlist, tracks by Elvis, Buddy Holly, Chuck Berry get boosted.
  • Tag Matching (+8%) - From Last.fm community tags. Matching genre/mood tags (e.g., "british invasion", "psychedelic") provide smaller boosts.

Step 3: Preference Learning

Your like/dislike feedback trains categorical preferences. The system learns which countries, decades, artist types (solo/group), and genres you prefer - then adjusts future recommendation scores accordingly. This learning persists across your session.

Step 4: Optional Filters

Apply hard filters powered by MusicBrainz metadata: Country (artist origin), Decade (formation year), Artist Type (solo artist vs group). Filters exclude non-matching tracks entirely.

Data Sources

Kaggle Dataset 30,000+ tracks with pre-analyzed audio features (our recommendation corpus)
Spotify API Live search, track metadata, audio feature analysis for new tracks
MusicBrainz Artist country, type (person/group), formation year, genre tags
Wikidata Artist descriptions, influence relationships (P737 "influenced by" property)
Last.fm Similar artists (collaborative filtering), community tags, listener counts

Architecture

Stateless API - No user accounts or tracking. Your playlist is stored in your browser session (7-day expiry). Provide track IDs, receive recommendations.

Live External Data - Artist metadata is fetched on-demand from MusicBrainz, Wikidata, and Last.fm. Responses are cached in Redis with 24-hour TTL to balance freshness with API rate limits.

Tech Stack - Django + Django REST Framework, PostgreSQL, Redis, Celery, WebSockets (Django Channels), Docker Compose.