KPI Dashboard Design

SkillMonitoring & ops

kpi-dashboard-design is a skill that guides an AI agent through designing KPI dashboards: selecting meaningful metrics, structuring executive and departmental views, and applying visualization best practices. It also covers real-time monitoring patterns and troubleshooting common dashboard problems like inconsistent MRR calculations, with example SQL and Python fixes.

Use KPI Dashboard Design in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add KPI Dashboard Design and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the KPI Dashboard Design skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Have an agent environment that supports loading skills.

KPI Dashboard DesignStart free

What your AI can do with it

  • Select 5-7 meaningful KPIs using a SMART framework
  • Structure dashboard hierarchies from executive summaries to drilldowns
  • Apply visualization best practices like consistent colors and responsive design
  • Design real-time monitoring displays with appropriate update frequencies
  • Troubleshoot inconsistent MRR calculations with example SQL fixes
  • Debug misleading uptime metrics and incorrect cohort queries

Getting started

  1. Have an agent environment that supports loading skills.
  2. Add the kpi-dashboard-design skill to the agent's available skills.
  3. Ask the agent to design or improve a dashboard, describing the metrics and audience involved.
  4. For deeper patterns, have the agent read the references/details.md file included with the skill.

What this skill tells your AI

The instructions your AI receives, as published by wshobson/agents in plugins/business-analytics/skills/kpi-dashboard-design/SKILL.md and read by ahel’s review.

Comprehensive patterns for designing effective Key Performance Indicator (KPI) dashboards that drive business decisions.

When to Use This Skill

  • Designing executive dashboards
  • Selecting meaningful KPIs
  • Building real-time monitoring displays
  • Creating department-specific metrics views
  • Improving existing dashboard layouts
  • Establishing metric governance

Core Concepts

1. KPI Framework

LevelFocusUpdate FrequencyAudience
StrategicLong-term goalsMonthly/QuarterlyExecutives
TacticalDepartment goalsWeekly/MonthlyManagers
OperationalDay-to-dayReal-time/DailyTeams

2. SMART KPIs

Specific: Clear definition
Measurable: Quantifiable
Achievable: Realistic targets
Relevant: Aligned to goals
Time-bound: Defined period

3. Dashboard Hierarchy

├── Executive Summary (1 page)
│   ├── 4-6 headline KPIs
│   ├── Trend indicators
│   └── Key alerts
├── Department Views
│   ├── Sales Dashboard
│   ├── Marketing Dashboard
│   ├── Operations Dashboard
│   └── Finance Dashboard
└── Detailed Drilldowns
    ├── Individual metrics
    └── Root cause analysis

Detailed worked examples and patterns

Detailed sections (starting with ## Common KPIs by Department) live in references/details.md. Read that file when the navigation summary above is insufficient.

Best Practices

Do's

  • Limit to 5-7 KPIs - Focus on what matters
  • Show context - Comparisons, trends, targets
  • Use consistent colors - Red=bad, green=good
  • Enable drilldown - From summary to detail
  • Update appropriately - Match metric frequency

Don'ts

  • Don't show vanity metrics - Focus on actionable data
  • Don't overcrowd - White space aids comprehension
  • Don't use 3D charts - They distort perception
  • Don't hide methodology - Document calculations
  • Don't ignore mobile - Ensure responsive design

Troubleshooting

MRR shown on dashboard contradicts finance's number

The most common cause is inconsistent treatment of annual plans. Finance may prorate to a daily rate while the dashboard normalizes to monthly. Align on a single formula and document it directly on the dashboard card:

-- Explicit formula shown in tooltip / data dictionary
-- Annual plans: divide total contract value by 12
-- Quarterly plans: divide by 3
-- Monthly plans: use as-is
CASE subscription_interval
    WHEN 'monthly'   THEN amount
    WHEN 'quarterly' THEN amount / 3.0
    WHEN 'yearly'    THEN amount / 12.0
END AS normalized_mrr

Dashboard shows green but product team reports users complaining

The dashboard likely tracks system uptime (a lagging indicator) but not user-facing quality metrics. Add customer-perceived metrics alongside infrastructure metrics:

Infrastructure (green)User-perceived (add these)
API uptime 99.9%P95 page load time
Error rate 0.1%Task completion rate
Queue depth normalSupport ticket volume

Retention cohort looks flat — no variation between cohorts

Check whether the cohort query is partitioning by signup month correctly. A common bug is using created_at::date instead of DATE_TRUNC('month', created_at), which groups by day and produces cohorts too small to show trends:

-- Wrong: too granular, cohorts are too small
DATE_TRUNC('day', created_at) AS cohort_date

-- Correct: monthly cohorts
DATE_TRUNC('month', created_at) AS cohort_month

Real-time dashboard hammers the database

A live dashboard refreshing every 10 seconds with complex cohort SQL will degrade production query performance. Separate OLAP workloads from OLTP by writing pre-aggregated metrics to a summary table via a scheduled job, and have the dashboard read from that:

# Scheduled every 5 minutes via cron/Celery
def refresh_mrr_summary():
    conn.execute("""
        INSERT INTO kpi_snapshot (metric, value, snapshot_at)
        SELECT 'mrr', SUM(...), NOW()
        FROM subscriptions WHERE status = 'active'
        ON CONFLICT (metric) DO UPDATE SET value = EXCLUDED.value
    """)

Alert thresholds fire constantly, team ignores them

Static thresholds set once and never reviewed cause alert fatigue. Use dynamic thresholds based on rolling averages so alerts fire only when the metric deviates significantly from its own baseline:

# Alert if current value is > 2 standard deviations from 30-day rolling mean
def is_anomalous(current: float, history: list[float]) -> bool:
    mean = statistics.mean(history)
    stdev = statistics.stdev(history)
    return abs(current - mean) > 2 * stdev

Related Skills

  • data-storytelling - Turn dashboard findings into narratives that drive executive decisions

Signals

GitHub stars
40k
Forks
4k
Last commit
Sep 2026

Others that do the same job

Questions

When should this skill be used?
When building executive SaaS metrics dashboards tracking MRR, churn, and LTV/CAC ratios; designing operations centers with live service health; creating cohort retention views; or debugging dashboards where metrics contradict each other.
How many KPIs should a dashboard show?
The skill recommends limiting to 5-7 KPIs, focusing on actionable data rather than vanity metrics, and showing context such as comparisons, trends, and targets.
Advanced
Item type
skill
Key
kpi-dashboard-design-wshobson
Source
github.com/wshobson/agents