Problem statement
A B2B telecom service operation was handling a growing volume of cases through a familiar pattern: every request — from "where is my order?" to a genuine provisioning failure — landed in the same queue and waited for a human to read it, work out what it was, and then open three or four other systems to find the answer.
- Most cases were repetitive. Order status, quote clarifications and account changes made up the bulk of volume, yet each one consumed the same agent effort as a complex issue.
- Context lived elsewhere. Quoting/pricing, order management and customer data sat in separate systems. Agents were the integration layer.
- Complex cases waited behind simple ones. The customers with real problems got the slowest experience.
Leadership wanted to scale service without scaling headcount — but without handing customers to a chatbot that couldn't actually do anything.
Business outcome
The win wasn't just fewer cases. Human agents now spend their time on the work that needs judgement, and they start every escalated case already knowing what's been tried.
Current state
Every channel fed one queue. Triage, lookup and response were all manual, and the agent's browser tabs were the integration architecture.
flowchart LR
C([Customer]) -->|Email · Portal · Phone| Q[Shared case queue]
Q --> T[Agent reads & triages manually]
T --> L{Look up context}
L --> S1[(Quoting / Pricing)]
L --> S2[(Order Management)]
L --> S3[(Customer Management)]
S1 & S2 & S3 --> R[Agent drafts response]
R --> C
Future state architecture
We introduced an agentic layer in front of the queue, with Salesforce as the orchestration hub. The AI agent handles intent, retrieves context through governed actions, and either resolves the case or hands it over with a summary.
flowchart TB
subgraph CH[Channels]
direction LR
P[Portal / Messaging]
E[Email]
end
subgraph SF[Salesforce · Service Cloud · orchestration hub]
direction LR
AG[AI service agent] --> TA[Topics & actions]
TA -->|escalate + summary| OC[Omni-Channel routing] --> HA[Human agent + AI assist]
PB[Prompt templates]
end
subgraph ENT[Enterprise systems]
direction LR
ORD[(Order Mgmt)]
QP[(Quoting / Pricing)]
CM[(Customer Mgmt)]
end
subgraph TR[Trust boundary]
direction LR
TL[Trust layer · masking · audit] --> LLM[LLM via secure API]
end
P & E --> AG
TA -->|Flow · Apex · API actions| ORD & QP & CM
AG & HA -.-> PB -.-> TL
How a case flows now
sequenceDiagram
participant Cu as Customer
participant Ag as AI agent
participant Tl as Trust layer / LLM
participant Om as Order API
participant Hu as Human agent
Cu->>Ag: "Where is my order?"
Ag->>Tl: Classify intent (PII masked)
Tl-->>Ag: Topic: Order status
Ag->>Om: getOrderStatus(orderId)
Om-->>Ag: Shipped · ETA 2 days
Ag-->>Cu: Status + tracking details
alt Unresolved, sensitive or low confidence
Ag->>Tl: Summarise conversation
Ag->>Hu: Route with summary + classification
Hu-->>Cu: Resolves with full context
end
Key architecture decisions
| Decision | Why | Trade-off accepted |
|---|---|---|
| Start with narrow, high-volume topics | Fast, measurable deflection; easy to test exhaustively | Long-tail requests still escalate in phase one |
| Actions call existing APIs via Salesforce, not direct from the LLM | Every action is governed, logged and permission-checked | More upfront integration work |
| Mask PII before any model call | Customer data never leaves the trust boundary unprotected | Some prompts needed redesign to work with masked values |
| Escalation always carries a summary | Humans never restart the conversation | Extra model call per escalation |
| Salesforce as orchestration layer for quote, order and customer systems | One place for process, security and audit | Salesforce becomes a critical dependency — NFRs had to reflect that |
Learnings summary
- Defining "resolved" with the service team before building anything.
- Treating topics like product features — each with an owner, tests and a success metric.
- Shipping AI assist for humans alongside deflection, so agents saw the AI as help, not threat.
- Invest in the test conversation library even earlier — it became our most valuable asset.
- Bring the data-quality owners in at week one, not week six.
- Instrument cost per resolved case from day one, not just deflection rate.
An AI agent is only as good as the actions it can take and the data it can trust. The model is the easy part.