Mitchell Hashimoto tweeted this week:
Beware people obsessed with outcomes instead of building outcome machines. Its worse than ever with AI, but these people existed before. Short term results above all else, etc. Don’t fall into the trap. Invest in building strong fundamentals, invisible supports, and outcomes flow like water. An outcome machine.
— Mitchell Hashimoto (@mitchellh) View post
I love this phrase: outcome machine. To me, it means a system you can depend on to keep producing useful results.
It’s easy to get an agent to do a thing. It’s much harder to have confidence that it can do that thing, or follow a given process, repeatedly and reproducibly. It’s nearly impossible to reason about how it will behave in a single invocation, let alone across a fleet.
A graph gives us a way to reason about the process even when we can’t predict the agent’s individual choices.
That’s the idea behind Directed Agentic Graphs, which I introduced earlier this year. The graph defines measurable outcomes and the permitted paths between them. Agents retain autonomy inside each node. At each boundary, the surrounding system takes control back, checks the result and its evidence, and determines what becomes eligible to run next.
A refund agent, for example, can investigate however it likes while the graph keeps the payment tool unavailable until eligibility and approval have been verified. We can know that before the run starts, even though we can’t predict how the agent will investigate the request.
We can check each run against those same requirements. Across a fleet, we can measure how often eligibility decisions pass review, where people have to intervene, and whether a new model or workflow version improves those results.
A model change might lower the token bill while doubling the number of refunds that need human review. Measuring the cost of a correctly resolved request, including failed attempts and that review, tells us whether we actually saved anything. Connecting that cost to the business value of resolving the request lets us assess ROI.
This is what we’re building at Prefect: a way to define the outcomes a process requires and control what agents can do along the way, backed by durable execution to recover from failures and wait for human approvals. We want people to be able to trust the outcomes their agents deliver over time.