Product architecture · 8 minute read
Preview first. Match carefully. Create only after review.
PlaylistXfer separates reading, analysis, review, authorization, and creation so you can see the result before granting write access.
1. Public Spotify preview
PlaylistXfer checks the submitted URL and reads metadata that Spotify exposes through the public link. No Spotify login is requested.
2. Apple Music matching
Each source row is compared with the destination storefront using identifiers and metadata. The output is a report, not yet a playlist.
3. Human review
Strong matches are ready. Ambiguous candidates wait for a decision. Missing rows stay excluded instead of receiving a weak substitute.
4. Authorized creation
Only then does PlaylistXfer request Apple Music access, create the playlist, add approved tracks, and return a receipt.
Stage 1: validate and preview the Spotify source
The first step determines whether the pasted value identifies a supported Spotify playlist or track. For a playlist, the preview verifies the title, owner, artwork, size, and initial track metadata before any expensive matching work begins.
This stage is intentionally read-only. PlaylistXfer does not request Spotify credentials and cannot edit the source. If a link depends on your signed-in Spotify session, the preview may fail even though it opens normally for you.
A wrong or inaccessible link fails early, before Apple Music is involved and before the user waits for a full match analysis.
Stage 2: build an Apple Music match report
PlaylistXfer searches the Apple Music storefront associated with the destination context. It prefers recording-level evidence such as ISRC when available, then considers title, artist, album, duration, and edition markers.
An ISRC is strong evidence, but it is not the same thing as a unique Apple Music song ID. Apple documents that an ISRC lookup can return multiple catalog songs, often because one recording appears on several releases. The matcher still needs album and duration context to choose a useful candidate.
Analysis runs in batches for larger playlists. Progress reflects source rows analyzed, not a promise that every track will have a destination match.
Stage 3: turn confidence into explicit decisions
The evidence is strong enough for automatic inclusion.
A candidate exists, but a person should inspect the version.
No candidate passed the safety threshold.
Review rows are not transferred by default. You can approve a suggested candidate or skip the row. The product is deliberately conservative because a confident-looking wrong version is harder to catch after hundreds of songs have moved.
Stage 4: ask for Apple Music access at the last responsible moment
Preview and matching do not need permission to change your Apple Music library. PlaylistXfer waits until you choose to create the destination playlist, then uses MusicKit authorization so the write is connected to your Apple Music account.
This late-authorization design makes the permission request easier to understand: it appears next to the action that needs it. If you leave during preview or review, no Apple Music playlist is created.
Stage 5: create the playlist and report the outcome
PlaylistXfer creates a new Apple Music library playlist, then adds the ready and explicitly approved catalog tracks in source order. Skipped and missing rows are not silently replaced.
The receipt distinguishes the successful additions from rows that stayed out. If Apple Music rejects an individual catalog item or the write is interrupted, the result should remain visible instead of presenting a blanket success message.
What data crosses each boundary
| Stage | Data used | What is not needed |
|---|---|---|
| Spotify preview | Submitted public URL and public metadata | Spotify password or account authorization |
| Matching | Track metadata, catalog candidates, and safe confidence signals | Apple Music write permission |
| Review | Temporary transfer report and your decisions | Email or profile information |
| Creation | Apple Music authorization and approved catalog IDs | Spotify account control |
Temporary reports let a review survive a refresh and normally expire after about seven days; in-progress jobs expire sooner. Operational analytics are designed around counts, durations, outcomes, and error categories—not tokens, emails, or full Spotify URLs.