E-commerce Customer Support
Scenario Overview
A large e-commerce platform needs an AI system to handle customer inquiries about orders, products, and policies. The system must be able to:
- Handle high-volume customer inquiries efficiently
- Provide accurate order and product information
- Escalate complex issues to human support
- Learn from customer interactions to improve service
- Maintain customer satisfaction and loyalty
User Journey
1. Customer Query
User: "My order #12345 hasn't arrived, it's been 5 days since shipping"
2. System Response Flow
Step 1: Customer Query Understanding
# Customer query expansion with e-commerce terminology
expanded_query = ecommerce_expander.expand(
query="My order #12345 hasn't arrived, it's been 5 days since shipping",
domain="ecommerce",
context={
"user_role": "customer",
"query_type": "order_tracking",
"order_id": "12345",
"issue_type": "delivery_delay"
}
)
# Results in:
# - "order #12345" → "order number", "order ID", "purchase order"
# - "hasn't arrived" → "not delivered", "missing", "delayed delivery"
# - "shipping" → "delivery", "shipping status", "tracking"
Step 2: Order Information Retrieval
# Search order database and shipping information
retrieval_results = hybrid_retriever.retrieve(
query=expanded_query,
k=20, # More candidates for comprehensive order information
filters={
"order_id": "12345",
"query_type": "order_tracking",
"document_type": "order_information"
}
)
Step 3: Customer Service Reranking
# Rerank based on customer service relevance and order status
reranked_results = customer_service_reranker.rerank(
query=expanded_query,
documents=retrieval_results,
context={
"order_id": "12345",
"customer_tier": "premium",
"issue_urgency": "high"
},
top_k=8
)
Step 4: Customer Service Response Generation
# Generate customer service response
response = customer_service_generator.generate(
query=expanded_query,
context=reranked_results,
format="customer_service"
)
3. System Response
# Order Status Update - Order #12345
## Current Order Status
**Order Number**: #12345
**Order Date**: January 10, 2024
**Shipping Date**: January 12, 2024
**Expected Delivery**: January 15, 2024
**Current Status**: In Transit
## Shipping Information
- **Carrier**: FedEx
- **Tracking Number**: 1234567890
- **Last Update**: January 14, 2024 - Package in transit
- **Current Location**: Distribution Center - Chicago, IL
- **Expected Delivery**: January 16, 2024 (1 day delay)
## Why the Delay?
The package experienced a 1-day delay due to weather conditions in the Chicago area. This is a common occurrence during winter months and is outside our control.
## What We're Doing
1. **Monitoring**: We're actively tracking your package
2. **Communication**: You'll receive updates via email and SMS
3. **Support**: Our customer service team is available 24/7
## Next Steps
1. **Track Your Package**: Use the tracking number above
2. **Receive Updates**: Check your email for delivery notifications
3. **Contact Us**: If you have any concerns, we're here to help
## Customer Service Options
- **Live Chat**: Available 24/7 on our website
- **Phone**: 1-800-CUSTOMER (24/7 support)
- **Email**: support@ecommerce.com
- **Mobile App**: Download our app for real-time updates
## Compensation for Delay
As a premium customer, we're offering:
- **Free Express Shipping** on your next order
- **10% Discount** on your next purchase
- **Priority Support** for future orders
## Order Details
- **Items**: 2x Wireless Headphones, 1x Phone Case
- **Total**: $299.99
- **Shipping**: Free (Premium Customer)
- **Payment**: Credit Card ending in 1234
## Thank You
We apologize for any inconvenience and appreciate your patience. Your satisfaction is our priority, and we're working to ensure your order arrives safely and on time.
**Need immediate help?** Click here to chat with a live agent.
Implementation Code
1. E-commerce Configuration
# config/ecommerce_config.py
from packages.rag import HybridRetriever, CrossEncoderReranker
from packages.agents import RAGAgentGraph, AgentConfig
from packages.rag.query_expansion import EcommerceQueryExpander
from packages.observability import MetricsCollector, StructuredLogger
class EcommerceConfig:
def __init__(self):
# E-commerce query expansion
self.ecommerce_expander = EcommerceQueryExpander(
domain="ecommerce",
ecommerce_terminology_file="data/ecommerce_terminology.json",
customer_service_abbreviations_file="data/customer_service_abbreviations.json"
)
# Hybrid retrieval with e-commerce focus
self.hybrid_retriever = HybridRetriever(
vector_retriever=VectorRetriever(
model_name="text-embedding-3-large",
vector_store=OpenSearchStore(
index_name="ecommerce_knowledge_base"
)
),
bm25_retriever=BM25Retriever(
index_path="data/ecommerce_bm25_index"
),
alpha=0.5 # Balance vector and BM25 search
)
# Customer service reranking
self.customer_service_reranker = CustomerServiceReranker(
model_name="cross-encoder/ms-marco-MiniLM-L-6-v2",
customer_satisfaction_weight=0.9,
resolution_effectiveness_weight=0.8,
response_time_weight=0.7
)
# Agent configuration for e-commerce domain
self.agent_config = AgentConfig(
model_name="gpt-4-turbo-preview",
temperature=0.2,
max_steps=5,
retrieval_k=20,
rerank_k=8,
enable_web_search=True, # Enable for current information
enable_escalation=True,
cost_limit=0.08
)
2. E-commerce Knowledge Base
# data/ecommerce_knowledge_base.json
{
"documents": [
{
"id": "order_tracking_guide_001",
"title": "Order Tracking and Delivery Information",
"content": "Comprehensive guide to order tracking and delivery...",
"metadata": {
"query_type": "order_tracking",
"customer_tier": "all",
"priority": "high",
"last_updated": "2024-01-15",
"source": "Customer Service Department",
"effectiveness_rating": 0.88
}
}
]
}
3. E-commerce Agent Implementation
# agents/ecommerce_agent.py
import asyncio
from typing import Dict, Any, List
from packages.agents import RAGAgentGraph
from packages.observability import MetricsCollector, StructuredLogger
class EcommerceAgent:
def __init__(self, config: EcommerceConfig):
self.config = config
self.agent_graph = RAGAgentGraph(
config=config.agent_config,
tool_registry=config.tool_registry
)
self.metrics = config.metrics_collector
self.logger = StructuredLogger()
async def handle_customer_query(self, query: str, customer_context: Dict[str, Any]) -> Dict[str, Any]:
"""Handle customer service query with full pipeline."""
start_time = time.time()
try:
# Step 1: E-commerce query expansion
expanded_query = await self._expand_ecommerce_query(query, customer_context)
# Step 2: Customer service document retrieval
retrieval_results = await self._retrieve_customer_documents(expanded_query, customer_context)
# Step 3: Customer service reranking
reranked_results = await self._rerank_customer_documents(expanded_query, retrieval_results, customer_context)
# Step 4: Customer service response generation
response = await self.agent_graph.ainvoke({
"query": expanded_query,
"retrieved_docs": retrieval_results,
"reranked_docs": reranked_results,
"customer_context": customer_context,
"format": "customer_service"
})
# Step 5: Customer satisfaction optimization
optimized_response = await self._optimize_customer_satisfaction(response, customer_context)
# Step 6: Logging and metrics
await self._log_customer_interaction(query, response, customer_context)
return optimized_response
except Exception as e:
self.logger.error(f"Customer query failed: {e}")
return await self._handle_customer_error(query, e, customer_context)
async def _optimize_customer_satisfaction(self, response: Dict[str, Any], customer_context: Dict[str, Any]) -> Dict[str, Any]:
"""Optimize response for customer satisfaction."""
# Add personalized touches based on customer tier
customer_tier = customer_context.get("customer_tier", "standard")
if customer_tier == "premium":
response["personalized_offers"] = await self._get_premium_offers(customer_context)
response["priority_support"] = True
# Add relevant product recommendations
response["product_recommendations"] = await self._get_product_recommendations(customer_context)
# Add customer service options
response["customer_service_options"] = await self._get_service_options(customer_context)
return response
Features Demonstrated
1. Rate Limiting
- Per-customer request limits
- Burst protection for high-volume traffic
- Fair resource allocation
2. Cost Management
- Budget controls for high-volume customer service
- Cost tracking per customer tier
- Automatic escalation when cost thresholds exceeded
3. Analytics & BI
- Customer issue pattern analysis
- Service quality trend monitoring
- Customer satisfaction optimization
4. Response Consistency
- Uniform customer service experience
- Consistent policy interpretation
- Standardized response formatting
5. Error Handling
- Graceful handling of order system errors
- Fallback responses for unclear issues
- Escalation for complex customer problems
6. Observability
- Customer satisfaction monitoring
- Service performance tracking
- Quality improvement metrics
Next Steps
- Deploy the e-commerce system with proper customer service controls
- Ingest e-commerce knowledge base with proper metadata
- Configure customer analytics and satisfaction monitoring
- Train customer service staff on the new system
- Monitor customer satisfaction and service quality
Related Stories
- IT Support Agent - Similar troubleshooting structure
- Manufacturing Quality Control - Quality-focused implementation
- University Research Assistant - Research-focused implementation
Ready to implement? Start with the e-commerce knowledge base setup and work through each component step by step! 🛒