Call QA desk that scores recordings against your own rubric

Open one desk each morning to see every call recording scored against your rubric, with quotes as evidence, and nothing saved until you agree.

App
Google GeminiGoogle DriveGoogle SheetsSlack BotCustomer SupportSalesFeedback TriageAI Reports
PromptCreate

Build me a call QA desk that my support and sales leads open every morning. Our calls are recorded by our phone system and land as audio files in a Google Drive folder, and nobody has time to listen to them, so they go unreviewed. The app should turn that folder into a review queue where every call arrives with a scorecard already drafted against our own rubric, a human agrees with it or corrects it, and only then does anything get recorded or sent. The integrations are Google Drive for the recordings, Google Gemini for the scoring, Google Sheets for our QA register, and Slack Bot for coaching notes.

The landing view is the call list. Use Google Drive List Files scoped to a configured folder to list every recording, showing the rep, the call date, and the duration. Read date and duration from the file metadata List Files returns, and fall back to the file's created time when duration is not available. Match recordings to reps by convention, either a subfolder per rep or the rep name embedded in the file name, and make that rule configurable in settings with an Unmatched group for anything the rule could not assign, so no call silently disappears. Every row carries a QA status of not scored, draft, or saved. Give me filters by rep, by date range, and by status, and default the view to calls that still need a review, because the whole point is that the backlog is visible.

The rubric is the heart of this app and it lives in the app as editable data, not in code. A QA lead opens a rubric editor and manages a list of criteria, each with a name, a short description of what good looks like, a scoring scale, and a weight. Seed it with greeting, discovery questions, objection handling, whether a next step was booked, and the required compliance line, but every one of those must be editable, removable and reorderable, and new criteria must be addable without a developer. Weights roll up into a weighted total on each scorecard. Version the rubric so a scorecard saved last month keeps the criteria and weights it was actually judged against, and changing the rubric today never silently rewrites history. Show which rubric version a saved review used.

Scoring a call is a background job kicked off from the call row. The handler downloads the audio with Google Drive Download File Content, sends those bytes to Google Gemini Upload File to put the recording in the Files API, then polls Google Gemini Get File until the file state turns from PROCESSING to ACTIVE, and only then calls Google Gemini Generate Content with a reference to that file plus the current rubric. Getting this order right matters: calling Generate Content against a file still in PROCESSING fails, and a state of FAILED needs a visible error on the row with a retry rather than an empty scorecard. Use the Files API rather than inlining the audio, because call recordings routinely exceed the inline request size limit. Uploaded files are only retained for about 48 hours, so treat the file reference as short lived, persist the returned scorecard rather than the file handle, and re-upload if a call needs scoring again. Ask Gemini for structured output: for each criterion in the rubric, a score on that criterion's scale, a one line reason, and one or more verbatim quotes from the call with their timestamps.

Opening a call shows the scorecard, labelled a draft in a way nobody can miss until a human saves it. Each criterion is a row showing the drafted score, the one line reason, and the timestamped quotes underneath as the evidence, so the reviewer is checking a claim against what was actually said instead of trusting a number. The reviewer can override any score, and when they do, show the original drafted score beside the override so the disagreement stays visible. There is a free text note per call, which is what gets sent to the rep, and a weighted total that recalculates live as scores change. Nothing on this page writes to Google Sheets or Slack. Persist the draft so a reviewer can leave a call half reviewed and come back to it.

Saving is the commit step and it does two things. It appends a row to our QA register with Google Sheets Append Values: the call date, the rep, the call name, each criterion's final score, the weighted total, whether any score was overridden, the reviewer, and the rubric version. Then it sends the rep their coaching note in Slack, using Slack Bot Look Up User by Email to resolve the rep to a Slack user, Slack Bot Open a Conversation to open the direct message, and Slack Bot Send a Message to send it. The message carries the reviewer's note plus the final scores, written as coaching rather than as a verdict. Let an admin choose in settings whether notes go to the rep as a direct message or to a team channel. If a rep has no matching Slack user, save the review anyway and flag the delivery failure on the row instead of losing the review.

Add a Coach this rep button. It runs a background agent over that rep's last ten saved scorecards, the human approved ones and never the drafts, looking across calls rather than at any single one. The agent writes a coaching brief back into the app, filed against the rep, containing the patterns it sees, the criteria where the rep is consistently strong or weak, whether anything has moved since the last brief, and exactly two things for that rep to practise this week. Keep every brief with its date so a manager can open a rep and read the history before a one to one. Show progress while the agent is running, because reading ten calls takes time.

Two rules hold the whole app together. Scores are drafts until a human saves them, so the AI never puts a number on a person's record by itself. And the rubric is data a QA lead edits, so changing what we judge calls on never requires a developer. Keep the call list dense and scannable, because the daily job there is working a backlog down, and keep the scorecard page calm and readable, because the job there is judging one call carefully.

What does this prompt do?

  • Lists every recording in your Google Drive folder with the rep, the date and how long the call ran, so the backlog is visible instead of ignored
  • Opens each call with a scorecard already drafted against your rubric: a score, a one line reason, and the exact quotes from the call that earned it
  • Keeps every score a draft until a reviewer agrees with it or changes it, so nobody is judged on a number a person never checked
  • Files the final scores to your QA spreadsheet on save, and sends that rep their coaching note in Slack
  • Reads a rep's last ten scored calls on demand and writes back the patterns it sees plus two things for them to practise this week

What do I need to use this?

  • A Google Drive folder where your call recordings land, either a folder per rep or the rep's name in the file name
  • A Google Gemini account, which is what listens to the calls and drafts the scores
  • A Google Sheet to keep as your QA register
  • A Slack workspace, so coaching notes reach reps where they already work
  • Your rubric: the handful of things you actually judge a call on, and how much each one counts

How can I customize it?

  • Edit the rubric whenever your standards change: add, reword or remove criteria and change how much each one weighs, without anyone touching code
  • Choose what saving sends: which spreadsheet the register lives in, and whether the rep gets a direct message or the note goes to a team channel
  • Change how recordings are matched to reps, and how many past calls the coaching agent reads before it writes a brief

FAQs

Do we need a call recorder like Gong or Fireflies for this to work?
No. Anything that drops an audio file into a Google Drive folder works, including a dialler or a phone system. That is the point of this one: it reads raw recordings rather than depending on a meeting notetaker's own transcripts.
Can an AI score end up on a rep's record without anyone checking it?
No. Every score arrives as a draft and stays a draft until a reviewer saves it. Nothing reaches your spreadsheet or Slack until a person has agreed with the scores or corrected them.
Can I change the rubric myself, or does that need a developer?
You can change it yourself. Criteria, wording and weights are all editable inside the app. Reviews you saved in the past keep the rubric they were judged against, so editing today never rewrites old scores.
How long a call can it handle?
Full length calls, an hour or more. The recording is sent whole rather than cut into pieces, so the scoring covers the entire conversation. Longer calls take a little longer to come back.
What does the rep actually receive?
A message with their reviewer's coaching note and the final scores, written as coaching rather than as a verdict. You can point it at a team channel instead if your team prefers reviews to be visible.
What happens if a recording will not process?
The call shows a clear error on its row with a retry button, rather than a blank or half filled scorecard. Nothing gets scored silently.

Related templates

Prospecting desk that builds account lists from the live web

Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.

Hyperbrowser
HubSpot
Google Sheets
App
Share of voice dashboard for your brand and competitors

See how your brand's news coverage and sentiment stack up against four competitors, then let an assistant write the weekly report for you.

GDELT
Notion
Slack Bot
App
Approval war room for every social post awaiting sign-off

One screen showing every social post waiting on approval, sorted by deadline, so reviewers can approve or reject without leaving the page.

Hootsuite
Slack Bot
App
Turn champion job changes into new pipeline in Attio

Every Monday, find the past champions and closed-won contacts who changed jobs, update Attio, and get the moves worth chasing in Slack.

Boomerang
Attio
Slack Bot
Agentic Task
Collect social post requests and schedule them in Hootsuite

Staff submit what happened, your social manager edits the copy, picks the accounts and puts it on the calendar without a single spreadsheet.

Hootsuite
Slack Bot
General Input Database
App
Influencer campaign roster board with AI creator briefs

Drag creators through Sourced to Wrapped on a board grouped by campaign, with audience stats on every card and a one-click brief for each creator.

HypeAuditor
Google Sheets
Notion
App

Stop letting call recordings pile up unlistened.

Give your team a review desk where the rubric is yours, the evidence is quoted, and no score counts until a human agrees with it.