Case study

Snapstems: drop a song, get the voice, drums and bass back as separate tracks

A paid web service that splits a song into its parts. An open-source model does the separating; I built everything around it and I run it alone.

My role

This one is my own product. I designed it, I wrote it and I run it, alone.

The situation

Producers, DJs, karaoke hosts and people who remix need the parts of a song apart: the voice alone, the drums alone, the music without the voice. An open-source model called Demucs does this well, but someone has to run it. Snapstems puts it behind a web page: drop a track, wait, download the parts. The work was everything around the model: uploads, accounts, credits, payment, and failed jobs.

The constraint

A song is a big file, and a split takes too long for a web page to wait on. A file of up to 100 MB goes from the browser straight to storage, never through my server. The server starts the job and answers at once; the model service calls back when it is done. A split still running after 10 minutes is cancelled and the credits come back.

Every split costs me money, so a credit can never be lost or spent twice. It is taken before the job starts and given back if the job fails. A payment adds credits once per order, even when the payment notice arrives twice.

Free splits get abused. A new account gets 3, only after confirming its email. Each real inbox can claim them once, addresses from 9,963 throwaway email domains get none, and a daily cap limits the total.

What I built

The service is live at snapstems.com. Everything below is in the code today; what is not live yet is listed further down.

  • Four kinds of split: 4 parts (voice, drums, bass, the rest), 6 parts (adds guitar and piano), a higher-quality version, and karaoke. Six audio formats in; MP3, WAV or FLAC out.
  • Drop a file or paste a direct link. After the split, the page shows which instruments are really in the track, and you tick what you want and download it as one zip.
  • Accounts with my own email confirmation step, a split history, a billing page and account deletion, in 10 languages including Hebrew and Arabic.
  • A credit ledger: one pack and two monthly plans sold through Polar, payment notices checked by signature, and refunds that take the credits back.
  • A free autotune for the voice track that runs in the browser.
  • A site chat that may only answer from a fixed list of published facts.
  • The quiet parts: uploaded audio is deleted after 7 days, and each failure writes one log line without the user's email.

The numbers

  • 4kinds of split
  • 10interface languages
  • 0outside code libraries on the server
  • 20server routes behind the page
  • 306checks, in 5 self-check scripts
  • 55commits, 7 July to 12 November 2026

Every number above is counted from the project's own files and history on 12 November 2026. There is no user count, no customer count and no revenue on this page.

What this page shows, and what it does not

This is a product I built and run myself, and it is early. There is no usage number on this page: it shows that the software exists and answers, not that people pay for it. The separation model, Demucs, is open source and not my work; it runs on a hosted service (Replicate).

Some of it is built and not live. The phone app is written and not in the stores. Most of the "sing over it" studio is in the code, and on 12 November the live page had only its first step. Payment per split by software alone has only run with test money. Card payments are wired in the code, and I show no real sale here.

How it is tested: five self-check scripts and one audio check, run by hand. Nothing runs them automatically on each change. 51 of the 55 commits carry an AI co-author line. That is how I write code, and I would rather say so here.

What I would do differently: put the checks and the logging in before opening the doors. The first commit is from 7 July 2026. The fix for the confirmation email, without which an email sign-up could not be completed, is from 21 October, and failures were only written to the logs from 3 November.

Stack

  • Python
  • Replicate
  • Demucs
  • Firebase Auth
  • Firestore
  • Cloud Run
  • Cloud Storage
  • Polar

See it

Want something like this?

Tell me what you are building, or what you are still doing by hand, and I will tell you how I would approach it. No commitment.