Digital twins

Three twins. Trained, tested, governed.

A twin of your best human agent, a twin of your customer base, and a twin of the journey itself — so a voice agent can learn from your floor, be tested against your callers, and rehearse a change before it ever speaks to a real customer.

A twin is not a clone of a person. It is a model — and a model is trained, tested and governed, or it is not allowed to speak.

Three twins, one machine

Agent. Customers. Journey. Governed.

01 · Best agent

The twin of your best human agent.

Speech and reasoning fine-tuned on their consented, redacted calls — their phrasing, their pace, how they handle "salary next month". Trained inside your tenant, never pooled.

02 · Customer base

The twin of your callers.

The simulator that plays 1,240 scenarios drawn from your real call distributions — barge-in, already paid, wrong number, legal threat — in Hindi, Hinglish and Tamil. It is what the evaluation models test against.

03 · Journey

The twin of the flow itself.

The stage graph of a collections or renewal journey, with its policies attached. Change a PTP window or a tone rule and rehearse it against the customer twin before it goes live.

Same rules

Governed like everything else.

Every twin has a training set your reviewer approved, a scoreboard, frozen lines checked verbatim, a governance policy, a named approver and one-click rollback.

01 · The best-agent twin

Your top collector's moves, at every desk.

One agent on your floor keeps promises when others get hang-ups. Their calls — consented, Aadhaar and PAN redacted — become the fine-tuning set for a twin that speaks the way they do and reasons the way they do. The twin inherits the move, not the memory: every amount and date it says is re-grounded against the ledger on that turn, and the frozen lines stay frozen.

The twin lives in your tenant. Its weights are yours, and it improves in the same weekly cycle as everything else.

Same objection · human agent vs twin · Hinglish · bucket-1
Your best agentrecording · redactedQA 96
Customer
Salary abhi tak nahi aayi hai. Agle mahine dekhte hain.
Agent
Samajh gayi, Sunil ji. Salary ki date kya hai — 7 ya 10? Main usi din ka reminder rakh deti hoon, aur aaj sirf ₹500 token se late fee ruk jaayegi. Kya yeh theek rahega?names the date · offers a small step · no pressure
Twin · v3fine-tuned on her calls · your tenantQA 94
Customer
Salary abhi tak nahi aayi hai. Agle mahine dekhte hain.
Agent
Samajh gayi, Sunil ji. Salary kis tareekh ko aati hai — 7 ya 10? Main usi din ka reminder rakh deti hoon. Aaj ₹500 token pay karne se late fee nahi lagegi — kya yeh theek rahega?same move, same warmth · ₹500 checked against the ledger · tone: bucket-1 ✓

Illustrative pair. The twin learns the move, not the transcript; every amount it speaks is re-grounded per turn. replace with a consented pair from a pilot

02 · The customer twin

A simulator that plays your callers.

Every release is tested against a model of your customer base before it speaks — the same simulator the evaluation models use. Scenarios are drawn from the real distribution of your calls, so the twin gets angry as often as your callers do, in the languages they use.

Customer twin · scenarios × outcome · candidate v42
ScenarioLanguageThe customer twin playsOutcome on v42
already_paidHindi"Kal UPI se kar diya" — gives a UTR only if asked twice UTR looked up · closed · no repeat
salary_delayHinglishPushes payment to "next month", gets irritated on the second ask PTP on salary date · token offered
barge_in_amountTamilInterrupts mid-amount, asks "evvalavu?" again restated once · no loop
wrong_numberMarathi"He Sunil naahi" — refuses to say who they are no account detail spoken · DNC noted
legal_threatHindiMentions a lawyer, raises voice, asks for a name warm transfer · brief to human
outside_hoursHinglishAnswers at 20:40 and asks to continue RBI FPC hours · callback scheduled
branch_or_linkHindiSays "link" then asks "branch se ho jayega?" asked twice · blocks release

7 of 1,240 scenarios. Distributions drawn from the tenant's own call outcomes, refreshed weekly. illustrative · replace with a live scoreboard

Why a twin, not a script

A scripted test set only checks what you thought of. The customer twin is refreshed each week from graded production calls — new phrasings of "already paid", new reasons for delay — so the release is tested against last week's customers, not last year's assumptions.

03 · The journey twin

Rehearse the policy change before it goes live.

Journey twin · collections · bucket 1 · stage graph
ptp dispute paid low_confidence → re-ask Greeting lang_detect · consent Verify identity name · DOB / last-4 Classify intent policy_check · amounts Capture PTP date · channel · link Raise dispute ticket → CRM Confirm & close UTR lookup · thanks Every turn passes three checks before it is spoken ✓ grounded in account data (no invented amounts) ✓ script & regulator rules (RBI FPC calling hours, tone) ✓ language & persona consistency (frozen closing lines) Warm transfer → human anger / legal threat
Rehearsal · ptp_window 7d → 14d
$ formant rehearse --journey collections-b1-hi --change ptp_window:7d→14d
journey twin loaded · 9 stages · 14 edges · policy v18
customer twin · 1,240 scenarios · weighted by last 30 days of outcomes
promise_to_pay +2.1 pts · ptp_kept −0.8 pts · callbacks −11%
frozen lines exact-match 100% · calling-hours violations 0 · new transfer reasons 1
stage capture_ptp: 38 turns now ask for a date beyond salary day — flagged for review
verdict rehearsal only · nothing shipped · owner: client collections head

Illustrative rehearsal. replace with a live run

The stage graph is the twin.

A collections journey is a graph: greeting, verify, classify, capture promise, dispute, close, transfer — with a governance policy bound to each stage. The journey twin runs that graph against the customer twin. Widen the promise-to-pay window, change the tone bucket for DPD 31–60, add a callback stage: you see promise, kept-promise, callback and transfer rates move before a single real call carries the change.

Nothing ships from a rehearsal.

A rehearsal is a report, not a release. The change still goes through the scoreboard, the frozen-line check, the named approver and the canary. What the twin gives you is a number to argue with in the room — instead of a week of live calls to find out.

Twin lifecycle · twin-v3 · one week
Mon 09:10twin_set_curatedbest-agent calls · 1,900 · consent on file
Mon 09:12pii_redactedaadhaar · pan · card · phone — text and audio
Tue 14:00twin_finetunespeech + reasoning · tenant weights only
Wed 08:30frozen_lines_checkAI disclosure · consent · grievance — exact
Wed 08:31simulated1,240 scenarios · customer twin · 0 green→red
Thu 11:05policy_boundgovernance: same see · say · do limits as v42
Fri 10:00release_signedtwin-v3 · approver: client QA lead · canary 5%

Illustrative week. confirm cadence with the eval team

No special status

A twin is a release like any other.

The word "twin" earns no exemptions. The best-agent twin is a fine-tuned model with a curated, redacted, approved training set. The customer twin is an evaluation model with its own human calibration. The journey twin is a policy graph under governance. All three carry a scoreboard, a frozen-line check, a named approver and a rollback — and all three are deployed inside your walls.

FAQ

What your risk team will ask.

Is the best-agent twin trained on a named employee's voice and calls?
Only with that agent's written consent and your HR policy on file, and only on calls redacted of Aadhaar, PAN, card and phone numbers. The twin is not a voice clone — it uses a licensed synthetic voice and learns phrasing, pacing and objection handling. If the person leaves, the twin is retired or re-trained per your policy.
Does the twin leave our tenant, or train anyone else's model?
No. The fine-tuned weights, the scenario distributions and the journey graph live in your environment — VPC or on-prem — and never enter a shared model. This is the same commitment as for every FormantAI model.
Can a rehearsal on the journey twin change what the live agent says?
No. A rehearsal produces a report. Any change still goes through the evaluation scoreboard, the exact-match frozen-line check, a named human approver and a staged canary with rollback. Frozen lines — AI disclosure, consent, grievance, RBI FPC calling hours — cannot be changed by a twin at all.
How do we know the customer twin reflects our callers and not a generic population?
Its scenarios are sampled weekly from your own graded calls, and its outputs are recalibrated against blind labels from your QA team like any other evaluation model. You get the agreement score in the same weekly report as the scoreboard.
Rehearsal

Watch a policy change before it ships.

See a twin rehearse a change
Readiness

Find your best agent's calls

Get a Call Readiness report