How I used Perplexity Computer to build me a personal SaaS to transfer Spotify playlists into my Youtube music playlists - A small writeup
Before you read this, I must say that this tool is for my personal use only - it has authenticated with my Spotify/YTmusic accounts through relevant API keys to transfer my playlists from one service to another. In the video, I have shown some demo examples with public spotify playlists. I'm not planning on sharing this tool.
Also, this was not one shot - I iterated and built through a several few prompts. The tech stack used by Perplexity in this project is
Frontend
React/Typescript
Tailwindcss
shadcn/ui
Vite to build
Backend
Node/express (this runs in the sandbox, and the static build deployed which is the UI you see in the video is wired to this)
Python worker process (for handling all spotify/ third party ytmusic API calls)
SSE to see the real time stream of songs getting transferred in the UI (as seen in video)
How it works:
This is an issue I have been facing (probably other users here as well, we all want to transfer playlists across multiple services, yes I know YTmusic likely has a native option to import, but I plan on expanding this tool to Apple music and other services as well later, all in one place) for a long time now and today I just decided to build a tool myself to end this. I prompted computer to do some research on how other paid SaaS do this - especially in the backend to implement the correct matching logic since you know how there are many songs with same names, etc.. and there are chances of going incorrect. I don't want to pay for other services, so I just built my own - Computer took in my prompt, did a comprehensive step by step research - How to use the spotify dev API and the unofficial YTMusic python library (it fetched latest docs, especially important for unofficial APIs since they keep breaking due to changes upstream), wired it all up.
For the matching logic, it cloned/browsed several other similar github repos (not the exact same) - went through the code in each repo, and finally implemented a 4 stage process to maximize chances of best match
1 - First match through ISRC (International Standard Recording Code) - Spotify exposes this through their API for songs and a lookup is then performed with this code on YTMusic
2 - If ISRC doesn't work, the app searches for the album on YouTube Music, finds the best album match, then looks through that album's tracklist for the specific song. This is great for standard releases, if the album exists on YTMusic, the track is almost certainly in it with the exact right version. It avoids the "wrong remix" problem because you're browsing the actual album tracklist, not searching loosely.
3 - Weighted Song Search, The general-purpose fallback. Searches YouTube Music for {song title} {artist} and scores every result using a weighted formula:
Title similarity: 40% - how closely the song names match (after normalizing away parenthetical info like "(feat. X)" or "(Remastered 2024)")
Artist similarity: 30% - compares all artist names, handles reordering and containment (e.g. "Drake" matching "Drake, 21 Savage")
Duration match: 15% - same song should be roughly the same length. A 30-second difference is suspicious; a 45+ second difference almost certainly means wrong track
Descriptor match: 10% — checks that version descriptors are consistent: if the Spotify track is a "remix", the YT result must also be a "remix". If one says "live" and the other doesn't, it's penalized hard. Covers: remix, live, acoustic, instrumental, karaoke, cover, slowed, reverb, sped up, radio edit, extended, demo
Album similarity: 5% - small bonus if album names also match
The similarity scoring uses Levenshtein distance (via Python's difflib.SequenceMatcher) on normalized strings - lowercased, with parenthetical content and "feat." info stripped out, special characters removed. (I actually have no idea what any of this means)
4 - Video Fallback, Some tracks exist on YouTube as videos but not as "songs" in the YTMusic catalog - remixes, mashups, regional content, very new releases. As a last resort, the app searches the video catalog with a slightly lower acceptance threshold.
The engine runs strategies 1 → 2 → 3 → 4 in order and stops at the first successful match. Each matched track gets tagged with which strategy found it, and the frontend shows this with emoji badges so you can see at a glance how your playlist was matched - mostly ISRC? Mostly fuzzy search? A mix?
Real-Time UI
The transfer isn't a "click and wait for an email" async kind of thing as of now. When matching is in progress:
• Each track row animates in as it's processed
• You see the Spotify album art on the left, an arrow, and the matched YouTube Music thumbnail on the right
• A colored badge shows match confidence (exact / title match / partial)
But, I'm planning to add transfer to more services and also add batch processing since this current MVP is not too efficient (The UI wired by Computer is great for aesthetics, I requested this in the prompt too, but not efficient for sure)
I'm really impressed that Perplexity computer researched all docs and wired all of this in for me in a few shot attempt - It's really like having a dev with his own laptop who can build and push code autonomously. I plan to keep testing and share more reviews of Computer soon.