Skip to main content
The Operator Log
Product2026-05-04· 6 min read

How Reply Judge catches brand-voice drift.

A second-pass model trained on your last 200 sent replies. Below 0.78 fidelity, the reply doesn't go out — it goes to your inbox.

Sam Okafor

Product Lead, CS

The fastest way to lose a customer's trust isn't a wrong answer — it's a right answer in the wrong voice. A support reply that's technically correct but reads like a different company is a small betrayal, and at scale, small betrayals compound. Reply Judge exists to catch that betrayal before it ships.

Two models, two jobs

The responder drafts. The judge decides whether the draft sounds like you. We keep them separate on purpose: the model that's good at being helpful is not automatically good at being you, and conflating the two means you can't gate one without gating the other.

Reply Judge is anchored on your last ~200 sent, human-approved replies — the brand-voice embeddings. It scores a draft on fidelity to that anchor. Above the threshold, the reply goes out. Below it, the reply doesn't send; it lands in your inbox with the score and the specific lines that pulled it down.

cs_thread_evaluations — a reply held for driftjson
{
  "thread": "cs_thread#41207",
  "draft_intent": "refund_partial",
  "voice_fidelity": 0.71,
  "threshold": 0.78,
  "decision": "held_for_review",
  "flagged_lines": ["We sincerely apologize for the inconvenience caused."],
  "note": "anchor avoids canned-apology phrasing"
}

That flagged line is grammatically perfect and completely off-brand for a store whose anchor replies are warm and plain-spoken. A single model optimizing for helpfulness would have sent it. The judge caught it at 0.71 and routed it to a human.

Why 0.78, and why you can move it

The default threshold is conservative because the cost of a bad-voice reply is asymmetric — one off reply costs more than ten held ones. But it's your dial. Tighten it during a launch when scrutiny is high; loosen it once the anchor has grown and the held rate is mostly false positives. Every held reply is also training: approve or edit it, and it becomes part of the anchor.

Automation that can't tell when it sounds wrong shouldn't be allowed to speak for you. The judge is permission to let it speak at all.

Sam Okafor

The point isn't that the machine writes every reply. The point is that nothing goes out under your name that doesn't sound like your name. Reply Judge is the line between 'we automated support' and 'we let a stranger answer our customers.'

// reading this?

Reading this? You'd like the product.

If the writing resonates, the product probably will too. Same bar, same prose, same refusal to ship something you can't reverse.

Dry-run by default · Append-only logs · One-click rollback