The playbook
Raw meeting audio to decisions and owners
An hour of recording becomes a short list of what was decided, who owns it, and the timestamp that proves it.
4 stages Minutes per meeting once it is wired OpenAI API · Claude API Complete
Every stage names what goes in, what to do, why it sits here and what comes out, and the chain says where it breaks.
benchr has not run these capabilities itself. Each stage points at a record describing what a provider documents, read on the date shown.
- You start with
- One meeting recording, in mp3, m4a, wav or another supported container
- Why this stage
- The schema two stages on demands a speaker and a timestamp on every row, and the ledger puts those two outputs on different models — gpt-4o-transcribe-diarize separates the voices, whisper-1 carries the timestamps. The capability's own instruction is to pick for the output you need; pick once here and you arrive at Extract with half of every row, and the only route to the other half is another pass over the audio. Both passes happen here or they do not happen.
- Do this
- Split under 25 MB, then run each chunk twice: gpt-4o-transcribe-diarize for the speaker turns, whisper-1 with timestamp_granularities set to segment for the times. Line the two up on the text they share — that alignment is this stage's real work.
- You end with
- One transcript per chunk, timestamped, with speaker labels
- 02
Attribution
Your work- You start with
- The labeled chunks and the list of who was in the room
- Why this stage
- Extract has one source, the transcript in front of it, so a label nobody resolved to a person stays a label all the way to the final row. Going through the voices here is one pass; going through them after the extraction is a correction on every row, made from a row that no longer has the recording beside it.
- Do this
- Listen until you can name the voice behind each new label, then put the name where the label was, chunk by chunk — the labels do not carry across a seam.
- You end with
- A transcript with names in place of labels
- You start with
- The named transcript, and your own definition of what counts as a decision
- Why this stage
- The shape is a request parameter, not a request, so the formatting is settled before the stage starts. What is left is the line between a decision and something somebody said out loud, and that line comes from you — the transcript does not mark it and the schema cannot check it.
- Do this
- Extract decisions and actions against a schema that requires a speaker, a timestamp and an owner on every row, with a legal not-assigned value for the owner.
- You end with
- A structured decision list with provenance
What goes wrong here
- You start with
- The recordings that piled up before any of this, and a schema you have stopped editing
- Why this stage
- A meeting that ended last month has nobody waiting on it, which is the work the batch path asks you to identify. It sits last because results come back only once the whole batch has finished, so a schema edited halfway through means submitting the archive again. And the model half is the only half that runs unattended: every archived meeting still needs its own listening pass before its rows can carry a name.
- Do this
- Backfill the archive of past recordings asynchronously.
- You end with
- A searchable history of the recordings that had piled up
What goes wrong here