ServicesTechnologiesUse CasesTeamResourcesContactBook a free intro meeting
All use casesCustomer Service / Call Center Quality Assurance

Call Center QA Teams Spot-Checking Calls Instead of Reviewing Every One

The problem

Post-sale customer service calls get recorded, but almost none of them get properly reviewed. A QA team can only score a thin slice of the calls coming in each day, because listening to a call and grading it against a quality checklist by hand takes real time. So the same few percent gets sampled, week after week, while everything else agents say to customers goes unheard.

Where it breaks down
Agents consistently missing key steps, skipping a required disclosure, forgetting to confirm identity, rushing the close, can go unflagged for weeks unless a customer complains first

  • Two reviewers scoring the same call rarely land on the same grade, since the checklist gets interpreted a little differently person to person
  • Every new question added to the rubric means training reviewers on it, not just updating a spreadsheet
  • The evidence behind a score usually lives in a reviewer's head or a rough note, not in a record tied to the actual moment in the call

What this costs
Coaching becomes reactive. Supervisors act on the handful of calls somebody happened to catch, not the pattern across the floor. And hiring more reviewers to close the sampling gap doesn't scale. Doubling the QA team doubles the sample, not the coverage.

The build

The system runs as two linked n8n workflows: one that ingests, transcribes, and scores every call, and a second that serves a live portal for supervisors to browse results.

Watching for new recordings

A Drive-folder trigger polls the inbound recordings folder every five minutes. Recordings land there in batches after they're saved off the phone system, so a five-minute poll keeps this simple, no dedicated webhook wiring into the call platform itself is needed. On each run the workflow also pulls the current QA rubric and the expected call script straight from a master Google Sheet, filtered to only the rows marked active, and merges both into a single block before anything gets scored. That means adding, retiring, or reweighting a question is a spreadsheet edit, not a workflow change, and the evaluation prompt is explicitly built to refuse to hard-code any question.

Transcribing every call

Each new recording is logged to a tracking sheet with a generated process ID and a Processing status, then downloaded and handed to Google Gemini 2.5 Flash for a full transcript, with automatic retries built in for the odd flaky file. The sheet updates to Transcribed the moment the text lands, so the raw transcript is auditable on its own before scoring ever touches it.

Scoring against the live rubric

The transcript, the rubric, and the call script go together into GPT-4.1-mini, forced through a structured output parser so the model can only return valid JSON. For every rubric question it returns a YES, NO, or NA for qualitative items, a 1-5 rating for quantitative ones, and a short comment pointing to the specific evidence in the call. Hard constraints in the prompt (no added or removed questions, no summarizing, no invented evidence) keep the output tied directly back to what was actually said.

Blending the score and closing the loop

A code step tallies the qualitative YES/NO answers into a percentage, averages the quantitative ratings against their ceiling, and blends both halves into one final score with a configurable pass line. The result writes to a call-level summary sheet and, question by question, to a detailed evidence log, so a supervisor sees both the headline number and exactly why a call lost points. The file's status flips to Evaluated and the recording moves into a processed folder, so the next poll never touches it again.

Serving it back to supervisors

A second workflow answers on demand behind a webhook: a styled dashboard pulls summary stats and a full call list straight from the same sheets, so a supervisor sees coverage and scores without opening a spreadsheet at all.

The outcome

Every call now gets audited. Not a sample, not a spot check, all of them.

Before automation, QA could manually review only about 2% of the roughly 3,000 calls this center handles each month, something like 60 calls getting a full grade against the quality checklist while the other 98% went unreviewed. Now the same rubric runs against every single call, the moment the recording lands.

Operationally, that means a supervisor coming in each morning sees a scored, evidence-backed record for the full call volume, not a handful the team happened to get to. An agent who's quietly slipping on one part of the script, missing a disclosure, rushing a close, shows up in the data the same week it starts happening instead of surfacing months later after a complaint. Coaching moves from reacting to whatever got flagged in a small sample to acting on the actual pattern across the floor.

The math behind it: manually reviewing all 3,000 calls at roughly 7-8 minutes each would take close to 375 hours of QA time a month, on top of whatever the team already spent reviewing the 60 calls it was sampling. That coverage now runs without adding a single reviewer, freeing the QA team's actual hours for coaching and follow-up on the calls the audit flags, instead of listening to raw audio.

The bigger shift is qualitative. Quality management stops being a sampling exercise and becomes a real-time view of every conversation happening on the floor.

The stack

100% call coverage
of calls audited monthly, up from a ~2% sample

Have a similar problem?

Bring your messiest process — we'll tell you honestly whether n8n is the right tool for it.

Book a free intro meeting