I’ve faced a similar challenge building agent workflows that resemble state machines or deterministic conversation flows. While it’s technically possible to model these flows as a LangGraph topology—with nodes and conditionals that reflect each decision point—it quickly becomes difficult to scale or maintain. Mapping every edge case is nearly impossible, especially when conversations deviate from the ideal path.
In my current setup, I structure the graph using subgraphs (which are reactive agents), each focused on a narrow conversational intent. I use conditional edges to navigate between them. When a decision point gets complex or self-contained, I extract it into its own subgraph to improve modularity and clarity.
I also track conversation “phases”, which correspond to subgraphs, and use that to route user input deterministically—ensuring continuity and predictability in the flow.
The architecture resembles a multi-agent supervisor model, where each message flows through the graph and is handled by the right node based on context, memory, and history.
This LangGraph customer support tutorial heavily inspired my implementation. It’s the closest pattern I’ve found that balances structure with flexibility.
That said, I do wish there were more official guidance from the LangChain team on how to best structure and scale these types of flows—especially for complex business logic. My current solution works, but it’s definitely hard to maintain and can feel overengineered.