An AI workflow, and the step that has to be able to say no
An AI workflow only becomes reliable when at least one step can refuse the one before it, because a chain in which every step succeeds by definition will run to completion on wrong input and report that it worked.
An AI workflow chains model calls with the things they act on: read this, decide that, write somewhere, notify someone. Building the chain is straightforward and is not where these go wrong.
The chain is the easy part
Every framework connects a model to a tool and a tool to another model. That plumbing is solved and roughly identical everywhere. What differs between a workflow that runs unattended and one that quietly corrupts things for a week is whether any step in it is capable of stopping the run.
A step that always succeeds is not a step
If the model produces output and the next stage accepts whatever arrives, nothing in the chain is checking anything. It will process malformed input, hallucinated fields and empty results with equal confidence, and finish. The run log will show green all the way down, because green is the only value those steps can take.
What a refusing step looks like
A schema the output must parse against. A range a number has to fall inside. A source that returns an error for a request that should not be valid. The common property is that it is not the model judging its own work: the check has to be something the model cannot satisfy by rewriting its answer more confidently.
Where to put it
Immediately before anything irreversible. Sending, publishing, paying, deleting. Everything upstream of that can be sloppy and recoverable; the step in front of an irreversible action is the one that has to be strict, and it is usually the one people leave out because by then the demo already worked.
The question to ask about any workflow
What would have to happen for this to report failure? If the only answer is that the model decides it failed, the workflow cannot fail, which is a different thing from it working. The live figures under this page are a small example: they either arrive from the exchange or they visibly do not.
Live, right now, on this page
| Market | Price | Funding | 24h volume |
|---|---|---|---|
| BTC | $79,690.50 | -0.0012% | $211,374,474 |
| ETH | $2,478.55 | 0.0013% | $107,454,596 |
| SOL | $103.37 | -0.0001% | $33,330,802 |
| HYPE | $85.35 | 0.0013% | $7,356,419 |
Read from a live market as this page rendered, through a public endpoint that needs no key. Read at 2026-09-05 20:16 UTC; accurate as of that time and not afterwards.
Describe something and watch it get built.
Open the builder, or start from a working app and change it.