Skip to main content
← Knowledge Base
Knowledge Base

Naming Engine & Filename Parser

Kora's naming engine has two halves: a token-based template that builds outgoing filenames, and a parser that reads messy incoming ones. The parser classifies each part of a filename — BPM, key, version, stem, cue type — and refuses to guess when confidence is low.

Naming Engine & Filename Parser

Direct answer: Kora’s naming system is two separate engines. The template engine builds outgoing filenames and folder paths from tokens such as {album}, {track} and {mixType}. The parser works in the opposite direction — it reads filenames that already exist, classifies each span as BPM, key, version, stem or noise, and scores its own confidence. Below a threshold it stops and asks rather than guessing.

Keeping those two halves distinct is the point. Most tools do one or the other: a rigid template that only works if you were already disciplined, or a fuzzy importer that silently mislabels things. Kora needs both, because the files arriving from your DAW were not named by your template.

What naming tokens can I use?

The export filename template supports these tokens:

{album} · {track} · {mixType} · {composer} · {publisher} · {artist} · {label} · {genre} · {mood} · {keywords} · {year} · {isrc} · {upc} · {contactEmail} · {bpm} · {key} · {version} · {date} · {intent}

Folder recipes use a smaller set: {album}, {intent}, {date}, {mixTypeFolder}, {mixType}.

Default filename template{album}_{track}_{mixType}_{composer}
Default folder recipeDeliverables/{album}/{date}/{intent}/{mixTypeFolder}
Key Shift Pro template{publisher}_{album}_{composer}_{title}_{key}_{version}

Key Shift Pro carries its own template because transposed deliverables are identified by key and version in a way that standard mixes are not — a folder of twelve keys is meaningless if the key is not in the filename.

Kora's Create deliverable profile dialog, showing a filename template of {album}_{track}_{mixType}_{composer}, a folder recipe of Deliverables/{publisher}/{album}/{date}/{intent}/{mixTypeFolder}, checkboxes for required deliverables and metadata fields, and an email draft template.
A per-client deliverable profile. The naming template, folder recipe, required deliverables and required metadata are all saved against one contact, so selecting that client as the delivery anchor applies the whole set.

How does the parser read a messy filename?

The parser does not match against templates. It splits a filename into spans and classifies each one as bpm, key, version, cueType, genre, stem, artist, publisher, title or noise — then classifies the file itself as master, altMix, stem, junk or artifact.

This is why it survives filenames no template would predict. Here are real cases from the engine’s test suite:

Input filenameParsed titleWhat it correctly ignored
Alex Rivera_148 BPM_Outside_2025 [2025-09-23 180948].alsOutsideartist prefix, BPM, year, timestamp
Main Title (Epic Orchestral) - revB.ptxMain Titledescriptor read as mood, not title
Get Up and Ready_mix.master.final.v3.wavGet Up and Readytwo mix tags + two version tags → altMix
Get Up and Ready_Instrumental_120BPM_Cm.wavGet Up and Readytempo and key never override the title
Camille Beatriz_136 bpm_D minor_Follow My Lead.wavFollow My Lead”lead” is the title here, not a stem tag
KORA_CB_104_Lollipop-02.wavLollipoplibrary prefix codes must not win
TonalChaos_SDX_Thunder Hit.wavThunder HitSDX recognised as a cue type
Untitled.als · bounce_03.wav · final_final.wavnoneclassified junk — will not auto-create

That last row matters as much as the others. final_final.wav is a real file that exists in every working session, and a system that confidently creates a project called “final final” has made your library worse, not better.

These behaviours are held in place by 210 curated fixtures asserted end to end, so a parser change that breaks one of them fails the build.

What happens when the parser is not confident?

It stops. The thresholds are explicit rather than heuristic:

DecisionConfidence required
Title considered reliable≥ 0.55 — or ≥ 0.45 with two or more tokens, or ≥ 0.4 for a single token of six-plus characters
Auto-create a project0.55
Auto-create an album0.70
Match as a duplicate0.88
Auto-resolve a contact0.96

Below the title threshold the file is marked needsUserClarification, a parse issue is recorded, and you get a notice reading “{n} file(s) need naming clarification. Open Watch Folders to resolve.”

The contact threshold of 0.96 is deliberately near-absolute. In practice only an exact name match clears it, because attaching a deliverable to the wrong publisher is an error you may not discover until after you have sent it.

Before giving up, the parser runs a nine-step fallback chain — including a bracket-title swap, deriving the title from the DAW session, and garbled-token detection that rejects strings like asdfgh12.

Can naming rules differ per client?

Yes for outgoing files. Export profiles carry a contactId, and a persistent contact-to-profile map means selecting a delivery anchor overrides the naming template, the folder recipe and the format for that client. One publisher can require {publisher}_{album}_{composer} while another gets {album}_{track}_{mixType} — you do not reconfigure between deliveries.

No for incoming files. Kora does not evaluate whether a file you received conforms to a client’s convention. Preflight validates outgoing names against the profile’s own requirements; it does not police inbound naming. If you are looking for a tool that flags “this file does not match Client X’s spec on arrival”, Kora does not do that today.

Kora does learn per workspace: contact aliases, project aliases, file associations, known titles and albums, and bracket overrides all accumulate as you correct it.

Frequently asked

What is a stem naming convention?

A stem naming convention is a consistent pattern for naming the individual audio components of a track — drums, bass, vocals, keys — so that anyone receiving them can identify each file without opening it. Most libraries and publishers specify their own, typically some ordering of track title, stem name, mix type and version.

Does Kora rename my original files?

No. The naming engine applies structured names to deliverables it creates and to how files are labelled inside Kora. Your source files on disk keep the names your DAW gave them unless you explicitly ask for a rename.

What happens to a file the parser classifies as junk?

Nothing destructive. Junk classification means Kora will not auto-create a project or album from that file. It stays where it is and can still be linked manually.

Can I change the default naming template?

Yes. Both the filename template and the folder recipe are editable, and per-client export profiles can each carry their own. The defaults are a starting point, not a constraint.

Does the parser understand BPM and musical key?

Yes — both are recognised as their own token types, which is precisely why they never end up inside a parsed title. Get Up and Ready_Instrumental_120BPM_Cm.wav parses to the title “Get Up and Ready” with tempo and key held separately.

Authority hubs

Next step

Ready to put this into practice?

Kora is the system this path is built around.

A project-lifecycle platform purpose-built for music workflows — project tracking, delivery validation, and client relationship continuity in one place.