Skip to content
Back
AI · internal tools

AI Customer Support Council

A self-hosted console for sorting incoming support requests, built as a technical assessment for Valsoft.

My partBuilt solo

AI Customer Support Council

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. 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. 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. 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. 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. 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

Read the write-up →