A keyword bot fails loudly. It hits a message it has no rule for and says so. An AI agent fails quietly. It produces a fluent, confident answer that is wrong, and nobody notices until a customer acts on it.
That difference is the whole decision.
Where determinism wins
Anything with a correct answer that must never drift: order status, pricing, opening hours, appointment slots, refund eligibility. These are lookups. A model that paraphrases a lookup has added risk and removed nothing.
They also win anywhere the reply carries a commitment. If the message contains a number a customer could hold you to, it should come from a template with a variable in it, not from a generation.
Where a model wins
Everything shaped like language rather than data: understanding a rambling complaint, extracting three requirements from one paragraph, matching a vague description to a product, or deciding which of eleven branches a message belongs in.
Note that last one. The most reliable use of a model in a messaging stack is often not writing the reply at all, but classifying the message so a deterministic flow can write it.
| Situation | Reach for | Why |
|---|---|---|
| Order status, pricing, hours | Deterministic flow | One correct answer, must not drift |
| Free-text complaint triage | Model | Understanding language is the whole task |
| Routing to the right branch | Model, then flow | Classify with the model, answer with the flow |
| Anything quoting a number | Deterministic flow | A generated figure is a commitment you did not make |
| Out-of-scope questions | Model, with a handoff | Better than a dead end, as long as it can escalate |
The pattern that works
Model in front for understanding, deterministic flow behind for answering. The model decides what this is; the flow decides what we say. You get natural-language input handling without ever generating a fact.
The failure you have to design for
Whichever you pick, the important question is what happens when it is wrong. A gate that can be misconfigured has to fail closed, not open.
Concretely: an unhandled branch should end the conversation with a handoff, never fall through to the next step. The cost of a conversation that stops is a customer who waits. The cost of a conversation that falls through is a customer who gets an answer meant for somebody else.
Common questions
It can respond to everything. That is not the same as handling it. The teams with the best numbers run narrow, well-scoped automations and escalate early.
Do not let it generate facts. Give it a tool that returns the real value and a template that renders it. An unresolved variable should fail loudly rather than reach a customer.
Build both in one canvas
Deterministic steps and AI steps sit on the same builder, with the same handoff.


