← All posts

Human handoff, done right

When the bot taps out, the agent should walk in already caught up. Here's the handoff anatomy we landed on.

A bad handoff is worse than no bot at all. The visitor types the same explanation three times, the agent scrolls through 40 messages of small talk, and the conversation that should have taken two minutes takes ten.

We rewrote the handoff flow until that stopped happening. Here is what is actually in the package the agent receives.

The handoff payload

When a visitor escalates — either by tapping “Talk to a human” or because retrieval flagged itself unsure — the agent’s inbox gets:

  • The full transcript, not a summary. Summaries lose nuance.
  • The detected intent and inferred urgency, derived from the conversation, not just the latest message.
  • The retrieved sources the bot considered, even the ones it rejected. So the agent can see what the visitor was probably looking at.
  • Any identity context the host page passed in via signed JWT — order ID, plan tier, account age.

The agent walks in with the same map the bot had, plus the context to act on it.

What we deliberately do not do

  • We do not auto-summarize the conversation in the agent’s view. Summaries lie. The agent reads the actual messages.
  • We do not cap waiting time with a fake countdown. We show a real ETA based on current queue depth, and we tell the visitor when it slips.
  • We do not silently re-route to the bot mid-conversation. Once a human is in the loop, they own it until they hand it back explicitly.

The metric we watch

Time-to-first-meaningful-reply. Not first reply — that is easy to game with “Hi! Looking into this.” Meaningful reply: the first message that advances the conversation. Track it weekly. Pair it with an internal note retrospective. Iterate.

A handoff is the moment your support brand is most exposed. Spend the design budget there.

More from the blog

All posts →
Maya Reyes ·

Citations vs hallucinations: why grounding matters

An unsourced answer is a guess wearing a tie. Here's how grounding closes the gap between confidence and correctness.

Dev Patel ·

Why our widget lives inside a Shadow DOM

Embedding third-party UI on someone else's page is a CSS minefield. Shadow DOM is the only sane defuser.

The FluentBot team ·

Why we built FluentBot

Most chatbots hallucinate because they were never trained on your content. We took a different path.