Skip to main content

Signal — Capacity Planning (Role + Company)

Written by Schae Lilley

Capacity Planning is a pair of admin-only pages in Signal (Power Digital's internal BI web app) that show how full each revenue-carrying employee's book of business is versus their official KPI target. Role Capacity (/capacity) breaks capacity down by role group (Account Director, Sr Account Director, Account Manager, Strategist, Sr Strategist) and division; Company Capacity (/company-capacity) rolls it up company-wide and adds an AI-deployment lens: teams at/above target are "prime for AI expansion," teams below target need more client volume first. It answers "do we have the right capacity in the right places, and where should we deploy AI to grow revenue without hiring?" Revenue comes from finance's Vena contract data, the roster and client-team assignments come from the Nova platform, KPI targets come from the KPI Revision Workstream Google Sheet, lead corrections and revenue splits come from Signal's own records (entered by users in Signal), and the optional "Capacity Insights" analysis is generated by Anthropic Claude. Visible to Admin tier and above.

Field

Value

Route

/capacity (Role Capacity), /company-capacity (Company Capacity)

Access

Admin+ (AdminRoute: isAdmin or isGandalf; others redirected to /summary)

Nav section

"Planning" (section flagged adminOnly; default route /capacity)

Primary data sources

Vena contract revenue; Nova platform (roster, titles, divisions, client-team assignment history, live AD/Sr AD assignments); KPI Revision Workstream Google Sheet (targets); Signal's own records (lead overrides, revenue splits, synced targets); ADP (employment-type enrichment); Anthropic Claude (on-demand insights); browser localStorage (AI Influence Log)

Writes

Browser localStorage (AI Influence Log entries, table column preferences). Passive: each page view logs a usage-telemetry event to Signal's own records (signal_usage_events, modules capacity / company-capacity). No other Supabase/warehouse writes from this module.

Key code refs

src/views/RoleCapacityView.tsx, src/views/CompanyCapacityView.tsx, src/utils/roleCapacity.ts, src/utils/kpiTargets.ts, src/utils/employeeRevenue.ts, src/context/DataContext.tsx (getEmployeeMetrics), server/index.ts (/api/employees, /api/assignments, /api/employee-kpi-targets, /api/claude), server/vena-kpi-engine.ts (getAssignmentsData, computeMonths), server/google-sheets.ts

Last verified

staging @ 98df0c4, verified 2026-07-07

Purpose

The Capacity Planning module (routes /capacity and /company-capacity in Signal) exists to answer two leadership questions:

  1. "Do we have the right amount of delivery capacity, in the right places?" Power Digital measures revenue-carrying employees on one of two KPIs depending on role: RPE (Revenue Per Employee — the employee's allocated share of monthly client revenue) for Strategist and Sr Strategist roles, and MRR (total monthly book value of the clients they own) for Account Director, Sr Account Director, and Account Manager roles. Role Capacity compares each role group per division against official KPI targets, so leadership can see which teams are under-loaded (below target — room for more clients, hiring probably unnecessary) versus at/over capacity (hiring or efficiency tooling justified).

  2. "Where should we deploy AI to grow revenue without hiring?" Company Capacity flips the framing: employees at or above target are running full books, so AI efficiency tools there expand capacity without headcount; employees below target need more client volume first, not AI tooling. The page quantifies the Revenue Gap (dollars left on the table if below-target people hit their KPI), lets the user log AI deployments and watch capacity metrics move afterward, and offers a Claude-generated prioritization of where to deploy AI next.

Typical users: executive leadership and division heads doing headcount/utilization reviews (Role Capacity), and AI/Innovation leadership deciding where to ship AI solutions (Company Capacity — its Claude system prompt is written for "the SVP of Innovation").

Access & visibility

Both Capacity Planning routes (/capacity and /company-capacity) are wrapped in the AdminRoute guard in src/App.tsx. The guard admits users where isAdmin OR isGandalf is true and redirects everyone else to /summary. Gandalf is Signal's tier above Admin; Sauron (super-admin) auto-sets both flags, so all higher tiers can see these pages.

  • How the Admin flag is granted: isAdmin comes from the is_admin column of the app_users table in Signal's own records (Supabase), read by src/context/AuthContext.tsx and cached in the browser's sessionStorage per email. Admin flags are managed in Signal's General Access screen (/users, in the "Access" nav section, Gandalf-only). A hardcoded fallback list (SUPER_ADMIN_EMAILS in AuthContext.tsx) always grants admin regardless of database state.

  • Nav visibility: the "Planning" sidebar section (links "Role Capacity" and "Company Capacity") is flagged adminOnly in src/App.tsx, which renders for isAdmin || isGandalf. Non-admins never see the section.

  • Deep link: the Hiring Pipeline view (/hiring, Gandalf-only) links to /capacity?division=<Division>; arriving via that URL pre-sets the shared Division filter.

  • Local dev bypass: VITE_DEV_BYPASS_AUTH=true grants all roles.

  • The SHOW_AI_AGENTS feature flag does not affect this module.

Data sources & lineage

All on-screen numbers in Capacity Planning are computed client-side in Signal's shared data layer (src/context/DataContext.tsx → getEmployeeMetrics/getSummaryMetrics, plus src/utils/roleCapacity.ts) from data the browser loads on app start. Backend endpoints below are the feeds. Never treat the warehouse or caches as sources — the origin systems are listed here.

On-screen element

Origin system

Code path

Refresh

Caveat

Employee roster (names, titles, division, department)

Nova platform (Power Digital's operational system; user/job-title/division/department records)

GET /api/employees in server/index.ts

1-hour server cache; ?refresh=1 busts it

Roster filtered to active staff with company email domains; people missing division/department show "Unknown"

Employment type on roster (full-time/part-time)

ADP (payroll/HR system)

ADP enrichment inside GET /api/employees (fetchWorkers in server/adp.ts), matched by normalized name

Same 1-hour cache as roster

Name-match based; null if ADP unreachable or names don't match. Not displayed on capacity tables but rides on the employee objects

Client revenue per month (drives RPE, MRR, Revenue Gap, trend chart)

Vena (finance's planning system; contract revenue written by finance)

GET /api/assignments + /api/assignments/batch → getAssignmentsData() in server/vena-kpi-engine.ts

Server-side cache per year envelope; month list capped at current calendar month

Signal is read-only on Vena data. VABO (performance-based revenue; the acronym's expansion is not defined in the app repo) is included in an individual's RPE but excluded from the RPE Trend chart

Who is assigned to which client (seats/leads)

Nova platform (client-account assignment history)

Seat query in server/snowflake-only-queries.ts (getSeatAssignmentsQuery), joined to revenue in TypeScript in vena-kpi-engine.ts

Cached with revenue envelope

Join is by department + AM/AD role + date-range overlap

Live AD / Sr AD assignments (affect lead attribution → MRR/RPE)

Nova platform (live API: executive_sponsor, senior_account_directors per client)

GET /api/nova/assignments (server/nova-api.ts), merged in DataContext

Fetched on app load

For non-consulting, single-division clients, live Nova wins over Signal's cached copy (behavior added Jul 2026)

Manual team-lead corrections

Signal's own records (entered by users in Signal's Manage Leads screen; team_assignments table)

GET /api/team-assignments (service-role read)

No cache (no-store)

Merged over Nova-derived leads in DataContext

Revenue split percentages between co-leads

Signal's own records (entered by users in Signal; revenue_split_overrides table)

Supabase read in DataContext; applied in calculateAllocationsWithOverrides (src/utils/allocation.ts)

On app load

Changes individual RPE attribution

Official KPI targets per job title ("Official Target", "% to Target", Above/At/Below)

KPI Revision Workstream Google Sheet (owned by the business; sheet ID from KPI_SHEET_ID env var, hardcoded default in server/google-sheets.ts)

Sheet → runKpiMatchSync() in server/index.ts → Signal's own records (signal_roles, signal_match_log tables) → in-memory map → GET /api/employee-kpi-targets

Sync runs ~30 s after every server boot and on demand via POST /api/kpi-targets/sync (KPI Targets admin screen)

Frontend matches by exact lowercase employee title, then "title, division" (division variant only tried when the title has no comma). Unmatched titles land in "unclassified" / Non-KPI section

Available months (month selector, trend x-axis)

Vena (distinct months with non-zero contract data)

GET /api/months → computeMonths() in server/vena-kpi-engine.ts

30-min server cache

Capped at current calendar month (Vena holds scheduled future months that are hidden)

Avg KPI / P75 / retention / performance distribution (Role Capacity tables)

Derived in browser from the rows above

computeRoleCapacity() in src/utils/roleCapacity.ts

Recomputed on filter change

P75 excludes zero values; "at target" = within ±5% (getPerformanceStatus in src/utils/kpiTargets.ts)

Headline cards, division table, Revenue Gap (Company Capacity)

Derived in browser from per-employee metrics

CompanyCapacityView.tsx (primaryKpiActual vs primaryKpiTarget)

Recomputed on toggle/filter change

Revenue Gap = Σ max(0, target − actual) over below-target employees

RPE Trend chart (line per division)

Derived in browser from Vena revenue + Nova assignment history

chartData memo in CompanyCapacityView.tsx using accountsByMonth + getEmployeeAllocation

Needs the background all-months history load to finish

VABO excluded; shows an empty state ("navigate away and back") until history loads

Capacity Insights (Claude analysis)

Anthropic Claude (via Signal's server proxy; server-side API key)

"Analyze Capacity" → callClaude in src/utils/claude.ts → POST /api/claude in server/index.ts

On demand only

Default model claude-sonnet-4-6 (code constant as of Jul 2026). This view passes no logContext, so calls are NOT recorded in Signal's llm_generation_logs table

AI Influence Log entries

Browser localStorage (key signal_ai_capacity_notes_v1)

CompanyCapacityView.tsx (saveNotes)

Instant, local only

Per-browser, per-machine; not shared with teammates; lost if site data is cleared

Table column preferences

Browser localStorage

useTableConfig in src/components/useTableConfig.ts

Instant

Cosmetic only

Page-view telemetry (invisible)

Write to Signal's own records (signal_usage_events)

usePageViewTracking in src/hooks/useUsageTracking.ts → logUsageEvent

On every route change

Passive logging of user email + module capacity or company-capacity; fire-and-forget; feeds Signal's Analytics/adoption view

Metrics & definitions

All metrics below appear on Signal's Capacity Planning pages (/capacity, /company-capacity) and are computed in the browser in src/context/DataContext.tsx and src/utils/roleCapacity.ts.

  • RPE (Revenue Per Employee) — the employee's allocated share of client revenue (merged blueprint slices, revenue-split overrides applied, plus their VABO component) ÷ number of selected months. Computed by the canonical helper computeEmployeeRpe (src/utils/employeeRevenue.ts), shared with the Summary view and the Staffing simulator so numbers never disagree between views. Origin: Vena contract revenue + Nova assignments + Signal's own lead/split records. Used as the primary KPI for Strategist and Sr Strategist roles.

  • MRR (book value) — full client book value: total revenue of every client the employee is assigned to (counted once per client, across all departments) ÷ number of selected months. Used as the primary KPI for Account Director, Sr Account Director, and Account Manager roles. Origin: Vena revenue + Nova assignments.

  • Official Target — the employee's monthly RPE or MRR target from the KPI Revision Workstream Google Sheet, matched by job title (sync path: sheet → signal_roles in Signal's own records → GET /api/employee-kpi-targets). In aggregate tables, the group's Official Target is the simple average of matched targets across classified employees in the group; the Total row uses a headcount-weighted average.

  • % to Target — (average actual KPI ÷ Official Target) × 100. Color coding: green ≥ 100%, amber ≥ 85%, red below (code constants in RoleCapacityView.tsx as of Jul 2026).

  • Performance status (Above / At ("On Track") / Below / unclassified) — actual primary KPI vs target with a ±5% tolerance: within ±5% = "At", above = "Above", under = "Below" (AT_TARGET_TOLERANCE = 0.05, code constant in src/utils/kpiTargets.ts as of Jul 2026). No matched target = "unclassified".

  • P75 — the 75th percentile of actual KPI values in the group, excluding zeros, with linear interpolation (percentile() in src/utils/roleCapacity.ts). Interpreted as an internal "what good looks like" benchmark.

  • Avg KPI (baseline) — simple mean of actual KPI values in the role/division group. Company Capacity's division-level Avg RPE deliberately reuses the centralized getSummaryMetrics so it matches the Summary view exactly.

  • Retention — % of the employee's assigned clients that are retained (a client counts as retained if any of its accounts is). No clients = 100%. Color coding: green ≥ 90%, yellow ≥ 80%, red below (code constants as of Jul 2026).

  • At/Above % (Company Capacity) — share of KPI-classified employees in the division/role group whose performance status is "at" or "above". Fill bar colors: green ≥ 60%, amber ≥ 35%, red below (code constant capacityBarColor in CompanyCapacityView.tsx as of Jul 2026). Green means "team is full — prime AI candidate".

  • Revenue Gap ($ Gap) — sum over below-target employees of max(0, target − actual) for their primary KPI. Interpreted as monthly revenue unlocked if below-target employees reached their KPI.

  • Capacity role — one of the five tracked roles (Account Director, Sr Account Director, Account Manager, Strategist, Sr Strategist), derived per employee by getCapacityRole() in src/utils/roleCapacity.ts: title-based matches win, then the KPI classification, then the most-frequent assignment role. Project Managers and leadership titles (Managing Director, Group Director, "Director of…", "Head of…") are deliberately excluded from capacity roles. The role determines the KPI type (ROLE_KPI_TYPE code constant): AD/Sr AD/AM → MRR; Strategist/Sr Strategist → RPE.

How it's used

Real workflows on Signal's Capacity Planning pages (/capacity and /company-capacity, Admin+ only):

  1. Check a division's capacity before approving a hire. From the Hiring Pipeline view, click a division link → lands on /capacity?division=X with the Division filter pre-set. If % to Target is red (well below target) with healthy headcount, the team has unused book capacity — push back on the hire and route new clients there instead. If % to Target is green and P75 is far above the average, the top quartile is stretched — the hire is justified.

  2. Find who is dragging a role group down. In Role Capacity, spot a division row with a red performance bar → switch to the Individual toggle → sort by % to Target ascending → click each Below person to open the Employee Detail drawer and inspect their actual client book and month-by-month history before a coaching or reassignment conversation.

  3. Decide where the next AI solution ships. In Company Capacity, pick the KPI population with the header toggle (RPE — Strategy & Execution, or MRR — Account Management), sort the AI Deployment Priority table by At/Above % descending — the top rows are teams at full capacity where AI creates headroom without hiring. Optionally click "Analyze Capacity" for a Claude-written prioritization with reasoning, and ask follow-up questions.

  4. Quantify the "fill the book first" opportunity. Use the Revenue Gap headline card and per-division $ Gap column to size how much monthly revenue is unlocked just by getting below-target employees to their KPI — that is a sales/assignment problem, not an AI problem, and the page frames it that way.

  5. Track whether an AI rollout actually worked. When a solution ships, log it in the AI Influence Log ("+ Log AI Solution"): the entry freezes that division's At/Above %, headcount, and revenue gap as of that day. Weeks later the card shows the percentage-point delta since deployment ("Current: X% (+Ypp since deployment)"); the RPE Trend chart provides the long-arc evidence (rising line, flat headcount).

  6. Export for an offsite or board deck. CSV export from any Role Capacity table (aggregate or individual, honoring hidden columns) via the table toolbar, or the Excel export of the Company Capacity division table (signal-capacity.xlsx).

What users can change here

Signal's Capacity Planning module is almost entirely read-only. Nothing user-initiated on /capacity or /company-capacity writes to the data warehouse, Nova, or Signal's own records (Supabase); the only Supabase write is passive usage telemetry (below).

  • AI Influence Log (Company Capacity): create and delete entries. Saved to browser localStorage only (key signal_ai_capacity_notes_v1). Side effects: none beyond the local browser — entries are invisible to teammates, not backed up, and wiped if the browser's site data is cleared. Logged entries are also included as context in subsequent "Capacity Insights" Claude prompts from the same browser.

  • Capacity Insights (Company Capacity): the "Analyze Capacity" button sends the current on-screen capacity snapshot to the Anthropic API via Signal's server proxy (POST /api/claude). The response is displayed but never stored; conversation history (last 20 messages) lives only in component state and resets on navigation. These calls are not logged to Signal's llm_generation_logs table (no logContext is passed).

  • Table column show/hide preferences (Role Capacity): browser localStorage, cosmetic only.

  • Automatic usage logging: visiting /capacity or /company-capacity writes a page_view event (module capacity / company-capacity) into Signal's own usage records (signal_usage_events), entered automatically by the app via the app-wide usage-tracking hook (src/hooks/useUsageTracking.ts). This is telemetry for Signal's internal Analytics dashboard, not user-editable data.

  • Everything that looks editable upstream is changed in other Signal modules: KPI targets via the KPI Targets admin screen / the KPI Revision Workstream Google Sheet; client leads via Manage Leads (writes to Signal's team_assignments records, and — for AD/Sr AD on non-consulting clients — directly to the Nova platform); revenue splits via the revenue split override editor.

Caveats & data quality

Known caveats for Signal's Capacity Planning pages (/capacity, /company-capacity), verified against staging @ 98df0c4 (Jul 2026):

  • AI Influence Log is localStorage-only. It is per-browser, per-machine: two admins see different logs, and clearing site data erases it. Do not treat it as an institutional record. Whether a server-side migration is planned is not defined in the app repo.

  • Capacity Insights calls are not usage-logged. Unlike other Signal AI features, the Company Capacity view calls Claude without a logContext, so these generations never land in Signal's llm_generation_logs records. Whether this is intentional is not defined in the app repo.

  • Targets are data, not product. Live targets come from the KPI Revision Workstream Google Sheet (synced ~30 s after every server boot and on demand from the KPI Targets screen). The rule table hardcoded in src/utils/kpiTargets.ts (e.g. $175k/$200k MRR, $25–35k RPE) is legacy fallback code, not the live source — do not quote those dollar figures as current targets. Governance and revision cadence of the sheet itself are not defined in the app repo.

  • Title matching drives classification. An employee's Nova job title must match a synced sheet title exactly (lowercase), or as "title, division" when the title has no comma. Unmatched people show as "unclassified" and fall into the "Non-KPI / Ops & Leadership" section — this is the usual reason headcounts don't add up.

  • Role list and KPI mapping are hardcoded. The five capacity roles and their MRR/RPE mapping are code constants (src/utils/roleCapacity.ts, duplicated as MRR_ROLES/RPE_ROLES in CompanyCapacityView.tsx). A new role type requires a code change. Leadership titles are excluded by regex heuristics on titles ("managing", "group", "director", "head of") — edge-case titles could land in the wrong bucket.

  • Thresholds are opinionated code constants (as of Jul 2026): ±5% "at target" tolerance; 100%/85% green/amber cutoffs for % to Target; 60%/35% green/amber cutoffs on At/Above % bars; 90%/80% retention coloring. None are user- or data-team-tunable at runtime.

  • RPE Trend chart has a known loading quirk. It needs the background all-months history load; until then it shows "Historical RPE data not yet loaded. Navigate away and back to trigger a full data refresh." (Loading-pipeline hardening merged Jul 2026 improved history-rebuild reliability, but the empty state still exists.)

  • Shared filters silently apply. The Division/Department filters are app-wide shared state. Role Capacity shows a filter bar; Company Capacity shows no filter bar but still inherits the filters — numbers can differ from a fresh session until filters are cleared elsewhere.

  • Aggregate "Official Target" is an average. When a division's role group mixes titles with different targets, the table shows the simple average of matched targets (headcount-weighted only in the Total row) — not a range.

  • VABO asymmetry. VABO revenue is included in an individual's RPE actual but excluded from the RPE Trend chart, so trend values are not directly comparable to individual RPE actuals.

  • AD/Sr AD attribution source changed Jul 2026: for non-consulting, single-division clients, live Nova platform assignments now override Signal's cached lead records on load — so MRR/lead attribution can shift when someone edits an AD directly in Nova.

Related views

  • KPI Targets (/kpi-targets, Admin+): admin screen where the Google Sheet → signal_roles target sync is triggered and match results are reviewed. The entire Above/At/Below classification in Capacity Planning depends on this sync.

  • Manage Leads (/leads, Team Lead+): edits who leads a client — writes to Signal's team_assignments records and (for AD/Sr AD chips on non-consulting clients) directly to the Nova platform. Changes lead attribution and therefore RPE/MRR in Capacity Planning.

  • Summary (/summary): Capacity Planning's average RPE deliberately reuses getSummaryMetrics, so numbers should never disagree with the Summary dashboard.

  • Employees (/employees): the row-click drawer in Role Capacity is the same Employee Detail / History component used by the Employees view.

  • Staffing (/staffing): the Staffing simulator uses the same canonical computeEmployeeRpe helper, so simulated and actual RPE match.

  • Hiring Pipeline (/hiring, Gandalf-only): deep-links into Role Capacity per division (/capacity?division=…) to ground hiring requests in capacity data.

  • General Access (/users, Gandalf-only, "Access" nav section): where the Admin flag that gates Capacity Planning is granted.

FAQ

Q: Who can see the Capacity Planning pages? A: Admins and above. Both /capacity and /company-capacity require Signal's Admin flag (or the higher Gandalf tier); anyone else is silently redirected to the Summary page. The Admin flag lives in Signal's own app_users records and is managed by a Gandalf-tier user on the General Access screen (/users). If you believe you need access, ask a Signal Gandalf admin (or your manager) rather than IT — this is an in-app role, not an authentication issue.

Q: Why doesn't the headcount on Role Capacity add up to my division's real headcount? A: Role Capacity only counts the five capacity roles: Account Director, Sr Account Director, Account Manager, Strategist, Sr Strategist. Everyone else in scope — Project Managers, Managing Directors, Group Directors, "Director of…"/"Head of…" titles, ops staff, and anyone whose job title didn't match a synced KPI target — appears in the collapsed "Non-KPI / Ops & Leadership" section at the bottom, labeled "Capacity used outside revenue targets."

Q: Where do the KPI targets ("Official Target") come from, and how do I change them? A: Targets come from the KPI Revision Workstream Google Sheet. Signal syncs the sheet into its own records (signal_roles) about 30 seconds after every server restart, and on demand from the KPI Targets admin screen (/kpi-targets). To change a target, change the sheet and re-run the sync — nothing on the Capacity Planning pages edits targets. The dollar figures hardcoded in Signal's source code are legacy fallbacks, not the live targets.

Q: What's the difference between RPE and MRR here? A: They are the two role-dependent KPIs. RPE (Revenue Per Employee) is the employee's allocated share of client revenue per month — used for Strategist and Sr Strategist roles. MRR is the full book value: total monthly revenue of every client the person is assigned to, counted once per client — used for Account Director, Sr Account Director, and Account Manager roles. An AM's MRR is much larger than their share of revenue because they own whole client relationships.

Q: Why doesn't the revenue here match Vena exactly? A: The underlying revenue is finance's Vena contract data (Signal reads it, never writes it), but Capacity Planning slices it differently: revenue is allocated across assigned leads (with revenue-split overrides applied), divided by the number of selected months, VABO is included in individual RPE but excluded from the RPE Trend chart, and the month list is capped at the current calendar month. Aggregate role/division numbers are averages of per-person allocations, not raw Vena totals. For client-level revenue questions, use Signal's Summary view or ask iris (iris.novapower.io).

Q: What does "At / Above Target — prime for AI expansion" actually mean? A: An employee is "at" target when their actual primary KPI is within ±5% of their official target (code constant as of Jul 2026), and "above" when they exceed that band. Company Capacity frames at/above-target employees as running full books, so AI efficiency tools deployed there let them handle more clients without new hires. "Below target" employees have room in their book — the page's framing is that they need more client assignments first, not AI tooling.

Q: What is the Revenue Gap number? A: For every KPI-classified employee performing below target, Signal computes their shortfall (target minus actual, floored at zero) and sums it. The headline Revenue Gap is that sum across the selected KPI population; the per-division "$ Gap" column is the same sum per division. It represents the monthly revenue unlocked if every below-target employee reached their KPI — a client-volume/assignment opportunity, not an AI opportunity.

Q: I logged an AI solution in the AI Influence Log but my colleague can't see it. Why? A: The AI Influence Log is stored only in your browser's localStorage (key signal_ai_capacity_notes_v1). It is per-browser and per-machine: colleagues see their own (likely empty) log, and clearing your browser's site data deletes yours. It is not backed up or shared. Treat it as a personal tracking tool, not a system of record.

Q: The RPE Trend chart says "Historical RPE data not yet loaded." Is something broken? A: No — the chart needs Signal's background load of all historical months, which continues after the page first renders. The built-in fix is exactly what the message says: navigate to another view and come back. If it persists across sessions, the history load may be failing; report it to the Signal team.

Q: Why do the numbers on Company Capacity look different from what a teammate sees? A: Two usual causes. First, Company Capacity has no filter bar but silently inherits the app-wide Division/Department filters — if you set filters on another view (e.g. Role Capacity or Summary), they still apply here; clear them and compare again. Second, the header KPI toggle (RPE vs MRR) scopes every section except the RPE Trend chart to a different employee population — confirm you are both on the same toggle.

Q: Are the Capacity Insights (Claude) answers saved anywhere? A: No. The analysis and any follow-up conversation exist only in the page's component state and disappear when you navigate away. Unlike most other Signal AI features, these calls are also not written to Signal's LLM generation log records. If you need to keep an insight, copy it out manually.

Q: Can I export this data? A: Yes. Every Role Capacity table (aggregate and individual) has a CSV export in its toolbar that honors your hidden-column choices, and Company Capacity's header has an Excel export (signal-capacity.xlsx) of the division table (headcount, below/at-above counts, at/above %, revenue gap, average KPI).

Did this answer your question?