Details and linking
Attach the agent, customer, project and conversation time your own systems already hold — and tie imported recordings to the agents and contacts in your workspace.
The audio cannot tell you who the agent was, which customer called, or when the conversation started — so Kilevel never guesses. Instead, point a job at where you already keep that, and every transcription carries it.
| Source | Use it when |
|---|---|
| File name | The values are already in the name, e.g. a-4821_+4930901820_Hoffmann-GmbH_20260919-141530.mp3 |
| Spreadsheet | You have a CSV with one row per recording, one column naming its file |
| The call itself | You are pushing recordings over the API — the system handing over the audio already holds the details |
Either way you map each part — a segment of the file name, or a column of your CSV — to one of the built-in details: agent ID, agent name, agent phone number, customer name, customer phone number, conversation ID, conversation start, tags, project, stage and goal. You can define your own alongside them, with a type of its own; those belong to your whole account, so the same column means the same thing on the next batch.
The setup screen works on a real example — the first file you chose, or the first row of your spreadsheet — and shows exactly what would be attached before a single recording is transcribed. A value we cannot read as the type you picked is kept as you wrote it rather than dropped.
These details appear at the top of each transcription, in the Details column of the transcriptions table, and in full under each transcription's Details tab next to the analysis. They stay separate from the analysis on purpose: one is what you told us, the other is what the model worked out, and a report should never confuse the two.
The agents in your recordings
Agent name and agent ID stay on every recording as text — that is what your files actually say, and what filtering and grouping use. On top of that, a job can tie each recording to an agent in your workspace:
| Setting | What happens |
|---|---|
| Leave them as text | Nothing is looked up or created (the default) |
| Link to agents that already exist | Ties a recording to an agent with the same ID or exactly the same name |
| Link, and create the missing ones | Also adds the rest as human agents, one per distinct name or ID |
Matching is exact only — the same agent ID, or the same name. There is no fuzzy matching, because attributing somebody's conversations to the wrong person is worse than not linking at all. Created agents carry nothing: no flow, no tools, no prompt. Re-importing the same recordings finds the agents created the first time rather than making more.
You can turn this on later. Open a job's Details action, change the setting and save — it is applied to every recording the job already holds.
Tip
Linking is what lets an imported recording count towards a person on the Performance page beside their calls and chats. Unlinked recordings still get a row there, grouped by the name your files carried.
The customers in your recordings
The same idea as agents, matched differently. A recording can be tied to a contact in your workspace on the normalised phone number only — never on the name, because a name in an export is whatever the agent typed that day, so matching on it would either miss most of them or merge companies that only look alike.
| Setting | What happens |
|---|---|
| Leave them as text | Nothing is looked up or created (the default) |
| Link to contacts that already exist | Ties a recording to a contact with the same number |
| Link, and create the missing ones | Also adds a contact per new number |
Worth pausing on the third one before a large import: an archive names a handful of agents but thousands of customers, and these contacts appear everywhere contacts do — campaigns, lists, dialling scope. Each one created this way is tagged as coming from a transcription import, so you can find them again. Numbers that cannot be read as international form (+49...) are left unmatched rather than guessed at.
Once linked, a contact collection that already bundles someone's calls and chats naturally covers their imported recordings too.
Jobs that keep running
A watched folder and an API job both keep producing recordings that a spreadsheet uploaded on day one could not have listed. Open a job's Details action to upload a follow-up spreadsheet or correct a file-name pattern: the new configuration is applied to every recording the job already holds, and a recording it says nothing about keeps the details it already had.
Uploading a spreadsheet again is required whenever the mapping changes — Kilevel keeps what your spreadsheet said about each recording, never the file itself, so there is nothing to re-read. By default a follow-up spreadsheet adds to what is already mapped rather than replacing it.