FM Consulting
Knowledge Router
An AI-powered request-routing engine — real semantic search narrows an incoming request to the closest knowledge articles, then Claude judges which one (if any) genuinely resolves it, states an honest confidence score, and suggests the owning team.
Case study
The problem
Service teams answering "which playbook handles this" usually rely on keyword search or manual triage, both of which miss requests that are worded differently than the article that actually resolves them — a request never mentions the word "lockout" even though that's exactly what it is. The harder problem is confidence: a routing tool that always picks something, even when nothing genuinely fits, trains reviewers to stop trusting it — and a request that touches two teams at once (a billing dispute discovered while locked out of the account) gets silently forced into one bucket, leaving the other half unresolved.
The solution
Every incoming request is embedded and compared against a knowledge base of articles by semantic similarity — so a request about being unable to sign in matches an article about account lockouts even without sharing exact wording — narrowing the field to the 3 closest matches. Claude then makes the actual judgment call on those 3 candidates: is any of them a genuine match, how confident should a human reviewer be, and which team should own it — explicitly instructed that a lower confidence, or no match at all, is always safer than forcing a plausible-sounding answer. A human always confirms or reassigns the result before it's final, and every step is logged to an audit trail. The system is deliberately domain-agnostic — the same routing logic serves an external customer-support request or an internal employee IT ticket without modification.
How it was built
The retrieval step (OpenAI embeddings, cosine similarity computed in application code) and the judgment step (Claude, via structured output) are genuinely separate stages, not a single prompt with the knowledge base pasted in — this keeps retrieval cheap and scalable while keeping the actual reasoning in a model that can explain itself in plain language. A deliberate anti-hallucination choice: Claude identifies its pick as a rank (1st, 2nd, or 3rd of the candidates it was shown, or none), never as a database id it has to get exactly right — the real article is resolved server-side from that rank. The seed data includes a request engineered to genuinely span two teams (a duplicate charge discovered while locked out) and one engineered to match nothing at all, both used to verify in practice that the system gives an honestly lower confidence and names the ambiguity, or admits no confident match, instead of forcing an answer either time.
More projects

- AI
- Customer Experience
AI Support Workflow Optimization
A platform-agnostic AI triage layer for support teams — connects to Zendesk, Salesforce, or any ticketing system, classifying tickets and drafting ready-to-send responses with a human review step before anything goes out.

- Transformation
- Operations
Delivery Process Transformation
Brought structure and reliability to a multi-team delivery environment by improving ownership, planning, and stakeholder visibility.

- Operations
- Customer Experience
Cross-Channel Escalation Triage Program
Reduced escalation backlog by introducing a shared triage operating model across support, product, and engineering.