Smart-Routing — Conversation lands with the right team
Instead of simply assigning the next available agent to each conversation using round-robin or least-busy, SilentChat can classify the first visitor message into a topic and prioritize agents in the matching department. If the visitor writes in a different language, an agent with that language has additional priority.
How it works
For each new conversation (tenant has multiple active departments):
-
Intent classification — the AI provider reads the first visitor message and returns one of the following buckets:
sales— prices, plan comparisons, demos, upgrades, "how much"billing— invoices, payment methods, refunds, subscription changestechnical— integration issues, API errors, bugssupport— how-to questions, configuration help, generic "help" requestsother— everything else (e.g., greetings, ambiguous openings)
-
Language detection — reuse from auto-translation (Plan #162); best-effort, fails silently on provider error.
-
Filter pipeline:
- Departments with matching intent tag → members as candidates
- If no department matches → all online agents
- From those, agents with
user.languagematching → top selection - If no language-matching agents → the intent pool without language filter
- Fallback: the normal round-robin / least-busy strategy on the remaining pool
-
Audit metadata —
conversations.metadata.routed_intent+routed_languageare stamped. The sidebar shows the two chips once Smart-Routing takes effect.
Activation
Settings → Departments → Switch "Enable Smart-Routing"
The switch is opt-in because each new conversation consumes ~250 AI tokens for classification (see token consumption below). Tenants with only one department see the switch, but the system automatically skips classification — single-team setups have no routing decision to make.
Intent tags per department
Each department gets a multi-select tile with the five buckets:
- Sales department → tag
sales(optionally alsobillingif sales also manages invoices) - Support department → tags
support,technical - Billing team → tag
billing
A department without tags does not participate in Smart-Routing — the normal round-robin logic remains active for it.
What happens with ambiguous openings?
Visitor writes "Hi" → classifier returns other. In this case, the intent filter is skipped, but the language preference still applies (if activatable). Thus, "Hi" in English is still preferentially routed to an English-speaking agent, even if the topic is not yet clear.
Token consumption
Per new conversation:
- 1 intent classification call (~150 input + 8 output tokens) — against the
intent_classifybudget - 1 language detection call (~50 input + 10 output tokens) — against the
lang_detectbudget (often already cached by the auto-translation layer) - Total ≈ 250 tokens / conversation with a small IONOS model
Cache: If the same visitor comes with the same opener (e.g., refresh), the result is taken from Redis for 5 minutes — no additional LLM call.
Safeguards:
- Plan limit check before each classification call
- On error: fallback to normal round-robin strategy, no stranding
- Single-department tenants automatically skip
- Closed-set validation on provider response — hallucinations are neutralized as
other
Sidebar display
In the conversation sidebar (accordion "Conversation details"), two chips appear under Smart-Routing:
- Blue: detected topic (e.g., SALES)
- Green: detected language (e.g., EN)
This way, the agent knows without clicking why this conversation was routed to them. If both chips are missing, this conversation went through the normal round-robin logic (e.g., because Smart-Routing was off or the classification silently failed).
Frequently asked questions
What if the classification is completely off? The agent can hand the conversation on at any time: "More actions" menu (⋮) in the conversation → "Hand over to a colleague …", then pick a person or department. The audit log records the original routing decision so you can analyze patterns later.
Are existing conversations retroactively classified? No. Smart-Routing only applies to new conversations. If you enable the feature mid-conversation, the effect is only seen in the next chat.
Can I add custom buckets? Not currently — the five buckets are hardcoded because the allow-list filter would otherwise let hallucinations through. Custom buckets are planned as Plan #165b for the future.
Can Smart-Routing be temporarily disabled for a department? Yes — either turn off the "Enable Smart-Routing" switch at the tenant level (all departments), or remove all intent tags from a single department (only that department).