Work  /  Product  /  09

Just Grade Metrics — AI Call Quality Assurance

Built for a client · live SaaS · justgrademetrics.com

Delivered — measured against production, isolation tested by cross-tenant reads

31tables under row-level security
~⅓of real uploads held back for a person
A scorecard on a clipboard beside a call transcript with one quoted line marked.

The problem

Contact centres record every call, then score one or two per cent of them by hand.

The sample is too small to be representative, scoring drifts between reviewers, and when an agent disputes a mark there is rarely anything to point at.

How it runs

  1. Upload and queue

    01 / 05

    A recording is chunked and handed to a PostgreSQL job queue with claim, retry and dead-letter semantics — each stage a row.

  2. Transcribe

    02 / 05

    Each chunk is transcribed and the transcript assembled with speakers attributed: exactly from dual-channel audio, inferred from mono.

  3. Grade

    03 / 05

    The call is graded against the tenant’s own scorecard, and every score must quote the transcript.

  4. Check the quote

    04 / 05

    A validator confirms each quote appears verbatim; if it does not, the call is held back and routed to a person.

    quote not found → human review

  5. Publish by role

    05 / 05

    Scores appear on four role-based surfaces; an agent sees their own calls and can contest a grade — never a colleague’s.

The guards, and what each one prevents

HoverTap a card to read what it prevents.

  • No evidence, no score

    A QA score a supervisor cannot trace to something someone actually said is worthless in a dispute. The check holds back roughly a third of real uploads — that is it working.

  • Uncertainty shrinks the score

    When speaker attribution on a mono recording is not confident, criteria that depend on who spoke are marked not applicable rather than guessed.

  • PostgreSQL enforces isolation

    Row-level security on 31 tables, so an agent querying a colleague’s call is refused by the database, not filtered by the interface — tested by attempting cross-tenant reads.

  • The model’s key is never on the web server

    All model access lives in edge functions, so compromising the web server exposes no spend-capable credential.

  • A published scorecard is frozen, prompt included

    A score disputed months later can be answered with the exact instructions that were in force at the time.

  • A human override keeps the original

    Both scores are retained. The gap between them is the only measure of whether the model can be trusted.

Limits, stated plainly

  • Just Grade Metrics is a client’s product, built under contract from the first commit. The engineering is mine; the product is not.
  • About a third of uploads go to a person rather than straight to a score. Budget for reviewers, not full automation on day one.
  • Mono recordings are weaker than dual-channel: speaker attribution is inferred, and criteria that depend on who spoke may come back not applicable.

Built with

  • Next.js
  • Supabase
  • PostgreSQL
  • TypeScript
  • OpenAI