Designing a DAW companion around one workflow: stem upload

6/26/20266 min read

A product-design case note on reducing friction between Ableton and Music Label OS. Instead of trying to rebuild the catalog inside the DAW, I focused the companion around one valuable loop: sending stems, versions, and exports to the right catalog entry without opening a browser.

Music Label OS

I’ve been exploring a small DAW companion for Music Label OS: a bridge between Ableton and a label catalog.

The first version is intentionally narrow. It is not trying to turn Ableton into a project-management tool, and it is not trying to run a full AI analysis workflow inside the DAW. The design question was simpler:

Can a producer send the right stem, version, or export to the right catalog entry without leaving the session?

That loop matters because a lot of music work gets lost in the space between creation and organization. A stem gets bounced. A rough mix lands in an Exports/ folder. A vocal take gets renamed three times. Later, someone has to remember what it belongs to.

The companion is designed around reducing that break in the workflow.

The workflow problem

Before this prototype, the loop looked like this:

Render a stem → find the file → open the browser → upload → fill in metadata → hope it is attached to the right track.

That is not a huge task once. But repeated across versions, stems, mixes, edits, and collaborators, it becomes drag. The issue is not just storage. It is context.

A file is more useful when it knows what it belongs to:

  • artist
  • album or project
  • track
  • version
  • stem type
  • readiness
  • BPM/key
  • notes or downstream analysis

So the design goal became:

Keep Ableton as the place where the music work happens, and keep Music Label OS as the source of truth for catalog context.

The companion sits between them.

The design decision

The early temptation was to ask, “How much of Music Label OS should exist inside Ableton?”

That turned out to be the wrong framing.

The better question was:

What is the smallest loop that saves real time without making the DAW feel like admin software?

For this version, that loop is stem upload.

The companion lets me:

  • bounce a track, arrangement selection, or session clip
  • upload it as a new track, a version, or a stem
  • attach it to an existing catalog entry
  • replace a stem when I am iterating on the same part
  • choose artist and album context when creating something new

The catalog stays in Music Label OS. Ableton stays focused on the session. The companion handles the handoff.

Before and after

Before

Render a stem. Find it in a folder. Open the web app. Upload it manually. Pick the catalog entry. Add or confirm metadata. Return to the session.

After

Right-click or trigger the companion from Ableton. Choose the catalog target. Upload the stem, version, or export. Return to the session.

That is the product idea in its smallest useful form.

What I built

The prototype supports an export and upload flow from Ableton into Music Label OS.

The important pieces are:

Catalog-aware upload

The upload flow is not just a file picker. It lets the producer decide whether the audio is a new track, a version, or a stem attached to something already in the catalog.

Artist and album selection

When creating new catalog entries, the modal lets the producer choose the artist and album context at the point of upload.

Stem replacement

If I am iterating on the same part, I can replace an existing stem rather than creating another disconnected file.

Catalog browsing inside the companion

When choosing what to attach audio to, the companion can show useful catalog-side context: BPM, key, readiness, and section counts.

That is enough information to make the right choice without turning the DAW into a full catalog UI.

What I deferred

The most important design work here was deciding what not to build yet.

I deferred deeper analysis inside Ableton because I do not think the session timeline is automatically the right place for every insight. Some analysis belongs in the catalog. Some belongs in review. Some may eventually belong directly in the DAW.

For now, the companion can expose analysis options, but analysis is not the center of the workflow.

I also deferred automatic lyrics transcription on every upload. That may become valuable, especially for vocal workflows, but it needs one important rule:

Never overwrite hand-edited lyrics just because a new vocal was bounced.

Artists and teams clean up lyrics by hand. A DAW upload should not clobber that work.

That constraint is a good example of the product principle underneath this prototype: automation should reduce drag without erasing human judgment.

Platform constraints

Ableton’s Extensions SDK is still early, so part of the work was learning what the platform actually exposed in practice.

Some things worked as expected. Some required workarounds. Some menu surfaces were not available where I first expected them to be. That changed the way I documented the project.

Every platform “gotcha” became part of the internal implementation notes so the next pass does not have to rediscover the same constraints.

That is also where agents became useful. Not as a replacement for product judgment, but as a way to keep specs, API expectations, and workaround notes consistent across the build.

What this changed in my thinking

I originally thought the extension might feel like “Music Label OS inside Ableton.”

It does not.

It feels more like a filing cabinet next to the mixer.

That is a better product shape.

The catalog is still where the system of record lives. Ableton is where the creative work happens. The companion’s job is to shorten the round trip between the two.

That distinction keeps the interface from becoming too heavy. It also makes the product easier to evaluate. The question is not “does it do everything?” The question is:

Did it remove a real interruption from the creative workflow?

Takeaway

The best version of this prototype is not a full music catalog inside the DAW.

It is one clean loop:

get the right audio out of the session and into the right catalog entry without breaking creative flow.

That is the design principle I want to keep: name the loop, ship the loop, and defer everything that does not complete it.