All demosAgent Assist
Agent Assist
A contact-centre copilot across eight live chats: intent, churn and frustration gauges, five signal flags and a macro suggestion, refreshed after every customer message.
/classify/rate/yes-no
How it works
The Jev original asked one model nine questions about every customer message: the best macro, the intent, a churn score, a frustration score and five yes/no flags. decision-machine-1 answers the same nine from three routes, and one batch covers every chat whose message landed in the same moment.
Each judgment sees the same short text: a profile line (Profile: pro plan, 14 months, 2 prior tickets.),
then the last six messages as Customer: and Agent: lines, with the newest customer line
marked LATEST Customer:. Frustration is about that newest line alone, so it is sent on its own.
-
/classify— best macro. Thirteen described labels: the twelve macros as{id: "Title: summary"}, plusnonefor "no canned reply fits; write a custom reply". At or above 60% confidence the macro body is filled into the reply box and sent 1.5 s later; below it the top three are listed with probabilities for the agent to pick. -
/classify— intent. The ten Jev intents. Two descriptions needed sharpening to keep a confused first-time user out ofbug_report:general_helpis now "needs guidance using the product or is confused by the interface; nothing is technically broken", andbug_reportis "software is malfunctioning and the customer describes errors, logs or failure rates". The ten labels:billing_dispute,account_access,cancellation_threat,feature_question,data_privacy_request,shipping_delay,bug_report,general_help,gratitude_or_closing,other. -
/rate— churn risk. Four levels, low to high: satisfied or only asking · mildly dissatisfied, no mention of leaving · repeated failures or a competitor comparison · says outright they will cancel. The score comes back on that 0–3 scale and drives the gauge. -
/rate— frustration. No complaint: a greeting, a question, thanks, or a plain factual report · reports a problem or makes a small complaint, with no emotive words · openly frustrated: emphatic words, repeated complaints · furious: ultimatums, insults, threats or CAPITALS. Short anchors matter here: wordier ones collapsed every calm bug report onto 2.0. -
/yes-no— the five flags, eight statements, one call. "The customer asks for a manager, a supervisor or a human decision maker." · "The customer says they will cancel, leave or switch to a competitor." · "The customer makes a demand under a law or regulation, such as GDPR, CCPA, erasure or data access." · "The customer asks for money back: a refund, chargeback, reimbursement or account credit." · "Something on the company's side went wrong for this customer, rather than a neutral question, a user-side issue, or the customer thanking us." · "The customer's request is a simple question or a standard account action." · "The issue is beyond what a front-line agent can settle alone, or the customer is too angry to close the chat today." · "The chat is over: the line marked LATEST Customer is the customer's goodbye or thank-you. Whatever they asked for earlier does not count here — judge that one line alone." A batch shares its when_true/when_false hints, so each statement carries its own criteria. Needs supervisor is the strongest of the first four arms. The last statement is the veto that keepsnonealive: above 47% the copilot refuses to auto-send any macro, so a chat that ends in "thank you" does not get answered with a canned reply. Refund eligible is not a model answer at all: it is the plan-and-tenure policy, computed in code.
Batching. The eight scripts deliver forty messages on a three-second grid, so chats collide on purpose.
Every judgment queued inside a 120 ms window leaves together: one classify per label set, one
rate per scale and one yes-no carry up to thirty-two chats in their texts
array. A whole run is about seventy calls instead of two hundred. The shared client queues at two calls a second
for the whole page and retries 429s; the run stops by itself after the last message, or after 60 seconds.
The numbers. Model is x-inference-ms from each response. It is per batch, not per chat:
one call judging eight transcripts at once reports a few seconds, which is a few hundred milliseconds of model
time per chat. Round trip is the browser's fetch time, around a second for a batch that size. Panel is customer message on screen to copilot
refreshed, and it is the slow one here: a judgment needs five calls, the shared demo key allows two calls a second
for the whole page, so the fifth call waits about two seconds in the client queue. On a key of your own the panel
tracks the round trip. The 4 s LLM toggle is a stand-in for a prompt-and-parse copilot; that wait is artificial
and everything else on the strip is measured.
Ported from the agent-assist Jev experiment. Every request here is live; the shared demo key allows about 2 requests per second across all visitors.