I planned LangGraph. I shipped plain Python. When I wrote the plan for the rebuild in October 2026, the stack was clear: a language model as the supervisor, LangGraph for state, loops, and pauses, LangChain chat models through OpenRouter, and LangSmith or Langfuse for tracing. It was a good plan on paper. The code went a simpler way, and this case study is about why.