Call Quality Audit

Paste a call transcript, score it against the Quality Audit Guide, then submit straight to the Quality Audits sheet.

Awaiting audit

Call details

Basic identifiers for the record — matches the columns in the Quality Audits sheet.

Staff Name
Date
Call Type
Canvas Details
Call ID
Auditor

Submit connection

One small relay script, deployed once, lets this page write finished audits into the Quality Audits sheet.

⚙ One-time setup (2 minutes, no API keys needed)
  1. Go to script.google.comNew project (already hardcoded to write into the Quality Audits spreadsheet by ID/tab, so it doesn't need to be opened from inside that sheet).
  2. Delete the placeholder code and paste in the script below.
  3. Deploy → New deployment → Web app. Execute as Me, Access Anyone. The first deploy will prompt a Google OAuth consent screen asking for Sheets access — approve it (this is your own script, running as you). Copy the resulting URL into the field above.
function doPost(e) {
  var body = JSON.parse(e.postData.contents);
  if (body.action === 'submit') return handleSubmit(body.payload);
  return json_({error: 'Unknown action'});
}

function doGet(e) {
  return json_({status: 'Audit relay is running'});
}

var TARGET_SPREADSHEET_ID = '1y_iwRNLomBeeXM9g6nXzIJwfq-X_xMhrsUQnTjHTjCE';
var TARGET_GID = 2132488623;

function getTargetSheet_() {
  var ss = SpreadsheetApp.openById(TARGET_SPREADSHEET_ID);
  var sheets = ss.getSheets();
  for (var i = 0; i < sheets.length; i++) {
    if (sheets[i].getSheetId() === TARGET_GID) return sheets[i];
  }
  throw new Error('Tab with gid ' + TARGET_GID + ' not found in the target spreadsheet.');
}

function handleSubmit(payload) {
  var sh = getTargetSheet_();
  if (sh.getLastRow() === 0) {
    sh.appendRow(['Staff Name','Date','Canvas Details','Call ID',
      'Identity verified (Name, DOB, address) before sharing details','Safety signal handled','Consent integrity',
      'Introduction + referral reason','Program explained (plain language)','Insurance confirmed + cost reassurance-first',
      'Scheduling completed cleanly','Consent + portal + save number; Closing recap','Objection handled with the right reframe',
      'Accuracy, Tone / rapport','Contacted within SLA','Canvas documentation accurate','Consent/portal actually sent',
      'Notes','Final Score','Auditor']);
  }
  sh.appendRow([payload.staffName, payload.date, payload.canvasDetails, payload.callId,
    payload.identity, payload.safety, payload.consent, payload.intro, payload.program,
    payload.insurance, payload.scheduling, payload.closing, payload.objection, payload.tone,
    payload.sla, payload.canvas, payload.consent_sent, payload.notes, payload.finalScore, payload.auditor]);
  return json_({status: 'ok'});
}

function json_(obj) {
  return ContentService.createTextOutput(JSON.stringify(obj)).setMimeType(ContentService.MimeType.JSON);
}

Transcript

Paste the full call transcript, click "Copy audit prompt," paste it into claude.ai, then paste Claude's reply back below. No API key needed. Every result is editable, and you can fill in everything manually too.

Tiered scoring framework

Tiered Scoring Framework Quality Metrics Scores
Green Zone (≥ 90%) → Excellent quality call Critical Guardrail
Yellow Zone (85–89%) → Acceptable but improvable Core Execution
Red Zone (< 85%) → Needs coaching or corrective action Process/Compliance
Total Score

Notes