Paste a call transcript, score it against the Quality Audit Guide, then submit straight to the Quality Audits sheet.
Basic identifiers for the record — matches the columns in the Quality Audits sheet.
| Staff Name | |
| Date | |
| Call Type | |
| Canvas Details | |
| Call ID | |
| Auditor |
One small relay script, deployed once, lets this page write finished audits into the Quality Audits sheet.
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','Call Type','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.callType, 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);
}
Lists your Aircall calls for a date range and sorts them using the tags your team puts on calls in Aircall (Enrolled / Successful / Declined, plus New Referral / Proactive Outreach / Reschedule). Click Audit on a call to load it into the form below.
Put the Aircall link (or call ID) in Call ID above and click Import transcript from Aircall — the transcript, staff name, date and call direction fill in automatically. Then click "Copy audit prompt," paste it into claude.ai, and paste Claude's reply back below. No API key needed. If Aircall has no transcript for a call, paste it into the box by hand. Every result is editable.
| 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 | — |