Summary
Randofy v1 was a broken discovery tool. The algorithm pulled from a narrow slice of Spotify's catalog, surfacing the same pop artists repeatedly and ignoring the depth of what was actually available. The mobile design was immature, important song details were missing, and there was no way to customize or personalize the results.
I rebuilt it from the ground up. I replaced the algorithm with a filter-driven random search across Spotify's full catalog, built a Three.js 3D carousel for browsing results, designed a song detail portal with audio attribute breakdowns, and added a history page so users could return to anything they had discovered.
- Organic user growth: From ~1 to 30 monthly users with zero marketing or promotion.
- Randomness that works: replacing a biased algorithm with a filter system spanning genre, danceability, energy, popularity, and more.
- A product worth returning to: with a history page that logs every session and makes past results filterable and searchable.
- Song detail that goes deeper: giving users genre, length, audio attributes, and a preview for every random result.
Problems
- 01
Broken Randomization
The algorithm surfaced the same artists repeatedly and pulled almost exclusively from pop, meaning the core promise of the product was not being kept. Users found it hard to get genuinely random results and had no way to filter by genre or personal taste.
- 02
Missing Song Details
Users had no way to reliably preview a song, and no context around it: no genre, no length, no audio attributes. Without that information, a random result was just a name and an album cover.
- 03
Immature Mobile Design
The mobile design was immature, important song details were missing, and their was no customize or personalize the results.

Randofy v1 — limited algorithm, weak mobile layout, and no way to filter or personalize results.
Discovery & Approach
I started by surveying 10+ users, a mix of friends and strangers who had used v1. Four pain point clusters came back: broken mobile design, lack of real randomness, no personalization or filtering, and missing song detail. [Pain points slide here]
I audited v1 and looked at three comparable tools: Dubolt, Songs Like, and Radiooooo. Dubolt stood out for its double-ended sliders for filter ranges, which translated abstract audio attribute values into approachable language: popularity became a scale from "playing at dive bars" to "world tour." I used that pattern directly in v2 to give users clarity on what the filters were actually controlling.
The finding that changed everything came from the survey: users did not want purely random. They wanted random within something they already cared about. A metal fan wants to find metal they have never heard, not be served Turkish pop. That distinction moved the product from novelty to discovery tool and made every subsequent decision straightforward.
Solution
The design problems in v1 ran too deep for surface fixes to hold, so I rebuilt the entire product from scratch. The algorithm itself was actually straightforward to repair. The harder work was rethinking the product from the ground up.
The randomization algorithm now pulls from Spotify's full catalog using true random search queries seeded with user-defined filter values. Users set genre, number of songs, and Spotify audio features including danceability, energy, acousticness, and popularity before generating, which means results are genuinely unpredictable within whatever constraints the user defines.
For displaying results, I built a Three.js 3D carousel. Album art is the most immediate signal of what a song might feel like, and presenting it spatially gave the results a sense of scale and discovery. There was real uncertainty about whether it would perform on mobile, and it did.
Each card includes playback controls, a share button, and access to a song detail portal. The portal was originally planned as a side panel in the history view, but I switched to a full overlay because it handled responsive layouts better and gave the song information room to breathe. The portal surfaces album, year, length, genre tags, and a Song Features tab with a breakdown of Spotify's audio attributes including danceability, energy, and acousticness.
The history page logs every generation session by date. Users toggle between list and grid view and filter by the same values used during generation, which turns the tool from a one-time randomizer into something worth coming back to.
I left out YouTube linking despite user requests for it. Staying focused on the core Spotify experience allowed for a tighter, more coherent product at launch, and the feature remains on the backlog.
Impacts
Organic User Growth
Monthly active users grew from ~0-1 to 30 with no promotion, no marketing, and no social presence. These are strangers who found the product and came back. For a solo side project with no distribution strategy, return visits are the most credible signal of product value available.
Randomness That Works
The filter system surfaces songs across six Spotify audio dimensions. Songs no longer repeat artists within a single generation, and a genre request returns results with genuine variety. A user who asks for metal gets metal they have not heard before, not the same three bands.
A Product Worth Returning To
The new history page resolved the problem of moving through previous results. By making it its own page it decluttered the main interaction of generating songs while creating an archive of generated songs.
Song Detail That Goes Deeper
The portal gives users the context missing in v1: album, year, length, genre tags, and a full audio attribute breakdown. Users testing the product used it to go deeper on songs that caught their attention, which was exactly the behavior the missing detail in v1 was preventing.