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 recipe | Deliverables/{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.
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 filename | Parsed title | What it correctly ignored |
|---|---|---|
Alex Rivera_148 BPM_Outside_2025 [2025-09-23 180948].als | Outside | artist prefix, BPM, year, timestamp |
Main Title (Epic Orchestral) - revB.ptx | Main Title | descriptor read as mood, not title |
Get Up and Ready_mix.master.final.v3.wav | Get Up and Ready | two mix tags + two version tags → altMix |
Get Up and Ready_Instrumental_120BPM_Cm.wav | Get Up and Ready | tempo and key never override the title |
Camille Beatriz_136 bpm_D minor_Follow My Lead.wav | Follow My Lead | ”lead” is the title here, not a stem tag |
KORA_CB_104_Lollipop-02.wav | Lollipop | library prefix codes must not win |
TonalChaos_SDX_Thunder Hit.wav | Thunder Hit | SDX recognised as a cue type |
Untitled.als · bounce_03.wav · final_final.wav | none | classified 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:
| Decision | Confidence 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 project | 0.55 |
| Auto-create an album | 0.70 |
| Match as a duplicate | 0.88 |
| Auto-resolve a contact | 0.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.
Related pages
- Watch Folders & Auto-Linking
- What are Watch Folders?
- What formats does Export Flow support?
- How do I avoid sending the wrong version?