Hand off to a human
The assistant recognises it should stop, marks the conversation for a person, and your team picks it up from the dashboard.
Goal
“I want to talk to a person” (or repeated failures) → the model calls handoff { reason } → handoff.started → the assistant stops answering; the conversation shows handoff in the dashboard.
Pieces
- Agent → Behaviour: Hand off to Kletso inbox (anything but Never enables the tool), Hand off when request, frustration, payment_issue, low_confidence.
- Prompt: the built-in guidance already tells the model to hand off on request; add domain rules (“hand off for refunds above ₹10,000”).
- Dashboard → Conversations: filter status Handoff.
What happens
- The model calls
handoff. The runtime sets the conversation status tohandoff, emitshandoff.started { target: "inbox" }andconversation.updated, and posts the model’s closing text. - Further user messages are recorded but no agent turn runs.
- Your team reads the transcript and context in the conversation inspector.
Verify
- Preview “talk to a human” →
handoff.startedin the inspector; the status chip turns to handoff. - Send another message → it appears as a user message with no reply.
Current limits
- Handing the conversation back to the assistant, and Slack or Teams destinations, are planned. Today the practical pattern is: your team answers through your own channel, and the user starts a new conversation for the assistant.