Voice · 2 connectors

Phone calls scored exactly like a chat.

RingCentral and Amazon Connect both come into Belter as a transcript: the recording is pulled (or pushed), transcribed with Whisper, diarized into agent and customer turns, then evaluated against your rubric. One score model. Chat, ticket, call.

2 Live RingCentral · Pull Amazon Connect · Push
Call cx_88421 · 06:48
Customer · +44 ••• 4127 → Jordan T.
88
● Pulled ● Whisper ● Diarize ● Score
00:0003:2406:48
Customer · 02:14
I've been on hold three times this week — is anyone going to fix this?
Jordan T. · 02:18
Completely understand — let me pull your last two tickets and walk you through what's happening.
Live · Pull

RingCentral

Pulls recorded phone calls via RingCentral's REST API using JWT server-to-server OAuth. Belter downloads the recording, transcribes it with Whisper, diarizes into agent / customer turns, then scores against your rubric. Sandbox mode available for staging.

  1. 1Provision a server-to-server app in the RingCentral Developer Portal; grab Client ID, Secret, and JWT.
  2. 2Enable call_sync_enabled in Belter's RingCentral settings.
  3. 3Belter creates a "call shell" per recording → downloads audio → Whisper → diarize → messages → score.
  4. 4Use sandbox mode to test against your dev instance before pointing at production.
Auth
JWT · server-to-server OAuth
Model
Pull · 15-min sync
Transcript
Whisper + diarization
Modes
Production · Sandbox
Call pipeline · single recording avg 42s end-to-end
  1. 1
    Call shell created
    RC REST · recording_id
    2s
  2. 2
    Audio downloaded
    .mp3 · encrypted store
    5s
  3. 3
    Whisper transcribes
    multilingual · word-level ts
    22s
  4. 4
    Diarize → messages
    2 speakers → agent / customer turns
    8s
  5. 5
    QA evaluate
    rubric vN · per-criterion reasoning
    5s
Live · Push

Amazon Connect

Push model, not pull. Amazon Connect emits Contact Lens transcripts and Contact Trace Records via Kinesis; a Lambda forwards them to POST /api/v1/ingest/amazon-connect. Voice and chat normalize into the same conversation format.

  1. 1Enable Contact Lens on your Connect instance.
  2. 2Route Kinesis Data Stream events to our reference Lambda.
  3. 3Lambda POSTs to Belter with your API token + X-Amazon-Connect-Secret header.
  4. 4Belter normalizes voice + chat into one conversation model — and scores.
Auth
API token + secret header
Model
Push · realtime via Kinesis
Source
Contact Lens · CTR
Docs
/conversation-ingestion.md
Push pipeline ● Realtime
Connect
Contact Lens
Kinesis
Data stream
Belter
/ingest/amazon-connect
POST /api/v1/ingest/amazon-connect
// from your Lambda
POST https://api.belter.app/api/v1/ingest/amazon-connect
Authorization: "Bearer ••••••"
X-Amazon-Connect-Secret: "••••••"

{
  "contact_id": "a8d2-...",
  "channel": "VOICE",
  "contact_lens": { /* transcript */ },
  "agent": { "username": "jordan.t" }
}
What you get

Calls become first-class QA citizens.

Same rubric as chat. Same audit trail. Same coaching workflow. The only thing that's different is that you can also press play.

Whisper transcription

Multilingual, word-level timestamps, speaker labels. Stored encrypted alongside the audio.

Diarization

Agent vs customer turns separated cleanly. Rubric scoring works exactly like a chat thread.

In-app playback

QA reviewers can listen to the original recording from the scorecard view, with transcript scrubbing.

PII redaction

Card numbers, IBANs, NI / SSNs auto-flagged in the transcript and masked from the scoring prompt.

Voice QA, finally

Score your phone calls the way you score your chats.

Connect RingCentral with a JWT, or wire Amazon Connect Contact Lens to our ingestion endpoint with our reference Lambda. From dial-tone to scorecard.