Skip to main content

Analytics Dashboard

Your analytics dashboard is your command center for monitoring AI agent performance. It aggregates data from test simulations, live calls, and alerts to give you a complete picture of how your agents are performing.

Why Analytics Matter

Without data, you’re flying blind. Analytics help you:
  • Catch problems early - See quality drops before customers complain
  • Validate improvements - Know if your changes actually work
  • Identify patterns - Understand which scenarios cause issues
  • Make decisions - Use data instead of guesswork
Example: Your dashboard shows Agent V1 scoring 15% lower on Friday afternoons. Investigation reveals a tool integration that’s slower during high-traffic periods.

Dashboard Overview

The analytics dashboard combines four key data sources:

Key Metrics

Agent Performance Scores

Track overall quality across all agents:
Navigate to Analytics to see:
  • Average scores by agent
  • Score trends over time
  • Performance by scenario type
  • Comparison across agent versions

Call Volume & Success Rate

Monitor how many calls your agents handle and how well they perform:
curl https://api.chanl.ai/v1/analytics/volume \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "timeRange": "7d",
    "interval": "day"
  }'
{
  "totalCalls": 3421,
  "successRate": 94.2,
  "avgDuration": 4.3,
  "byDay": [
    {
      "date": "2024-01-15",
      "calls": 512,
      "successRate": 95.1,
      "avgScore": 88.2
    },
    ...
  ]
}

Alert Frequency

Track how often alerts are triggered:
curl https://api.chanl.ai/v1/analytics/alerts \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "timeRange": "30d"
  }'
{
  "totalAlerts": 47,
  "byType": {
    "quality_drop": 23,
    "compliance_issue": 12,
    "timeout": 8,
    "error": 4
  },
  "trend": "decreasing"
}

Score Over Time

Visualize agent performance trends:
const chanl = require('@chanl/sdk');

// Get 30-day trend data
const trends = await chanl.analytics.trends({
  metric: 'score',
  agents: ['agent-v1'],
  timeRange: '30d',
  interval: 'day'
});

console.log(trends);
/*
{
  agent: "agent-v1",
  dataPoints: [
    { date: "2024-01-01", score: 85.2 },
    { date: "2024-01-02", score: 86.1 },
    { date: "2024-01-03", score: 87.3 },
    ...
  ],
  trend: "improving",
  changePercent: +4.2
}
*/

Persona-Specific Analysis

See how agents perform with different customer types:
curl https://api.chanl.ai/v1/analytics/by-persona \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "agent": "agent-v1",
    "timeRange": "30d"
  }'
Results show strengths and weaknesses:
{
  "agent": "agent-v1",
  "byPersona": [
    {
      "persona": "Analytical Customer",
      "avgScore": 92.1,
      "totalInteractions": 234,
      "status": "strength"
    },
    {
      "persona": "Frustrated Customer",
      "avgScore": 76.4,
      "totalInteractions": 189,
      "status": "needs_improvement"
    },
    {
      "persona": "Confused Customer",
      "avgScore": 88.3,
      "totalInteractions": 156,
      "status": "good"
    }
  ]
}

Comparative Analysis

Agent Comparison

Compare multiple agents side-by-side:
curl https://api.chanl.ai/v1/analytics/compare \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "agents": ["agent-v1", "agent-v2"],
    "timeRange": "30d",
    "metrics": ["score", "duration", "successRate"]
  }'
{
  "comparison": {
    "agent-v1": {
      "avgScore": 87.3,
      "avgDuration": 4.2,
      "successRate": 93.1
    },
    "agent-v2": {
      "avgScore": 91.5,
      "avgDuration": 3.8,
      "successRate": 95.7
    }
  },
  "winner": "agent-v2",
  "advantages": [
    "+4.2 points higher score",
    "10% faster resolution",
    "+2.6% higher success rate"
  ]
}

Before/After Analysis

Measure impact of changes:
const chanl = require('@chanl/sdk');

// Compare performance before and after a change
const impact = await chanl.analytics.compareTimeRanges({
  agent: 'agent-v1',
  before: {
    start: '2024-01-01',
    end: '2024-01-15'
  },
  after: {
    start: '2024-01-16',
    end: '2024-01-30'
  }
});

console.log(impact);
/*
{
  metric: "avgScore",
  before: 85.2,
  after: 89.7,
  change: +4.5,
  changePercent: +5.3,
  significant: true
}
*/

Scenario Performance

Success Rate by Scenario

Identify which scenarios are most challenging:
curl https://api.chanl.ai/v1/analytics/scenarios \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "timeRange": "30d",
    "sortBy": "successRate",
    "order": "asc"
  }'
{
  "scenarios": [
    {
      "name": "Complex Technical Issue",
      "successRate": 72.3,
      "avgScore": 76.1,
      "totalRuns": 134,
      "status": "needs_improvement"
    },
    {
      "name": "Price Objection",
      "successRate": 86.7,
      "avgScore": 84.2,
      "totalRuns": 298,
      "status": "good"
    },
    {
      "name": "Simple Refund",
      "successRate": 96.4,
      "avgScore": 93.8,
      "totalRuns": 456,
      "status": "excellent"
    }
  ]
}

Custom Reports

Creating Reports

Generate custom analytics reports:
const chanl = require('@chanl/sdk');

const report = await chanl.analytics.createReport({
  name: "Weekly Quality Report",
  timeRange: "7d",
  metrics: [
    "avgScore",
    "successRate",
    "totalCalls",
    "alertCount"
  ],
  groupBy: ["agent", "scenario"],
  filters: {
    minScore: 0,
    includeSimulations: true,
    includeLiveCalls: true
  }
});

// Schedule recurring report
await chanl.analytics.scheduleReport({
  reportId: report.id,
  frequency: "weekly",
  dayOfWeek: "monday",
  time: "09:00",
  recipients: ["team@company.com"]
});

Export Options

Export data for external analysis:
curl https://api.chanl.ai/v1/analytics/export \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "format": "csv",
    "timeRange": "30d",
    "metrics": ["score", "duration", "persona", "scenario"]
  }' \
  > analytics_export.csv

Real-Time Monitoring

Live Metrics

Monitor current performance in real-time:
const chanl = require('@chanl/sdk');

// Subscribe to real-time metrics
const stream = chanl.analytics.stream({
  agents: ['agent-v1'],
  metrics: ['currentCalls', 'avgScore', 'alerts']
});

stream.on('update', (data) => {
  console.log('Current calls:', data.currentCalls);
  console.log('Current avg score:', data.avgScore);
  console.log('Active alerts:', data.alerts.length);
});

stream.on('alert', (alert) => {
  console.log('🚨 New alert:', alert.message);
});

Best Practices

1

Review Daily

Check your dashboard every morning to catch issues early.
2

Set Baselines

Establish what “good” looks like for each metric so you can spot anomalies.
3

Track Trends, Not Points

Don’t panic over single data points. Look at trends over days or weeks.
4

Correlate Events

When you see changes in metrics, check what changed in your agent configuration.
5

Export Regularly

Keep historical exports for long-term analysis and reporting to stakeholders.

Troubleshooting

Problem: Analytics showing incomplete or no dataSolutions:
  • Verify agents are connected and active
  • Check if simulations or calls are actually running
  • Confirm date range filter includes relevant data
  • Try refreshing or clearing browser cache
Problem: Different dashboards showing different numbersSolutions:
  • Check time zone settings across dashboards
  • Verify filters are consistent
  • Ensure comparing same time ranges
  • Review what’s included (simulations vs live calls vs both)
Problem: Analytics taking too long to loadSolutions:
  • Reduce date range to last 30 days instead of all-time
  • Limit number of agents being analyzed
  • Use API with specific filters instead of UI
  • Contact support if performance issues persist

What’s Next?