Skip to main content
A Live Conversation is a real production call you upload to Coval to evaluate. Running your metrics against calls that actually happened lets you measure how your agent performs in production. (In the app, these are labeled Conversations.)

Sending a conversation in

You submit a conversation by pushing its post-call transcript to Coval — with audio, or transcript-only. Text-only metrics (anything derived from the transcript) start running the moment the transcript lands; audio-derived metrics run once audio is attached. There are three ways to get a conversation in:
  • APIPOST /v1/conversations:submit with the transcript, and optionally audio_url or inline audio. This is the path for production volume. See the submit API reference.
  • UI upload — the Upload to Conversations dialog, for manual or one-off uploads.
  • Telephony (async audio) — when your recording URL only finalizes after the call ends, submit the transcript first and attach the audio in a second call. See Attach Audio After a Call.

Submitting with audio

Audio is optional. Attaching it also runs audio-derived metrics (STT word error rate, audio sentiment, and other acoustic checks). How you record matters for role mapping:
  • Stereo (recommended) — Channel 0 (left) = Agent, Channel 1 (right) = User. Roles are assigned deterministically from channel position.
  • Mono — Also supported. Speaker roles are inferred from transcript content via an LLM, so mapping is usually accurate but less reliable than stereo.

What gets evaluated

Every metric you can run on a simulation can run on a conversation. Metrics attach to incoming conversations in three ways:
  • Default Metrics — a set you define that runs on every incoming conversation.
  • Metric Rules — add metrics conditionally, based on a conversation’s results or metadata keys.
  • Ad hoc — select metrics yourself when rerunning on historical calls.
To evaluate behavior that isn’t visible in the transcript — tool calls, execution order, internal steps — send OpenTelemetry traces alongside the submission. You can send traces via the API, the OpenTelemetry SDK, or directly from the Upload to Conversations dialog. Traced conversations also become searchable in Trace Search.

Closing the loop: add to test sets

When a production call surfaces a problem, add the conversation to a test set. The scenario then runs as part of your simulations, so the same failure is checked before future releases.

Rerunning metrics on historical calls

If you change a metric formulation or add a new metric, you can retroactively apply it to historical conversations without re-ingesting transcripts. How to rerun metrics from the conversations table:
  1. Open the Conversations page.
  2. Click Select Rows along the top menu bar under Conversations and use the checkboxes on the left to select one or more calls.
  3. Click the Rerun Metrics button in the action bar.
  4. In the modal, select the metrics you want to run, then confirm. You’ll see a toast confirming the launch.
Limits:
  • You can rerun metrics on up to 500 calls per batch. If you select more than 500, the button shows a count and displays a toast asking you to reduce the selection.
  • Only calls with an existing evaluation output are eligible. Calls without one are automatically filtered out.
Rerunning metrics does not re-ingest or re-simulate the call. It re-evaluates the existing transcript and outputs against the selected metrics. Depending on the number of calls and metrics selected, this may take a few moments to complete.

See also