VaaniEval

Introduction

VaaniEval records every voice-agent call as a portable session package — audio, transcripts, provider spans and turn timings — so you can answer "why was that call bad?" with evidence instead of guesses.

VaaniEval is observability and evaluation for voice agents: the systems that listen to a caller, think with a model, call a tool or two, and speak back.

A voice call is not a web request. It is a chain of turns, each one a race against the caller's patience, and each one stitched together from three or four providers that all report time differently. When someone says "the bot was slow and it got my destination wrong", a normal APM can tell you an HTTP request took 7.4 seconds. It cannot tell you which turn the caller was waiting through, that the model was silently retried inside that turn, or that the transcription heard "Dubai" when the caller said "Manali".

VaaniEval is built to answer exactly those questions.

The VaaniEval console showing one recorded call: the calls rail on the left, a waveform with turn markers, a transcript that follows playback, and a trace listing every turn with its listening, thinking and speaking time.

What you get

A complete recording of every call

Timeline-aligned stereo audio with the agent on the left and the caller on the right, the transcript, every provider span, and the turn structure — written to disk during the call and uploaded afterwards.

Turn-level latency you can defend

Listening, thinking and speaking time per turn, attributed to the STT, LLM, tool or TTS span that actually caused the wait — including retried HTTP attempts hidden inside a single framework call.

Transcription review

Replay a recorded call against a stronger challenger model, see every word production disagreed on, and let a judge flag only the disagreements that could have changed the conversation.

A fleet view and alerts

Roll the same measurements up across agents, providers, models and environments, and get told when a threshold you care about is breached.

How it fits together

VaaniEval has two halves, and they are deliberately separate.

A capture SDK runs inside your agent process. It writes a session packagemanifest.json, events.jsonl, call.audio — to a local spool directory as the call happens. It never blocks the media path on a network call. There are two SDKs, Python and Node.js, and they emit a byte-compatible format.

A dashboard ingests those packages, stores them, and answers questions about them. It is a FastAPI service you run yourself.

The split matters. Because capture is local-first, a network problem between your agent and the dashboard costs you an upload, not a call. Because the package is a plain directory of files, you can inspect it with cat and jq before you trust anything the dashboard tells you.

Every number the dashboard shows is derived from the events in the package. There is no separate metrics pipeline to drift out of sync — if you disagree with a value, you can recompute it from events.jsonl yourself.

Where to start

What VaaniEval is not

Being clear about this saves you an evaluation cycle.

  • It is not a real-time monitor. Upload is explicit and happens after the call ends, so a call becomes visible one call-duration later. If you need sub-second alerting on a call in progress, this is the wrong tool today.
  • It is not a ground-truth accuracy benchmark. The STT comparison scores your production transcript against a challenger model, not a human reference. The result is labelled estimated WER / model disagreement, never accuracy. See Metrics.
  • It is not multi-tenant SaaS in this release. The dashboard you self-host has no authentication and no tenant isolation. Read Self-hosting before you put it anywhere but a private network.
  • It does not replace your agent framework's own tracing. It complements it. VaaniEval cares about the caller's experience of time and words; framework tracing cares about your code.

Source

The platform is three private repositories:

RepositoryWhat it is
vaanieval-observer-backendThe FastAPI dashboard, console and STT evaluation engine
vaanieval-observer-python-sdkThe Python capture SDK, including the LiveKit Agents integration
vaanieval-observer-nodejs-sdkThe Node.js capture SDK

VaaniEval is in closed beta

The repositories below are private while the product is in closed beta, so the links will 404 unless your GitHub account has been granted access. Neither SDK is published to a public package registry yet — both install from Git.

To get access, email shubham@vaanieval.com or book a call — a short conversation about your use case tells us whether VaaniEval fits, and gets you onboarded with the setup that matches your stack.

On this page