Self-hosted & private
Inference runs on local Ollama. By default no ticket text is sent to any third-party API, so customer data physically stays on your box — the cleanest path to GDPR, HIPAA, and air-gapped support.
Resolvr is an open-source, self-hosted AI customer support agent that classifies a support ticket, retrieves knowledge-base articles via RAG, decides resolve-vs-escalate behind a safety gate, and drafts a reply — running on local Ollama (qwen2.5:14b) so customer data never leaves your server, at zero per-token cost.

An agent-first support pipeline you own end-to-end — not an inbox with a chatbot bolted on.
Inference runs on local Ollama. By default no ticket text is sent to any third-party API, so customer data physically stays on your box — the cleanest path to GDPR, HIPAA, and air-gapped support.
The whole pipeline is on GitHub — FastAPI + React, MIT-style. Read it, fork it, swap the model, point it at your own knowledge base.
No per-resolution or per-token fee. The only cost is the server you already run. An opt-in cloud-API fallback covers the hardest tickets when you want frontier quality.
Honest scope: Resolvr does autonomous triage, RAG answering, and safety-gated drafting + escalation — not end-to-end account changes or refunds. Tool/action execution is on the roadmap.
Stack: FastAPI (Python) + React/Vite · Ollama embeddings + cosine RAG · deterministic classify/decide · pytest eval-gated.
Four tools run in sequence. Classification, retrieval, and the resolve/escalate decision are deterministic; the LLM only writes the final reply.
classify_ticket
A deterministic classifier tags the ticket with category (billing, technical, account, how-to, refund, security, legal, abuse), intent, sentiment, and priority. No LLM call — so the routing is reproducible and testable.
search_kb
Semantic retrieval over your help-center articles: the query is embedded with a local Ollama model and ranked by cosine similarity. Grounding the reply in real KB passages is what stops the agent from inventing policy.
decide_action
A configurable confidence threshold decides resolve-vs-escalate. A hard safety gate forces escalation on security, legal, abuse, and refund tickets; low retrieval confidence escalates with full context attached.
draft_resolution
For resolvable tickets, local Ollama drafts a reply strictly from the retrieved KB. Escalations get a courteous holding reply plus an internal routing note for the human who picks it up.
Yes. Because inference runs on local Ollama, no ticket text is sent to any external model by default — which is a materially stronger privacy story than “privacy-first” SaaS that PII-masks and then sends the rest to a cloud LLM.
Resolvr has zero per-token and zero per-resolution cost — the only cost is the server you already run. That's the wedge for teams hit by per-resolution SaaS pricing, where bills scale directly with ticket volume.
One honest caveat so this stays credible: below roughly a couple of million tokens a day, a cloud API can be cheaper than running dedicated GPU infrastructure. Resolvr's value is privacy and control plus no marginal cost at volume — and the opt-in cloud fallback covers low-volume or hardest-ticket cases without locking you in.
As of 2026, based on public documentation. The dimensions that matter for a self-hosted, privacy-first deployment.
| Product | Self-host | Local LLM | Data leaves box | Per-resolution fee | Built-in RAG | Resolve/escalate gate | License |
|---|---|---|---|---|---|---|---|
| Resolvr | Yes | Yes (Ollama) | No (local by default) | None | Built-in | Yes | Open source |
| Intercom Fin | No (SaaS) | No | Yes (cloud) | ~$0.99/resolution | Yes | Handoff only | Proprietary |
| Zendesk AI | No (SaaS) | No | Yes (cloud) | Per-resolution add-on | Yes | Handoff only | Proprietary |
| Chatwoot + Captain | Yes | Varies | Depends on model | None (self-host) | Add-on | Helpdesk handoff | Open source |
| Zammad | Yes | Varies | Depends on model | None (self-host) | Add-on | Helpdesk handoff | Open source |
Chatwoot and Zammad are excellent self-hostable helpdesks with AI add-ons; Resolvr is the agent itself — the classify → RAG → resolve/escalate pipeline — rather than the inbox around it.
A safety gate is a rule layer that overrides the model: certain ticket categories must always reach a human, and anything the agent isn't confident about is escalated rather than guessed.
That combination — RAG grounding plus a confidence-thresholded gate — is the direct answer to the “but won't it hallucinate?” objection: low-confidence cases go to a human instead of being sent.
The whole thing is open source. Four steps from zero to a running agent.
ollama pull qwen2.5:14b and ollama pull nomic-embed-text.make setup to create the Python venv and install the frontend.make dev starts the FastAPI backend and React frontend; submit a ticket and watch classify → retrieve → decide → draft.Full instructions, the eval suite, and a Docker Compose setup are in the GitHub README. Stars welcome — they help the project rank.
Who it is for: privacy- and data-residency-driven teams, regulated EU SaaS, teams frustrated by per-resolution pricing, and developers who want a self-hostable, hackable agent they fully control.
Resolvr is an open-source, self-hosted AI customer support agent that classifies a support ticket, retrieves knowledge-base articles via RAG, decides resolve-vs-escalate behind a safety gate, and drafts a reply. It runs on local Ollama models, so customer data never leaves your server, at zero per-token cost.
Yes. Resolvr runs inference on local Ollama by default, so no ticket text is sent to any third-party API. This makes it suitable for GDPR, HIPAA, and air-gapped deployments. A cloud-API fallback exists but is opt-in and off by default.
Resolvr is an open-source, self-hostable alternative to Intercom Fin and Zendesk AI. Unlike those SaaS tools it runs on your own server with no per-resolution or per-token fee, and unlike helpdesks such as Chatwoot or Zammad it is an agent-first classify → RAG → resolve/escalate pipeline rather than an inbox with bolt-on AI.
Resolvr has zero per-token and zero per-resolution cost — the only cost is the server you already run. This contrasts with per-resolution SaaS pricing such as Intercom Fin's roughly $0.99 per resolution. Note that below a couple of million tokens a day, a cloud API can be cheaper than dedicated GPU infrastructure, which is exactly what the opt-in cloud fallback is for.
Resolvr makes a deterministic resolve-vs-escalate decision behind a configurable safety gate. A hard gate always escalates security, legal, abuse, and refund tickets, and low retrieval confidence escalates with full context. Everything else is auto-resolved with a reply grounded in retrieved KB articles.
Resolvr reduces hallucination two ways: the reply is grounded strictly in knowledge-base articles retrieved via RAG, and a confidence-thresholded safety gate hands low-confidence cases to a human instead of sending them. Its pytest eval suite enforces 100% must-escalate recall on security, legal, and abuse tickets.
Resolvr defaults to qwen2.5:14b on local Ollama and works with other Ollama models such as Llama 3.1 and Mistral. Smaller 7B–8B models run on modest GPUs; the hardest tickets can use the opt-in cloud-API fallback when needed.
Self-hosting is the cleanest GDPR story because no customer data is sent to a third-party processor — there is no external API call to cover with a DPA. Because Resolvr runs true local inference (not PII-masking before a cloud call), ticket data physically stays on your infrastructure, supporting GDPR, data-residency, and air-gapped requirements.
Resolvr is built on FastAPI (Python) and React/Vite, with Ollama-based embeddings and cosine-similarity RAG, deterministic classification, and a pytest eval-gated safety layer. It is open source on GitHub and can be deployed end-to-end on your own server; the build guide includes copy-pasteable Ollama and FastAPI steps.