| name | dashboard-qa |
| description | Audits BI dashboards for accuracy, consistency, and UX. Validates metric calculations, color consistency, drill-down logic, and data freshness. Returns QA report with issues and fixes. |
| allowed-tools | Read, Write, WebFetch |
| effort | medium |
When to activate
Before publishing a dashboard to stakeholders, after deploying new metrics, or when troubleshooting discrepancies between dashboard and source data. Use to catch calculation errors, missing filters, and user experience issues before handoff.
When NOT to use
Not for initial dashboard design — use after the dashboard is built. Not for data quality audits on underlying tables — use sql-optimizer or data validation tools. Not without access to both the dashboard and underlying queries.
Dashboard QA Checklist
- Metric accuracy — Verify each dashboard metric against source query; compare with expected values
- Granularity match — Check that filters (date, segment, geography) match the intended audience
- Freshness — Confirm data refresh schedule; flag stale data (>24h old)
- Color consistency — Ensure colors match brand guidelines; verify meaning (red=bad, green=good)
- Drill-down logic — Test that clicking drills down to next granularity without data jumps
- Null handling — Check that NULLs are displayed clearly (not confused with zeros)
- Mobile responsiveness — Verify dashboard works on mobile if intended
- Documentation — Ensure filters, metrics, and drill-targets are labeled clearly
- Access control — Confirm only intended users can view sensitive data
- Performance — Check load time; flag slow queries that need optimization
QA Report Template
# Dashboard QA Report
**Dashboard Name:** [Name]
**URL / Tool:** [Looker / Tableau / Superset / etc.]
**Owner:** [Name]
**QA Date:** [date]
**Status:** [PASS / PASS WITH WARNINGS / FAIL]
---
## Executive Summary
[1-2 sentences: overall assessment, critical issues if any]
---
## Metric Accuracy Audit
| Metric | Dashboard Value | Source Query Value | Match | Issue |
|--------|-----------------|-------------------|-------|-------|
| Total Revenue (MTD) | $2.4M | $2.4M | ✓ | None |
| New Customers | 1,200 | 1,245 | ✗ | Filter mismatch (trial users) |
| Churn Rate | 3.2% | 3.2% | ✓ | None |
**Issues Found:** [X] — see Issues section below
---
## Data Freshness
| Data Source | Last Refresh | Expected Refresh | Status |
|-------------|--------------|------------------|--------|
| fact_orders | 6 AM UTC (today) | Daily 6 AM | ✓ On time |
| dim_customers | 6 AM UTC (today) | Daily 6 AM | ✓ On time |
| fact_subscriptions | 9 PM UTC (yesterday) | Daily 9 PM | ✗ Overdue by 6h |
---
## UX & Design Audit
| Item | Expected | Actual | Status | Fix |
|------|----------|--------|--------|-----|
| Color scheme (SOP) | Blue/teal | Orange/red | ✗ | Update colors in tool |
| Filter labels | Clear + placeholder | Cryptic codes | ✗ | Rename filters |
| Drill-down path | Chart → Detail table | No drill available | ✗ | Enable drill-through |
| Mobile responsive | Works on mobile | Cut off on mobile | ✗ | Adjust layout |
---
## Issues Found
### Critical
1. **New Customers metric mismatch** (Severity: High)
- **Issue:** Dashboard shows 1,200; source query shows 1,245
- **Root Cause:** Dashboard filter excludes trial users; source includes them
- **Impact:** Discrepancy reported to leadership; credibility damage
- **Fix:** Add "exclude trials" filter to dashboard; document in notes
- **ETA:** 1 day
### High
2. **Subscription data 6 hours stale** (Severity: High)
- **Issue:** fact_subscriptions last refreshed at 9 PM yesterday; now 3 AM next day
- **Root Cause:** dbt job failed silently; no alert triggered
- **Impact:** Subscription metrics are 9 hours out of date
Investigate dbt Cloud job; re-run manually; add Slack alert
2 hours
(Severity: Medium)
Dashboard uses orange/red; brand guideline is blue/teal
Original designer used default palette; no brand review
Dashboard doesn't match other company dashboards
Update color scheme in [Tool]; document in brand style guide
1 day
(Severity: Low)
Dashboard not responsive; unusable on phones
Hard-coded widths; no responsive design applied
Mobile users see partial charts
Enable responsive layout in [Tool] settings
0.5 days
---
Filter: May 2026
Expected: $2.4M
Actual: $2.4M
Status: ✓ PASS
Filter: Premium customers only
Expected: $1.8M (75% of total)
Actual: $1.8M
Status: ✓ PASS
Click on Total Revenue bar
Expected: Breaks down to daily granularity
Actual: No drill-through available
Status: ✗ FAIL
---
[ ] Primary metric color: bright, distinct from background
[ ] Negative values: red or clear indicator
[ ] Positive values: green or neutral
[ ] Neutral/context: gray
[ ] Legend: clear, labels match data
[ ] Font sizes: readable at dashboard zoom level
[ ] Borders: minimal, not cluttered
[ ] Whitespace: adequate, not cramped
[ X ] 4 items need fixes
---
[Link to metrics registry]
[Link to data model]
[Daily 6 AM UTC]
[Name, email]
[Teams viewing this dashboard]
---
[Your name]
[Dashboard owner or manager]
[date]
[ ] Ready for production [ ] Needs fixes before production
---
Example
See QA Report Template above — adapt with actual dashboard names and metrics.