floorcall

A millisecond decision layer for voice agents: is the user done talking, was that “uh-huh” or a real interruption, what do they want, and do they need a human, answered together in one pass of a fine-tuned, calibrated Laya encoder. Model · code (commit 4088f09)

naive agent: 3 of 17 as wantedfloorcall: 14 of 18 as wanted
Eight scripted banking calls, frozen before floorcall first ran on them. They are illustrative demos, not an evaluation set: the evaluation is Tables A to D on the Results tab. The naive agent answers after 800 ms of silence and stops whenever the user speaks. Each floorcall decision costs its event's measured GPU p50 on the replay clock (56.4 ms for a pause, 55.4 ms for speech over the agent). This is the committed replay run, shown as recorded.

Backchannels while the agent explains

covers: D2 backchannel · naive 1/3 · floorcall 3/3
before: user said “my card got declined at the store this morning”
usernaive agentfloorcallI can see that. Your card was declined because the store ran it as an international purchase, and your account has foreign transactions switched off by default, so our fraud system held it.7.9 s of this line left unsaidI can see that. Your card was declined because the store ran it as an international purchase, and your account has foreign transactions switched off by default, so our fraud system held it.uh-huhrightokay, so how do I switch that onYou can switch it on in the app, under card settings, then try the payment again.You can switch it on in the app, under card settings, then try the payment again.1. stop and listen: stopped talking at 3.00 s (7900 ms of its line unsaid)12. respond after timeout: answered 800 ms after the user stopped; the user spoke again 2400 ms later24. respond after timeout: answered 800 ms after the user stopped; the user spoke again 3800 ms later45. respond after timeout: answered 800 ms after the user stopped (timeout)51. keep talking: kept talking13. keep talking: kept talking35. respond after timeout: answered 2000 ms after the user stopped (safety net)50 s2 s4 s6 s8 s10 s12 s14 s16 s18 s20 s
#when, and what the user saidwantednaive agentfloorcall
13.00 s · speech over the agent
“uh-huh”
keep talking✗ stop and listen
stopped talking at 3.00 s (7900 ms of its line unsaid)
✓ keep talking
kept talking
backchannel (p=1.00); p(interruption) 0.00 < 0.09
24.10 s · pause after
“uh-huh”
no expectation· respond after timeout · no router
answered 800 ms after the user stopped; the user spoke again 2400 ms later
—
36.80 s · speech over the agent
“right”
keep talking✗ no decision
the agent had already stopped talking at 3.00 s
✓ keep talking
kept talking
backchannel (p=1.00); p(interruption) 0.00 < 0.09
47.60 s · pause after
“right”
no expectation· respond after timeout · no router
answered 800 ms after the user stopped; the user spoke again 3800 ms later
—
514.10 s · pause after
“okay, so how do I switch that on”
respond✓ respond after timeout · no router
answered 800 ms after the user stopped (timeout)
✓ respond after timeout · route out_of_scope
answered 2000 ms after the user stopped (safety net)
p(turn_complete)=0.61 < 0.785, silence 300 ms < 2000 ms; then silence 2000 ms >= max_wait 2000 ms