AI Customer Support Council
A self-hosted console for sorting incoming support requests, built as a technical assessment for Valsoft.
My partBuilt solo
In short
A self-hosted internal admin console for synthetic B2B support intake and triage, built as a technical-assessment deliverable for Valsoft Corporation. It is not a customer-facing platform.
- What it is
- A self-hosted internal admin console for synthetic B2B support intake and triage.
- Why it matters
- An LLM can fluently propose categories and urgency, but if it quietly becomes the policy engine the workflow loses both auditability and control.
- My part
- I built it on my own as a technical-assessment deliverable for Valsoft Corporation.
Step by step
- 1
Intake
Synthetic B2B support submissions enter the system through a narrow admin console with a login, dashboard, submissions view, and submission detail view.
- 2
Propose
A local LLM proposes a category, urgency, and rationale for each submission. Ollama is the default provider; an OpenAI-compatible endpoint is optional.
- 3
Enforce
Deterministic rules apply confidence thresholds and escalation conditions. A low-confidence response can be sent for human review no matter how fluent the explanation sounds.
- 4
Review
Human reviewers see the original submission, the model’s proposal, its confidence, and the rules that changed or escalated it. Accepting or overriding a result is explicit.
- 5
Persist
State lives in PostgreSQL. Background work is scheduled through Redis and RQ. JSON export reflects the reviewed state, not a hidden intermediate prediction.
For engineersHow it is built, its limits, and its keywords.
How it works
A React/TypeScript/Vite frontend talks to a FastAPI/Pydantic/SQLAlchemy backend with Redis- and RQ-based background jobs, PostgreSQL persistence, and an Ollama-by-default local model provider or an optional OpenAI-compatible endpoint. Deterministic rules such as confidence thresholds and escalation conditions live outside the model.
Limits
- The console is an internal admin tool for a technical assessment. It is not a customer-facing help desk.
- Local-first operation is a privacy and repeatability choice; it also creates operational responsibilities around model availability, queue state, and migrations.
- A failed inference and a failed support request are separate failure modes and are handled as such.
Keywords
- local-first AI
- support triage
- LLM plus deterministic rules
- Ollama
- FastAPI
- PostgreSQL