Dashboards that support a decision
Connect each metric to a decision, with clear definitions, dates, and missing-data behavior.
Jan Arvin Mito · Version 1.0.0 · Updated
Decisions to make
- User task
purpose - Name the person, the task they need to finish, and the observable outcome. Keep one primary task.
- Primary action
primaryAction - Specify the action label, when it is available, what it changes, and how success is confirmed.
- Loading
loading - Describe what stays visible during a request, how progress is communicated, and how repeated actions are prevented.
- Empty state
empty - Distinguish a first visit, no results, and unavailable data where relevant. Give a useful next step.
- Error and recovery
error - State where errors appear, which input is preserved, and how someone retries or recovers without repeating completed work.
- Keyboard and focus
keyboard - Define native controls, tab order, focus visibility, focus after updates, and any Escape or arrow-key behavior.
- Labels and feedback
accessibility - Name controls and errors clearly, describe screen-reader announcements, and keep meaning available without relying only on color.
- Narrow and wide layouts
responsive - Describe how content reflows at 320px, what remains visible, and the maximum reading width on wide screens. Do not shrink text to make it fit.
- Completion
success - Specify the visible result, whether focus moves, and how the user continues or undoes the action when supported.
- Decisions and next actions
decisions - State the decisions this screen supports and the action someone can take from each relevant result. Remove metrics with no purpose.
- Metric definitions
metrics - Define each metric, source, unit, time range, comparison, and freshness. Separate zero from missing or unavailable data.
- Filters and supporting detail
drilldown - Specify filter scope, reset behavior, accessible chart alternatives, and how a person reaches supporting records without losing context.
Check the result
- Show unavailable data: label it as unavailable instead of presenting a misleading zero.
- Change a date range: make the scope and comparison period clear wherever results change.
- Read a chart without color or a pointer: the important values and comparisons remain available in text or a table.
- Open supporting records and return: preserve the user's filter context where promised.
These are starting requirements, not a certification or a substitute for testing with people. Record a reason when a behavior does not apply.
Use with an agent
Connect Amito to your AI assistant, fetch spec:dashboard, and describe the behavior for each decision above. Ask the agent to run validate_design_spec to find missing decisions and placeholders.
Specification starter
{
"pattern": "dashboard",
"decisions": {
"purpose": "",
"primaryAction": "",
"loading": "",
"empty": "",
"error": "",
"keyboard": "",
"accessibility": "",
"responsive": "",
"success": "",
"decisions": "",
"metrics": "",
"drilldown": ""
}
}