# AI Customer Support System

**A support agent that could read the catalog and touch real orders.**

The client sold technical products with a large, messy catalog. Support answered the same questions all day: is this in stock, what does it cost to ship, where is my order, can I get a quote for twelve of these.

Canonical: https://technologiesninja.com/project-ai-customer-support.html

- Category: AI · Customer support
- Result: −72% median ticket time
- Runtime: Self-hosted · Ollama
- Status: In production

## The problem — The same four questions, all day.

The support inbox was dominated by a handful of repeated questions — stock, shipping cost, order status, and bulk quotes — each of which required someone to look something up in a different system.

Off-the-shelf chatbots could not answer them, because the answers lived in the product catalog and the order database, not in a set of canned FAQ responses.

Agents spent their day copying data between tabs instead of handling the genuinely hard cases that actually needed a human.

## The hard parts — Why it was not a chatbot job.

- The catalog was large, inconsistent and full of technical attributes that had to be retrieved accurately
- Answers about orders and stock had to be live, not trained into the model months ago
- Quoting required real arithmetic over real prices, not a plausible-sounding guess
- Customer data could not be sent to a third-party API, so the model had to be self-hosted
- A wrong but confident answer about stock or price was worse than no answer at all

## Architecture — Retrieval, then constrained action.

01. **ingest** — Product catalog and documentation are pulled in and chunked for retrieval
02. **embed** — Chunks are embedded and stored so the model can find the right passage
03. **retrieve** — Each question retrieves the relevant catalog and policy context first
04. **reason** — A self-hosted model reasons over the retrieved context, not its training data
05. **act** — Tool calls hit live systems for stock, order status and shipping math
06. **verify** — Prices and quotes are computed from real data, then checked before sending
07. **escalate** — Anything outside policy or confidence is handed to a human with context
08. **log** — Every exchange is logged for review, correction and future improvement

**Stack:** Laravel · Python · Ollama · DeepSeek · Whisper · RAG · Embeddings · MongoDB · n8n

## What shipped — What the system does.

- Answers product questions from the actual catalog, with sources it can point to
- Checks live stock and order status through tool calls, not stale data
- Drafts quotations with real prices and shipping math a human can approve
- Takes spoken questions through a Whisper voice layer and answers them
- Escalates cleanly to a human with the full conversation and context attached
- Runs entirely self-hosted, so no customer data leaves the client's infrastructure
- Logs every interaction so the team can review and improve answers over time

## Result — Support stopped being the bottleneck.

**−72%** — Median ticket resolution time

Median ticket resolution time fell by 72%, because the repetitive lookups that used to eat the day are now handled the moment a customer asks.

Agents were freed to work the genuinely difficult cases, and the quality of those answers went up because nobody was drowning in routine ones.

Because everything runs self-hosted and every exchange is logged, the client keeps full control of both their data and the system's behaviour.

## Read next

- Case study: [AI Voice & Call Intelligence](/project-voice-call-intelligence)
- Case study: [n8n Workflow Automation](/project-n8n-automation)
- Service: [AI Systems & Agents](/service-ai-systems)
- Article: [Building a Self-Hosted AI Customer Support System](/blog-self-hosted-ai-customer-support)
- Article: [RAG on Real Business Data](/blog-rag-real-business-data)
- Case studies: [All case studies](/projects)

## Next step

What does your support team answer every single day?

- Book a consultation → /contact

---
© 2026 TechnologiesNinja · Built and maintained in-house
