Privacy
What happens to your music
This page describes what the code does today. Where a thing people usually promise is not built, it says that instead of promising it. Last reviewed against the source on 2026-08-08.
The short version
- We claim no rights to anything you upload. It stays yours, in full, including the master we hand back.
- Nothing is used to train anything. There is no model in this product to train: the dependency list is numpy, scipy, soundfile, pyloudnorm and ffmpeg, and no machine-learning framework appears in it.
- The site you are reading sets no cookies, runs no analytics and loads nothing from a third-party domain. No consent banner, because there is nothing to consent to.
- Finished jobs are deleted after 7 days by a sweeper that runs every hour. What is still missing is a control that deletes one on demand, and the section below says so rather than rounding it up to a reassurance.
What happens to an uploaded file, step by step
Read out of web/app.py, which is the only code that touches your file before the engine does.
- The upload is streamed to disk under runs/<job id>/in/ on the machine running the job. The job id is a random 12-character hex string.
- Files over 200 MB are refused mid-write and the partial file is deleted immediately. So are file types outside the allowed audio extensions, and empty files.
- The job runs on a background thread. Results are written to runs/<job id>/out/: the master, the platform renders, the report.
- You download those files. If you take the zip, it is assembled into the same job folder.
- The job record itself lives in memory only. Restart the process and the index of jobs is gone, so the download links stop working, even though the files are still on disk until the sweeper reaches them.
- A background sweeper runs on start and then every hour. It removes any job folder whose newest file is more than 7 days old. It only ever touches direct subfolders of the jobs directory, never the directory itself and never anything outside it.
How long your audio stays, and what is still missing
7 days. That is the retention window, it is enforced by code rather than by intention, and the running service reports the number it is actually using on its own health endpoint, so you can check it rather than take our word for it.
What is still missing, and we would rather write it down than let you assume otherwise:
- There is no delete-now control. If you want a track gone today rather than in 7 days, there is no button and no endpoint for it. That has to be built.
- The sweeper runs inside the application process. If that process is not running, nothing is being deleted, and the clock effectively pauses until it starts again.
- Deletion means the files are unlinked from the filesystem of the machine that made them. That machine is a container on Railway in their EU West region, Amsterdam, with a persistent volume attached. It is not a guarantee about backups or snapshots of the underlying disk, because those are made by the hosting provider and not by us.
When the delete-now control exists, this section changes to describe it. Until then it stays a list of gaps.
What a profile contains, and why it is not your music
Album mode and the reference-track option build a target profile out of audio. A profile is a measurement, not a recording: 31 third-octave band levels plus roughly twenty scalars such as integrated loudness, loudness range, true peak, stereo width, correlation and where the spectrum stops. Around fifty numbers in total. You cannot reconstruct audio from it, you cannot recognise a song in it, and there is no audio inside it. The profiles that ship with the tool are the same shape as the ones your own material produces.
The waitlist form on this site
The waitlist form is not connected to an endpoint yet, so it is rendered disabled and submits nowhere. No address is collected, and there is no processor to name. When one is connected, this paragraph will name it and link to its policy, and the form on the page will say the same thing next to the field.
Who we are
Snijder Holding NL, Merelstraat, The Netherlands. Chamber of Commerce 98440217, VAT NL005332508B94. There is no support address in service yet, so this page does not print one. It goes here once the service is live, together with the retention window described above.
Under the GDPR you have the right to access, correct and erase personal data we hold about you, and to complain to the Dutch data protection authority. Today the only personal data that could exist is a waitlist address, and per the section above there is not even that yet.
Tell us where to reach you
An address is the only thing we would store.
How to check this page. Every claim about processing comes from web/app.py in the repository that builds aimastersongs.com, the 7-day window from web/housekeeping.py, and the claim about training from requirements.txt. If those files and this page ever disagree, the files are right and this page is out of date. Last reconciled against them on 2026-08-08, when the sweeper had just been written and this page still said deletion did not exist.