#11
Not Every Message Is a New Intent

Not every message is a new intent.
That is why production LangGraph systems need an entry router.
A common simple pattern is Intent-first routing where every incoming message is treated as a fresh intent.
That fails in production because users do not always start a new task.
- Sometimes they answer a previous question.
- Sometimes they continue an order.
- Sometimes they ask a side question.
- Sometimes they cancel.
- Sometimes they return tomorrow and say hi.
If your graph blindly starts with intent detection every time, it may lose the actual workflow context.
The better pattern is entry router pattern. The entry router checks persisted state before treating the message as fresh.
- Is there an activeFlow?
- Is the user replying to waitingFor?
- Are there missingSlots?
- Is there an orderDraft?
- Is there an activeProductId?
- Did we already show products?
- Is this a continuation or a new request?
Intent-first routing asks: what does this message mean?
Entry routing asks: what does this message mean in the context of the saved workflow?
In production, the first question is: Are we starting a new flow, or continuing an existing one?
The latest message tells you what the user said.
The persisted state tells you what the message means.