Read a transcript
Find the moment behind a quote, switch session, and follow the recording as it plays.
A quote is an excerpt. The transcript is where you read what surrounded it — the question that prompted it, the hesitation before it, the part that didn't make the cut. This page covers finding your way to the right moment and reading it with the recording playing alongside.
Start from the Sessions lens
Sessions (⌘2 in the Mac app) lists every interview in the project, one row each:
| Column | What it holds |
|---|---|
| ID | The session number. Click it to open the transcript. |
| Thumbnail | A frame from the recording. Click it to play from the start. |
| Speakers | A badge per person — p1, m1, o1 — with their name beside it. |
| Start · User journey | When the recording starts, and the path the participant took through it. |
| Sentiment | A sparkline of the sentiment across the session's quotes. |
| Duration | How long the recording runs. |
| Interviews | The source file. Click it to play from the start. |
The grid gives up detail as the window narrows, in a fixed order — surnames first, then the user journey, then names entirely, leaving the badges. Column order never changes, so nothing rearranges under you.
Who's who — the speaker codes
Everyone who speaks gets a code, and the letter says what part they played:
| Code | Role |
|---|---|
p1, p2, p3… |
Participants — the people you are researching. |
m1, m2… |
Moderators — whoever ran the session. |
o1, o2… |
Observers — anyone else present: a note-taker, a stakeholder sitting in. |
Bristlenose works out who is who from the conversation itself — who asks the questions, who does most of the talking — so the roles are assigned before you open the report.
Participant numbers run across the whole study; moderator and observer numbers restart in each session. So p7 is one person and only ever that person, wherever you meet them in the report. But m1 means "the first moderator in this session" — if two sessions were run by different people, both are m1. Worth knowing before you read m1 across sessions as one person.
The distinction earns its keep in the analysis: only participant speech becomes quotes. A moderator's questions and an observer's asides are in the transcript, and counted in the coverage figures, but never extracted as findings.
A name follows through the report once it's set, appearing beside the code on quote cards and in the transcript's sticky header. Anyone unnamed reads as Participant, Moderator or Observer. The code is the identity that always travels: a quote cites it whether or not a name is set, which is what lets you share a report without sharing names — see Privacy and data.
Where the names come from
Usually you don't type them. Bristlenose fills them in from two sources, in that order:
- The conversation itself. The model reads the opening minutes of each session and picks up a name said out loud — "Hi, I'm Sarah Jones" — along with a job title if one is mentioned.
- The recording's own speaker labels. Teams, Zoom and Meet transcripts name their speakers; where one carries a name, it's used.
Neither ever overwrites something you typed. Re-running an analysis fills empty fields only, so a correction you made survives every later run.
Full name and display name
Everyone carries two names.
The full name is the one Bristlenose found — Dr Sarah Jones. It's kept as a record and shows as a tooltip when you hover a name that's been shortened, but it isn't what the report uses.
The display name is the short one — Sarah — and it's the one you see everywhere: on quote cards, in the sessions grid, in the transcript header. A report reads better with Sarah on every card than Dr Sarah Jones. This is the editable one. Clicking a name in the sessions grid edits the display name; the full name stays as found.
Bristlenose derives the display name from the full one, which is less obvious than taking the first word:
- Honorifics are stripped — Dr. Sarah Jones becomes Sarah.
- Family-name-first languages are handled. Chinese, Korean, Vietnamese, Japanese and Hungarian names put the family name first, so the second part is the given name.
- Names written in Chinese, Japanese or Korean characters are already short, and are left whole.
- Clashes get a last-name initial — two Sarahs become Sarah J. and Sarah K., so a report never shows two people you can't tell apart.
A derived display name is only a guess at what someone should be called, so override it whenever it reads wrong — that's what the pencil is for. Both fields also sit in people.yaml in the output folder if you'd rather edit them there; see Output files.
Open a transcript
Three ways in, depending on what you already know:
- You want the whole session. Click the session number, or its thumbnail.
- You want a moment in the journey. Click a step in the User journey chain. It lands on the transcript at the first moment of that step.
- You want the context around a quote. On the Quotes lens, click the speaker badge on a quote card. It lands on the transcript at that quote's timecode.
Switch to another session
macOS app
Click the list button in the toolbar, or press ⌘⌥L. A Switch Session popover opens with every session in the project — the participant badge, the session number, and the name, with duration and recording date beneath. Sessions with more than one participant list all of them.
Type a few letters of a participant's name to jump to their row, or arrow to it and press Return. All Sessions at the top of the popover goes back to the grid.
Command line
The transcript's sticky header names the session you are reading — Session 3. Click it for a dropdown of the others.
Whichever route you take, the transcript you were last reading is the one you come back to — returning to Sessions restores the view you left rather than dropping you back on the grid.
Follow the user journey
When Bristlenose can tell what the participant was working through — screens, tasks, topics — it derives a user journey: a chain of steps in the order they happened, Search → Filters → Product page → Checkout.
The chain sits in the transcript's sticky header, so it stays put as you scroll, and the step you're reading highlights as you pass through it. Click any step to jump to it.
Not every session has one. It's derived from the content, so an interview that doesn't move through anything in particular won't produce a chain, and the header simply won't show one.
What's marked up in the transcript
The transcript is the full record — everything said, moderator included, not only the parts that became quotes. Three things are marked on top of it:
- Participant speech that became a quote reads at full strength, and the participant speech around it is knocked back. So the stretches that reached the report stand out from the ones that didn't, without anything being hidden.
- Moderator turns are muted, so the shape of the conversation reads without you parsing every badge.
- Margin annotations sit beside the first segment of each quote: the topic it belongs to, its sentiment, and any tags. These are shown on change rather than on repeat — a topic that runs for ten segments is named once, and named again when it comes back. It keeps a densely-tagged transcript readable.
Every segment carries its timecode and the speaker's code. The sticky header names the participants in full, so "who is p2" stays answered while you scroll without turning every line into a wall of names.
Arriving from a quote or a journey step flashes the segment you landed on, fading over a few seconds — so you can see where you were put without hunting for it.
Play the recording and follow along
Click any timecode to open the player at that moment. It opens in its own window, so you can put the video beside the transcript rather than on top of it — one player at a time, wherever you click next.
While it plays, the transcript follows:
- The segment being spoken glows, with a progress line growing down its left edge.
- The transcript scrolls itself to keep that segment centred, so you can read without touching the keyboard.
- The current word highlights as it's spoken.
Word-by-word highlighting needs word-level timings, which come from Bristlenose transcribing the audio itself. A session you brought in as a subtitle or document transcript has timings per segment, not per word — the segment still glows and still scrolls, but individual words don't light up.
A session with no recording — a transcript you supplied on its own — shows plain timecodes rather than links, and no player.
In a shared report
Transcripts in an exported report read as they do here — journey chain, annotations, timecodes — but with no server behind the file there's no recording to play and nothing to save.