What it does during the call.

Eight capabilities, each of which exists because a conversation with three people in it breaks something a two-party voice agent takes for granted.

Two output channels

One private line into the professional's earpiece, one spoken into the room. The client never hears a correction; the room only hears the agent when someone addresses it by name.

The distinction is audible — whisper audio is panned hard left, room audio centred.

Real-time speaker separation

Streaming diarization attributes every word to a speaker as the conversation happens, up to ten voices. Roles are seated automatically and can be reassigned mid-call.

AssemblyAI Universal-Streaming, per-word speaker labels.

Deterministic compliance rules

A pattern engine scans each finalised turn against a FINRA and SEC rule pack and fires a warning in under a millisecond. It never waits on a network call, so it never misses the moment.

Measured at 0 ms across a full 20-turn call.

A second pass that reads context

A language model reviews the same turn against the conversation so far and reports what a pattern cannot see: an omitted risk disclosure, a recommendation made before suitability was established, a promise implied across two sentences.

Runs detached, so a slow review can never delay an urgent warning.

PII redacted before it lands anywhere

Account numbers, dates of birth and social security numbers — including ones read aloud digit by digit — are removed before the transcript is stored, displayed, or sent to a model. Ordinary figures are left intact.

Card numbers are Luhn-checked so reference numbers aren't wrongly redacted.

Knows when it isn't being spoken to

Most of what the agent hears is two people talking to each other. It answers only a direct address, and treats being mentioned in the third person as conversation, not a summons.

Biased toward silence: a missed cue costs one repeat, a false answer costs credibility.

Notices who stopped talking

It tracks airtime and tone per participant. When the person who will actually decide has been quiet for ninety seconds, the earpiece says so — once, never two nudges at a time.

In the reference call, the spouse holds 6% of airtime.

An audit record you can hand to compliance

Every session writes an append-only log: speaker-attributed, PII-free, with the regulation cited beside each finding and the latency it was delivered at.

Written as JSONL, one line per event.

Under the hood

Nothing here is a wrapper around a single API call. The ordering of the pipeline is the product: redaction first because nothing downstream may see raw personal data, the rule tier second because the warning budget is the number that decides whether the earpiece is worth wearing, and the model tier detached so it can never delay the two stages in front of it.

TranscriptionAssemblyAI Universal-Streaming v3 over WebSocket, universal-3-5-pro
Speaker separationStreaming diarization with per-word labels, up to 10 speakers
Rule tierDeterministic pattern engine, 9 FINRA and SEC rules, 0 ms measured
Contextual tierGroq, AssemblyAI LLM Gateway, or Anthropic — whichever key is present
RedactionLocal and deterministic, runs before storage, display, or inference
TransportFastAPI with a session WebSocket, one container serving app and interface
Audit recordAppend-only JSONL, speaker-attributed, PII-free, regulation cited
Test coverage130 automated tests, no network calls required

See all eight running at once

The demo plays the full twenty-turn call and shows every warning, every redaction, and the two turns where the agent actually speaks.

Run a callRead the sourceChecking the backend