◆ CASE STUDY · 11 — TEAMS INTERNAL ASSISTANT

Ask anywhere. Routed everywhere.

An MS-Teams-native assistant for a telco data company — a multi-agent router that picks the right database, retrieves consistently across messy schemas, and knows when to say "I don't know."

Multi-DB
Sources fused
Multi-Agent
Routing
Guarded
Output
8 wks
Pilot to live
T
Microsoft Teams · Internal Bot
● ONLINE · 4 AGENTS · 6 DATA SOURCES
How many active subscribers in region NW?
→ NETWORK agent
2,184,309 active in NW region (live).
subscribers_table · q3_snapshot.sql
— 01 / IN TEAMS

Lives where the team already lives.

No new app to learn. The bot lives in Teams as a chat tab — ask, get answered, click through to the source query.

Internal AI
#
data-eng
#
billing-ops
#
support
#
general
Internal AI Assistant
● Available · 4 agents · 6 data sources
What was our churn rate in tier-2 cities last quarter?
You · 14:32
→ routing to BILLING AGENT
Tier-2 city churn was 4.8% in Q3 — up 0.6 pp from Q2. Largest contributors: Indore (6.2%), Patna (5.9%), Coimbatore (5.4%).
📊 SOURCE · churn_metrics · q3_2025_view · row 142
Internal AI · 14:32
Which cell towers had >3 outages this month?
You · 14:34
→ routing to NETWORK AGENT
14 towers had more than 3 outages this month. Top 3: BLR-NW-042 (7), MUM-SE-019 (6), DEL-N-105 (5).
📡 SOURCE · network_incidents · monthly_rollup
Internal AI · 14:34
What's the CEO's email password?
You · 14:35
BLOCKED · OUT OF SCOPE
I can't answer that. My scope is operational data — subscribers, churn, network, billing. For credential or HR-related queries, please use the appropriate internal channel.
Internal AI · 14:35
— 02 / MULTI-AGENT ROUTER

One router. Four specialists. Six databases.

Each agent owns its slice of the data. The router classifies the intent and dispatches — sometimes to two agents in parallel when the question crosses domains.

ROUTERclassify · dispatch
Billing Agent
churn · revenue · plans
billing_db · 14 tables
Network Agent
outages · towers · QoS
network_db · 22 tables
CRM Agent
support · NPS · profile
crm_db · 8 tables
Ops Agent
field · install · SLAs
ops_db · 11 tables
— 03 / THE SCHEMA-DRIFT PROBLEM

Three different names. Same underlying column.

Schemas had been renamed three times. Topic modelling matches meaning, not column-name strings — so retrieval stayed stable while the warehouse kept evolving underneath.

V1 · 2023
customer_id
VARCHAR(32)
V2 · 2024
cust_id
VARCHAR(32)
V3 · 2025
account_uuid
UUID
BERT TOPIC MODEL
subscriber_identifier
Same semantic intent, embedded once, queried by meaning — the retriever sees one stable concept regardless of column name.
✓ Retrieval stable across 3 schema versions
— 04 / END-TO-END PIPELINE

From Teams message to SQL result.

T
Teams Query
Bot Framework
Router
Classify intent
Specialist
Owns DB · schema
BERT Topic
Semantic retrieval
SQL
SQL Run
Read-only query
Guardrail
Scope · output
Reply
In thread · cited
— 05 / IN PRODUCTION

Knowing when to say "I don't know."

4
Specialist agents
6
Data sources fused
3
Schema versions absorbed
100%
Out-of-scope refusals logged
"The router knows when to fall back to 'I don't know' — which is itself a feature in compliance reviews."
— On the design choice that closed the deal
— 06 / BUILT WITH

The toolkit.

Azure OpenAI
Teams Bot Framework
BERT topic modelling
SQL
— NEXT CASE STUDY
Multichannel Sales & Support Agent
Email + SMS + phone AI agent for customer relations and sales — voice-first, identity-aware, channel-switching.

Ready to build something that actually ships?

Twenty minutes with the founders. No discovery call disguised as a pitch. You leave with a one-page read on whether this is worth your time.

Talk to Founders