Compute
Measure call quality without one blunt score
Report talk time, interruptions and issue flags as separate measures, each with the audio evidence behind it. Use a bounded, permitted recording set and read every measure on its own.
What you get
Four measures per call, reported separately and never merged into one number.
- Talk time, split by speaker, as durations and shares of the call.
- Interruptions, each with the time it happened and who spoke over whom.
- Issue flags against the rubric you supply, such as a missing disclosure.
- Evidence for each of the above, as a timestamp range in the recording.
There is no overall grade. One number cannot be checked, appealed or explained to the person being reviewed, so this example does not produce one. Weight the four measures yourself if you need a ranking, and keep the weights visible.
What you need
Five recorded calls you are permitted to process, and a manifest. Check the permission before the audio, not after.
call_id,path,duration_seconds,permission_ref,channel_layout
CQ-1101,calls/support-a.wav,364,CONS-2026-08-01,stereo
CQ-1102,calls/support-b.wav,221,CONS-2026-08-01,stereo
CQ-1103,calls/sales-a.wav,905,CONS-2026-08-02,stereo
CQ-1104,calls/sales-b.wav,478,CONS-2026-08-02,mono
CQ-1105,calls/support-c.wav,143,CONS-2026-08-03,stereo
call_id is your item_id_field. permission_ref points at your own record of the permission; it is a reference, not the consent document. Set the data profile that matches what you are allowed to send. Row four is mono, so speaker separation is harder and confidence should drop.
Run it
- Inspect locally:
lithi media inspect ./call-fixture. Confirm the channel layout, because two-channel audio separates speakers far more reliably. - Read the workflow with
lithi workflow explain <workflow-id>, and read its parameters. The issue rubric is a parameter you supply, not a fixed list. - Quote it:
lithi quote --workflow <workflow-id> --input ./call-fixture/manifest.csv. The quote gives a maximum charge and an expiry, and authorizes nothing. - Approve the quote separately, then submit with
lithi batch submit. - Track with
lithi status <job-id>and download when terminal.
Start on five calls, not five hundred. You are testing whether the measures match what you hear before you scale the set.
Read the result
Open result-manifest.json first, then read data/part-* one measure at a time.
Take three interruptions at random and play the cited seconds. If the audio does not show an overlap, the measure is wrong and the rubric or the channel layout is the usual cause. Do the same for two issue flags.
Then compare talk-time shares against the mono call. A lower lithi_confidence there is correct behavior, not a fault. verification.json states what the preset checked, and abstentions/part-* holds calls the workflow declined to judge. An abstention on a noisy line is better than a confident flag against a person: see how a rubric is defined and versioned.
Where it stops
These are measures, not judgments about a person. Nothing is written to a performance record, and no one is notified.
The rubric is yours, so the issue flags are only as good as the rubric you wrote. A flag says a phrase was present or absent at a timestamp. It does not say the call went badly.
Send only what you are permitted to send, and keep the permission record on your side: choose the data profile that matches your permission. A person reviews the evidence and decides what, if anything, happens next.