Turn every complaint into a structured, grounded response
Submit a customer complaint and get intent, sentiment, and priority classification, relevant knowledge base sources, and an AI-generated response grounded in your own documentation — never invented.
Complaint
Customer describes an issue
Intent · Sentiment · Priority
DistilBERT classification
Knowledge Retrieval
pgvector + LangChain search
Retrieved Sources
Matching knowledge base passages
Grounded Response
Generated via Groq
Everything the pipeline gives you
Four capabilities working together on every complaint, from first read to a grounded reply.
AI Analysis
Every complaint is classified for intent, sentiment, and priority the moment it's submitted.
- Intent
- Payment issue
- Sentiment
- Negative
- Priority
- High
Knowledge Base + RAG
pgvector and LangChain retrieve the passages most relevant to each complaint from your own documentation.
3 relevant sources found
AI Response
Groq drafts a reply that cites the retrieved sources directly — nothing invented.
Duplicate charges like this are reviewed automatically and reversed to your original payment method once confirmed[1][2].
Complaint History
Every classified complaint is saved and searchable, filterable by intent, sentiment, and priority.
I was charged twice for the same order and need this fixed.
My package says delivered but I never received it.
My router keeps dropping the Wi-Fi connection every hour.
From raw complaint to a grounded answer
Every card below reflects the same pipeline your complaints run through — nothing here is staged.
Step 1
Complaint comes in
The customer describes the issue in their own words; auto-tags are applied the moment it's submitted.
“I was charged twice for the same order and need this fixed.”
Auto-tags
Step 2
Intent, sentiment & priority
A DistilBERT classifier reads the complaint to determine what the customer wants and how urgent it is.
- Intent
- Payment issue
- Sentiment
- Negative
- Priority
- High
Negative sentiment on a sensitive intent (payment_issue).
Step 3
Knowledge retrieval
pgvector and LangChain search the knowledge base and surface the passages closest to the complaint.
Duplicate charges are flagged automatically once a second authorization is detected on the same order.
Confirmed duplicate charges are reversed to the original payment method.
Billing issues marked high priority are routed to a human agent for review.
Step 4
Knowledge base coverage
Retrieval draws from the same indexed articles behind every response.
9
Knowledge base articles indexed
pgvector + LangChain
Semantic retrieval over embedded passages
Step 5
Grounded response
Groq drafts a reply that cites the retrieved sources directly — nothing invented.
Thanks for flagging this — I can see two charges on the same order. Duplicate charges like this are reviewed automatically and reversed to your original payment method once confirmed[1][2]. Given the billing impact, I've marked this high priority.
See it in action
One live product, four moments in the same pipeline. Switch tabs to jump straight to any screen.
Describe the issue
Describe the issue in your own words — our AI will classify it and find a grounded answer.
I was charged twice for the same order and need this fixed.
Built to be trusted, not just fast
The same properties that make the pipeline demoable above are what make it safe to rely on.
Grounded, not invented
Policy claims in a generated response come only from your indexed knowledge base articles, never from the model's general knowledge.
The same triage every time
Priority is set by a fixed rule based on intent and sentiment, so two similar complaints are never triaged inconsistently.
A draft the moment it's submitted
Classification, retrieval, and response generation all run automatically as part of the same request — no manual lookup first.
Every claim is traceable
The retrieved source passages behind a response are returned and displayed alongside it, so any claim can be checked against the original document.
Questions worth asking before you rely on it
Straight answers about what the pipeline actually does, and what it doesn't.
A DistilBERT classifier reads the complaint text and predicts an intent label and sentiment, each with its own confidence score. Both run independently of the response-generation step.
The generation step is instructed to treat the retrieved knowledge base passages as the only source for policy or factual claims, and to never use outside knowledge for those claims.
If retrieval finds no sufficiently relevant passages, the model is told explicitly that the knowledge base doesn't have enough information and is instructed to say so and recommend escalation, rather than guessing.
Yes. Documents can be uploaded, indexed into chunks and embeddings, and removed again through the knowledge base API — retrieval runs against whatever is currently indexed.
By a fixed rule, not a model: negative sentiment on a sensitive intent (billing, refunds, cancellations, account access, escalation requests) is high priority; either one alone is medium; neither is low.
There's no single aggregate accuracy number to quote — instead, every intent and sentiment prediction carries its own confidence score, shown alongside the label rather than implied by an overall stat.
No. It classifies each complaint, retrieves relevant sources, and drafts a suggested response for a person to review — it doesn't send replies or close tickets on its own.