Architecture

How CoachOS works

A daily pipeline from raw recording to coaching report — with a role-aware brain so a setter is never judged on a closer's job.

1
Ingest

Cron pulls new recordings from the team's Google Drive folder every 30 min + a nightly sweep. Files copied to Cloudflare R2, md5-deduped.

2
Attribute

Rep identified by folder-per-rep (or voice-ID in v2). Anything ambiguous → a one-click triage queue.

3
Transcribe

Sarvam AI (Hindi/Hinglish, speaker-separated) → timestamped, diarised transcript + English translation. faster-whisper fallback.

4
Analyse

Claude fills a fixed, ROLE-AWARE JSON schema — setters and closers scored on their own rubric. Consistent scoring = real trends.

5
Store

Postgres: reps, calls, scores, objections, findings, SOPs. Audio in R2.

6
Report

Nightly per-rep coaching report + team digest, pushed to WhatsApp/email.

7
SOP + retrain

Recurring wins/mistakes roll into living SOPs. Repeat a flagged mistake N times → the matching SOP auto-assigns.

Wiring status

What's live in this build and what plugs in with keys.

  • Live App, role-aware scoring engine, reports, SOP library — seeded with 41 real analysed calls.
  • Needs key Sarvam AI transcription (or self-hosted faster-whisper).
  • Needs key Google Drive service account (folder-per-rep watcher).
  • Needs keyAnthropic API for automated scoring (schema & prompt already built).
  • v3 CRM linkage — validate outcomes against real enrollments.

Role-aware rubric

The setter/closer split, codified.

Setter — Muskan

Qualify hard, build interest, book a committed appointment / warm-transfer.

Scored on: Opening · Rapport · Qualification · Interest · Objection softening · The Set
KPIs: set rate · qualified-handoff · show rate · downstream close rate
Closers — Sandhya, Prashansha, +1

Discover → pitch to the pain → resolve objections → close.

Scored on: Opening · Discovery · Pitch · Objection · Price · Close
KPIs: close rate · avg deal · objection-win rate · seat-hold ask rate