TMS - SaaS Utilization

Overview
Tools
ClaudeCursorGitHub CopilotElevenLabsGeminiGoogle WorkspaceLayer.aiMicrosoft CopilotWindsurf ChatGPTMMonday.com
Help
latest

Help & Definitions

Reference for metrics, classifications, and filters used across the dashboard.

User Classifications

Provisioned Users
Users who have been granted access to the tool — typically via an Okta app assignment or an explicit seat in the vendor's admin console. This is the denominator for utilization: provisioned users who are never active represent wasted spend. Only available for tools with a managed roster (e.g. Cursor, Zoom, MS Copilot, Windsurf).
Licensed Seats / Total Users
The count shown on each card. For tools with a managed roster this equals the provisioned count above. For self-serve tools without a roster (e.g. Claude, Gemini, Layer AI), it is the all-time distinct user count — everyone who has ever used the tool, since there is no separate provisioning record to reference.
Active Users
Users considered active by the tool's own definition. This varies by tool — see the table below. Active is the primary engagement metric and powers the sparkline trend chart and MoM delta badge on each card.
Accessed (30d)
A dashboard-defined signal: any access event within the last 30 days, using a softer threshold than the vendor's active definition. Where a tool's active and accessed signals are equivalent (e.g. Claude, Zoom, Okta), accessed is not shown separately. Only shown on cards where the tool can provide a distinct, less-strict signal (e.g. Cursor: any IDE session vs. Cursor's engagement threshold).
Stale (31–90d)
Users who had some activity in the 31–90 day window but have not been active in the last 30 days. These are lapsing users — not gone, but disengaged. A high stale count relative to active count may indicate friction or reduced utility. Depends on the tool having historical time-series data.
Never Active
Provisioned or licensed users with no access signal ever recorded. These represent wasted seats — licenses assigned but untouched. Only available for tools with a defined provisioned roster to compare against.
Inactive Users
Computed as Total Users minus Active Users. Includes stale users, never-active users, and anyone whose last activity was more than 90 days ago.

Active is intentionally inconsistent across tools — each vendor defines engagement differently. Accessed (30d), Stale, and Never Active are dashboard-defined and applied uniformly where the underlying data supports it. Okta SSO log data (okta_silver.logs) is now integrated — Accessed for Slack is sourced from this stream. Desktop tools (Cursor, Windsurf) are excluded because long-lived API tokens mean SSO events do not represent individual sessions. Coverage will expand to other web-based tools as the log pipeline matures.

Active & Status Signals by Tool

How each classification is computed per tool. A dash (—) means the tool's data does not currently support that classification.

ToolActiveAccessed (30d)Stale (31–90d)Never Active
CursorCursor's own is_active flag in daily_usage — their proprietary engagement thresholdAny session row in daily_usage within 30d (softer than is_active)Had a daily_usage row 31–90d ago, none in last 30dProvisioned in team_members with no daily_usage row ever
SlackSlack-reported is_active flag from member analytics snapshotSSO authentication to any Slack Okta app in last 30d (from Okta log stream)——
Windsurfactive_days > 0 (Windsurf's all-time active day count)——active_days = 0 — provisioned but zero active days recorded
GeminiActive engagement events (event_category starts with 'active') in last 30d—Any Gemini event 31–90d ago, none in last 30d—
Layer AIAny workspace usage in last 30d—Had workspace usage 31–90d ago, none in last 30d—
MS CopilotlastActivityDate IS NOT NULL in Microsoft's 30d report——Licensed but no lastActivityDate recorded. Note: conflates stale + truly never active until historical data is available.
ClaudeAny activity_date in claude.user_activity within last 30d—Last activity_date was 31–90d ago—
Zoomlast_login_time within last 30d—last_login_time was 31–90d agolast_login_time IS NULL — provisioned but never logged in
Oktalogin_recency_bucket is 'Last 7 days' or 'Last 30 days'—login_recency_bucket is 'Last 60 days' or 'Last 90 days'login_recency_bucket is 'Never'

Financial Metrics

Yearly Cost
Monthly spend × 12. Monthly spend is sourced from per-tool billing data where available. Not all tools report spend at the user or label grain.
Price per Seat
Monthly spend ÷ total licensed seats. Represents the average cost of each provisioned account regardless of activity.
Price per Active User
Monthly spend ÷ active user count. Represents the effective cost per user who is actually engaging with the tool. Diverges from Price per Seat as adoption falls.
MoM Delta
Month-over-month change in the primary metric (usually active users), computed by comparing the average of the more recent half of the sparkline window to the older half. Shown as a percentage with a directional indicator.

Filters & Dimensions

Label / Organization
Studio or division code derived from the user's email domain via an internal mapping table. Values: RSG (Rockstar Games), ZNG (Zynga), 2KG (2K Games), TK2 (Take-Two Interactive), PVT (Private Division). Users whose domain isn't mapped appear as Other.
Email Domain
The domain portion of the user's email (e.g. rockstargames.com). Useful for filtering to a specific studio entity within a label.
Worker Type
Employment classification sourced from Okta's user directory. Typical values: Employee, Contractor. Populated for users present in Okta; Unknown for users not in the directory.
Country
ISO country code sourced from Okta's user directory. Useful for regional analysis and compliance reporting.

Dashboard Tiers

Tier 1 — Dedicated Tools
Tools with a direct data pipeline into BigQuery. These have full feature pages with detailed metrics, sparklines, financial analysis, and tool-specific KPIs. Managed via the tool config table.
Tier 2 — Product Catalog
All remaining Okta-connected apps, surfaced from Okta's app usage logs. These appear as lightweight cards on the overview page with basic user counts and trends. No dedicated detail page. Tier 1 tools are excluded from the catalog automatically.

Support

Questions about the data, missing tools, or something looks wrong? Reach out in Slack.

Label
Range