Daily support call QA review queue with risk scores

By General Input

Give your QA lead a ranked queue of recent support calls to work through each morning, with sentiment, risk flags, and a suggested scorecard on every call.

Integrations

  • AssemblyAI
  • Google Drive
  • Slack Bot

Type

App

Categories

  • Customer Support
  • Operations

Build me an internal app my support QA lead opens every morning to work through recent customer support calls in priority order, instead of spot checking calls at random. It uses AssemblyAI for transcription and audio intelligence, Google Drive as the source of call recordings, and Slack Bot for escalations.

The main surface is a review queue listing recent calls, sorted by a risk score the app computes from the call's overall sentiment, the number of negative sentences, and how many watchlist phrase hits it has. Each row shows the call date, duration, the agent name if it is in the file name, the risk score, a sentiment summary, the watchlist phrases that were hit, and a review status of not started, in review, or completed. Pull the calls with AssemblyAI List Transcripts and enrich each one with AssemblyAI Get Transcript. Give the queue a filter for negative sentiment, a filter for watchlist hits, and a filter by review status.

The watchlist is a configurable list of phrases stored in the app, seeded with cancel, supervisor, lawyer, and refund, and editable from a settings view. For each call, run AssemblyAI Word Search with the current watchlist so every hit comes back with its timestamp, and render the hits as timestamp chips that jump to that point in the transcript.

Opening a call shows the full transcript with sentiment shown per sentence, using AssemblyAI Get Transcript for the sentiment analysis results and AssemblyAI Get Sentences for sentence segmentation and timing, so each sentence carries its own sentiment label. Negative sentences and watchlist hits should be easy to scan down the page.

Add a playback link fetched on demand through AssemblyAI Get Redacted Audio when the reviewer opens the call. Do not store or cache that URL, because redacted audio URLs expire twenty four hours after they are generated. If the URL has expired or the redacted audio is not ready yet, show a retry control rather than a broken player.

Generate a suggested quality scorecard with AssemblyAI LLM Gateway Chat Completion, passing the transcript and asking for a score plus a one line justification for each of greeting, issue identification, empathy, and resolution. Render it as an editable scorecard with the suggested values pre filled and clearly labeled as suggestions.

The reviewer adjusts each score, marks the call pass, fail, or needs coaching, and writes free text notes. Scores, disposition, notes, reviewer identity, and the time of review all persist in the app, so a completed review can be reopened later and the queue always reflects what has been handled.

Add an escalate button on the call detail view that posts to a Slack channel using Slack Bot Send a Message. The message includes the call date, the risk score, a short summary of the call, the watchlist phrases that were hit with their timestamps, the reviewer's disposition, and the reviewer's notes. Record on the call that it was escalated, by whom, and when.

Recordings are ingested from a Google Drive folder. Use Google Drive List Files scoped to that folder to find new audio files, Google Drive Download File Content to pull the audio, and AssemblyAI Submit Transcript to submit each one. Submit with PII redaction, redacted audio, sentiment analysis, and entity detection all enabled, so reviewers never see raw card or account numbers and so redacted playback is available later. Redacted audio only works when it was requested at submit time, so it has to be turned on for every submission. Give me a button to run ingest on demand, and keep track of which Drive files have already been submitted so nothing is transcribed twice.

A submission that returns a success response can still resolve to an error status later, so the queue needs a visible failed state showing the error reason with a retry action, rather than silently dropping the call.

Each reviewer should only see calls that are unassigned plus the calls assigned to them. Let a reviewer claim a call from the queue, which assigns it to them, and let a lead reassign a call to someone else. Filter every queue view by the current user so two reviewers working at the same time never end up reviewing the same call.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seatsPause marketing emails to escalated customers, then restore them