Conversational AI Agent for Logistics Customer Support
dtdc · Other · 2025 · source Agentic: yes · promotional bias: high · source-backed · extracted with prompt 0.5.6 (schema v2)
Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.
Problem
Domain: Logistics customer support
DTDC's existing DIVA logistics assistant handled a high volume of tracking, serviceability, and shipping-rate inquiries through a rigid guided workflow. Users had to follow structured paths instead of natural conversations, increasing support workload, resolution time, and customer frustration.
Constraints:
- DTDC receives over 400,000 customer queries each month.
- The assistant must integrate real-time data from legacy tracking, pricing, serviceability, and support systems.
- It must handle logistics terminology and multi-step customer requests.
- The rollout had to maintain service continuity from the old DIVA system.
- Dashboard and audit data were needed for continuous improvement and operations.
Architecture
ShellKode rebuilt DIVA as DIVA 2.0 using Amazon Bedrock Agents, Bedrock Knowledge Bases, AWS Lambda, App Runner, API integrations to DTDC operational systems, OpenSearch-backed vector retrieval, RDS logging, and an admin dashboard. Bedrock interprets intent, invokes Lambda-backed business APIs, retrieves knowledge-base content for general queries, and uses Claude 3.0 to generate contextual responses.
Diagram confidence: explicit (topology described by the source).
flowchart LR dtdc-website["DTDC website"] --> app-runner-api-layer["App Runner API layer"] app-runner-api-layer --> amazon-bedrock-agent["Amazon Bedrock Agent"] amazon-bedrock-agent --> lambda-action-functions["Lambda action functions"] lambda-action-functions --> dtdc-operational-apis["DTDC operational APIs"] amazon-bedrock-agent --> bedrock-knowledge-base["Bedrock Knowledge Base"] bedrock-knowledge-base --> opensearch-vector-store["OpenSearch vector store"] amazon-bedrock-agent --> claude-30["Claude 30"] app-runner-api-layer --> dashboard-api["Dashboard API"] dashboard-api --> rds-query-log["RDS query log"] dashboard-api --> admin-dashboard["Admin dashboard"]
Components
| Component | Role | Interacts with |
|---|---|---|
DTDC website |
Customer-facing entry point for natural-language logistics queries. | App Runner API layer |
App Runner API layer |
Runs web and backend API services, including Bedrock Agents API and Dashboard API calls. | DTDC website, Amazon Bedrock Agent, Dashboard API |
Amazon Bedrock Agent |
Interprets user intent and orchestrates Lambda functions and knowledge retrieval. | App Runner API layer, Lambda action functions, Bedrock Knowledge Base, Claude 30 |
Lambda action functions |
Invoke DTDC operational APIs for tracking, pricing, serviceability, and support ticket creation. | Amazon Bedrock Agent, DTDC operational APIs |
DTDC operational APIs |
Real-time systems for tracking, delivery serviceability, pricing, and customer care. | Lambda action functions |
Bedrock Knowledge Base |
Vector retrieval over website content, support documentation, FAQs, and operational data. | Amazon Bedrock Agent, OpenSearch vector store |
OpenSearch vector store |
Stores vector embeddings for semantic similarity retrieval. | Bedrock Knowledge Base |
Claude 30 |
Generates contextual responses from retrieved operational and knowledge-base data. | Amazon Bedrock Agent |
Dashboard API |
Writes query and response data into RDS and feeds admin analytics. | App Runner API layer, RDS query log, Admin dashboard |
RDS query log |
Stores logistics-agent queries and responses for analytics and dashboarding. | Dashboard API |
Admin dashboard |
Shows accuracy, unresolved queries, categories, sessions, and user interactions for improvement. | Dashboard API |
Data flow
A customer submits a natural-language query from the DTDC website. App Runner invokes the Bedrock Agents API, the agent interprets intent, triggers the relevant Lambda function, calls DTDC tracking/pricing/serviceability/support APIs, retrieves relevant knowledge-base chunks when needed, passes retrieved data to Claude 3.0 for response generation, and stores query/response data in RDS for dashboard analysis.
Why this architecture
The architecture keeps business data authoritative in DTDC APIs while using Bedrock Agents for intent routing, Lambda for action execution, Bedrock Knowledge Bases for FAQ/support retrieval, and the dashboard for operational learning.
Models used: Anthropic Claude 3.0 on Amazon Bedrock · Amazon Bedrock Agents · Amazon Bedrock Knowledge Bases
Scale
- DTDC receives over 400,000 customer queries each month.“DTDC Express Limited receives over 400,000 customer queries each month, ranging from tracking requests to serviceability checks and shipping rates.”article, stated
- The last three months of dashboard data included 256,048 consignment inquiries and 107,132 general inquiries.“71% of the inquiries were related to consignments (256,048), whereas 29.5% were general inquiries (107,132)”article, stated
- The deployed assistant reported 93% response accuracy.“Powered by Amazon Bedrock, DIVA 2.0 understands queries in natural language and supports dynamic conversations with a response accuracy of 93%”article, stated
Alternatives considered (roads not taken)
Keep the original guided workflow
Rejected because: Rigid paths increased support burden, resolution times, and poor experience.
Answer every query from the knowledge base
Rejected because: Tracking, pricing, and serviceability require real-time operational API data.
Treat the assistant as a black box after deployment
Rejected because: DTDC needed real-time analytics for unresolved issues and continuous improvement.
Patterns
tool-use-orchestration (orchestration)
Bedrock Agents route intents to Lambda-backed logistics APIs.
rag-retrieval (retrieval)
Bedrock Knowledge Bases retrieve FAQ, support, and operational chunks from OpenSearch embeddings.
observability-tracing (operations)
CloudWatch, CloudTrail, RDS, and dashboard metrics capture events, queries, and performance.
Tradeoffs
Modernize DIVA with generative AI
Chose Bedrock agentic assistant over rigid guided workflow.
Rationale: Natural language and context handling improve flexibility while reducing live-agent dependency.
Use fallback responses for missing KB data
Chose preconfigured fallback over forcing an unsupported answer.
Rationale: Fallback avoids unsupported responses when no relevant knowledge chunk is found.
Gotchas (what bit them)
Real-time legacy data integration was a major challenge.
Root cause: Tracking, rates, and serviceability data lived across multiple legacy systems.
Resolution: Use Bedrock Agents plus Lambda/API integration for real-time data access.
The model needed logistics terminology and multi-step query understanding.
Root cause: Customer support questions include domain-specific terms and complex logistics flows.
Resolution: Use Bedrock LLMs and Bedrock Knowledge Bases fine-tuned with industry-specific data.
Evaluation
DTDC uses dashboard metrics, session logs, category breakdowns, accuracy tracking, unresolved query tracking, and support-ticket outcomes.
Metrics: Response accuracy · Unresolved queries · Query categories · Session statistics · Support-ticket deflection · Customer support workload reduction
Outcomes
- DIVA 2.0 reached 93% response accuracy.
- 51.4% of consignment inquiries did not result in support tickets.
- The customer support team's query burden dropped by 51.4%.
DTDC receives over 400,000 monthly customer queries; the last three months of metrics included 256,048 consignment inquiries and 107,132 general inquiries.