Inspiration
Music is a huge part of working out, but most playlists don’t actually match how workouts flow. A song that feels great during a sprint can feel exhausting during warmup — and a slow song at peak intensity can kill momentum. We wanted to build something that understands workout pacing. BeatMatch was inspired by the idea that BPM (beats per minute) naturally maps to physical intensity, and that playlists should adapt to your workout, not the other way around.
What it does
BeatMatch generates a Spotify playlist tailored to your workout intensity curve. After logging in with Spotify, users select playlists they want to source music from and set a workout duration. The app analyzes the BPM of each track and builds a playlist that follows a trapezoidal BPM curve:
- A low-to-mid BPM warmup
- A high-energy peak phase
- A gradual cooldown
The final playlist can be saved directly to the user’s Spotify account, making it immediately usable for workouts.
How we built it
- We built BeatMatch using Python and Streamlit for a fast, interactive web experience.
- Spotify Web API handles authentication, playlist access, and playlist creation
- GetSongBPM-powered dataset provides BPM values for tracks
- A preprocessed Spotify tracks dataset from Hugging Face is used to match tracks with BPM data
- The playlist generation logic sorts and selects songs according to a trapezoidal BPM distribution based on workout duration The app runs locally and uses OAuth to securely interact with the user’s Spotify account.
Challenges we ran into
One major challenge was reliably matching Spotify tracks with BPM data. Not every track has clean or consistent BPM metadata, so we had to handle missing values and mismatches gracefully.
Accomplishments that we're proud of
- Successfully generating workout-aware playlists, not just random high-energy mixes
- Seamless Spotify login and playlist saving
- Designing a BPM-based playlist curve that mirrors real workout structure
- Building a complete, demo-ready app with real user value in a short time
What we learned
We learned a lot about:
- Working with OAuth flows and third-party APIs
- Handling imperfect real-world datasets
- Translating abstract concepts (like workout intensity) into concrete algorithms
- Rapidly prototyping a data-driven product under time constraints
What's next for BeatMatch
Next, we’d love to:
- Use Spotify’s native audio features (energy, tempo, danceability) to refine playlist selection
- Add activity-specific modes (running, lifting, cycling, HIIT)
- Deploy the app publicly so users don’t need to run it locally
- Support automatic BPM analysis for tracks without existing data BeatMatch has the foundation to become a fully personalized workout music engine.
Log in or sign up for Devpost to join the conversation.