The Analytics Dashboard provides comprehensive insights into citizen engagement patterns, system performance, and service effectiveness through interactive visualizations and real-time metrics.
The main dashboard displays key metrics and trends in an intuitive, easy-to-understand format designed for government staff and administrators.
The dashboard features four primary metric cards:
=== “Conversations” - Total Conversations: Daily, weekly, and monthly conversation counts - Active Sessions: Currently active chat sessions - Average Duration: Mean conversation length - Completion Rate: Percentage of resolved conversations
=== “Sentiment Analysis” - Positive Feedback: Percentage of positive interactions - Negative Feedback: Issues requiring attention - Neutral Interactions: Informational exchanges - Trend Analysis: Sentiment changes over time
=== “Concern Reports” - New Concerns: Recently submitted issues - Resolved Issues: Completed concern resolutions - Average Resolution Time: Time to resolve concerns - Priority Distribution: Breakdown by urgency level
=== “System Performance” - Response Time: AI response speed metrics - Uptime: System availability percentage - Error Rate: Failed request percentage - API Usage: External service utilization
xychart-beta
title "Daily Conversations Over Time"
x-axis [Mon, Tue, Wed, Thu, Fri, Sat, Sun]
y-axis "Number of Conversations" 0 --> 200
line [45, 67, 89, 123, 98, 34, 28]
The conversation trends chart shows:
pie title Sentiment Distribution (Last 30 Days)
"Positive" : 65
"Neutral" : 25
"Negative" : 10
Interactive word cloud showing most discussed topics:
The dashboard updates in real-time, showing:
!!! info “Real-time Features” - Live conversation counter - Instant sentiment updates - Real-time concern submissions - System health monitoring
flowchart TD
A[Monitor Metrics] --> B{Threshold Exceeded?}
B -->|Yes| C[Generate Alert]
B -->|No| D[Continue Monitoring]
C --> E[Notify Admin]
C --> F[Update Dashboard]
E --> G[Take Action]
F --> D
G --> D
Automated alerts for:
Users can filter data by:
=== “Time Ranges” - Last 24 hours - Last 7 days - Last 30 days - Custom date range - Year-to-date
=== “Categories” - Conversation topics - Sentiment types - Concern categories - User types - Geographic regions
=== “Metrics” - Response times - Resolution rates - Satisfaction scores - Usage patterns
# Export data in multiple formats
EXPORT_FORMATS = {
"csv": "Comma-separated values",
"json": "JSON data format",
"pdf": "PDF report",
"excel": "Excel spreadsheet"
}
# Example export API call
GET /api/v1/analytics/export?format=csv&date_range=30d&metrics=conversations,sentiment
Track AI and system performance:
| Metric | Target | Current | Status |
|---|---|---|---|
| AI Response Time | <2s | 1.4s | ✅ Good |
| Page Load Time | <3s | 2.1s | ✅ Good |
| API Response | <1s | 0.8s | ✅ Good |
| Database Query | <500ms | 320ms | ✅ Good |
graph TB
subgraph "System Components"
A[Web Server] --> B[Application]
B --> C[AI Engine]
B --> D[Database]
B --> E[External APIs]
end
subgraph "Health Status"
F[✅ Healthy]
G[⚠️ Warning]
H[❌ Critical]
end
A --> F
C --> F
D --> F
E --> G
Track how users navigate through conversations:
sankey-beta
User Start,Greeting,100
Greeting,Service Inquiry,60
Greeting,Information Request,30
Greeting,Complaint,10
Service Inquiry,Resolved,45
Service Inquiry,Escalated,15
Information Request,Satisfied,28
Information Request,Follow-up,2
Complaint,Human Agent,8
Complaint,Self-Resolved,2
Interactive map showing conversation density:
xychart-beta
title "Usage by Age Group"
x-axis [18-24, 25-34, 35-44, 45-54, 55-64, 65+]
y-axis "Percentage of Users" 0 --> 30
bar [12, 28, 24, 18, 12, 6]
Track administrative activities:
Complete audit logging:
{
"timestamp": "2025-01-01T10:30:00Z",
"user": "admin_user",
"action": "export_data",
"resource": "analytics_dashboard",
"details": {
"format": "csv",
"date_range": "30d",
"metrics": ["conversations", "sentiment"]
}
}
Create custom reports with:
# Example scheduled report configuration
SCHEDULED_REPORTS = {
"daily_summary": {
"frequency": "daily",
"time": "09:00",
"recipients": ["admin@city.gov"],
"format": "pdf"
},
"weekly_trends": {
"frequency": "weekly",
"day": "monday",
"time": "08:00",
"metrics": ["conversations", "sentiment", "concerns"]
}
}
# Get dashboard data
GET /api/v1/analytics/dashboard
{
"date_range": "7d",
"metrics": ["conversations", "sentiment", "performance"]
}
# Get detailed metrics
GET /api/v1/analytics/metrics
{
"metric": "conversations",
"granularity": "hourly",
"start_date": "2025-01-01",
"end_date": "2025-01-07"
}
# Export data
GET /api/v1/analytics/export
{
"format": "csv",
"date_range": "30d",
"include": ["conversations", "sentiment", "topics"]
}
Build custom dashboards using the API:
// Fetch dashboard data
const response = await fetch('/api/v1/analytics/dashboard', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + apiKey
}
});
const data = await response.json();
// Update custom dashboard components
updateConversationChart(data.conversations);
updateSentimentPie(data.sentiment);
updateMetricsCards(data.metrics);
DATA_RETENTION = {
"raw_conversations": "90 days",
"hourly_aggregates": "1 year",
"daily_summaries": "5 years",
"monthly_reports": "10 years"
}
# Hard refresh
Ctrl+F5 (Windows) or Cmd+Shift+R (macOS)
# Test API endpoints
curl http://localhost:5000/api/v1/analytics/dashboard
# Check if analytics data exists
from src.analytics import get_dashboard_data
data = get_dashboard_data(date_range='7d')
print(f"Data points: {len(data)}")
Check JavaScript console for errors
!!! security “Privacy Measures” - Data anonymization: Personal information removed from analytics - Aggregated reporting: Individual conversations not exposed - Access controls: Role-based dashboard access - Audit logging: All data access tracked