Commit at $55.9M vs $60M quota · best case $69.8M · need $4.1M to close gap.
▲ COVERAGE 3.1x
● COMMIT GAP
↗ WIN RATE +1.6pts
ACTION INBOX
WHAT CHANGED SINCE LAST FORECAST
SNAPSHOT DIFF
Click a deal row to jump to TOP OPEN DEALS
YoY SAME-QUARTER COMPARE
Q2 FY26 vs Q2 FY25
Same week-of-quarter comparison · reconciles with KPI DESK
| KPI | THIS Q | SAME Q LAST YR | YoY Δ |
|---|
KPI DESK
SNAPSHOT · 6 METRICS
BENCHMARKS
PAVILION SaaS · MID-MKT $50-100M ARR · N=312 · 2024-Q4
PIPELINE FUNNEL
$M · STAGE → STAGE CONVERSION · MED DAYS
FORECAST vs QUOTA
CUMULATIVE · WEEKLY
Selected series
Quota line
Pace line
Confidence band
Projected W9-W13
SCENARIO MODELER · WHAT-IF
PULL A LEVER · WATCH THE NUMBERS MOVE
TOP OPEN DEALS
| ACCOUNT | STAGE | AMOUNT | PROB | HEALTH | MOMENTUM | QUAL | REACH | CLOSE | NEXT STEP | OWNER | REGION | SEG | MOT | FCST |
|---|
SLIPPAGE THIS QUARTER
DEALS PUSHED OUT OF PERIOD
Click a row to jump to that account in TOP OPEN DEALS
| ACCOUNT | OWNER | RGN | AMOUNT | FROM → TO | REASON |
|---|
PIPELINE CREATED
$M / WEEK · NEW IN vs OUT vs TARGET
Trailing 8 weeks
NEW IN
OUT (won + lost + DQ)
Weekly target
Below-target week
SOURCE MIX% of trailing-8w NEW IN
NEXT-QUARTER COVERAGE
Q2 · Q3 · Q4 · COVERAGE vs 3.0x TARGET
Open pipe by close-date quarter
Unweighted pipe
3.0x coverage target
Weighted (probability-adjusted)
PIPELINE EROSION FORECAST
SURVIVAL MODEL · STAGE × AGE × COHORT — CFO/CRO PREDICTIVE VIEW
Click a stage row or FLUSH CANDIDATES to jump to TOP OPEN DEALS
AT-RISK REPS
COACHING LIST · AUTO-DERIVED
TEAM ATTAIN · MANAGER ROLLUP
3 RVPs · 6 REPS · CLICK A MGR ROW TO FILTER LEADERBOARD
REP LEADERBOARD
QUOTA ATTAINMENT · Q2
| REP | MGR | RGN | QUOTA | ATTAIN | PIPE | WON | ACTIVITY | FCST ACC | BIAS |
|---|
PIPELINE BY SEGMENT
$M · % SHARE
PIPELINE BY REGION
| REGION | PIPE | DEALS | GROWTH | STATUS |
|---|
WIN / LOSS REASONS
TTM · TOP REASONS · LOSS-BY-STAGE · COMPETITORS
WIN REASONS
LOSS REASONS
LOSS BY STAGE ·
COMPETITIVE SPLIT (among Lost-to-Competitor)
DEAL RISK & ANOMALY
AI INSIGHTS
SYNTHESIZED · ROTATING
| WHEN | TYPE | TITLE | WHO | STATUS |
|---|---|---|---|---|
| LOADING… | ||||
RELEASE NOTES
UPDATED BY THE BUILDER AGENT
- v0.30 FUNCTION PAGES — Bloomberg-style F1-F7 page nav splits the 22-panel single-scroll into 7 task-scoped pages (closes #37) — after shipping 27 panels the dashboard's single-scroll surface had crossed an ergonomic cliff: every operator persona's first action was "scroll past 80% of the page to find the 3 panels I actually use today". Bloomberg-terminal and every mature trading-floor UI (Eikon, FactSet, S&P CapIQ) solves this with F-key paginated workspaces — function keys partition the surface by task, not by feature. The dashboard already had a decorative
.fkeysnav row (F1 DASH / F2 KPIS / F3 FUNNEL...) that scrolled-to-section; we reclaim that exact row as real page navigation. New PAGES registry maps every panel into 7 task-scoped pages: F1 OVERVIEW (hero, KPI DESK, ACTION INBOX, WHAT CHANGED, YoY, AI INSIGHTS — the morning landing page), F2 PIPELINE (funnel + aging, PIPELINE CREATED, segments/regions, NEXT-Q COVERAGE — pipe-gen / health view), F3 FORECAST (FORECAST vs QUOTA, SCENARIO MODELER, NEXT-Q COVERAGE, EROSION FORECAST — CFO/BoD prep view), F4 DEALS (TOP OPEN DEALS w/ expanders, SLIPPAGE, WIN/LOSS, DEAL RISK — AE/Mgr Monday pipe-review view), F5 TEAM (TEAM ATTAIN ROLLUP, REP LEADERBOARD, AT-RISK REPS, AUDIENCE FEEDBACK — Sales-Mgr coaching view), F6 INTEL (BENCHMARKS, WIN/LOSS, RISKS, AI INSIGHTS — competitive intelligence view), F7 HISTORY (RELEASE NOTES — and the future home of #38 changelog drawer, #25 TIME MACHINE). Some panels appear on multiple pages (e.g. WIN/LOSS on DEALS + INTEL; NEXT-Q COVERAGE on PIPELINE + FORECAST) since they answer different questions in different contexts. Implementation: each<section>tagged at init with class listpg-overview pg-pipeline ...+data-pagesattribute. CSS rulesmain[data-page="overview"] section[data-pages]:not(.pg-overview) { display: none !important }(one rule per page). Click a pill OR press F1-F7 (also raw 1-7 when not in input) → switches page instantly. State persisted in localStoragesalespulse.activePage+ URL hash#page=pipeline(deep-linkable / shareable). Active pill highlighted invar(--green). Status-bar gains PG: OVERVIEW segment showing current page. ARIArole="tab"/aria-selectedon each pill + offscreenaria-liveregion announces page changes for screen readers. LENS coexistence (#24): LENS rules use ID selectors → win on CSS specificity → element hidden by lens stays hidden across page switches;lens=cro + page=pipelineshows the intersection. Cross-page jump preserved: ACTION INBOX [JUMP →], EROSION stage-row clicks, etc. now first switch to the target panel's page if needed, then scroll + pulse. First-run discoverability: dismissible ★ NEW: FUNCTION PAGES — press F1-F7 or click a pill above to switch pages callout under the nav (one-time; setssalespulse.pagesIntroSeen=1). Mobile (≤480px): pill row becomes horizontal scroll strip with snap. New GO F1-F7 / GO PAGE OVERVIEW / GO PIPELINE commands. Page switch scrolls to top (matches Bloomberg behavior). Together with #24 LENS (persona scoping) and #23 ACTION INBOX (cross-cutting triage), PAGES completes the three-axis information architecture: LENS = who you are, PAGE = what you're doing right now, INBOX = what needs your attention now. Cache bump 0.29.0 → 0.30.0 · closes #37 - v0.29 PIPELINE EROSION FORECAST — predictive survival model on $200M+ open pipe (closes #35) — after 26 shipped panels the dashboard was excellent at current state + historical trend but had zero predictive modeling of pipeline survival. CFO/Board question — "of our $204M open pipe, what's realistic Q2-Q4 close expectation?" — was un-answerable; coverage ratio (#16) gave a multiplier hint, not a $-expected value. New PIPELINE EROSION FORECAST panel below NEXT-Q COVERAGE ships a deterministic survival model:
predictedSurvival = STAGE_BASE × ageDecay × cohortFit. STAGE_BASE calibrated from historical TTM win-rate by stage (Lead 5% / Discovery 28% / Proposal 55% / Negotiation 74% / Contract 88%). ageDecay halves per stage-median past the median day (Gong 2024: win-rate halves per ~doubling of stage age past stage-median). cohortFit by source (AE-Sourced 1.25 / Inbound 1.05 / Outbound 0.75). Top panel renders TOTAL OPEN PIPE $204M → PREDICTED SURVIVAL 46.2% (Pavilion P58 above median ●) → EXPECTED CLOSURE $94M across next 4 quarters. EXPECTED CLOSURE BY QUARTER table shows Q2 (this Q) = $55.9M (matches COMMIT — sanity check ✓), Q3 / Q4 / Q1+1 with ASCII fill bars. SURVIVAL BY STAGE table shows where the pipe leaks most: Lead 95% leakage ⛔, Discovery 88% ⚠, Demo 76% ⚠, Negotiation 32% ●, Contract 15% ★. Click a stage row → scrolls to TOP OPEN DEALS + pulses. New FLUSH CANDIDATES surface lists deals with predicted survival < 15% (17 deals · $23M open · $1.8M predicted) with "disposition: close-lost / re-engage / push to next quarter" recommendation; click to filter TOP OPEN DEALS. SHOW METHODOLOGY ▾ toggle expands a CFO-auditable panel exposing the full formula, factor tables, sources (Gong 2024 + Pavilion 2024), and limitations disclosure. NewpipelineSurvivalbenchmark inD.benchmarks.kpis(P25 0.32 / P50 0.41 / P75 0.52 / ours 0.462). AI INSIGHTS prepends rotating bullet: "Pipeline erosion forecast: $204M open pipe → $94M predicted closure (46% survival, P58 above Pavilion median). Top leakage: Discovery stage 88%. 17 deals ($23M) are flush candidates — disposition them this week." Reconciliation guard fires ⚠ MISMATCH if model Q2 closure drifts from live COMMIT by > $0.5M — re-calibrate survival probabilities. Visible in CRO/CFO/Board LENS (predictive scope; hidden for AE/Sales-Mgr/CMO). New GO EROSION / GO SURVIVAL / GO FLUSH commands. ALL_PANEL_IDS now 22. Cache bump 0.28.0 → 0.29.0 · closes #35 - v0.28 TEAM ATTAIN · MANAGER ROLLUP — closes the Sales Manager persona gap (closes #36) — every shipped feature so far scaffolded either rep-level (#19 leaderboard, #21 at-risk) or deal-level (#14/20/27/32/33) or org-level (KPIs, forecast) — the middle layer (3 RVPs each owning 2-4 reps) had no aggregated surface. "Which manager is strongest? Which team needs MOR cadence this week?" was un-answerable from one screen. New TEAM ATTAIN · MANAGER ROLLUP panel above REP LEADERBOARD ships 3 managers × 2 reps with computed-at-render metrics: C. Park (RVP Enterprise West · Rivera + Patel) · M. Liu (RVP Enterprise East · Okafor + Sokolova) · D. Tan (RVP Mid-Market · Chen + Yamada). Columns: MGR (TEAM) · QUOTA · ATTAIN · % · PIPE · BIAS · ACC · AT-RISK · HEALTH 0-100. Health formula (mirrors #33 banding):
0.35·attain + 0.20·(1−|bias|/0.20) + 0.20·(1−accErr/0.15) + 0.15·atRiskFactor + 0.10→ STRONG ≥80 ★ · OK ≥60 ● · AT-RISK ≥40 ⚠ · CRITICAL <40 ⛔. Story: Park's West team strongest (~95% attain, 0 at-risk), Tan's MM mid (~67%, 1 at-risk), Liu's East weakest (~53%, 2 at-risk). Click a manager row → filters REP LEADERBOARD to that manager's direct reports + scrolls + pulses + sets localStoragesalespulse.managerFilter; click chip ✕ to clear. New MGR column added to REP LEADERBOARD between REP and RGN — every rep now shows their manager. AI INSIGHTS prepends rotating bullet: "Manager rollup: Park's team strongest at 95% attain (health 91). Liu's team at 53% (-42pp gap) — 2 of 2 reps at-risk. Recommended: 1:1 with Liu this week on coaching plan." Reconciliation guard fires ⚠ MISMATCH if Σ(manager.quotaSum) drifts from total D.reps quota by > $0.1M. New GO TEAM / GO MGR commands. Visible in CRO/Sales-Mgr LENS (added to both); hidden for AE/CFO/CMO/Board. ALL_PANEL_IDS now 21. Cache bump 0.27.0 → 0.28.0 · closes #36 - v0.27 DEAL HEALTH SCORE — composite 0-100 on every TOP OPEN DEALS row + PORTFOLIO HEALTH tile + <40 ONLY triage filter (closes #33) — over the last 14 rounds we shipped 6 per-deal dimensions (MEDDIC, STAKEHOLDER REACH, ENGAGEMENT MOMENTUM, NEXT-STEP, EXEC SPONSOR, STAGE) and the row got denser, but the AE/Mgr's actual triage question — "which 3 deals do I work today?" — still required reading 6 columns and doing mental math. Every mature pipeline app (Clari "Deal Score" · Gong "Engagement Score" · BoostUp "Health" · SF Einstein) rolls the dimensions up into a single 0-100 the operator scans first. New HEALTH column between PROB and MOMENTUM renders ⛔ 26 / ⚠ 47 / ● 68 / ★ 84 with band-toned color. Composite formula: SCORE = MEDDIC(0.25) + REACH(0.20) + MOMENTUM(0.20) + NEXT-STEP(0.15) + ENGAGEMENT(0.10) + EXEC-SPONSOR(0.10) — weights derived from CRO-Pavilion deal-conversion research (MEDDIC + REACH dominate signal; soft factors trim). Banding: STRONG ≥80 ★, OK ≥60 ●, AT-RISK ≥40 ⚠, CRITICAL <40 ⛔. Cell tooltip exposes the full math (every dimension's 0-100 input + the weighted contribution) — auditable transparency the CFO will love. Click HEALTH column header → sort ascending (lowest first — operator triage flow); other sort modes auto-clear (exclusive sort). New PORTFOLIO HEALTH tile inside DEAL RISK panel shows portfolio avg + band-chip + horizontal fill-bar (0-100) + 4 bucket-filter buttons (STRONG / OK / AT-RISK / CRITICAL) + WoW Δ + $X.XM in CRITICAL deals banner. New <40 ONLY ✕ filter chip above TOP OPEN DEALS toggles dealMatchesHealthBucket(d, 'critical') filter (persisted in localStorage
salespulse.healthFilter); clicking ✕ clears. AI INSIGHTS prepends live bullet naming portfolio avg, count + $$ in CRITICAL, biggest dimension drag (e.g. "Portfolio health 58/100 (P50 SaaS benchmark) — 3 deals CRITICAL totaling $4.8M. Biggest drag = STAKEHOLDER REACH (avg 42%); fixing single-thread on Northwind + Fabrikam alone would lift portfolio avg to 64/100."). Click portfolio-bucket button OR filter chip → filter TOP OPEN DEALS to that band. Mobile (≤480px) HEALTH cell collapses to glyph + tooltip-on-tap (keeps the row readable on phone). Composite formula future-proofs the dashboard: any new per-deal signal we add (CALL TRAJECTORY #28, COHORT MATRIX #26) can be folded into the weight blend without re-architecting the table. expanderColspan bumped 14 → 15. Cache bump 0.26.0 → 0.27.0 · closes #33 - v0.26 EARNED vs SOFT COMMIT decomposition on FORECAST panel — split the commit into "what we can count on" — every enterprise forecast system (Clari · BoostUp · Salesforce · Gong) splits commit into confidence-tiered buckets because raw commit is a lie of aggregation — a $55.9M commit with 70% qualified vs the same $55.9M with 30% qualified are very different conversations. SalesPulse showed commit as a single number with no confidence decomposition; the CFO/Board literally could not tell how much of commit they can actually count on. This ship splits commit live: EARNED = deals passing ALL gates (MEDDIC ≥ 6/8 · REACH ≥ 0.5 · momentum stable ≥ 50 · stage = Negotiation/Closed-Won · next-step on-track or stale, not missing/overdue · exec sponsor assigned if ≥ $1M); SOFT = everything else in commit. A horizontal stacked bar at the bottom of the FORECAST panel renders COMMIT $X.XM = EARNED $A.AM (65%) ● + SOFT $B.BM (35%) ⚠, color-toned earned-green / soft-amber, with a benchmark whisper EARNED 65% · P40 below median (new
earnedCommitRatioPavilion benchmark added). Below the bar: SOFT drivers tally — REACH < 0.5: N deals ($Y.YM) · MEDDIC < 6: N · MOMENTUM < 50: N · NEXT-STEP missing: N · STAGE < Negotiation: N · EXEC sponsor missing: N — sorted by $$ impact, click any chip → highlight the failing deals. Click EARNED segment → filter TOP OPEN DEALS to earned (persisted in localStorage); click SOFT → filter to soft. AI INSIGHTS prepends a live bullet naming earned %, P-tier vs Pavilion, top SOFT driver + "if all SOFT slipped, commit drops to $A.AM (X% attain)". Reconciliation guard fires ⚠ MISMATCH if EARNED + SOFT ≠ commit ± $0.1M. Tooltip on the bar exposes the full formula — CFO transparency: the math is auditable. NewD.dealExecSponsorsmap (Northwind + Fabrikam unassigned — the big-bet coverage gap that #31 SCENARIO MODELER's exec-sponsor lever exposes). Cache bump 0.25.0 → 0.26.0 · closes #34 - v0.25 SCENARIO MODELER · WHAT-IF — the dashboard becomes interactive (closes #31) — after 20+ shipped panels SalesPulse was descriptive (KPIs, trends) and diagnostic (#23 INBOX, #21 AT-RISK) but never prescriptive in a numerical sense — the CRO's actual weekly question ("if Northwind closes, where do we land? if Yamada's bias unwinds, does coverage hold?") was unanswerable without a calculator. New SCENARIO MODELER panel directly below FORECAST vs QUOTA ships 5 levers: NORTHWIND $2.4M outcome (closes / on-track / slips-next-q / lost), K.YAMADA bias unwind (fully / half / status-quo / holds-firm), EXEC SPONSOR push (assign-all-big-bets / none), Win-rate → P50, Pipegen → P50. Mono
<select>dropdowns; on change the RESULT strip recomputes instantly showing COMMIT / UPSIDE / ATTAIN / Q3 COVERAGE with Δ-vs-baseline + an auto-derived SCENARIO LABEL (BEST CASE → UPSIDE → STATUS QUO → DOWNSIDE → WORST CASE, color-toned, ⚠ on worst). 4 preset buttons [BASELINE] [BEST CASE] [WORST CASE] [BOARD STRESS] set all 5 levers in one click — BOARD STRESS = the conservative case to defend in board prep. Cross-reference micro-labels (#29 BIG BETS) and (#30 BENCHMARKS) on the relevant levers. AI INSIGHTS prepends a scenario-aware bullet (regenerates by scenario shape — status-quo names hedges, worst-case names recovery levers + required deal count). Reconciliation guard fires ⚠ MISMATCH when baseline commit drifts > $0.1M from data.forecast.commit. State persisted in localStorage; RESET pulses the result strip. LENS visible for CRO/MGR/CFO/BOARD/FULL; hidden for AE/CMO. New GO SCN / GO SCENARIO command. New SCN ticker entry. ALL_PANEL_IDS → 20. Cache bump 0.24.0 → 0.25.0 · closes #31 - v0.24 DEAL DETAIL EXPANDER — Bloomberg DES-style inline expand on every TOP OPEN DEALS row — TOP OPEN DEALS had reached the density-vs-truncation inflection point: 13 per-deal fields fight for ~7 visible columns. The mature pattern (Bloomberg DES · Clari Deal Card · Gong Deal Page · BoostUp Drawer · Outreach inline preview · SF Lightning Console) is an inline expander — one click reveals the full record without leaving the desk. Click any row (account cell) → inline 3-column expander slides under the row showing ACTIVITY (last 8 touches) with date / channel-glyph (✉ ☎ ⌘ ✎) / summary, MEDDIC breakdown (per-letter ★/⚠ with note like "⚠ NOT identified" for Northwind's economic buyer), and STAKEHOLDERS · REACH% with named individuals + titles per role (champion J. Patel / VP Sales Ops, EB — MISSING —, etc.) — pulling from new D.dealDetailExtras map keyed by account. Notes line below the grid; two action chips [JUMP TO REPS →] (scrolls to owner row + pulse) and [SCENARIO →] (placeholder for #31 ship). Click row again or press Esc → collapse. Arrow ↓/↑ while expanded → navigate to next/previous deal (auto-collapse previous, auto-expand next — Bloomberg DES behavior); auto-scrolls. Shift+click a second row → multi-expand (compare mode). State persisted in localStorage so the last-opened deal survives a refresh. When a row is expanded, AI INSIGHTS prepends a deal-specific bullet ("Northwind expanded: MEDDIC 4/8, REACH 40% (single-thread risk). Champion strong but EB never identified after 2 attempts. Legal redlines back 03/08. Recommended exec-sponsor: C. Park."). Reconciliation guard fires ⚠ MISMATCH when the detail's per-letter MEDDIC narrative diverges from the row's aggregate by > 1. Mobile (≤480px) drops the inline expander in favor of a full-screen modal overlay (terminal-density on phone is impossible). REP LEADERBOARD rows gain data-rep attributes so the JUMP affordance can scroll-anchor. Uses only existing CSS variables; no new colors. Cache bump 0.23.0 → 0.24.0 · closes #32
- v0.23 BENCHMARKS panel — every KPI placed vs Pavilion SaaS $50-100M ARR P25/P50/P75 + BENCHMARK INDEX + KPI-tile whispers — every internal metric on the dashboard was previously a number without a yardstick: 27% win-rate, 68d cycle, ±5.1% forecast accuracy — were any of those good? CFO at the board: "how does our forecast accuracy compare to similar-stage SaaS companies?" — currently un-answerable. New BENCHMARKS panel directly under KPI DESK ships an 8-chip strip placing every KPI vs Pavilion SaaS Operator Benchmarks (mock data, real source cited): WIN RATE 27% · P50 ●, SALES CYCLE 68d · P72 ★, ASP $198K · P58, COVERAGE 3.0x · P48, FCST ACC ±5.1% · P74 ★, PIPEGEN 21% · P34 ⚠, MKT SOURCE 38% · P65, NEW LOGOS 6 · P40. Status glyphs ★ (P75+ top-quartile) · ● (P40-75 mid) · ⚠ (sub-P40) · ⛔ (sub-P25). Right-aligned BENCHMARK INDEX 55/100 = mean of all 8 placements — a single CCK-Bloomberg-style number the Board can track. Status tone applied throughout from var(--green) / var(--green-soft) / var(--amber) / var(--red) — no new colors. Source attribution line is itself clickable to reveal a 1-paragraph methodology note + About this benchmark drawer. Every KPI tile in the KPI DESK row gains a third whisper line below the existing WoW + YoY whispers: e.g. P50 · at industry median under Win Rate, P72 · top-quartile under Sales Cycle, P58 · above median under ASP, P48 · at median under Pipeline Coverage. Click any chip → flashes that chip + scrolls to the panel. Reconciliation guard reads each chip's `ours` value against the live KPI (renders ⚠ MISMATCH chip on drift > 0.5%, pattern from #16/#18/#20/#27). New AI INSIGHTS bullet: "Top-quartile on sales-cycle (68d vs P75=64d) and forecast-accuracy (±5.1% vs P75=±5%). Below median on pipegen-to-quota (21% vs P50=24%) — the single highest-leverage gap. If pipegen normalized to P50, Q3 coverage gap closes 38%." LENS (#24): panel + chips show for CRO / CFO / CMO / BOARD / FULL (the budget-conversation seats); AE / Sales-Mgr lenses hide it (less actionable for their loops); KPI-tile whispers stay visible across all lenses since the placement context is universally useful. New BENCH ticker entry. ALL_PANEL_IDS grows to 19; lens preview chip auto-updates. Mobile (≤480px): chip strip wraps to 2×4 grid. Uses only existing CSS variables and existing .k-whisper styling for KPI-tile whispers. Cache bump 0.22.0 → 0.23.0 · closes #30
- v0.22 STAKEHOLDER REACH column + portfolio rollup — multi-threading visibility on every deal — every CRO / VP Sales / AE who has lost a late-stage deal knows the post-mortem story: "we only had a champion — no economic-buyer contact, no decision-maker visibility." Gartner B2B Buying Group research finds single-threaded deals win at ~18% vs ~47% for deals engaging ≥5 stakeholders (2024). SalesPulse previously had no representation of buying-group coverage on TOP OPEN DEALS — MEDDIC tracked who was qualified, not who was actually engaged. New sortable REACH column between QUAL and CLOSE renders a 5-cell heatmap in C·EB·DM·I·T order (Champion · Economic Buyer · Decision Maker · Influencer · Tech Evaluator) — each cell colored by engagement intensity (▓ engaged · ▒ touched · ░ none) + a STRONG / OK / THIN / SINGLE-THREADED status badge sized by sum-of-scores ÷ 10. Hover any cell to see the named role + state. The MEDDIC reconciliation guard (pattern from #16/#18/#20) fires ⚠ MISMATCH when a deal has MEDDIC ≥ 7 but REACH < 0.4 — calling out the deals being "scored qualified" without real buying-group access. New STAKEHOLDER REACH sub-section atop the DEAL RISK panel shows the portfolio rollup: avg reach across top-12, single-threaded count (clickable → filters table to just those deals; persisted in localStorage; ✕ CLEAR chip), missing-EB count, missing-DM count, STRONG count — so a manager can answer "how many of my top deals can survive a champion leaving?" in one glance. Story this quarter: 2 single-threaded (Northwind $2.4M slipping on champion-only + Fabrikam $1.2M on champion + tech), 4 missing decision-maker engagement, portfolio avg 0.67 (OK band). New AI INSIGHTS bullet names Northwind as the #1 reach-risk and frames it as the demo-narrative root cause of the slip ("schedule an exec-sponsor intro this week"). Click any REACH cell to jump to that deal row with highlight-pulse. MOTION-aware thresholds (EXPANSION relaxes single-threaded floor since renewals naturally narrow). LENS visibility: shown for CRO/MGR/AE/FULL; CFO/CMO/BOARD already hide #deals via the LENS map. Mobile (≤480px): column collapses to a single status word (e.g. ● SINGLE-THREADED). Cache bump 0.21.0 → 0.22.0 · closes #27
- v0.21 WIN / LOSS REASONS panel — top-5 win + loss reasons, loss-by-stage, top competitor — surfaces the playbook hidden in TTM losses. The dashboard previously showed Win Rate = 28.4% but said nothing about the ~196 losses worth ~$58.2M behind that number — that's the §9.1 / §9.3 double-miss this panel fixes. New panel WIN / LOSS REASONS (placed above DEAL RISK + AI INSIGHTS) renders two compact halves — WIN REASONS (5-segment horizontal stacked bar in green shades + mini-list with Product fit 32% / Champion 24% / Price/ROI 18% / Implementation speed 14% / Integration 12%) and LOSS REASONS (5-segment red/amber bar + mini-list with Lost-to-competitor 34% / No decision 26% / Budget cut 18% / Price 14% / Missing capability 8%) — top loss reason carries an inline ▸ Acme RevPro chip naming the #1 competitor. A LOSS BY STAGE sub-section answers "where in the funnel are we losing the most $$?" (Discovery $18.6M is the biggest leak, then Proposal $16.4M, Qualified $14.2M, Negotiation $9.0M). A COMPETITIVE SPLIT mini-bar at the bottom breaks down the 34% lost-to-competitor share — Acme RevPro 48% ($9.5M direct loss) is the single biggest competitive threat. Header micro-stat: WIN RATE TTM: 28.4% ▲+1.6 pts vs prior · $44.6M WON / $58.2M LOST, reconciles against the Win Rate KPI tile (renders ⚠ MISMATCH warning if they drift). All rows are click-ready with data-reason / data-stage / data-competitor attributes for future drill-down. All competitor names are fictitious per dashboard-context.md §7. Existing DEAL RISK item "Litware Inc. — competitor mentioned" upgraded to name Acme RevPro + their TTM $9.5M direct loss number so the risk's significance is now defensible. New AI INSIGHTS bullet: combined ~60% of losses are NOT product gaps but URGENCY + COMPETITIVE gaps — action: refresh Acme RevPro battlecard + tighten Discovery qualification. New GO WL / GO WINLOSS commands. Panel added to CRO/MGR/CFO/CMO/BOARD lens maps (#24). Mobile (≤480px): two halves stack vertically; bars remain readable. Uses only existing CSS variables. Cache bump 0.20.0 → 0.21.0 · closes #18
- v0.20 PIPELINE FUNNEL — median days-in-stage per stage + longest-stage callout — decomposes the 68d Sales Cycle KPI into actionable friction points. Each funnel stage bar now shows a small inline MED <X>D chip alongside the existing conversion % chip, tone-colored by per-stage benchmark (green ≤1.0× · amber 1.0–1.5× · red >1.5×). Benchmarks (Clari/Gong public industry medians for B2B SaaS): Prospects 14d · Qualified 12d · Discovery 14d · Proposal 14d · Negotiation 12d. Caption below the funnel computes TOTAL CYCLE: 68D · LONGEST STAGE: PROPOSAL (22D, 1.6× BENCHMARK) live from data (sum of medians reconciles to the existing Sales Cycle KPI). The Sales Cycle KPI tile gets a tiny LONGEST: PROPOSAL (22D) whisper line (reuses the vs-snapshot whisper pattern from #10) and becomes click-to-funnel — clicking the tile smooth-scrolls to PIPELINE FUNNEL and pulses the longest stage in green-soft for 1.5s (same affordance shipped in #8/#10). A new AI INSIGHTS bullet ties cycle improvement to where the remaining friction lives: "Proposal stage takes 22 median days — 1.6× benchmark — and drives most of the 68d total cycle... friction now lives in pricing/legal templating. Action: assign Sales Ops to review pricing approval SLAs + Legal redline turnaround." Cache bump 0.19.0 → 0.20.0 · closes #13
- v0.19 LENS persona modes — re-scope the dashboard for the seat in the chair — closes the §9.2 cognitive-overload heuristic by letting each role see only the panels that map to their job-to-be-done. New top-bar pill group LENS: [CRO][MGR][AE][CFO][CMO][BOARD][FULL] (default FULL = full dashboard, unchanged from prior versions). Per-persona panel maps (CSS-only hide via main.lens-cro section#X { display: none } — DOM stays intact, so KPIs/totals/insights remain in sync; only visibility changes). CRO sees the executive close-set (INBOX, hero, KPIs, FORECAST, WHAT CHANGED, YoY, FORWARD COVERAGE, at-risk reps, top-3 concentration, slippage, AI insights). MGR sees deal/rep ops (INBOX, KPIs, FUNNEL, TOP DEALS, REPS, AT-RISK REPS, slippage, WHAT CHANGED). AE sees individual-rep view (INBOX, KPIs scoped to MY DEALS — toggle auto-on, TOP DEALS, momentum heatmap, AI insights) — also flips salespulse.dealsMine = true on persona switch. CFO sees the money-only set (KPIs, FORECAST, projection, YoY, slippage). CMO sees demand-gen (KPIs, PIPELINE CREATED, FUNNEL, segments/regions) — auto-sets motion lens to ALL + pre-expands pipegen. BOARD sees the quarterly-narrative subset (hero, headline KPIs, FORECAST, YoY) — auto-flips WHAT CHANGED basis to YoY on persona switch. Persisted in localStorage.salespulse.lens. Shift+F1-F7 shortcuts cycle personas (CRO/MGR/AE/CFO/CMO/BOARD/FULL). Status-bar USR segment now reflects the active lens. A floating preview chip LENS: CRO · 10/18 PANELS VISIBLE · [✕ CLEAR] appears above the inbox when non-FULL. AI INSIGHTS prepends a lens-specific intro bullet when non-FULL. @media (prefers-reduced-motion) respected — no fade if user opted out. On mobile the pill group collapses to a single dropdown. New LENS <persona> command (e.g. LENS CRO, LENS FULL). New USR ticker reflecting the live lens. Together with #23 ACTION INBOX (v0.18) and #10 WHAT CHANGED (v0.6), LENS completes the §9 cognitive-load mitigation triad · closes #24
- v0.18 ACTION INBOX — consolidated, deduped, ranked queue of every red+amber across the dashboard — single answer to "what do I do right now?" across every persona. New panel directly under the hero strip aggregates alerts from 9 sources: slippage (#8), missing/overdue next-step (#15), cold momentum (#14), weak-commit MEDDIC (#20), at-risk reps (#21), negative WoW prob moves (#10), forward coverage gaps (#16), top-3 concentration (#11), and over-committers in commit (#19). Same-account items dedupe into one row (severity = max of merged, title concatenates issues, amount = max deal amount). Sort: severity desc → amount desc → category alpha. Top 12 visible; rest collapse under a + N MORE expander. Each row shows a severity dot (●), category chip (8 chars), title (~80 char truncate with full text on hover), $$ at risk, and a tone-colored suggested-action chip (PIPE REVIEW · 1:1 COACH · DEAL INSPECT · PIPE GEN · FORECAST RECAL · COMPETE PLAY). Clicking a row jumps to the source row/panel and triggers the standard 1.5s highlight pulse. Panel-head micro-stat: N ACTIONS · $X.XM AT RISK · N●HIGH · N●MED · N●LOW. Filter chips in header: ALL · HIGH ONLY · BY ACCOUNT · BY REP (persisted in localStorage.salespulse.inboxView; the BY-* views re-group same items into account/rep buckets without removing any). Empty state celebrates: ALL CLEAR — NO ACTIONS PENDING · Friday looks easy. Go close something. Status bar gets a new clickable INBOX N● segment color-toned by highest queue severity — click jumps to the panel. New INBOX ticker (count + $$ at risk). New AI insight bullet computed from the actual inbox contents — names the top account with the most overlapping alerts and quantifies the single-meeting fix. Partially mitigates §9.2 cognitive overload by giving every persona a single landing target before they fan out across 17 panels · closes #23
- v0.17 YoY SAME-QUARTER COMPARE — completes the temporal matrix — adds the dimension every board-deck and CFO conversation needs but the dashboard didn't render. New compact 4-column panel (KPI · THIS Q · SAME Q LAST YR · YoY Δ) sits between WHAT CHANGED and KPI DESK, comparing 8 KPIs at the same week-of-quarter (Jun 12 2026 vs Jun 13 2025): Pipeline Value, Weighted Pipeline, Win Rate, Avg Deal Size, Sales Cycle, Coverage, Commit @ W8/13, and Slippage. Story: 7 of 8 UP YoY (pipeline +17.8% · weighted +21.8% · commit +21% · cycle −7d) with slippage +45.1% as the lone regression — the friction-tax dimension that explains why a strong top-line doesn't feel strong at the Friday call. Panel-head summary stat: N UP · M DOWN · BEST · WORST. THIS Q reconciles automatically with the existing KPI DESK; a ⚠ MISMATCH chip appears if drift is detected (reuses #16 pattern). Each KPI tile gains a second vs Jun 2025 whisper line under the #10 WoW whisper — so an AE/CRO sees temporal context at three depths (week / year / projection) in the same tile. HERO STRIP appends · commit +21% YoY. WHAT CHANGED panel gets a WoW | YoY toggle in the header — flipping to YoY re-renders the commit-movement card against the year-ago basis instead of the week-ago snapshot; persisted in localStorage.salespulse.changedBasis. New YOY ticker (+17.8% PIPE vs Q2 FY25) + AI insight bullet quantifies which 7 are up and why slippage is the one to fix · contributes to #3 (broader vs-what labeling remains open) · closes #22
- v0.16 QUAL column on TOP OPEN DEALS — MEDDIC 0-8 score + weak-commit alarm — completes the daily-use trinity (momentum + next-step + qual) on the most-trafficked panel. New sortable QUAL column between MOMENTUM and CLOSE renders a tone-colored X/8 score (green ≥ 6 · amber 4-5 · red ≤ 3) + an 8-cell segmented bar in MEDDPICC order (M·E·D·D·I·C·P·C) so an AE can see at a glance which letters are missing without opening the deal. Hover the bar to list the missed checks by name. Panel-head micro-stat: QUAL HEALTH: X.X/8 AVG · N WEAK-COMMIT DEALS where weak = prob ≥ 70 AND qual < 5/8 — clickable to filter the table to just those deals (persisted in localStorage). TOP-3 CONCENTRATION tooltip now appends top-3 avg qual. PROJECTED Q-END methodology tooltip notes that qual < 5/8 deals historically land 35% less often than qual ≥ 6/8 — so the projection range should be read with that lens. New AI insight bullet names Northwind ($2.4M, 4/8) as the single largest commit-defensibility gap in the book. Mobile (≤480px): column collapses to numeric only, tap reveals the bar · closes #20
- v0.15 AT-RISK REPS — auto-derived coaching list — saves Sales Mgrs ~30 min of pre-1:1 prep. New panel above REPS+SEGMENTS row surfaces every rep who trips any of 6 watchlist rules: attain < 70 · activity < 65 · over-commit + behind · top deal missing next step · cold top deal (engagement < 40) · WoW attain ≤ −3pts. Each row shows the rep + region + bias chip, the highest-severity reason chip (RED if 2+ rules, AMBER if 1), an auto-generated one-line rationale that combines all triggered rules, and a suggested action chip (PIPE REVIEW · 1:1 COACH · RAMP CHECK · DEAL INSPECT). Panel header rollup: N reps at risk · N need 1:1 this week (or ALL REPS ON TRACK in green). Each row is clickable — scrolls to the REP LEADERBOARD and pulses that rep. TOP-3 CONCENTRATION tooltip now appends top-3 owners and flags any owner who's on the coaching list — concentration + rep risk now visibly compound. New RISKREP ticker symbol + new AI insight bullet quantifies which 5 of 6 reps are flagged + how concentration risk overlaps. New commands GO COACH / GO RISK / GO ATRISK. Mobile: each row's rationale wraps under the rep name; action chip remains visible · closes #21
- v0.14 REP LEADERBOARD: FCST ACC + BIAS columns (last 4Q) + reliability rollup — answers the CRO's #1 Friday-call question ("whose forecast can I actually trust?") before commit gets rolled up. Two new right-aligned columns: FCST ACC shows last-4Q rep forecast accuracy %, tone-colored green ≥ 80 / amber 65–79 / red < 65. BIAS chip flags RELIABLE (green), SANDBAG (amber), or OVER (red) with a hover tooltip surfacing the actual last-4Q (actual−commit)/commit values + a 4-dot sparkline of the same. Panel header gains a RELIABILITY rollup: % of pipeline-weighted commit from RELIABLE forecasters + counts of sandbaggers / over-committers. FORECAST vs QUOTA chart caption appends a reliability whisper estimating $$ over-commit risk and $$ sandbag upside hidden in the current commit. WHAT CHANGED SINCE LAST FORECAST cross-references with a RELY/SAND/OVER mini-chip next to each moving rep — so a +10pt jump from a SANDBAGGER reads differently than the same jump from an OVER-COMMITTER. New RELY ticker · new AI insight bullet quantifies Yamada's likely $0.4M overstatement + Sokolova's $1.2M hidden upside. PROJECTED Q-END comment now flags the future weight-by-reliability follow-up · closes #19
- v0.13 NEXT-QUARTER COVERAGE panel — surfaces the board+CFO conversation that's invisible today. New 3-column panel renders open pipe by close-date quarter for Q2 (current) / Q3 / Q4: big tone-colored coverage ratio (green ≥ 3x · amber 0.7–1.0× · red < 0.7×) vs the 3.0x target, weighted/unweighted/deal-count secondaries, and a NEED $XM MORE PIPE TO HIT 3x action row computed at render. Shared horizontal-bar viz beneath the columns shows unweighted-pipe-to-target visually, with a dashed 3x marker. Q2 reconciles exactly with existing Weighted Pipeline + Coverage KPIs — renders a ⚠ MISMATCH warning if they drift. New Q3COV / Q4COV ticker symbols + AI insight bullet cross-references the PIPELINE CREATED panel. GO COV / GO COVERAGE commands. Story this quarter: Q3 is 2.0x — alarm bell · need $61.6M more unweighted in 18 weeks · closes #16
- v0.12 FORECAST vs QUOTA: W9-W13 dashed projection + PROJECTED Q-END mini-stat — answers the Friday CRO question ("what will we land at?") in one glance. Chart now spans the full quarter; W1-W8 actuals stay solid, W9-W13 renders as a dashed continuation with a translucent extended confidence band and a "NOW" marker at the W8 boundary. New PROJECTED Q-END stat block beside the existing stats: big tone-colored projection $$, range (±7% TTM accuracy), gap vs quota, and "BEST CASE →" sub-stat — methodology tooltip explains the transparent formula (commit + (bestcase−commit) × 40% − slippage drag at 30% recurrence). Hero strip rewrites every render to incorporate the projection. New PROJ ticker symbol + AI insight bullet ties the projection to a recommended Wednesday action · closes #17
- v0.11 TOP OPEN DEALS: per-deal MOMENTUM column + heatmap ribbon — surfaces ghosting deals before they slip. New MOMENTUM column between PROB and CLOSE shows a dot (green / amber / red by score), a 0–100 score, and a ▲/─/▼ trend arrow vs prior week. Hover any cell for the underlying touchpoints, last-touch days, and single/multi-thread tooltip (§9.7 trust). Sortable column. A 12-cell heatmap ribbon above the table is sorted by amount: scan momentum vs deal-size at a glance, click any cell to scroll + pulse that row in the table (§9.5 action). Story this quarter: 4 of the top-12 are trending DOWN (Northwind / Fabrikam / Lucerne / Litware — combined $3.1M weighted) and the new AI insight bullet ties the count to the recommended manager-led pipe review · closes #14
- v0.10 TOP OPEN DEALS: NEXT STEP column + health rollup — the #1 Monday pipe-review question ("which deals don't have a defined next step?") answered inline. New column between CLOSE and OWNER renders the next step action + a chip for due-in-N-days (green ✓), N-days OVERDUE (red ◀), or bold MISSING for deals with no logged next step. Panel-head NEXT-STEP HEALTH stat shows ✓ on track · ● due soon · ✗ overdue/missing — click the ✗ count to filter the table down to just the un-defensible commit deals in one click (persisted via localStorage). Sortable column header (missing → overdue → due-soon → on-track). TOP-3 CONCENTRATION tile tooltip now also flags top-3 deals missing a next step. New AI insight bullet ties the count + $$ to a recommended action · closes #15
- v0.9 PIPELINE CREATED panel — the missing leading indicator for the marketing↔sales handoff. Weekly NEW IN (green) vs OUT / closed / DQ'd (amber) bar pairs over the trailing 8 weeks, with a dashed target line ($13.5M/wk derived from quota × 3x coverage ÷ 13 weeks) and a red flag tick on any week below target (W1, W3, W7 in the current data). Header stat row shows THIS WK NET · TTW AVG NET · TARGET. Compact source-mix stacked bar below (outbound / inbound / partner / expansion). Pipegen ticker symbol and AI insight bullet added. `GO PIPE` / `GO PIPEGEN` commands · closes #12
- v0.8 TOP-3 CONCENTRATION tile appended to the KPI desk — "if top 3 deals slip, do we still hit number?" answered in one glance. Headline % of weighted pipe, $$ in 3 accounts, and a footer micro-stat showing whether commit still covers quota or by how much it would miss. Tone shifts at 25% (warn) and 40% (bad). Click the tile to scroll to TOP OPEN DEALS and pulse the 3 starred rows; same accounts also get a ★ badge in the table for instant visual link. AI insights bullet added. The tile honors the NEW vs EXPANSION lens so the top-3 always matches the currently visible deal slice · closes #11
- v0.7 NEW vs EXPANSION motion lens — global toggle pill in the hero strip (ALL · NEW LOGO · EXPANSION, persisted in localStorage) that re-slices KPI DESK, PIPELINE FUNNEL, FORECAST vs QUOTA, TOP OPEN DEALS (new MOT column), PIPELINE BY SEGMENT, and PIPELINE BY REGION to the selected motion. New motion-split stacked bar at the top of SEGMENTS shows the $$ + % + win-rate split at a glance even on ALL. Affected panels carry a motion chip in their subhead so the lens is always visible. `MOTION ALL/NEW/EXP` commands · closes #9
- v0.6 WHAT CHANGED SINCE LAST FORECAST panel directly below the hero strip — WoW commit movement, deal-probability moves (click to jump), rep-attainment moves, risks added/resolved. Every KPI tile now also carries a small vs Jun 5 whisper line so the basis of every number is unambiguous (§9.7 trust). Updated AI Insights to reference the commit-recovery story · closes #10
- v0.5 SLIPPAGE THIS QUARTER panel — slipped deals, $$ out of period, FROM → TO dates, reasons, with concentration footer (top owner / region / reason). Click any row to jump to that account in TOP OPEN DEALS with a brief highlight. Removed the redundant single-line slippage entry from DEAL RISK & ANOMALY (the new panel owns the story) · closes #8
- v0.4 FORECAST vs QUOTA: dashed pace line (linear $0 → quota across 13 weeks) + PACE W8 / vs PACE stats so CROs can answer "are we ahead or behind pace?" in one glance — recomputes on COMMIT/BEST CASE toggle · closes #7
- v0.3 FORECAST vs QUOTA: confidence band around the COMMIT series (±7% TTM forecast accuracy) so CROs can defend the commit number on Friday calls · Mobile (≤720px): funnel conversion label now wraps under the bar so every stage — including Closed Won's "— win —" — renders consistently at 360px · closes #1 and #5
- v0.2 Pipeline Funnel: deal aging buckets per stage (0-14d / 15-30d / 30d+) — stalled deals now visible at a glance · Top Open Deals: one-click MY DEALS toggle (filters to the rep selected in the new ACTING AS picker, persisted across visits) · closes #2 and #4
- v0.1 Baseline SalesPulse Live dashboard · 6 KPIs · funnel · forecast vs quota · top deals · rep leaderboard · segments + regions · risks · live audience feedback