🎯 New Audit
Click to upload or drag & drop audio file
MP3, WAV, M4A, OGG, FLAC — max 100MB
⚠
All Audits
BDA
Lead
Call Date
Audit Date
Type
No audits yet — run your first audit to see it here.
📊 BDA Performance Summary
Select a BDA and Problem Statement to generate an AI summary of all their audits — covering recurring patterns, coaching priorities, and a PS-level comparison.
🔽 Dashboard Filters
—
Total Audits
—
Active Managers
—
BDAs Audited
—
This Week
📈 Audit Trend Over Time
🥧 Audits by Problem Statement
🧠 Training Gap Analysis — Parameter Scores by PS
(AI-extracted scores 1–10 per parameter)
🏆 BDA Leaderboard — Audit Volume
🕐 Login History
Recent sign-ins across all managers on this device.
No login history found.
📊 Google Sheets Setup — Step by Step
Follow these steps once. After setup, every audit you run will be saved to your Google Sheet automatically — persistent across all sessions and accessible by your whole team.
1
Create a new Google Sheet
Go to sheets.google.com and create a blank spreadsheet. Name it Crio Audit Data or anything you like.
2
Open Apps Script
In the sheet, click Extensions → Apps Script. Delete any existing code in the editor.
3
Paste this script
Copy the entire code below and paste it into the Apps Script editor:
const SHEET_NAME = 'Audits';
const LOGIN_SHEET_NAME = 'Login History';
function doPost(e) {
try {
const data = JSON.parse(e.postData.contents);
const ss = SpreadsheetApp.getActiveSpreadsheet();
// ── Login event ──────────────────────────────────────────────
if (data.type === 'login') {
let ls = ss.getSheetByName(LOGIN_SHEET_NAME);
if (!ls) {
ls = ss.insertSheet(LOGIN_SHEET_NAME);
ls.appendRow(['Email','Name','Login Time','Device']);
ls.getRange(1,1,1,4).setFontWeight('bold')
.setBackground('#1a237e').setFontColor('#ffffff');
}
ls.appendRow([
data.email, data.name,
data.loginTime, data.device || 'Web'
]);
return ContentService
.createTextOutput(JSON.stringify({success:true}))
.setMimeType(ContentService.MimeType.JSON);
}
// ── Audit event ──────────────────────────────────────────────
let sheet = ss.getSheetByName(SHEET_NAME);
if (!sheet) {
sheet = ss.insertSheet(SHEET_NAME);
sheet.appendRow(['ID','Timestamp','BDA Email','Lead Email',
'Problem Statement','PS ID','Call Date','Audit Date',
'File Name','Audit Result','Manager Email']);
sheet.getRange(1,1,1,11).setFontWeight('bold')
.setBackground('#1a237e').setFontColor('#ffffff');
}
sheet.appendRow([
data.id, data.timestamp, data.bdaEmail, data.leadEmail,
data.psLabel, data.psId, data.callDate, data.auditDate,
data.fileName || '', data.result, data.managerEmail || ''
]);
return ContentService
.createTextOutput(JSON.stringify({success:true}))
.setMimeType(ContentService.MimeType.JSON);
} catch(err) {
return ContentService
.createTextOutput(JSON.stringify({success:false,error:err.message}))
.setMimeType(ContentService.MimeType.JSON);
}
}
function doGet(e) {
try {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const type = e?.parameter?.type || 'audits';
// ── Return login history ──────────────────────────────────────
if (type === 'logins') {
const ls = ss.getSheetByName(LOGIN_SHEET_NAME);
if (!ls) return ContentService
.createTextOutput(JSON.stringify({logins:[]}))
.setMimeType(ContentService.MimeType.JSON);
const rows = ls.getDataRange().getValues();
const headers = rows[0];
const logins = rows.slice(1).map(r => {
const obj = {};
headers.forEach((h,i) => obj[h] = r[i]);
return obj;
});
return ContentService
.createTextOutput(JSON.stringify({logins}))
.setMimeType(ContentService.MimeType.JSON);
}
// ── Return audits ─────────────────────────────────────────────
const sheet = ss.getSheetByName(SHEET_NAME);
if (!sheet) return ContentService
.createTextOutput(JSON.stringify({audits:[]}))
.setMimeType(ContentService.MimeType.JSON);
const rows = sheet.getDataRange().getValues();
const headers = rows[0];
const audits = rows.slice(1).map(r => {
const obj = {};
headers.forEach((h,i) => obj[h] = r[i]);
return obj;
});
return ContentService
.createTextOutput(JSON.stringify({audits}))
.setMimeType(ContentService.MimeType.JSON);
} catch(err) {
return ContentService
.createTextOutput(JSON.stringify({audits:[],error:err.message}))
.setMimeType(ContentService.MimeType.JSON);
}
}
4
Deploy as Web App
Click Deploy → New deployment. Set type to Web app. Set Execute as: Me and Who has access: Anyone. Click Deploy and authorise when asked.
5
Copy the Web App URL
After deploying, copy the URL that looks like https://script.google.com/macros/s/.../exec
6
Enter the URL here
Paste it below to connect this session. To make it permanent, paste it into the login screen next time you open the tool.