Setup
Define the graph
Every turn asks one question: Which next step does the caller want? Its options are only the nodes reachable from the current node, additionally we define 3 built-in answers:
The model only picks from this bounded list. Your application moves the call, so the
model can never send it somewhere the graph does not allow.
Each node has a label, a description that tells Tazo when to choose it, and routing
instructions for that node. The instructions are the most useful
tuning lever: they say what should and should not count as a request to move.
Build the question for a node
The question is rebuilt for the current node on every turn: the state describes where the call is, and the options are the outgoing edges plus the built-in answers. Descriptions are clipped, and the function checks the total size, because a request has a text budget for the state, question and options together.Decide where the call goes
A route is applied only when the answer is confident (at least 65% and a 12-point lead over the runner-up), is notUNCERTAIN, CURRENT_STEP or NO_TOOL, and is a node reachable from
the current one. Everything else stays put, so an unclear reply never moves the call.
Run a call
Call.turn sends one caller recording and moves the call. Pass the caller’s turns in order:
TRIAGE → BILLING → HUMAN.
Build on it
- Add a node. Add it to
NODES, connect it inEDGES, and describe when to choose it. - Act on arrival. When
turnmoves the call, run your own side effect, such as a transfer. - Sub-graph per graph node. A node such as
BILLINGwill most likely have multiple sub-steps in real life, which can be represented as a sub-graph for that node. This works as long as the main routing keeps the call atCURRENT_STEPfor every new reply from the customer, and the sub-graph decides what happens inside the node. Feel free to experiment with different graph representations and nested graphs. - Live audio. For a call that streams audio, see Speculative tool calling.
Limitations
- The 65% and 12-point thresholds are starting points, not calibrated guarantees.
- The size check raises an error rather than silently dropping options, so very connected nodes need shorter descriptions or fewer edges.
- A node with no outgoing edges ends the route: only
CURRENT_STEP,UNCERTAINandNO_TOOLremain.