The agent is a graph, not a prompt
Every bot runs a LangGraph StateGraph — retrieval, routing, tool calls, verification, handover — started from a preset (triage, RAG support, lead capture, booking) and rewired per tenant. Its behaviour lives in skills: markdown modules in a folder tree with @include cross-references, so "what to do when someone cancels" is a file a human can read and diff, not a paragraph buried in a system prompt. Answers are grounded in the tenant's own documents through RAG over pgvector.




