Home / Integrations

Bring the calls you already have.

Point Hotato at a call from the stack you already run. Five voice stacks capture into one scorer that reads turn-taking timing offline. Two of them can also place a live test call for you — behind a double gate, because it dials a billed line.

  • 5stacks
  • 3auto-pull
  • 2drive · gated
  • 0600local creds
The matrix

What each stack can do.

All five capture a recorded call. Placing a live call is Vapi and Twilio only, and only behind credentials and an explicit opt-in.

Capture & drive-a-call, per stack
StackCapture a callHow Hotato gets the audioDrive a live call
VapiYesAuto-pull with your API key, by call idGated
TwilioYesAuto-pull with your API key, by Recording SIDGated
RetellYesAuto-pull with your API key, explicit call id onlyCapture-only
LiveKitYesCapture in your infra, score the local WAVCapture-only
PipecatYesCapture in your infra, score the local WAVCapture-only

Gated means gatedDrive-a-call dials nothing without both your provider credentials and HOTATO_DRIVE_OPT_IN=1. Every run bills a live phone call, so it is opt-in twice over. Retell, LiveKit and Pipecat expose no origination Hotato trusts, so they stay capture-only — Hotato never places those calls.

connect → capture → scoreoffline
Prove the loop, no keys
$ hotato sweep --demo
Then connect your stack
$ hotato connect vapi

sweep --demo pulls a bundled call, scores it, and writes one HTML dashboard — no account, no keys, no network. Swap vapi for twilio or retell to connect a hosted stack.

Start offline

See the dashboard before you wire anything.

The demo runs the whole connect → pull → analyze path on a recording that ships with Hotato, so you can read the scorecard before a single credential leaves your machine.

hotato connect <stack> stores that stack's key once at file mode 0600 in ~/.hotato/connections.json. It is sent only to the vendor's own API on a capture — never to Hotato. Scoring itself stays offline.

What it measures

Timing, from separated channels.

Every adapter's job is the same: keep the two parties on separate channels all the way to the WAV, so an overlap has an owner.

  • did_yield
  • seconds_to_yield
  • talk_over_sec

ScopeHotato reads turn-taking timing from speech energy over time. It does not do speaker identification, diarization scoring, transcription grading, emotion or intent. Energy is not intent. A mono mix cannot attribute talk-over to caller or agent, so Hotato scores it only behind an explicit --allow-mono and labels the result indicative only.