From one click to every store
- 1Issue release identifiers
- 2Set up the release
- 3Stage audio + art
- 4Assemble metadata
- 5Deliver to stores
- 6Wait for confirmation
- ready · press run, or hover any part of the system
Problem
Every remix that left for an outside distributor took its royalties and its data with it.
vers1ons licenses the right to remix. But to get a remix onto Spotify or Apple Music, artists had to take it somewhere else. Outside distributors know nothing about the license chain, so credits came out wrong, the original artist dropped off, and the royalties never came back through us.
To be worth more as a company, we needed to keep remixes, royalties and data inside vers1ons, and to pay every contributor down a chain of remixes, from the original to the sixth version and beyond.
What I did
I owned distribution end to end, from the partner calls to the screens.
I worked with our partners to learn how distribution actually works behind the scenes. Then I built our own system around one delivery partner, made so others can plug in: one Inngest function that takes a release from submission to every store, blocking for individual stores that follows each license, and royalty routing that pays everyone in the chain.
I designed and built the wizard too. Contributors, splits and metadata are hard to explain, so I turned them into steps an artist can get through without knowing any of it.
The flow, step by step
14 steps, one screen at a time.

01Pick the sourceStart from a brand-new upload or a track you already licensed. A licensed track brings its listing's audio and details with it, so there's less to type and nothing to contradict. 
02Track detailsPick the store preview by dragging across the real waveform; stores play that 30-second clip before purchase. Choose none, and stores pick their own. 
03Audio checkedThe upload is checked and normalized before you go on, so a file a store would reject never gets that far. 
04ContributorsWhen the track comes from a published listing, its contributors arrive locked from the signed split sheet. The release can't contradict the license. 
05SplitsMaster and publishing each stay at 100% while you edit. Next stays greyed out, and says why, until both add up. 
06Release detailsDate, label, copyright lines, territories and pricing in one step. Errors read as sentences the artist can act on, not a partner's field names. 
07StoresStores are grouped by delivery route. Some only travel together, so the picker groups them instead of offering switches we can't honor. 
08Cover artThe art's requirements sit beside the drop area: what the image can't contain, and the sizes stores accept. 
09ReviewThis is how the release will appear in stores. 
10AttestationsWhat the artist confirms before anything is sent. Distribute stays disabled until every box is checked. 
11SubmittedFrom here a durable job takes over: codes, staging, delivery, confirmation. Each step can resume on its own. 
12Live statusThe release page updates as the job runs, with no polling: processing, then pending release once the codes are issued. 
13Credits on the releaseThe issued codes, credits and splits on the release, as the stores receive them. 
14When delivery failsA failed delivery says why and offers Fix & retry. A pending release shows what can still change.
What changed, and why
The same part of the product in an early build and today.
Starting a release
In November 2025 a release began as an empty project shell: name a project, then a release, then a track. Most remixes are one track from one license, so today it starts from the track, with a shortcut from a licensed listing.

Before · Nov 2025An empty "Choose project" form. 
Now · Oct 2026A new upload or a licensed track. Track details
The long form asked everything up front, including whether this was a remix, which the license already knew. Now the listing fills in what it can, and the form keeps what only the artist knows, like the preview clip.

Before · Mar 2026A long form that starts with "Is this a remix?" 
Now · Oct 2026Filled from the listing, preview clip on the waveform. Credits
Typing credits by hand let a release disagree with the license it came from. Now contributors get their own step, and when the source listing is published they arrive from its signed split sheet, locked.

Before · Jul 2026Every credit typed in by hand. 
Now · Oct 2026Contributors and splits arrive locked from the license. On a phone
The phone flow was the desktop one, squeezed, in small caps. Today the same steps ask one plain question per screen, with touch targets built into the components.

Before · Nov 2025"Set up the project shell", in all caps. 
Now · Oct 2026One plain question to start. Library
One card per song, with no states. As distribution shipped, releases, scheduled, pending, drafts and archived became real states, all on one set of tabs and rows.

Before · Nov 2025One song card, no release states. 
Now · Oct 2026Releases, scheduled, pending, drafts and archived.
Reliability
Every failure we've seen in production, we caught and fixed.
Over 245 unit tests, plus tests that try to break the endpoints on purpose. Metrics, tracing and a playbook for when something goes wrong. Our test releases in production have found real bugs, and we’ve fixed and addressed each one. We continue to do so.
Outcome
Live in production: a remix no longer has to leave vers1ons to reach the stores.
Beta users and remix buyers release straight to stores from vers1ons, and labels distribute on behalf of their roster. Every release’s credits and splits stay with us, so royalties can follow the chain back to the original artist.
116 PRs over about ten months: nine checks before any write, seven durable steps, one transaction.
