All work

Sales coachingR&DEngineering

An adversarial roleplay loop with normalised scoring

Building a voice agent whose job is to be difficult (interrupting, objecting, pressing on price) then converting the session into structured turns and scoring it against a weighted rubric so the number means the same thing across every rep.

Who this is for
Engineers and technical leads reviewing the architecture and implementation decisions.
Challenge
An adversarial agent has to interrupt, which is a timing decision made against an incomplete utterance, and raw rubric scores drift between personas and lengths, so a hard persona looks like a worse rep.
Solution
A streaming roleplay loop with an objection policy operating on partial utterances, structured event capture at the time of speaking, and a rubric kept separate from the model so a model change cannot move the scale.
Impact
Sessions became queryable structured data rather than recordings, with scores comparable across reps, personas and months.
Status
A Bigcircle R&D build on the same runtime as our insurance and real-estate agents. No client, no deployment.

In short

Bigcircle reused the insurance and real-estate voice runtime and added an objection policy that decides a barge-in from a partial utterance. The session is stored as structured turns while people are speaking, and the score comes from a versioned rubric with normalisation rather than from the model that writes the feedback. This is a Bigcircle R&D build with no client and no deployment. On this internal build, manager review moved from 20 to 40 minutes of listening to a 2 to 3 minute guided summary.

Key facts

Definition

RepliCoach is Bigcircle's sales roleplay agent: a streaming loop that can interrupt, structured capture during the session, and a rubric kept off the language model.

How Bigcircle does it

  1. Bigcircle reads the partial utterance, the persona, and the deal stage, and decides whether to interrupt before the turn ends.
  2. Bigcircle writes timestamped turns, speakers, and session metadata as the conversation happens, into one schema.
  3. Bigcircle scores communication, persuasion, product knowledge, and closing on weighted markers, then normalises so a harder persona does not by itself lower the number.

Comparison

A cooperative voice agent can wait for the turn to end, while Bigcircle's objection policy has to interrupt before that boundary exists.

Key number

On this internal R&D build, with no client and no deployment, manager review moved from 20 to 40 minutes of listening to a 2 to 3 minute guided summary.

20–40m → 2–3m
Manager review time

Full call-length listening replaced by a per-session guided summary. Internal result from our own R&D build.

One rubric
Scoring every session identically

Schema-driven weighted dimensions with normalisation, so feedback does not depend on which manager happened to listen.

One runtime
Across three domains

The same voice stack behind our insurance and real-estate agents. Demonstrable reuse rather than a measured outcome.

Stack

Real-time voice roleplayRubric-based scoringStructured session captureShared voice runtime

Most voice agents are built to be agreeable, to understand, comply and resolve. This one is built to resist, which changes the real-time problem: the agent has to decide when to interrupt, and interrupting well is a timing decision made against an incomplete utterance.

This is the engineering half of the case study. The business read (and the fact that this is our own R&D showcase rather than a client engagement) is a separate document.

The problem

An adversarial agent has to interrupt, and interruption is a real-time judgement. A cooperative agent waits for a turn to end. This one has to decide mid-utterance whether the rep has said something worth pushing on, and cut in, early enough to feel like a real objection, late enough not to be nonsense. There is no end-of-turn signal to wait for, because the whole behaviour happens before the turn ends.

Scoring needs structure that audio does not have. A recording cannot be scored consistently, compared across reps, or tracked over time. It has to become turns, speakers, timestamps and events at capture time, reconstructing that later from audio is both lossy and too slow to be part of a practice loop.

Rubric scores are not comparable by default. Raw model scores drift between sessions, between conversation lengths and between personas. A hard persona producing lower scores than an easy one is correct; a hard persona producing lower scores for the same performance is a broken measurement, and the two look identical without normalisation.

And the feedback loop has to close fast enough to be practice. Feedback the next day is feedback about a call the rep has stopped thinking about.

  • Barge-in decided mid-utterance, not after a turn boundary

  • Structured capture at the time of speaking, not transcription afterwards

  • Normalised scores, comparable across personas, lengths and reps

  • Multi-tenant concurrency, because a sales floor practises at the same time of day

Architecture

Three pieces on a shared runtime, and the runtime is the same one behind our insurance and real-estate agents, which is why a third domain cost a tool layer and a rubric rather than a build.

The agentic voice runtime is a streaming roleplay loop with turn segmentation and role tagging. What is specific to this product is the objection policy: the logic deciding when to push, what to push on, and how hard, given the persona and deal stage. That policy operates against partial utterances, which is what makes it a different real-time problem from a cooperative agent.

The conversation capture layer emits structured events as the conversation happens (timestamped turns, speakers, session metadata) into a unified output schema. Capture is a first-class concern rather than a byproduct, because everything downstream is a function of it.

The scoring engine is schema-driven: weighted dimensions, behavioural markers and normalisation logic, applied identically to every session. Communication, persuasion, product knowledge and closing, plus strengths and missed opportunities. Language models produce the qualitative read (summary, gaps, objection detection) and the rubric produces the number, deliberately kept separate so a model change cannot silently move a score's meaning.

A multi-tenant data plane with normalised schemas and API access feeds dashboards and BI directly.

Design decision: the qualitative analysis and the score come from different mechanisms. If the model both writes the feedback and sets the number, a model upgrade shifts every historical comparison and nobody can tell whether reps improved or the scale moved.

The business read: why consistency is what makes coaching measurable

How it works

Configure the pressure#

Persona, objection profile and deal stage set what the agent will push on, so practice targets a specific weakness rather than being generic.

Run the adversarial loop#

Streaming roleplay with turn segmentation and role tagging. The objection policy evaluates the in-flight utterance and decides whether to interrupt, which is the behaviour that makes the practice worth anything.

Capture as structured events#

Turns, speakers, timestamps and metadata are written as the conversation happens, into one schema, so the session is queryable the moment it ends.

Analyse qualitatively#

Models produce the session summary, strengths and gaps, objection detection and coaching feedback from the structured transcript.

Score against the rubric#

Weighted dimensions and behavioural markers, then normalisation, so the number is comparable to the rep's last session and to their colleague's.

Serve it#

Rep- and team-level metrics through APIs and dashboards, multi-tenant, with many roleplays running concurrently.

Control planes

Governance#

The rubric is the authority on scoring, not the model. Weights, behavioural markers and normalisation are defined and versioned, so a score means one thing across reps and across months. Keeping the model out of the scoring path is the control that matters: it means a model change alters the quality of the written feedback without moving the scale underneath the historical data.

Orchestration#

Per turn: segment, tag the role, evaluate the objection policy, decide barge-in, respond. Per session: capture events, analyse, score, normalise, publish. Multi-tenant throughout, since a sales floor practises in the same hour.

Observability#

Every session resolves to its turns; every score resolves to the behavioural markers that produced it. That second path is what makes the system usable rather than merely correct, a rep who disagrees with a score can see what drove it, and a coaching tool that cannot show its reasoning gets argued with instead of acted on.

Score distributions per persona are the calibration signal. If a persona's distribution drifts, the persona has changed difficulty, and the normalisation needs revisiting before the scores are read as a trend.

When it fails

Barge-in timing is the failure the user feels. Too eager and the agent talks over a rep mid-sentence for no reason, which teaches the wrong lesson and breaks the simulation. Too slow and it is not an objection any more, it is a comment. The policy has to be tuned per persona, because an aggressive buyer and a sceptical one interrupt at genuinely different moments.

Capture gaps are the failure that is silent. A dropped event produces a session that scores fine and is missing the exchange that mattered, which is why capture writes as the conversation happens rather than being assembled from audio afterwards.

And normalisation drift is the slow one. A persona whose difficulty shifts, or a rubric edited without versioning, makes historical comparison quietly meaningless while every individual score still looks reasonable.

Results

Measured on our own R&D build.

  • Manager review from 20–40 minutes to 2–3, with a guided per-session summary replacing full-call listening

  • Scoring variance across evaluators sharply reduced, because the rubric replaces the reviewer as the authority

  • Sessions queryable as structured data, not recordings, so trends across reps and time are computable

  • The voice runtime reused across a third domain, needing new tools and a new rubric rather than a new build

Evidence

Directly demonstrable: the real-time adversarial roleplay loop with turn segmentation and role tagging, structured session capture into a unified schema, the weighted rubric with normalisation, model-generated qualitative analysis, and the multi-tenant data plane behind dashboards and APIs.

Internal results, ours alone: the review-time reduction and the variance improvement. This is a Bigcircle R&D build with no client and no deployment, so nothing here is a customer-confirmed result.

If you are building evaluation on top of a model, the separation worth copying is between the thing that writes the feedback and the thing that sets the number. Merge them and your scores stop being comparable the first time you change models, which you will, and you will not find out until someone asks whether the team actually improved last quarter.

How we classify these numbers, and why they are all ours

Common questions

  • How does the roleplay agent decide to interrupt mid-sentence?

    Bigcircle's objection policy reads the partial utterance, the persona, and the deal stage, and cuts in before the turn ends. Too early and the agent talks over a rep for no reason. Too late and the interruption is a comment after the point has passed. This is a Bigcircle R&D build with no client and no deployment.

  • Why is the roleplay score separate from the model that writes the feedback?

    Bigcircle keeps the rubric as the authority on the number. Weights, behavioural markers, and normalisation are versioned, so a model change can alter the written feedback without moving the historical scale. Language models still write the summary, the gaps, and the coaching note. This is a Bigcircle R&D build with no client and no deployment.

  • How do you compare reps who practised against different buyer personas?

    A harder persona producing a lower score can be the right outcome. Bigcircle normalises so the same performance does not score lower only because the persona was harder, and watches the score distribution per persona for drift. The review-time change from 20 to 40 minutes down to 2 to 3 minutes is an internal result. This is a Bigcircle R&D build with no client and no deployment.

  • Is RepliCoach the same voice runtime as the insurance agent?

    Yes. Bigcircle reused the runtime behind the insurance and real-estate agents, so this domain added a tool layer and a rubric rather than a new voice loop. Capture, scoring, and the multi-tenant data plane are the new pieces. There is no client and no deployment.

Want the version of this built for you?

We can walk you through Bigcircle R&D Built an AI Sales Roleplay Coaching Platform live — the architecture, the failure modes, and what we would change for your constraints. Tell us what you are building and we will come back with a concrete plan.

Reply within 2h

We store your name, email, company, and message, and email a copy to hello@bigcircle.ai. Read the privacy page and the terms.