After a client call, the team gets commitments, deadlines, and links to the relevant moments in the recording.
The system transcribes the call, identifies the speakers, and lists the commitments. Each one includes an owner, a deadline, and the relevant moment in the recording. Complaints, payments, and unclear dates always go to an employee.
What we measured
The reference implementation contains no client data, recordings, or credentials. It tests the full workflow, five required stops, and voice creation only after approval. It does not test reviewer identity or quality on real client calls.
- Two recorded measurements
- What we measured
- 9/9 structural checks · 12/12 live transcriptions
- Commitments from phone calls
- Verified
- synthetic corpus
Problem, solution, and result
The problem
Important commitments remain inside a recording or in an employee's memory. When a customer returns weeks later, the team spends time listening again and may not know who promised the next action.
How it works
The system creates a speaker-separated transcript and links every commitment to the exact place in the recording. It then prepares an action list and a response draft. A person approves every spoken response before audio is created.
What we tested across 12 calls
The reference implementation contains no client data, recordings, or credentials. It tests the full workflow, five required stops, and voice creation only after approval. It does not test reviewer identity or quality on real client calls.
For whom
This system fits teams left with short call notes, missing deadlines, and spoken responses that must be approved by a named person.
Recording → commitments → release → voice
- 01Every commitment points to an owner, a date and a second in the audio
- 02A call held for review never reaches the synthesis provider
- 03Audio exists only after a recorded human release
- Business type
- Service businesses recording customer or technical-support calls
- Input
- Recorded phone calls; the reproduction runs on 12 two-speaker synthesized calls, 436.41 s and 855 words in total
- Boundary
- A call held for review (complaint, money, unresolved deadline, request for a human) cannot start synthesis; the voice comes from a closed catalogue, with no cloning
- Cost
- USD 0.047770 for the recorded run of 12 transcriptions and one approved spoken notice.
- Security
- A complaint, money issue, unresolved date, or request for a person stops preparation of a spoken response.
- Speed
- We measure transcription and response-preparation time in a pilot using the client’s recordings.
- Trace
- Every commitment points to the relevant moment in the call, and release requires recorded approval.
- Similar system build
- from €3,500 net (approx. $3,800) · 2–6 weeks
Reference exchange rates: USD 1 = PLN 3.72; EUR 1 = PLN 4.30. PLN amounts are rounded, with the measurement currency retained in parentheses.
The voice boundary
A person approves every spoken response
The system does not call back, send messages, or close cases. A complaint, payment matter, unresolved deadline, or request to speak with a person stays in review however good the transcript is. A named person releases the spoken reply, and that decision stays in the audit trail. The demonstrator records the approval but does not authenticate the approver. The target environment must separately define the lawful basis for recording, retention, authorization, and deletion on request.
- Boundary
- A call held for review (complaint, money, unresolved deadline, request for a human) cannot start synthesis; the voice comes from a closed catalogue, with no cloning
- Cost
- USD 0.047770 for the recorded run of 12 transcriptions and one approved spoken notice.
- Security
- A complaint, money issue, unresolved date, or request for a person stops preparation of a spoken response.
- Speed
- We measure transcription and response-preparation time in a pilot using the client’s recordings.
The first corpus went in the bin
The first set of recordings was generated locally with eSpeak and was worth nothing: a formant synthesizer is recognizable within two seconds, and the transcript of such a file says nothing about a call with a customer. We rebuilt the corpus on neural speech in 16 catalogue voices, and we still call it what it is. Hence the second caveat: only one of the 47 voices available on our key is verified for Polish in a male register, so some speakers carry a slight foreign accent. Speaker separation scores 100% because turns in this corpus are divided by silence; with overlapping voices it will drop, and that is the first thing we would measure on live calls.
Estimated impact
Calculate the impact at your volume
This estimate uses the stated volume. Enter your own numbers to assess the possible impact in your company. The result is confirmed only during a pilot.
Today
Current assumption: 90 h/month (18 min/recording)
With the system
After scenario: 30 h/month (6 min/recording)
Time or cost saved
Modelled outcome: 45-75 h/month, 60 h base case
- Volume
- Modelled scenario: 300 recordings/month
- Formula
- 300 x (18 - 6) min / 60 = 60 h/month
- Calculation status
- medium
Data in the screenshots. The names, amounts, and documents shown in the screenshots are synthetic. Client data remains private. Measurements describe the demonstrator and are kept separate from production outcomes.
Working surfaces
The consultant works from commitments, and a named person releases any reply spoken in the company's voice.
The consultant starts the day with a list of commitments and their dates, and one click on any of them plays the second where it was said. Sensitive matters wait in review, and the only spoken replies that go out are the ones somebody released and signed with an audit entry. On your own traffic there is still work to measure that this reproduction does not: WER on production phone lines with noise, accent and overlapping speakers, the accuracy of commitment extraction, and the true cost per minute in both directions.
Three screens after the call: the tape, the commitments, the release.
Call tape
The waveform, the transcript and the commitments on one timeline; clicking a commitment plays the second where it was said.
Commitment list
Commitments with owner, deadline and confidence, with sensitive matters set aside for review.
Reply release
The draft, the reason for the hold, the reviewer field and the release history, each item with its audit entry.
System screens
See how the system works in practice
These desktop and mobile screenshots come from the running application. They show the process and the points where a person makes the decision.
- Screens
- 11
- px
- 1440 · 390
- 021440×1100
A tape, the transcript, and voice release behind the human gate. - 031440×1100
The listening desk framed on a phone.
Open the remaining screen archive (8)
- 041440×1100
A request for a human - 051440×1100
Commitments - 061440×1100
For review - 071440×1100
Voice releases - 081440×1100
A ready release - 091440×1100
A held release - 101440×1100
A recorded release - 111440×1100
Measurement register
Technology stack
The whole difficulty sits in one condition before synthesis, so the stack stays short.
There is no loop to orchestrate here: a call goes through transcription, commitment extraction and one conditional release transaction, so FastAPI and PostgreSQL are enough and a graph would be ballast. Polish speech with a timestamp on every word and separated speakers is specialist work, which is why ElevenLabs carries both directions through an EU data-residency endpoint. An audit starts by reading one condition in the code and running the structural checks, which pass without a provider key, so maintenance does not depend on account access.
- ElevenLabs Scribe v2
- writes the Polish call into words with timestamps and separated speakers
- ElevenLabs eleven_multilingual_v2
- synthesizes the reply using only a voice from a closed catalogue list
- FastAPI (Python 3.13)
- holds the release gate and the audio and text caps applied before any request
- PostgreSQL 17
- state for calls, commitments and drafts plus the append-only audit chain
- MinIO
- private buckets for source and released audio, served through a proxy
- Next.js 16
- the six listening-desk screens, rendering fully from the corpus seed
The client takes over the code, the prompts, the evaluation data and the documentation, and the whole thing runs as a set of containers in their own infrastructure. We use ElevenLabs through an EU data-residency endpoint, and the synthesis interface accepts no voice sample, because no such parameter exists in it.
Technical details and measurements
The working loop
The recording, the words and accountability stay on one timeline.
Every commitment leads back to its fragment of audio, and every spoken reply leads back to the person who released it. The release gate is one condition inside a database transaction, so it can be read and tested without a provider key.
Call recording in isolated storage
A timestamp on every word → commitments with an owner and a date
Complaint, money, unresolved deadline, request for a human → review
Reply draft → a recorded release by a reviewer
Voice with an audible notice and a hash-chain entry
System architecture
Audio storage, transcript, release gate and audit chain.
Files in private MinIO buckets, call and draft state in PostgreSQL, the speech provider behind an EU data-residency endpoint, and the release condition enforced on the server, out of the interface's reach.
- 01
Material
The recording is tied to the case.
The audio file sits in a private MinIO bucket and is served through a path-validating proxy. The call, the transcript and the commitments point at the same source. Caps of 60 seconds of audio and 360 characters of text apply before any provider request. The reference implementation does not evidence access control over recordings.
- 02
Commitments
Words have time; commitments have an owner.
Scribe v2 returns a timestamp on every word and separates the speakers, so a commitment points to the exact span of the recording, the responsible person and the deadline. A structural check confirms that every commitment quotes the stored transcript word for word.
- 03
Gate
Release is atomic and conditional.
A draft moves from pending to releasing in a single write, exactly once, and only when the call is not held. The synthesis client is constructed inside the release handler alone, so the draft path has no access to the code that speaks. The reviewer entry stays in the audit, and the reproduction does not authenticate it.
- 04
Notice and trace
The voice introduces itself; the audit remembers.
The synthesis text opens with an audible statement that a system is speaking, and the voice comes from a closed catalogue: the interface has no parameter through which someone's voice sample could be supplied. The release and the tool calls join a contiguous hash chain.
Why the voice stands behind several gates
A sentence spoken in the company's voice cannot be recalled like an email, so the system uses several gates: draft state, hold policy, recorded release, a closed voice catalogue and a mandatory notice. The process fits one condition and one transaction, so it needs neither a graph nor an agent loop. Structural checks therefore run without a provider key.
- Audio does not exist before the recorded release
- A held draft is refused before the provider is called
- The voice comes from a closed catalogue, with no cloning
- The system notice is part of every synthesis
- Caps of 60 s of audio and 360 characters apply before the request
Want to assess a similar process in your company?
- A 30-minute call with the engineer who would lead the work.
- A review of the processes that cost you the most time and money.
- A written summary of what to automate first and the likely cost range.
Times are shown in your own time zone. We work with clients across time zones.
The scan is free and creates no obligation. If automation is unlikely to pay off, the written recommendation will say so.