AI Call Quality Control System

An automated pipeline that listens to every customer call and tells a moving company whether the quote can be trusted — no human listens to a single recording.

Node.jsGemini 2.5 ProWhisperX Speaker DiarizationRedis + BullPostgreSQLRingover APICall Quality Automation
QC System dashboard overview

Project Overview

A small team of agents handled inbound moving enquiries by phone, then sent quotes manually a few hours later. The quote and the call sometimes disagreed — an agent mishears a floor number, packing materials discussed on the call vanish from the quote — with no review process and no coaching data to fix it.

We built a system that transcribes and analyses every call automatically, connecting Ringover, RunPod (WhisperX), and Gemini 2.5 Pro into one pipeline with no manual trigger.

Cases in database
940
Cases AI-analysed
122
REST endpoints
36
Call to verdict
~15 minutes

How It Works

A Bull job polls Ringover every 15 minutes for new completed calls and matches them to cases by normalised phone number. Matched recordings are transcribed with WhisperX on RunPod, producing a labelled, speaker-diarized transcript. Gemini 2.5 Pro then compares the transcript against the quote using a versioned prompt and returns a structured verdict — YES, NO, ESTIMATED_QUOTE, or MULTIPLE_QUOTES — with a written explanation and agent coaching notes.

  • Poll & match calls to cases every 15 minutes
  • WhisperX transcription with speaker diarization on RunPod
  • Gemini 2.5 Pro structured verdict + agent coaching
  • Redis + Bull async queue with retry on failure

Screens

Case detail view with discrepancies and coaching notes
Discrepancy breakdown, scores, and next-call coaching per case
Webhook logs showing matched and unmatched Ringover calls
Every Ringover call logged, matched or flagged for review
Pending calls breakdown by duration
Unmatched calls categorised by duration to separate noise from real gaps

Outcome

The system now processes new calls continuously with a roughly 15-minute call-to-verdict latency. Of 122 fully analysed cases, 47 came back NO — real discrepancies that previously had zero detection mechanism. Agent coaching now has real data behind it for the first time.

Highlights
  • 47 real discrepancies surfaced out of 122 analysed cases
  • Agent performance scoring with real call data
  • 35 estimated-quote cases flagged for follow-up
  • Runs unattended — PM2 + scheduled polling, no manual triggers

Tech Highlights

Node.js 20 + ExpressPostgreSQL 15 + KnexRedis + Bull job queueGemini 2.5 ProWhisperX on RunPodRingover API (polling)

Overview

940
Cases Tracked
~15 min
Call to Verdict
Read the Full Case Study

Need every call checked automatically, not spot-checked by hand?

Let's discuss the best stack for your business