DataGroomr Assistant
An in-app AI agent that diagnoses problems in a customer's own Salesforce data, explains why records matched, drafts rules from plain English, and takes actions such as merging duplicates behind explicit confirmation. Live for every customer.
The platform has a dozen modules. To find out what was wrong with their CRM data, and what to do about it, users had to learn all of them. Support answered the same diagnostic questions every day.
A Python service (FastAPI, LangGraph) behind the Node.js API. An intent classifier routes each message to one of 16 flows, each with its own toolkit: 38 tools in total. Read tools query the tenant's data through a query sanitizer; action tools interrupt the graph for confirmation before anything is written. Help-centre articles are embedded into pgvector so answers cite documentation. Replies stream over SSE through Node into the Vue client, with page awareness (the agent knows which screen the user is on) and a voice mode built on Gemini speech-to-text and text-to-speech. Every turn is traced in Langfuse with token cost and outcome tags.
In testing, the agent kept telling users it could not do things it could. Prompt-level fixes did not hold. I removed the hand-written capability list from the prompt and derived it from the write tools themselves, so the prompt can no longer drift from what the agent can actually do.