Dashboard Tab — Feature Guide

What it's for
The Dashboard is the project's single-screen health view. It collapses the full state of the project — schedule, scope, team capacity, data quality, delivery confidence — into four big stat cards across the top, a Project Statistics scorecard, a Velocity History sparkline, an AI Insights section, and a Top Open Risks list. Every number on the Dashboard is computed by the same shared utilities the Sprints, Scope, Risks, and Plan-Risk tabs use, so a verdict here will match the verdict on any other tab.
The audience is the project lead, delivery manager, or stakeholder who needs the answer to one question — Are we on track to hit the deadline? — and a quick path into whichever tab can answer the follow-up. Banner pills at the top of the tab link directly into Auto-Level (when capacity overload is detected), into Alerts (when dependency conflicts are detected), and into the Project AI assistant (for narrative analysis).
Header / Toolbar

Include backlog checkbox
A single checkbox sits at the top-left of the panel. Unchecked, the Dashboard counts only issues that are in a sprint plus all done issues. Checked, it adds in everything that matches the project's JQL filter, including unscheduled backlog work. Every downstream number recomputes when this toggles — stat cards, diagnostics rows, AI insights, forecast date. The setting is per-session and resets on reload.
Weekly Digest button
Opens a modal that previews an email-ready summary of the current Dashboard state — stat cards, top alerts, recent throughput, scope growth, risks. From the modal the user can copy the HTML, download a PDF, or close. The preview is a snapshot at the moment the button was clicked; it does not auto-update if the underlying data changes while the modal is open.
Export Dashboard button
Generates a single-file PDF report of the Dashboard with interactive controls stripped out. The PDF includes the four stat cards, the Project Statistics table, Velocity History, and Top Open Risks. The export honours the current Include-backlog state and the current values of the per-card settings. The file is named dashboard-report-YYYY-MM-DD.pdf.
Capacity Overload banner
Appears when one or more team members are projected over 100% utilisation across one or more open sprints. Reads "N team members overloaded across M sprints — Auto-Level to rebalance" with a yellow ⚠ icon. Clicking the banner navigates to the Sprints tab and opens the Auto-Level preview.
Dependency Conflict banner
Appears when the Alerts engine has detected one or more dependency conflicts (blocker due after blocked, blocker after dependent start, circular dependency). Reads "N dependency conflicts — review in Alerts tab" with a 🔗 icon. Clicking the banner navigates to the Alerts tab.
External Deadline banner
Appears when one or more issues have an external (locked) due date and are scheduled in a sprint that ends after that date. Reads "N externally-constrained issues at risk of missing their deadline" with a 📅 icon. The banner is informational and does not link out.
Notification bell, info icon, settings cog
Three icons sit at the top-right. The bell opens the Notifications slide-out (the operational feed described in ALGORITHMS — Notification Engine). The "i" icon opens the Project AI floating chat. The cog opens the global Settings panel.
Stat cards

Four cards across the top. Each has a primary value, two secondary lines, and a per-card gear that toggles a settings panel beneath the card. When any card's gear is open the four-column layout reflows so the open card gets extra width.
On Pace? card
Shows whether earned work to date is ahead of, on pace with, or behind the planned amount of work for today. The headline reads Ahead of pace, On pace, or Behind pace depending on the result.
- Primary label: Ahead (green), On pace (green), or Behind (red).
- Line 1: Completed: X pts — sum of estimates on done issues.
- Line 2: Planned by now: Y pts — sum of estimates on issues whose due date is on or before today.
- Footnote: signed delta (e.g., +30 pts ahead of plan).
- Bands: |delta| ≤ 5% of planned → On pace; > 5% → Ahead or Behind.
- Settings: a checkbox — Include All Done, not only planned. When unchecked, only Done issues whose due date is on or before today are counted in Completed; when checked, every Done issue counts. Plus a Pace measure radio: Auto (timeline if no due dates set, schedule otherwise), Timeline-based (project timeline elapsed × total scope), or Schedule-based (sum of estimates on issues due by today).
- The earned-value SPI value is computed by the underlying engine but is not currently rendered as a separate metric on this card; the Ahead / On pace / Behind verdict and the signed delta are the user-facing surface of the same comparison.
Delivery Forecast card
Shows the projected end date for all remaining work against the target date.
- Primary value: a date (e.g., Jul 13, 2026) or Never if scope growth makes the project infeasible.
- Sprint label below the date: the name of the sprint the date lands in (e.g., Sprint 8), or Beyond Sprint N (+Nw) when the date sits past the last planned sprint. The (+Nw) tail is the gap between the projected date and the last planned sprint's end, rounded to whole weeks, so a date one week beyond the last sprint reads Beyond Sprint 10 (+1w) and a date four weeks beyond reads Beyond Sprint 10 (+4w). The gap clarifies whether the projection misses by a sprint or a quarter.
- Line 1: Remaining: X pts — sum of estimates on non-done issues.
- Line 2: Capacity to target: Y pts — total capacity between today and the target date, summed from the team configuration.
- Footnote: On target (green), Not on target · N days late (orange or red).
- Settings: Forecast method dropdown — Sprint plan, Team velocity, Team capacity, Effective capacity. Each method is documented in ALGORITHMS.md (Delivery Forecast). When Team velocity is selected, a second input lets the user set how many recent sprints to average. Scope growth controls live in the same panel: a checkbox enables growth in the forecast, with a dropdown to pick Detected (use historical rate) or Manual (custom rate); when Manual is selected a numeric input appears.
Target Date card
Shows the deadline the rest of the Dashboard is measuring against. Always blue (no status colour).
- Primary value: the resolved target date.
- Below the date: the matching sprint name when the target lands inside a planned sprint, or Beyond Sprint N (+Nw) when the target is past the last planned sprint. The (+Nw) tail is the same gap-aware suffix used on the Delivery Forecast card — weeks past the last planned sprint's end.
- Settings: two radio buttons — Latest issue due date (the default; picks the latest due date across non-done issues) or Fixed date (a date picker for explicit override).
Progress card
Shows the overall percentage complete. Always purple.
- Primary value: a percentage (57%).
- Line 1: X pts done.
- Line 2: Y pts remaining.
- No settings panel and no gear icon.
- Calculation: sum of estimates on done ÷ sum of estimates on all (done + non-done). When no estimates exist the formula falls back to done count ÷ total count.
Project Statistics


A collapsible scorecard. Each row is a factor with a one-line explanation, and an expand caret that opens a detail block listing the specific issues, sprints, or members that produced the verdict.
The visible Project Statistics rows are the Health factors plus the Quality / data factors. The Schedule factors (On Track, Sprint plan based, Team velocity based, Schedule Performance, Completion %, Work Ratio, Can We Deliver?) are computed by the same engine but folded into the Stat Cards above (On Pace?, Delivery Forecast, Target Date, Progress) — the code lists them in REDUNDANT_FACTOR_IDS and filters them out of the visible scorecard so the cards and the table never disagree.
Health block (group: health, visible in Project Statistics)
- Scope — has scope grown since project start, and how fast?
- Team Capacity — the project-wide load ratio (e.g., Team is 132% loaded).
- Team Balance — variance in load between team members.
- Commitment vs Delivery — completion rate across recent sprints, with trend (improving / stable / declining).
- Estimate Accuracy — actual time vs. original estimate on done work.
Quality / data block (visible in Project Statistics)
- Dependency Conflicts — count of blocker-after-blocked, child-after-parent, cross-sprint, and circular dependencies. Click to jump to the Alerts tab.
- Alerts — count of error- and warning-severity items emitted by the alerts engine.
Schedule block (computed but folded into stat cards)
- On Track — parent verdict that drives the On Pace? card.
- Sprint plan based (sprint mode only) — does the planned sprint plan reach the target date?
- Team velocity based — does the rolling-velocity forecast reach the target date?
- Schedule Performance — earned-value SPI to date.
- Completion % — done estimate ÷ total estimate (drives the Progress card).
- Work Ratio — work hours done vs. estimated.
- Can We Deliver? — terminal yes/no derived from forecast vs. target (drives the Delivery Forecast footnote).
Status classification
The table itself has no status column or colour dot — each row shows only the factor name and its plain-English explanation. The underlying classification still exists: bands come from HEALTH_THRESHOLDS in colors.js (excellent: 85, healthy: 70, atRisk: 55, concerning: 40) and from the per-factor thresholds in dashboardFactors.js (OK / Caution / At Risk / Unknown). That classification no longer renders as a dot here, but it still shapes the wording of each explanation and drives the severity-aware tone of the AI Insights section.
Detail rows
Clicking a factor's row toggles its expand area. The detail can be a list of issues (linked to Jira), a list of sprints, a list of members, or a short explanation of the threshold that fired. Detail HTML is sanitised — only <strong>, <br>, <li>, <ul>, <ol> are allowed.
Per-row tooltips
Each factor name has a hover tooltip with the metric definition and threshold table.
AI Insights
A collapsible section that runs the same AI provider used elsewhere in the app and produces a narrative analysis of the visible factors plus a chat box for follow-ups.
Auto-fire on fingerprint change
The section computes a fingerprint string built from each visible factor's id + status + explanation, then keeps the last-seen fingerprint in sessionStorage. When the fingerprint changes — a factor turns red, an explanation updates, a factor is added or removed — the section re-fires an AI call automatically. No button click is required.
Severity-aware tone
The prompt includes a tone-guide line that switches based on the count of red factors:
- 0 red → balanced, factual.
- 1–2 red → direct but measured; identify the specific constraint.
- 3+ red → direct and specific; do not catastrophize.
Two grouped output sections
The model returns bulleted text. The app classifies each bullet by keywords (scope / capacity / delivery / estimation / etc.) and groups them under Project Status and Team & Plan Health. A separate Recommendations list sits below.
Expandable bullets
Clicking any bullet either reveals inline detail (when the model already provided a DETAIL: line) or fires a follow-up AI call asking "Give more detail on this specific point". The expanded text appears beneath the bullet.
Follow-up chat
Below the bulletted output, a textarea + Ask button accepts free-form questions. The user's text is concatenated with the factor block and the previous AI analysis, then sent in chat mode. If the model's response is JSON containing a simulatorAdjustments object, the app appends an Open the What-If tab to explore this scenario interactively link with the suggested slider values.
No-key state
If neither aiApiKey nor anthropicApiKey is configured, the section displays Configure an AI API key in Settings to enable AI Insights. The auto-fire is skipped, the chat box is disabled.
Velocity History sparkline
Visible in sprint mode with at least two closed sprints and demo/regression mode off. Hidden in Program-All mode.
- One bar per recent closed sprint (default 8).
- Last sprint's bar is darker; earlier sprints lighter.
- Dashed horizontal overlay shows the rolling average velocity.
- Trend label: ▲ Improving, ▬ Stable, ▼ Declining, based on whether the last sprint is more than ±10% off the average.
- Right-side readout: total committed in the active sprint, coloured green ≤ 105% of average, amber 105–115%, red > 115%.
- Hovering a bar shows a tooltip with the sprint name and points completed.
Top Open Risks widget

Lists the highest-severity open risks across the project regardless of source — manual risks, accepted AI suggestions, and any deterministic-detector output that has been promoted into the register. Each card shows the severity score, scope chip (e.g., PROJECT · DEMO), the response strategy chip (UNDECIDED / AVOID / MITIGATE / TRANSFER / ACCEPT / ESCALATE / DEFER), the risk title, the owner, and an action progress line (N/M actions done). Clicking a card navigates to the Risks tab pre-scrolled to the matching item.
Above the cards the header shows the open / critical-and-high counts and a strategy mix bar (e.g., "4 mitigate · 2 accept · 1 escalate · 3 undecided"). Zero-count buckets are hidden. The widget sort puts Undecided and Escalate risks above Accept at the same severity score so attention-demanding items surface first; Defer risks are excluded from the widget until their review window opens (review-by minus 3 days).
The risk register, response strategies, and detector definitions are documented in the Risks Tab guide and in ALGORITHMS section 13 — Sprint Risks.
Cross-cutting modes and settings
- Demo Mode — replaces real Jira data with built-in synthetic sprints and disables AI auto-fire.
- Regression Mode — used by the test harness; disables AI auto-fire and any non-deterministic widget so e2e specs read predictable values.
- Estimation Mode (points / hours / days) — every numeric label switches between pts, h, and d, and every formula reads the right field. Velocity is points-per-sprint in points mode; hours-per-sprint in time mode.
- Sprint Mode on/off — when off (backlog-only projects), the velocity sparkline is hidden, the Sprint-plan-based diagnostic row is hidden, and the Delivery Forecast settings dropdown loses Sprint plan and Effective capacity.
- Program All mode — when viewing every project at once, Velocity sparkline is hidden because sprint cadences differ across projects; the forecast date is the latest across the per-project forecasts.
How the numbers are computed
Every Dashboard number is produced by a shared utility:
- Stat cards 1–4 — see ALGORITHMS sections 1 (Delivery Forecast), Earned Value / Progress in the Appendix (SPI, CPI, Percent Complete).
- Project Statistics — see ALGORITHMS section 10 (Dashboard Project Statistics) and the per-factor thresholds in
problemThresholds.js. - Team Health Pulse — section 11.
- Top Open Risks — section 13.
- Velocity sparkline — section 4 (Velocity Rate Calculation) plus the rolling-average overlay rule in the Appendix.
Refer to ALGORITHMS.md for thresholds, formulas, and bands.
Effects on other parts of the app
- The capacity-overload banner links into the Sprints tab's Auto-Level preview.
- The dependency-conflict banner links into the Alerts tab.
- Project Statistics expand-rows for Dependency Conflicts and Alerts link into the Alerts tab.
- AI Insights chat may suggest simulatorAdjustments; clicking the suggestion opens What-If with those values pre-applied.
- Forecast settings (Forecast method, Scope growth) are persisted into the project config; they propagate to the Scope tab and to Plan-Risk forecasts.
- Top Open Risks links into the Risks tab.
- The Export Dashboard PDF is the canonical static snapshot used by the Weekly Digest email body.