The three approaches differ less in what they claim and more in what they do when the knowledge base is thin and the question is one nobody planned for. That is the moment worth designing around.
Most comparisons of this kind list features. Features are the least interesting part, because all three approaches will happily answer a question you already knew customers would ask. The difference shows up at the edges.
How they compare
| Capability | Answer from your content | Scripted flows | Generic model |
|---|---|---|---|
| Cites where the answer came from | Yes | No | No |
| Handles a question nobody scripted | Yes | No | Yes |
| Says “I don’t know” when it should | Yes | Falls back | Rarely |
| Setup time | Minutes | Days | Minutes |
| Cost of a wrong answer | Low | Low | High |
Why citation is the dividing line
A scripted flow cannot cite anything because it is not answering, it is branching. A generic model cannot cite anything because it is generating from weights rather than from documents. Retrieval over your own content can, and that single property changes how much you can trust the rest.
Where scripted flows still win
For a small number of transactional paths, a script is the right tool. Taking a booking, collecting an order number, running a returns workflow: these have one correct sequence and no room for interpretation. Use a script, and let retrieval handle the long tail around it.