A support assistant is not just a model call. It is a controlled path from an incoming message to retrieval, a response, or a human.
Context
At COMPUMAX, I built a support-automation stack that connected Chatwoot conversations to retrieval and backend services. The goal was to structure automation as a controlled path while preserving a clear route back to a human operator.
The stack brought together FastAPI, Chatwoot, Qdrant, PostgreSQL with pgvector, Redis, and Docker Compose around one controlled request path.
Request path
An incoming request moved through intent routing before the system decided whether to retrieve an FAQ response, escalate to a human, or enter a human-only fallback. Internal adapters kept service-specific behavior at the boundaries rather than mixing it into the orchestration logic.
Logging made processed user-message paths inspectable. A kill switch and human-only path provided explicit operational controls for cases where automation should not answer.
Chatwoot
Conversation intake
Incoming support conversationFastAPI orchestration
Intent routing and internal adapters select the next path.
Retrieval response
Retrieve an FAQ response.
FAQ retrieval pathHuman escalation
Route the conversation to a human.
Human handoff pathHuman-only fallback
Bypass automated answers when the control path requires it.
Fallback + kill switchArchitecture lessons
Escalation is part of the product path
Human escalation should not be treated as an exception around the system. It is a first-class outcome with explicit state, ownership, and recovery behavior.
Retrieval is only one failure surface
Even a relevant passage can lead to a bad support outcome if routing, conversation state, permissions, or downstream adapters fail. The system path therefore has to remain inspectable from end to end.
Control paths need first-class interfaces
The kill switch, human-only mode, processed-path logging, and service adapters were part of the architecture itself. Keeping them explicit made routing behavior easier to inspect and change.
Takeaway
The central engineering lesson was to treat retrieval, orchestration, state, and human ownership as one system. The useful unit of design was the complete path from an incoming conversation to an answer or a handoff.