{"slug":"metrics","title":"Metric registry","summary":"Every metric key Roiva ships: what it measures, its type and unit, and which kind of connection feeds it.","section":"Reference","url":"https://roiva.ai/docs/reference/metrics","generated":"Generated from what Roiva ships, on every deploy.","license":"https://roiva.ai/terms","tables":[{"title":"CRM","columns":["Key","What it measures","Type","Unit","Fed by"],"optional_fields":["Watch out for","Good for","Guide"],"rows":[{"Key":"crm.contacts.lead_to_mql_rate","What it measures":"Percentage of new contacts that became Marketing Qualified Leads.","Type":"percentage","Unit":"%","Fed by":"HubSpot"},{"Key":"crm.contacts.mql_count","What it measures":"Contacts that reached MQL (Marketing Qualified Lead) status in the period.","Type":"count","Unit":"leads","Fed by":"HubSpot"},{"Key":"crm.contacts.mql_to_sql_rate","What it measures":"Percentage of the period's marketing-qualified contacts that also became sales-qualified.","Type":"percentage","Unit":"%","Fed by":"HubSpot"},{"Key":"crm.contacts.new_count","What it measures":"New contacts created in the CRM in the period.","Type":"count","Unit":"contacts","Fed by":"HubSpot"},{"Key":"crm.contacts.sql_count","What it measures":"Contacts that reached SQL (Sales Qualified Lead) status in the period.","Type":"count","Unit":"leads","Fed by":"HubSpot"},{"Key":"crm.contracts.avg_cycle_days","What it measures":"Average days from contract request to signature.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"crm.contracts.hours_per_contract","What it measures":"Combined legal, sales and operations hours to take one contract from request to signature.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"crm.contracts.processed_count","What it measures":"Contracts drafted, redlined and executed in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"crm.deals.at_risk_share","What it measures":"Percentage of open pipeline deals slipping or forecast to be lost.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)","Watch out for":["Decide once what makes a deal at risk, such as a slipped close date or a forecast of lost, and keep it the same before and after.","It moves with the market as well as the AI, so a formula valuing its change takes only the share of it you credit to the initiative."],"Good for":["Valuing pipeline forecasting by the at-risk deals it helps recover."],"Guide":"https://roiva.ai/docs/how-value-is-calculated"},{"Key":"crm.deals.avg_demo_to_proposal_days","What it measures":"Average days from demo to proposal sent.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)","Watch out for":["It's recorded, not synced. Decide when the clock starts and stops, and keep that the same before and after.","A faster proposal brings revenue sooner, not more of it: it's valued at your cost of capital."],"Good for":["Valuing proposal and quote automation."],"Guide":"https://roiva.ai/docs/how-value-is-calculated"},{"Key":"crm.deals.avg_sales_cycle_days","What it measures":"Average days from deal creation to close across the deals won in the period.","Type":"duration","Unit":"days","Fed by":"HubSpot, Pipedrive, Salesforce","Watch out for":["It's measured on the deals won in the period, so a batch of old deals closing at once lengthens it.","A shorter cycle brings revenue sooner, not more of it: formulas value the days at your cost of capital, and only the share of the change you credit to the initiative."],"Good for":["Valuing deals closing sooner after sales coaching or call intelligence."],"Guide":"https://roiva.ai/docs/how-value-is-calculated"},{"Key":"crm.deals.avg_value","What it measures":"Average closed-won deal size in the period.","Type":"currency","Unit":"USD","Fed by":"HubSpot, Pipedrive, Salesforce"},{"Key":"crm.deals.lost_count","What it measures":"Number of deals/opportunities closed-lost in the period.","Type":"count","Unit":"deals","Fed by":"HubSpot, Pipedrive, Salesforce","Watch out for":["A pipeline cleanup that closes stale deals as lost in one go raises the count, and drops that month's win rate, without anything happening to sales."],"Good for":["With deals won, the decided deals a change in win rate is applied to."],"Guide":"https://roiva.ai/docs/how-value-is-calculated"},{"Key":"crm.deals.pipeline_value","What it measures":"Value of the deals open in the period, taken as a snapshot when the CRM syncs.","Type":"currency","Unit":"USD","Fed by":"HubSpot, Pipedrive, Salesforce","Watch out for":["A snapshot of the deals open when the CRM synced, not a total for the month.","It's the amounts reps entered, which run optimistic, and it includes deals that will never close."],"Good for":["Sizing what slipping deals put at risk, with win rate and sales cycle."],"Guide":"https://roiva.ai/docs/how-value-is-calculated"},{"Key":"crm.deals.win_rate","What it measures":"Percentage of closed deals that were won. won_count / (won_count + lost_count).","Type":"percentage","Unit":"%","Fed by":"HubSpot, Pipedrive, Salesforce","Watch out for":["It moves with the market, pricing and the mix of your pipeline, so a formula valuing its change takes only the share of it you credit to the initiative.","Only closed deals count. Deals left open don't lower it, so it can rise while fewer deals close."],"Good for":["Valuing sales coaching or deal intelligence by the change in deals won.","Turning more qualified leads into an expected number of won deals."],"Guide":"https://roiva.ai/docs/how-value-is-calculated"},{"Key":"crm.deals.won_count","What it measures":"Number of deals/opportunities closed-won in the period.","Type":"count","Unit":"deals","Fed by":"HubSpot, Pipedrive, Salesforce","Watch out for":["A deal counts in the month it closes, so a quarter-end push makes some months lumpy. Compare like periods.","A count says nothing about deal size. Read it beside the value of deals won."],"Good for":["The deals a change in conversion, cycle time or proposal speed is multiplied by."],"Guide":"https://roiva.ai/docs/how-value-is-calculated"},{"Key":"crm.deals.won_value","What it measures":"Total value of all closed-won deals in the period, in the deals' currency when they share one and in US dollars at the European Central Bank's rate when they mix.","Type":"currency","Unit":"USD","Fed by":"HubSpot, Pipedrive, Salesforce","Watch out for":["It's revenue, not return: a formula books what you keep of it at your contribution margin, never the full amount.","A month whose deals mix currencies is converted to US dollars at the European Central Bank's rate, so its total moves with exchange rates."],"Good for":["With the count of deals won, your average deal value."],"Guide":"https://roiva.ai/docs/how-value-is-calculated"},{"Key":"crm.leads.avg_lead_to_won_days","What it measures":"Average days from lead creation to closed-won.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"crm.leads.avg_qualify_minutes","What it measures":"Average staff minutes to qualify one inbound lead.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"crm.leads.qualification_rate","What it measures":"Percentage of scored leads that pass the qualification threshold.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"crm.leads.qualified_count","What it measures":"Leads that met the qualification threshold and were routed to a rep.","Type":"count","Unit":"leads","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"crm.leads.scored_count","What it measures":"Inbound leads scored in the period.","Type":"count","Unit":"leads","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"crm.leads.sql_rate","What it measures":"Sales-qualified leads in the period as a percentage of the new leads created in it.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"crm.proposals.hours_per_proposal","What it measures":"Staff hours to assemble and send one proposal.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"crm.proposals.sent_count","What it measures":"Proposals sent to prospects in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"crm.reps.admin_hours_per_week","What it measures":"Sales rep hours per week on administrative work rather than selling.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"Finance","columns":["Key","What it measures","Type","Unit","Fed by"],"optional_fields":["Watch out for","Good for","Guide"],"rows":[{"Key":"finance.ap.data_entry_minutes_per_invoice","What it measures":"Staff minutes to key the data from one supplier invoice.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"finance.ap.days_payable_outstanding","What it measures":"Average days between invoice receipt and payment.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"finance.ap.invoices_processed","What it measures":"Supplier invoices processed through the extraction pipeline in the period.","Type":"count","Unit":"invoices","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"finance.ap.minutes_per_invoice","What it measures":"Staff minutes to process one supplier invoice end to end.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"finance.bills.count","What it measures":"Total vendor bills received in the period.","Type":"count","Unit":"bills","Fed by":"NetSuite, QuickBooks, Xero"},{"Key":"finance.bills.error_rate","What it measures":"Percentage of vendor bills entered with an error that needed correcting — amount, coding, vendor or a duplicate.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"finance.bills.minutes_per_error","What it measures":"Staff minutes to catch, investigate and correct one vendor bill error, vendor follow-up included, from a time study or your own timing.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"finance.bills.volume","What it measures":"Total value of all vendor bills received in the period.","Type":"currency","Unit":"USD","Fed by":"NetSuite, QuickBooks, Xero"},{"Key":"finance.close.cycle_days","What it measures":"Calendar days from period end to final sign-off of the close.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"finance.disputes.avg_resolution_days","What it measures":"Average days to resolve a billing dispute.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"finance.invoices.count","What it measures":"Total outbound invoices created in the period.","Type":"count","Unit":"invoices","Fed by":"NetSuite, QuickBooks, Xero"},{"Key":"finance.invoices.error_rate","What it measures":"Percentage of invoices issued with an error requiring correction.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"finance.invoices.minutes_per_dispute","What it measures":"Finance staff minutes to resolve one billing dispute, customer communication and credit memo processing included, from a time study or your own timing.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"finance.invoices.paid_count","What it measures":"Number of invoices marked paid in the period.","Type":"count","Unit":"invoices","Fed by":"NetSuite, QuickBooks, Xero"},{"Key":"finance.invoices.volume","What it measures":"Total billed on invoices created in the period, tax included.","Type":"currency","Unit":"USD","Fed by":"NetSuite, QuickBooks, Xero"},{"Key":"finance.pnl.expenses","What it measures":"Total operating expenses for the period from the accounting system.","Type":"currency","Unit":"USD","Fed by":"NetSuite, QuickBooks, Xero"},{"Key":"finance.pnl.net_income","What it measures":"Net income (revenue minus expenses) for the period.","Type":"currency","Unit":"USD","Fed by":"NetSuite, QuickBooks, Xero"},{"Key":"finance.pnl.revenue","What it measures":"Total revenue recognized in the period from the accounting system.","Type":"currency","Unit":"USD","Fed by":"NetSuite, QuickBooks, Xero","Watch out for":["Recognized revenue from your books: it's only complete once the month is closed, so a month still open reads low.","It moves with everything the business does. Roiva's formulas use it as the base a rate's change is applied to, not as the AI's result. A formula valuing its change takes only the share of it you credit to the initiative."],"Good for":["The base a change in stockouts, markdowns, shrink or overruns is applied to."],"Guide":"https://roiva.ai/docs/how-value-is-calculated"},{"Key":"finance.reconciliation.hours","What it measures":"Staff hours on manual reconciliations per close cycle.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"finance.revenue_recognition.adjustment_count","What it measures":"Revenue recognition adjustments or corrections required per period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"finance.revenue_recognition.manual_hours","What it measures":"Staff hours per period building revenue recognition schedules by hand.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"finance.revenue_recognition.minutes_per_adjustment","What it measures":"Accounting staff minutes to identify, correct, document and sign off one revenue recognition adjustment, from a time study or your own timing.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"finance.treasury.avg_cash_balance","What it measures":"Average daily cash balance in the period.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"finance.treasury.manual_hours_per_cycle","What it measures":"Staff hours to build and update the cash flow model per forecast cycle.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"HubSpot","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"hubspot.contacts.lead_to_mql_rate","What it measures":"HubSpot's lead-to-MQL rate for the month. Written to crm.contacts.lead_to_mql_rate instead when this connection is the primary source.","Type":"percentage","Unit":"%","Fed by":"HubSpot"},{"Key":"hubspot.contacts.mql_count","What it measures":"HubSpot's marketing qualified leads for the month. Written to crm.contacts.mql_count instead when this connection is the primary source.","Type":"count","Unit":"leads","Fed by":"HubSpot"},{"Key":"hubspot.contacts.mql_to_sql_rate","What it measures":"HubSpot's MQL-to-SQL rate for the month. Written to crm.contacts.mql_to_sql_rate instead when this connection is the primary source.","Type":"percentage","Unit":"%","Fed by":"HubSpot"},{"Key":"hubspot.contacts.new_count","What it measures":"HubSpot's new contacts for the month. Written to crm.contacts.new_count instead when this connection is the primary source.","Type":"count","Unit":"contacts","Fed by":"HubSpot"},{"Key":"hubspot.contacts.sql_count","What it measures":"HubSpot's sales qualified leads for the month. Written to crm.contacts.sql_count instead when this connection is the primary source.","Type":"count","Unit":"leads","Fed by":"HubSpot"},{"Key":"hubspot.deals.avg_sales_cycle_days","What it measures":"HubSpot's average sales cycle for the month. Written to crm.deals.avg_sales_cycle_days instead when this connection is the primary source.","Type":"duration","Unit":"days","Fed by":"HubSpot"},{"Key":"hubspot.deals.avg_value","What it measures":"HubSpot's average won deal size for the month. Written to crm.deals.avg_value instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"HubSpot"},{"Key":"hubspot.deals.lost_count","What it measures":"HubSpot's lost deals for the month. Written to crm.deals.lost_count instead when this connection is the primary source.","Type":"count","Unit":"deals","Fed by":"HubSpot"},{"Key":"hubspot.deals.open_count","What it measures":"Deals open in HubSpot at sync time, a snapshot rather than a period total, written once per month and rewritten on every sync.","Type":"count","Unit":null,"Fed by":"HubSpot"},{"Key":"hubspot.deals.open_value","What it measures":"Value of the deals open in HubSpot at sync time, a snapshot rather than a period total, written once per month and rewritten on every sync.","Type":"currency","Unit":"USD","Fed by":"HubSpot"},{"Key":"hubspot.deals.win_rate","What it measures":"HubSpot's deal win rate for the month. Written to crm.deals.win_rate instead when this connection is the primary source.","Type":"percentage","Unit":"%","Fed by":"HubSpot"},{"Key":"hubspot.deals.won_count","What it measures":"HubSpot's won deals for the month. Written to crm.deals.won_count instead when this connection is the primary source.","Type":"count","Unit":"deals","Fed by":"HubSpot"},{"Key":"hubspot.deals.won_value","What it measures":"HubSpot's won deal value for the month. Written to crm.deals.won_value instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"HubSpot"},{"Key":"hubspot.marketing.campaigns_launched","What it measures":"HubSpot's campaigns launched for the month. Written to marketing.campaigns.launched_count instead when this connection is the primary source.","Type":"count","Unit":"campaigns","Fed by":"HubSpot"},{"Key":"hubspot.marketing.email_open_rate","What it measures":"HubSpot's marketing email open rate for the month. Written to marketing.emails.open_rate instead when this connection is the primary source.","Type":"percentage","Unit":"%","Fed by":"HubSpot"},{"Key":"hubspot.marketing.organic_sessions","What it measures":"HubSpot's organic search sessions for the month. Written to marketing.web.organic_sessions instead when this connection is the primary source.","Type":"count","Unit":"sessions","Fed by":"HubSpot"},{"Key":"hubspot.marketing.posts_published","What it measures":"HubSpot's content published for the month. Written to marketing.content.published_count instead when this connection is the primary source.","Type":"count","Unit":"posts","Fed by":"HubSpot"},{"Key":"hubspot.tickets.avg_resolution_days","What it measures":"HubSpot's average ticket resolution time for the month. Written to support.tickets.avg_resolution_days instead when this connection is the primary source.","Type":"duration","Unit":"days","Fed by":"HubSpot"},{"Key":"hubspot.tickets.closed_count","What it measures":"HubSpot's support tickets closed for the month. Written to support.tickets.closed_count instead when this connection is the primary source.","Type":"count","Unit":"tickets","Fed by":"HubSpot"},{"Key":"hubspot.tickets.new_count","What it measures":"HubSpot's support tickets opened for the month. Written to support.tickets.volume instead when this connection is the primary source.","Type":"count","Unit":"tickets","Fed by":"HubSpot"},{"Key":"hubspot.tickets.open_count","What it measures":"Tickets open in HubSpot at sync time, a snapshot rather than a period total, written once per month and rewritten on every sync.","Type":"count","Unit":null,"Fed by":"HubSpot"},{"Key":"hubspot.tickets.resolution_rate","What it measures":"HubSpot's ticket resolution rate for the month. Written to support.tickets.resolution_rate instead when this connection is the primary source.","Type":"percentage","Unit":"%","Fed by":"HubSpot"}]},{"title":"Professional services","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"professional_services.billing.realization_rate","What it measures":"Billed fees as a percentage of standard-rate value of hours worked.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.billing.unbilled_hours_per_practitioner_weekly","What it measures":"Billable hours worked but not captured per practitioner per week.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.knowledge.active_users","What it measures":"Practitioners actively using the knowledge system in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.knowledge.search_minutes","What it measures":"Average minutes per search for prior work and precedent.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.knowledge.searches_per_practitioner","What it measures":"Times per period a practitioner searches for prior work, methods or precedent.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.practitioners.available_hours","What it measures":"Working hours available per practitioner in the period.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.practitioners.billable_count","What it measures":"Billable practitioners in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.practitioners.billable_hours_worked","What it measures":"Hours worked by billable practitioners in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.projects.at_risk_detection_lead_weeks","What it measures":"Average weeks before delivery failure that an at-risk project is identified.","Type":"duration","Unit":"weeks","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.projects.at_risk_identified_count","What it measures":"At-risk projects identified in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.projects.avg_overrun_depth","What it measures":"Of projects closed in the period that exceeded the approved budget, their cost over budget as a percentage of their contract value.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.projects.budget_overrun_rate","What it measures":"Percentage of projects that exceeded the approved budget.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.projects.pm_count_using_automation","What it measures":"Project managers using the automated reporting system.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.projects.recovery_hours_per_project","What it measures":"Senior PM hours spent recovering a late-detected at-risk project.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.proposals.prep_hours","What it measures":"Staff hours to assemble one proposal.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.proposals.submitted_count","What it measures":"Proposals or statement-of-work responses submitted in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.reporting.client_reports_delivered","What it measures":"Client status reports delivered in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.reporting.hours_per_client_report","What it measures":"Staff hours to compile, format and deliver one client report.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.reporting.reports_per_pm","What it measures":"Client reports each project manager prepares in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.utilization.bench_share","What it measures":"Percentage of available practitioner hours spent on the bench.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"professional_services.utilization.billable_rate","What it measures":"Billable hours as a percentage of available practitioner hours.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"Construction","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"construction.bids.awarded_value","What it measures":"Contract value of projects awarded in the period.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.bids.submitted_count","What it measures":"Bids submitted in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.documents.search_hours_per_week","What it measures":"Staff hours per week locating current drawing versions and document history.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.estimating.hours_per_bid","What it measures":"Estimator hours per bid.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.estimating.variance_rate","What it measures":"Average estimate-to-actual variance as a percentage of the estimate.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.job_costing.review_cycle_days","What it measures":"Average days between formal job cost reviews on active projects.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.job_costing.review_cycles","What it measures":"Formal job cost review cycles in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.job_costing.review_hours_per_project","What it measures":"PM and controller hours per project per job cost review cycle.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.labor.hours_worked","What it measures":"Field labor hours worked in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.payroll.minutes_per_timecard_correction","What it measures":"Payroll admin minutes to find and correct one timecard error, from a time study or your own timing.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.payroll.processing_hours_per_week","What it measures":"Staff hours per week collecting, reconciling and processing timecards.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.payroll.timecard_error_rate","What it measures":"Percentage of timecards requiring correction.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.payroll.timecards_processed","What it measures":"Timecards processed in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.projects.active_count","What it measures":"Active projects in the portfolio during the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.projects.avg_overrun_depth","What it measures":"Of projects closed in the period that exceeded the approved budget, their cost over budget as a percentage of their contract value.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.projects.cost_overrun_rate","What it measures":"Percentage of projects that exceed the approved budget.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.rfis.response_days","What it measures":"Average calendar days from RFI submission to formal response.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.rfis.submitted_count","What it measures":"Requests for information submitted in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.safety.observation_hours_per_week","What it measures":"Staff hours per week on safety observation reporting and job hazard analysis distribution.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"construction.safety.recordable_incident_rate","What it measures":"OSHA recordable incident rate (incidents × 200,000 ÷ hours worked).","Type":"ratio","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"Financial services","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"financial_services.advisors.accounts_per_advisor","What it measures":"Client accounts managed per advisor.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.advisors.aum_per_advisor","What it measures":"Average assets under management per advisor.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.advisors.count","What it measures":"Advisors using the client intelligence platform.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.advisors.organic_growth_rate","What it measures":"Net new assets in the period, inflows less outflows with market movement left out, annualized, as a percentage of assets under management at the period's start, from your custodian or portfolio system.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.advisors.proactive_outreach_rate","What it measures":"Percentage of clients contacted proactively per quarter.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.fraud.false_positive_rate","What it measures":"Percentage of flagged transactions that were legitimate.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.fraud.flagged_count","What it measures":"Transactions flagged by the fraud system in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.fraud.loss_rate_bps","What it measures":"Fraud losses as basis points of transaction volume.","Type":"count","Unit":"bps","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.fraud.minutes_per_investigation","What it measures":"Analyst minutes to investigate and resolve one flagged transaction, customer contact included, from a time study or your case system's time tracking.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.kyc.review_hours_per_account","What it measures":"Staff hours to review and approve one account.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.onboarding.accounts_count","What it measures":"New accounts onboarded through KYC/AML in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.onboarding.days_to_active","What it measures":"Average days from application to active account.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.regulatory_reporting.error_rate","What it measures":"Percentage of regulatory report line items requiring correction before submission.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.regulatory_reporting.line_items_per_cycle","What it measures":"Line items across the regulatory reports filed in one reporting cycle.","Type":"average","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.regulatory_reporting.prep_hours_per_report","What it measures":"Staff hours to prepare and validate one regulatory report.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.transactions.volume","What it measures":"Total transaction volume processed in the period.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.underwriting.decision_hours","What it measures":"Average hours from application submission to decision.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.underwriting.manual_review_rate","What it measures":"Percentage of applications requiring manual underwriter review.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.underwriting.overturned_decline_rate","What it measures":"Of past applications the AI would decide without manual review, the percentage it approves that the old process declined, from a back-test against known decisions.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"financial_services.underwriting.review_hours_per_application","What it measures":"Average underwriter and analyst hours of hands-on review per application decided, an automatically decided one counting as none — not the elapsed time to a decision.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"Healthcare","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"healthcare.appointments.avg_length","What it measures":"Scheduled minutes of a patient visit of the type recovered clinician time would be booked as.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"healthcare.appointments.no_show_rate","What it measures":"Percentage of scheduled appointments the patient did not attend.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"healthcare.appointments.scheduled_count","What it measures":"Appointments scheduled in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"healthcare.audits.prep_hours_per_cycle","What it measures":"Staff hours preparing documentation for one quality audit or regulatory review.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"healthcare.claims.denial_rate","What it measures":"Percentage of submitted claims denied on first submission.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"healthcare.claims.denied_count","What it measures":"Claims denied on first submission in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"healthcare.coding.charts_coded","What it measures":"Charts coded in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"healthcare.coding.charts_per_coder_per_day","What it measures":"Charts coded per medical coder per day.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"healthcare.coding.coder_count","What it measures":"Medical coders using AI-assisted coding.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"healthcare.coding.error_rate","What it measures":"Percentage of coded charts with an error.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"healthcare.denials.appeal_success_rate","What it measures":"Share of appealed denials overturned.","Type":"ratio","Unit":"0–1","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"healthcare.documentation.after_hours_charting_hours_per_week","What it measures":"Hours per week clinicians spend on documentation outside clinical hours.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"healthcare.documentation.clinician_count","What it measures":"Clinicians using ambient documentation.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"healthcare.documentation.encounters_per_clinician_per_day","What it measures":"Patient encounters per clinician per clinical day.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"healthcare.documentation.minutes_per_encounter","What it measures":"Clinician documentation minutes per patient encounter.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"healthcare.outreach.hours_per_week","What it measures":"Staff hours per week on appointment reminders, care gap calls and other patient outreach done by hand.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"healthcare.quality.care_gap_closure_rate","What it measures":"Percentage of identified care gaps closed.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"healthcare.quality.value_based_revenue_at_risk","What it measures":"Revenue at risk or bonus-eligible under value-based contracts, for a performance year.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"healthcare.revenue_cycle.days_in_ar","What it measures":"Average days from claim submission to payment.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"HR","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"hr.hiring.days_to_first_interview","What it measures":"Average days from job posting to first interview.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hr.hiring.hires_count","What it measures":"Positions filled in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hr.hiring.recruiter_hours_per_hire","What it measures":"Recruiter hours on resume review and screening per hire.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hr.inquiries.avg_response_hours","What it measures":"Average hours from employee inquiry to HR response for routine questions.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hr.inquiries.chatbot_deflection_rate","What it measures":"Share of employee inquiries fully resolved by the chatbot without HR involvement.","Type":"ratio","Unit":"0–1","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hr.inquiries.minutes_per_inquiry","What it measures":"HR staff minutes to handle one tier-1 inquiry by hand, answer, follow-up and documentation included, from a time study or your case tool's time tracking.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hr.inquiries.tier1_per_month","What it measures":"Routine HR inquiries received per month (policy, PTO, benefits, payroll).","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hr.onboarding.admin_hours_per_hire","What it measures":"HR and IT staff hours on onboarding tasks per new hire.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hr.onboarding.completion_rate","What it measures":"Percentage of required onboarding tasks completed within the target window.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hr.onboarding.days_to_productivity","What it measures":"Days from start date until a new hire is independently productive.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hr.onboarding.hires_count","What it measures":"New employees who completed onboarding in the period.","Type":"count","Unit":"hires","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hr.onboarding.tasks_automated","What it measures":"Onboarding checklist items (provisioning, welcome communications, acknowledgments) now handled automatically.","Type":"count","Unit":"tasks","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hr.reporting.hours_per_month","What it measures":"Staff hours per month building workforce reports.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hr.reviews.admin_hours_per_cycle","What it measures":"HR and manager hours coordinating, collecting and calibrating one performance review cycle.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hr.reviews.admin_hours_per_employee","What it measures":"HR and manager admin hours per employee per review cycle.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hr.reviews.completion_rate","What it measures":"Percentage of required performance reviews completed on time.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hr.reviews.employees_reviewed","What it measures":"Employees included in the performance review cycle.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hr.workforce.headcount","What it measures":"Total employee headcount in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hr.workforce.voluntary_attrition_rate","What it measures":"Annualized voluntary attrition rate.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"Supply chain","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"supply_chain.deliveries.on_time_rate","What it measures":"Percentage of orders delivered on or before the promised date.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"supply_chain.deliveries.revenue_at_risk","What it measures":"Revenue exposed to late deliveries in the period through penalties, cancellations and credits.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"supply_chain.forecasting.accuracy","What it measures":"Demand forecast accuracy against actual demand.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"supply_chain.inventory.avg_value","What it measures":"Average inventory value on hand during the period.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"supply_chain.inventory.excess_value","What it measures":"Value of inventory held above target levels.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"supply_chain.inventory.stockout_events","What it measures":"Stockout incidents in the period.","Type":"count","Unit":"events","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"supply_chain.inventory.stockout_rate","What it measures":"Percentage of SKUs or order lines that were out of stock.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"supply_chain.procurement.hours_per_po","What it measures":"Staff hours per purchase-order cycle, from creation through invoice matching.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"supply_chain.procurement.invoice_matching_hours_per_week","What it measures":"AP staff hours per week matching purchase orders to invoices.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"supply_chain.procurement.po_cycle_days","What it measures":"Average calendar days from purchase requisition to approved purchase order.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"supply_chain.procurement.purchase_orders_processed","What it measures":"Purchase orders processed in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"supply_chain.shipments.cost_per_shipment","What it measures":"Average total cost per shipment.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"supply_chain.shipments.count","What it measures":"Outbound shipments in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"supply_chain.suppliers.active_count","What it measures":"Suppliers the business is actively buying from.","Type":"count","Unit":"suppliers","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"supply_chain.suppliers.disruptions_per_year","What it measures":"Supply disruptions per year.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"supply_chain.suppliers.review_hours_per_month","What it measures":"Staff hours per month on supplier health reviews and risk assessments.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"supply_chain.warehouse.pick_error_rate","What it measures":"Percentage of picks resulting in an error.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"supply_chain.warehouse.picks_count","What it measures":"Units picked in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"supply_chain.warehouse.picks_per_labor_hour","What it measures":"Units picked per warehouse labor hour.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"Support","columns":["Key","What it measures","Type","Unit","Fed by"],"optional_fields":["Watch out for","Good for","Guide"],"rows":[{"Key":"support.calls.avg_handle_time","What it measures":"Average minutes an agent spends on one inbound phone call — talk, hold and wrap-up.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)","Watch out for":["Talk, hold and wrap-up together. A phone system report that leaves out wrap-up reads low.","It moves with the mix of calls: once an AI takes the simple ones, the calls left for agents run longer, so the average can rise while total agent time falls."],"Good for":["Pricing the calls an AI or self-service channel keeps from reaching an agent, with your labor rate."],"Guide":"https://roiva.ai/docs/how-value-is-calculated"},{"Key":"support.knowledge_base.article_count","What it measures":"Knowledge base articles being maintained.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"support.knowledge_base.avg_article_age_days","What it measures":"Average days since knowledge base articles were last reviewed or updated.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"support.knowledge_base.update_minutes_per_article","What it measures":"Minutes to review and update one knowledge base article per cycle.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"support.quality.review_minutes_per_interaction","What it measures":"Minutes for a QA analyst to review and score one interaction.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"support.quality.sample_rate","What it measures":"Share of support interactions reviewed for quality.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"support.tickets.agent_minutes_per_ticket","What it measures":"Minutes of agent work one resolved ticket takes, from a time study or your help desk's time tracking. Not how long the ticket was open.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)","Watch out for":["It's hands-on minutes per resolved ticket, not how long the ticket was open, which is mostly waiting.","Time the same task before and after, from the same start to the same finish, including the minutes spent checking what the AI drafted."],"Good for":["Valuing the agent time an AI routing or drafting tool saves on the tickets agents still resolve."],"Guide":"https://roiva.ai/docs/running-a-time-study"},{"Key":"support.tickets.agent_resolved_count","What it measures":"Tickets resolved by an agent: every resolved ticket that no AI deflection rule on the help desk matched, plus the ones a rule matched whose customer came back.","Type":"count","Unit":"tickets","Fed by":"Freshdesk, Intercom, Zendesk","Watch out for":["On Zendesk, Freshdesk and Intercom it leaves out tickets an AI deflection rule matched, unless the customer came back, so a ticket is agent work or deflection value, never both.","HubSpot tickets and Salesforce cases don't show whether an AI resolved them, so there it's counted by hand. Leave out what the AI handled alone."],"Good for":["The tickets the agent minutes saved per ticket are multiplied by."],"Guide":"https://roiva.ai/docs/how-deflection-value-is-booked"},{"Key":"support.tickets.ai_resolution_rate","What it measures":"Percentage of the tickets resolved in the period that AI resolved, without human escalation.","Type":"percentage","Unit":"%","Fed by":"Freshdesk, Intercom, Zendesk"},{"Key":"support.tickets.ai_resolved_count","What it measures":"Support tickets fully resolved by AI without human escalation in the period.","Type":"count","Unit":"tickets","Fed by":"Freshdesk, Intercom, Zendesk"},{"Key":"support.tickets.avg_first_response_hours","What it measures":"Average hours from ticket creation to the first agent reply, across tickets opened in the period.","Type":"duration","Unit":"hours","Fed by":"Freshdesk, Intercom, Zendesk"},{"Key":"support.tickets.avg_resolution_days","What it measures":"Average days from ticket creation to resolution, waiting included: how long a ticket was open, not how long anyone worked it. Zendesk, Freshdesk and Intercom report hours, converted ÷ 24.","Type":"duration","Unit":"days","Fed by":"Freshdesk, HubSpot, Intercom, Salesforce, Zendesk","Watch out for":["It counts waiting as well as work: a ticket left open over a weekend gains two days. Don't price it as agent time.","It's an average, so a few tickets that ran for weeks can move it more than everything else in the month."],"Good for":["Valuing the time people wait less for an IT ticket to be resolved, when AI triage speeds it up."]},{"Key":"support.tickets.closed_count","What it measures":"Total support tickets closed/resolved in the period.","Type":"count","Unit":"tickets","Fed by":"Freshdesk, HubSpot, Intercom, Salesforce, Zendesk"},{"Key":"support.tickets.cost_per_ticket","What it measures":"Blended cost to resolve one support ticket (agent labor plus tooling).","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)","Watch out for":["It's mostly agent time, so value priced from it is freed capacity, not cash.","Price a ticket an agent handles: agent minutes × loaded agent cost, plus overhead. Total support spend ÷ every ticket includes the tickets the AI already resolves, and reads low."],"Good for":["Pricing the tickets a knowledge base or self-service channel keeps from reaching an agent."],"Guide":"https://roiva.ai/docs/how-deflection-value-is-booked"},{"Key":"support.tickets.csat_score","What it measures":"Average customer satisfaction on closed tickets, normalized to 0–1 (Zendesk good/bad → 0/1; Intercom 1–5 → (rating − 1) ÷ 4).","Type":"score","Unit":"0–1","Fed by":"Intercom, Zendesk"},{"Key":"support.tickets.deflected_count","What it measures":"Tickets resolved by self-service or AI without an agent in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"support.tickets.resolution_rate","What it measures":"Percentage of tickets opened in the period that were also closed.","Type":"percentage","Unit":"%","Fed by":"HubSpot, Salesforce"},{"Key":"support.tickets.self_serve_deflection_rate","What it measures":"Percentage of support inquiries resolved without agent involvement.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)","Watch out for":["Count it the same way before and after: the same channels, and the same test for resolved without an agent.","A customer who gave up looks resolved, so the rate can rise while customers are served worse."],"Good for":["Valuing a knowledge base or self-service launch by the change in the share of inquiries resolved without an agent, at this period's ticket volume."],"Guide":"https://roiva.ai/docs/how-deflection-value-is-booked"},{"Key":"support.tickets.volume","What it measures":"Total support tickets opened in the period (help-desk tickets, Intercom conversations, Salesforce cases).","Type":"count","Unit":"tickets","Fed by":"Freshdesk, HubSpot, Intercom, Salesforce, Zendesk","Watch out for":["It rises and falls with your customer base, launches and incidents, whatever the AI does. Compare a count per ticket rather than raw totals.","Each source counts its own unit: a help desk counts tickets, Intercom conversations, Salesforce cases."],"Good for":["The volume a change in a rate is multiplied by, so a busy month isn't read as a loss."],"Guide":"https://roiva.ai/docs/how-value-is-calculated"}]},{"title":"Real estate","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"real_estate.leasing.annual_renewal_rate","What it measures":"Percentage of expiring leases renewed.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"real_estate.leasing.days_to_lease","What it measures":"Average days from inquiry to signed lease.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"real_estate.leasing.staff_hours_per_lease","What it measures":"Leasing staff hours per signed lease (lead response, tours, application processing).","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"real_estate.leasing.units_leased","What it measures":"Units signed to new leases in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"real_estate.leasing.units_up_for_renewal","What it measures":"Units with lease expirations in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"real_estate.maintenance.emergency_repairs_per_month","What it measures":"Unplanned emergency repair incidents per month.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"real_estate.portfolio.annual_yield","What it measures":"Net operating income over a year as a percentage of assets under management.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"real_estate.portfolio.aum","What it measures":"Portfolio value under management at the time of measurement.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"real_estate.portfolio.property_count","What it measures":"Properties in the portfolio.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"real_estate.portfolio.unit_count","What it measures":"Residential or commercial units in the portfolio.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"real_estate.reporting.hours_per_property_monthly","What it measures":"Staff hours per property per month compiling performance and financial reports.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"real_estate.reporting.review_cycle_days","What it measures":"Calendar days between formal portfolio performance reviews.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"real_estate.tenants.contacts_per_unit_monthly","What it measures":"Inbound phone and email contacts per unit per month requiring staff handling.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"real_estate.tenants.minutes_per_contact","What it measures":"Staff minutes to handle one inbound tenant contact.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"real_estate.tenants.satisfaction_score","What it measures":"Average tenant satisfaction score from periodic surveys.","Type":"score","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"real_estate.work_orders.admin_minutes_per_order","What it measures":"Staff minutes per work order on creation, vendor calls and status follow-ups.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"real_estate.work_orders.created_count","What it measures":"Work orders created in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"real_estate.work_orders.resolution_days","What it measures":"Average days from work order submission to resolution.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"Legal","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"legal.compliance.change_response_days","What it measures":"Days from a regulatory change being published to controls updated and staff notified.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"legal.compliance.gaps_prevented","What it measures":"Compliance control gaps identified and closed before becoming findings, in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"legal.compliance.monitoring_hours_per_week","What it measures":"Staff hours per week tracking regulatory publications and updates.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"legal.contracts.missed_renewals_per_year","What it measures":"Contracts that auto-renewed or lapsed unintentionally per year.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"legal.contracts.renewals_due_per_year","What it measures":"Contracts reaching a renewal or expiry date per year.","Type":"count","Unit":"contracts","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"legal.contracts.search_hours_per_week","What it measures":"Staff hours per week locating and retrieving contracts.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"legal.matters.closed_count","What it measures":"Legal matters handled to completion in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"legal.matters.open_count","What it measures":"Legal matters open during the period.","Type":"count","Unit":"matters","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"legal.matters.research_hours_per_matter","What it measures":"Legal research hours per matter.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"legal.outside_counsel.monthly_spend","What it measures":"Monthly spend on outside counsel for matters that could be handled in-house.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"legal.policies.attestation_completion_rate","What it measures":"Percentage of employees who complete required policy attestations by the deadline.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"legal.policies.attestation_findings_per_year","What it measures":"Regulatory or audit findings over a year that cite employees not attesting to required policies, from your examination and audit history.","Type":"count","Unit":"findings","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"legal.training.admin_hours_per_cycle","What it measures":"Staff hours per compliance training cycle on enrollment, reminders, tracking and attestation.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"legal.vendors.onboarded_count","What it measures":"New vendors onboarded through due diligence in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"legal.vendors.onboarding_days","What it measures":"Average days from vendor selection to fully approved and active.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"legal.vendors.portfolio_count","What it measures":"Active vendors in the third-party risk portfolio.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"legal.vendors.review_hours_per_vendor","What it measures":"Staff hours per vendor for a periodic risk reassessment.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"Marketing","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"marketing.budget.destination_pipeline_per_dollar","What it measures":"Pipeline created per dollar of spend in the channels budget was moved to, from the attribution model.","Type":"ratio","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"marketing.budget.reallocated","What it measures":"The period's marketing spend that went to the channels attribution favored instead of the channels it was taken from.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"marketing.budget.source_pipeline_per_dollar","What it measures":"Pipeline created per dollar of spend in the channels budget was taken from, from the attribution model.","Type":"ratio","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"marketing.campaigns.avg_list_size","What it measures":"Average recipients per campaign send.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"marketing.campaigns.conversion_rate","What it measures":"Percentage of campaign recipients who completed the campaign's goal.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"marketing.campaigns.hours_per_launch","What it measures":"Staff hours to configure and launch one campaign.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"marketing.campaigns.launched_count","What it measures":"Marketing campaigns with a start date in the period.","Type":"count","Unit":"campaigns","Fed by":"HubSpot"},{"Key":"marketing.content.hours_per_piece","What it measures":"Staff hours from brief to published asset.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"marketing.content.pieces_per_month","What it measures":"Content pieces produced per month.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"marketing.content.published_count","What it measures":"Blog posts published in the period on the connected CMS.","Type":"count","Unit":"posts","Fed by":"HubSpot"},{"Key":"marketing.emails.open_rate","What it measures":"Opens as a percentage of deliveries across marketing emails published in the period.","Type":"percentage","Unit":"%","Fed by":"HubSpot"},{"Key":"marketing.emails.open_to_conversion_rate","What it measures":"Conversions from marketing email as a percentage of its opens in the period, from your email platform or CRM.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"marketing.nurture.manual_hours_per_week","What it measures":"Staff hours per week on lead follow-up and segmentation done by hand.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"marketing.pipeline.sourced_share","What it measures":"Percentage of total sales pipeline attributed to marketing-sourced leads.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"marketing.reporting.hours_per_week","What it measures":"Staff hours per week on marketing performance reports.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"marketing.seo.research_hours_per_month","What it measures":"Staff hours per month on keyword research and on-page optimization.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"marketing.web.organic_sessions","What it measures":"Website sessions from organic search in the period.","Type":"count","Unit":"sessions","Fed by":"HubSpot"}]},{"title":"Insurance","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"insurance.claims.adjuster_hours_per_claim","What it measures":"Average adjuster hours of hands-on work per claim closed, a straight-through claim counting as none — not the days from first notice of loss to close.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"insurance.claims.auto_adjudication_rate","What it measures":"Share of claims processed straight-through without adjuster review.","Type":"ratio","Unit":"0–1","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"insurance.claims.avg_cycle_days","What it measures":"Average days from first notice of loss to claim closure.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"insurance.claims.incurred_losses","What it measures":"Incurred losses on the affected book in the period.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"insurance.claims.lae_ratio","What it measures":"Loss adjustment expense as a percentage of incurred losses.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"insurance.claims.leakage_rate","What it measures":"Paid loss attributable to fraud or excess adjustments as a percentage of claims paid.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"insurance.claims.processed_count","What it measures":"Claims submitted and processed in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"insurance.fraud.false_positive_siu_referrals","What it measures":"Special investigations unit referrals per month that do not substantiate fraud.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"insurance.fraud.hours_per_siu_investigation","What it measures":"Investigator hours one SIU investigation takes, from your SIU case system's time tracking or your own timing. Not the days the case stays open.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"insurance.policy_servicing.calls_per_month","What it measures":"Inbound policy-servicing call volume per month.","Type":"count","Unit":"calls","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"insurance.policy_servicing.requests_per_month","What it measures":"Policy-servicing requests per month across every channel (phone, portal, app and chat), as the policy administration system counts them.","Type":"count","Unit":"requests","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"insurance.underwriting.earned_premium","What it measures":"Earned premium on the targeted book in the period.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"insurance.underwriting.loss_ratio","What it measures":"Incurred losses as a percentage of earned premium.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"insurance.underwriting.quote_hours","What it measures":"Average underwriter hours from application to bindable quote.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"insurance.underwriting.submission_count","What it measures":"New business submissions reviewed in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"Manufacturing","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"manufacturing.data.reconciliation_hours_per_week","What it measures":"Staff hours per week reconciling data between shop floor systems and the ERP.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"manufacturing.equipment.oee","What it measures":"Overall equipment effectiveness.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"manufacturing.equipment.oee_reporting_hours_per_week","What it measures":"Staff hours per week collecting and compiling OEE data.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"manufacturing.equipment.scheduled_hours_per_month","What it measures":"Hours per month the monitored equipment was scheduled to run.","Type":"count","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"manufacturing.equipment.unplanned_downtime_hours_per_month","What it measures":"Unplanned equipment downtime hours per month.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"manufacturing.maintenance.annual_cost_per_asset","What it measures":"Average annual maintenance cost per asset including reactive repairs and planned servicing.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"manufacturing.maintenance.annual_spend","What it measures":"Annual maintenance spend across monitored assets, planned and reactive.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"manufacturing.maintenance.cost_reduction_rate","What it measures":"Percentage reduction in total maintenance spend from condition-based servicing.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"manufacturing.materials.shortage_incidents_per_month","What it measures":"Production stoppages caused by material shortages per month.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"manufacturing.production.theoretical_capacity_units","What it measures":"Units producible in the period at nameplate capacity.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"manufacturing.production.units_produced","What it measures":"Units produced in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"manufacturing.quality.defect_escape_rate","What it measures":"Percentage of produced units with a defect that reaches the customer.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"manufacturing.quality.first_pass_yield","What it measures":"Percentage of units completing production without defect, rework or scrap.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"manufacturing.quality.scrap_cost_per_month","What it measures":"Monthly scrap and rework cost.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"manufacturing.scheduling.hours_per_week","What it measures":"Staff hours per week building and adjusting production schedules.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"Anthropic","columns":["Key","What it measures","Type","Unit","Fed by"],"optional_fields":["Watch out for","Good for","Guide"],"rows":[{"Key":"anthropic.claude_code.acceptance_rate","What it measures":"Accepted tool actions as a share of those proposed in Anthropic's Claude Code report for the month. Read as engineering.coding_assistant.acceptance_rate when Anthropic is the primary coding-assistant source.","Type":"percentage","Unit":"%","Fed by":"Anthropic"},{"Key":"anthropic.claude_code.acceptances","What it measures":"Tool actions developers accepted in Anthropic's Claude Code report for the month — one accepted edit or write each, not a bundled activity as GitHub counts them. Read as engineering.coding_assistant.acceptances when Anthropic is the primary coding-assistant source.","Type":"count","Unit":"acceptances","Fed by":"Anthropic","Watch out for":["One accepted edit or write each, a smaller unit than a Copilot acceptance, so the two are priced at separate minutes saved, never added up.","It counts edits a developer took, not edits that shipped.","It covers the Claude Code your Anthropic Console organization reports. Claude Code used on Claude Enterprise seats reports separately."],"Good for":["Valuing Claude Code's share of the time saved where a team runs it beside GitHub Copilot, each at its own minutes saved per acceptance."],"Guide":"https://roiva.ai/docs/measuring-ai-coding-assistants"},{"Key":"anthropic.claude_code.active_users_avg","What it measures":"Developers who ran Claude Code on an average day in the month. Read as engineering.coding_assistant.active_users when Anthropic is the primary coding-assistant source.","Type":"average","Unit":"users","Fed by":"Anthropic"},{"Key":"anthropic.claude_code.lines_accepted","What it measures":"Lines of code Claude Code added in the month. Read as engineering.coding_assistant.lines_accepted when Anthropic is the primary coding-assistant source.","Type":"count","Unit":"lines","Fed by":"Anthropic"},{"Key":"anthropic.claude_code.proposals","What it measures":"Tool actions Claude Code proposed in the month, accepted and rejected together. Read as engineering.coding_assistant.suggestions when Anthropic is the primary coding-assistant source.","Type":"count","Unit":"suggestions","Fed by":"Anthropic"},{"Key":"anthropic.usage.cost_per_million_output_tokens","What it measures":"Anthropic's spend for the month over the output tokens it generated, per million. Written to ai.cost.per_million_output_tokens instead when this connection is the primary source for AI usage.","Type":"currency","Unit":"USD","Fed by":"Anthropic"},{"Key":"anthropic.usage.input_tokens","What it measures":"Anthropic's input tokens for the month. Written to ai.usage.input_tokens instead when this connection is the primary source.","Type":"count","Unit":"tokens","Fed by":"Anthropic"},{"Key":"anthropic.usage.model_input_tokens","What it measures":"Input tokens sent to one Claude model in the month; the model is in the observation's dimensions.","Type":"count","Unit":"tokens","Fed by":"Anthropic"},{"Key":"anthropic.usage.model_output_tokens","What it measures":"Output tokens generated by one Claude model in the month; the model is in the observation's dimensions.","Type":"count","Unit":"tokens","Fed by":"Anthropic"},{"Key":"anthropic.usage.model_spend","What it measures":"Anthropic API spend on one model for the month; the model is in the observation's dimensions.","Type":"currency","Unit":"USD","Fed by":"Anthropic"},{"Key":"anthropic.usage.model_total_tokens","What it measures":"Input plus output tokens for one Claude model in the month; the model is in the observation's dimensions.","Type":"count","Unit":"tokens","Fed by":"Anthropic"},{"Key":"anthropic.usage.output_tokens","What it measures":"Anthropic's output tokens for the month. Written to ai.usage.output_tokens instead when this connection is the primary source.","Type":"count","Unit":"tokens","Fed by":"Anthropic"},{"Key":"anthropic.usage.spend","What it measures":"Anthropic's usage spend for the month.","Type":"currency","Unit":"USD","Fed by":"Anthropic"},{"Key":"anthropic.usage.total_tokens","What it measures":"Anthropic's total tokens for the month. Written to ai.usage.total_tokens instead when this connection is the primary source.","Type":"count","Unit":"tokens","Fed by":"Anthropic"}]},{"title":"IT","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"it.audits.hours_per_cycle","What it measures":"IT staff hours per software inventory and license reconciliation audit cycle.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"it.deployments.change_failure_rate","What it measures":"Percentage of deployments causing a rollback or incident.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"it.deployments.count","What it measures":"Production deployments in the period.","Type":"count","Unit":null,"Fed by":"GitHub"},{"Key":"it.deployments.hours_per_deployment","What it measures":"Engineer hours per production deployment, including manual steps, monitoring and validation.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"it.deployments.per_week","What it measures":"Production deployments per week.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"it.helpdesk.avg_users_per_incident","What it measures":"End-users a typical IT incident affects, whether or not it stops them working.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"it.helpdesk.mean_time_to_resolution_hours","What it measures":"Mean hours to resolve a tier-1 IT issue.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"it.helpdesk.tickets_per_month","What it measures":"IT helpdesk tickets per month requiring agent handling.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"it.security.incident_count","What it measures":"Security incidents investigated in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"it.security.incidents_per_year","What it measures":"Security incidents per year.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"it.security.mean_time_to_contain_hours","What it measures":"Mean hours from detection of a security incident to its containment.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"it.security.mean_time_to_detect_hours","What it measures":"Mean hours from a security incident starting to its detection.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"it.software.annual_spend","What it measures":"Total annual software license spend.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"it.software.unused_license_share","What it measures":"Percentage of purchased licenses that are unassigned or unused.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"Retail","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"retail.customers.active_count","What it measures":"Active customers in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"retail.customers.repeat_purchase_rate","What it measures":"Percentage of customers making a second purchase within twelve months.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"retail.customers.retention_rate","What it measures":"Twelve-month customer retention rate.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"retail.inventory.accuracy","What it measures":"Percentage of inventory records matching physical stock.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"retail.inventory.markdown_eligible_sold_value","What it measures":"Full retail value of the seasonal or clearance-eligible stock that sold or cleared in the period, at target price or marked down.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"retail.inventory.sell_through_rate","What it measures":"Of the seasonal or clearance-eligible stock that sold or cleared in the period, the percentage by retail value that sold at or above target price.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"retail.inventory.shrink_rate","What it measures":"Book inventory less what a physical count finds, as a percentage of sales over the same span, from your stock counts.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"retail.orders.avg_value","What it measures":"Average order value.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"retail.orders.count","What it measures":"Orders placed in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"retail.pricing.avg_markdown_depth","What it measures":"Markdown dollars as a percentage of the full retail value of the sales made at a markdown price in the period, or how far below full price a marked-down sale went on average.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"retail.pricing.gross_margin","What it measures":"Gross margin as a percentage of revenue.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"retail.pricing.markdown_rate","What it measures":"Percentage of the period's sales, by full retail value, made at a markdown price.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"retail.web.conversion_rate","What it measures":"Orders as a percentage of website sessions.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"retail.web.session_count","What it measures":"Website sessions in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"Energy","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"energy.assets.critical_count","What it measures":"Critical assets in service: the transformers, breakers, lines and generating units whose failures count as unplanned outages.","Type":"count","Unit":"assets","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"energy.assets.deferred_capex","What it measures":"Asset replacement spend deferred by extending asset life.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"energy.assets.unplanned_outages_per_year","What it measures":"Unplanned critical-asset outage events per year.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"energy.grid.peak_demand_mw","What it measures":"Peak system demand the reserve is held against, in megawatts.","Type":"count","Unit":"MW","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"energy.grid.reserve_capacity_mw","What it measures":"Reserve generation capacity held, in megawatts.","Type":"count","Unit":"MW","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"energy.load_forecasting.mape","What it measures":"Mean absolute percentage error of the load forecast.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"energy.rate_cases.count","What it measures":"Rate cases and major regulatory filings prepared in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"energy.rate_cases.external_counsel_hours","What it measures":"Outside counsel hours billed for a rate case or major regulatory filing.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"energy.rate_cases.prep_hours","What it measures":"Internal staff hours to prepare a rate case or major regulatory filing.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"energy.reliability.saidi_minutes","What it measures":"System Average Interruption Duration Index, in outage minutes per customer per year.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"energy.storms.call_volume_index","What it measures":"Inbound call volume during a typical major storm event.","Type":"count","Unit":"index","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"energy.storms.events_per_year","What it measures":"Major storm or high-call-volume outage events per year.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"energy.storms.notification_hours_per_event","What it measures":"Staff hours spent communicating outage status to customers during one major storm event.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"Hospitality","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"hospitality.bookings.direct_share","What it measures":"Share of bookings made through direct channels.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hospitality.food_beverage.cost_of_goods","What it measures":"Food and beverage cost of goods in the period.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hospitality.food_beverage.covers_served","What it measures":"Covers served in the period.","Type":"count","Unit":"covers","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hospitality.food_beverage.prep_hours","What it measures":"Kitchen prep hours in the period.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hospitality.food_beverage.waste_share","What it measures":"Food cost lost to waste and spoilage as a percentage of food and beverage cost of goods.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hospitality.guests.ancillary_spend_per_guest","What it measures":"Average ancillary spend per guest.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hospitality.guests.count","What it measures":"Guests in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hospitality.housekeeping.minutes_per_room_turn","What it measures":"Housekeeping labor minutes per room turn.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hospitality.housekeeping.rooms_turned","What it measures":"Room turns (checkouts and cleans) in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hospitality.revenue_management.hours_per_week","What it measures":"Revenue manager hours per week on rate setting and reporting.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hospitality.rooms.available_room_nights","What it measures":"Available room-nights in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hospitality.rooms.revenue","What it measures":"Total room revenue across all channels in the period.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"hospitality.rooms.revpar","What it measures":"Revenue per available room.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"Logistics","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"logistics.customer_service.minutes_per_wismo_contact","What it measures":"Minutes of agent work one \"Where Is My Order\" contact takes, from a time study or your help desk's time tracking on those contacts alone. Not every ticket's average.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"logistics.customer_service.wismo_contacts_per_month","What it measures":"Where-is-my-order inbound contacts per month.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"logistics.deliveries.on_time_rate","What it measures":"Percentage of deliveries completed within the promised window.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"logistics.drivers.count","What it measures":"Last-mile drivers in the measured operation.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"logistics.drivers.operating_hours","What it measures":"Driver operating hours in the period.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"logistics.drivers.stops_per_hour","What it measures":"Completed delivery stops per driver per labor hour.","Type":"count","Unit":"stops","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"logistics.fleet.annual_insurance_premium","What it measures":"Annual commercial auto and cargo insurance premium across the fleet.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"logistics.fleet.maintenance_hours_per_month","What it measures":"Technician hours per month on scheduled and reactive fleet maintenance.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"logistics.fleet.miles","What it measures":"Total fleet miles in the period.","Type":"count","Unit":"miles","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"logistics.fleet.roadside_events_per_year","What it measures":"Unplanned roadside breakdown events per year.","Type":"count","Unit":"events","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"logistics.fleet.stop_count","What it measures":"Delivery and pickup stops the fleet completed in the period.","Type":"count","Unit":"stops","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"logistics.fleet.vehicle_count","What it measures":"Vehicles in service across the fleet.","Type":"count","Unit":"vehicles","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"logistics.safety.preventable_accidents_per_million_miles","What it measures":"Preventable accident frequency per million miles driven.","Type":"count","Unit":"accidents","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"Salesforce","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"salesforce.cases.avg_resolution_days","What it measures":"Salesforce's average case resolution time for the month. Written to support.tickets.avg_resolution_days instead when this connection is the primary source.","Type":"duration","Unit":"days","Fed by":"Salesforce"},{"Key":"salesforce.cases.closed_count","What it measures":"Salesforce's support tickets closed for the month. Written to support.tickets.closed_count instead when this connection is the primary source.","Type":"count","Unit":"tickets","Fed by":"Salesforce"},{"Key":"salesforce.cases.open_count","What it measures":"Cases open in Salesforce at sync time, a snapshot rather than a period total, written once per month and rewritten on every sync.","Type":"count","Unit":null,"Fed by":"Salesforce"},{"Key":"salesforce.cases.resolution_rate","What it measures":"Salesforce's case resolution rate for the month. Written to support.tickets.resolution_rate instead when this connection is the primary source.","Type":"percentage","Unit":"%","Fed by":"Salesforce"},{"Key":"salesforce.cases.volume","What it measures":"Salesforce's support tickets opened for the month. Written to support.tickets.volume instead when this connection is the primary source.","Type":"count","Unit":"tickets","Fed by":"Salesforce"},{"Key":"salesforce.opportunities.avg_sales_cycle_days","What it measures":"Salesforce's average sales cycle for the month. Written to crm.deals.avg_sales_cycle_days instead when this connection is the primary source.","Type":"duration","Unit":"days","Fed by":"Salesforce"},{"Key":"salesforce.opportunities.avg_value","What it measures":"Salesforce's average won opportunity size for the month. Written to crm.deals.avg_value instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"Salesforce"},{"Key":"salesforce.opportunities.lost_count","What it measures":"Salesforce's lost deals for the month. Written to crm.deals.lost_count instead when this connection is the primary source.","Type":"count","Unit":"deals","Fed by":"Salesforce"},{"Key":"salesforce.opportunities.open_count","What it measures":"Opportunities open in Salesforce at sync time, a snapshot rather than a period total, written once per month and rewritten on every sync.","Type":"count","Unit":null,"Fed by":"Salesforce"},{"Key":"salesforce.opportunities.open_value","What it measures":"Value of the opportunities open in Salesforce at sync time, a snapshot rather than a period total, written once per month and rewritten on every sync.","Type":"currency","Unit":"USD","Fed by":"Salesforce"},{"Key":"salesforce.opportunities.win_rate","What it measures":"Salesforce's deal win rate for the month. Written to crm.deals.win_rate instead when this connection is the primary source.","Type":"percentage","Unit":"%","Fed by":"Salesforce"},{"Key":"salesforce.opportunities.won_count","What it measures":"Salesforce's won deals for the month. Written to crm.deals.won_count instead when this connection is the primary source.","Type":"count","Unit":"deals","Fed by":"Salesforce"},{"Key":"salesforce.opportunities.won_value","What it measures":"Salesforce's won deal value for the month. Written to crm.deals.won_value instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"Salesforce"}]},{"title":"Education","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"education.admissions.admitted_count","What it measures":"Applicants offered admission in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"education.admissions.applicant_count","What it measures":"Applicants in the enrollment cycle.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"education.admissions.decision_days","What it measures":"Average days from application received to decision.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"education.admissions.review_minutes_per_application","What it measures":"Average staff minutes of hands-on work to review and process one application — not the days it waits for a decision.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"education.admissions.yield_rate","What it measures":"Percentage of admitted students who enroll.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"education.courses.dfw_rate","What it measures":"Percentage of students earning a D or F or withdrawing.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"education.enrollment.retention_rate","What it measures":"Year-over-year student retention rate.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"education.enrollment.student_count","What it measures":"Students enrolled in the affected courses or programs.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"education.faculty.admin_hours_per_week","What it measures":"Faculty hours per week on course administration.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"education.faculty.count","What it measures":"Faculty using AI course-operations tools.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"education.outreach.hours_per_week","What it measures":"Staff hours per week spent identifying at-risk students and reaching out to them.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"education.tutoring.cost_per_student","What it measures":"Cost of tutoring services per enrolled student in the period.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"GitHub","columns":["Key","What it measures","Type","Unit","Fed by"],"optional_fields":["Watch out for","Good for","Guide"],"rows":[{"Key":"github.copilot.acceptance_rate","What it measures":"Accepted code activities as a share of code generation activities in GitHub's Copilot organization report for the month. Read as engineering.coding_assistant.acceptance_rate when GitHub is the primary coding-assistant source.","Type":"percentage","Unit":"%","Fed by":"GitHub"},{"Key":"github.copilot.active_users_avg","What it measures":"Daily active Copilot users in GitHub's organization report, averaged over the month. Read as engineering.coding_assistant.active_users when GitHub is the primary coding-assistant source.","Type":"average","Unit":null,"Fed by":"GitHub"},{"Key":"github.copilot.lines_accepted","What it measures":"Lines of code accepted in GitHub's Copilot organization report for the month. Read as engineering.coding_assistant.lines_accepted when GitHub is the primary coding-assistant source.","Type":"count","Unit":null,"Fed by":"GitHub"},{"Key":"github.copilot.suggestions_accepted","What it measures":"Code acceptance activities in GitHub's Copilot organization report for the month. Read as engineering.coding_assistant.acceptances when GitHub is the primary coding-assistant source.","Type":"count","Unit":null,"Fed by":"GitHub","Watch out for":["One acceptance activity can bundle several completions, so it isn't the same unit as a Claude Code accepted edit. The two are priced at separate minutes saved, never added up.","It counts code a developer took, not code that shipped: an accepted suggestion can be rewritten or deleted later."],"Good for":["Valuing Copilot's share of the time saved where a team runs it beside Claude Code, each at its own minutes saved per acceptance."],"Guide":"https://roiva.ai/docs/measuring-ai-coding-assistants"},{"Key":"github.copilot.suggestions_shown","What it measures":"Code generation activities in GitHub's Copilot organization report for the month. Read as engineering.coding_assistant.suggestions when GitHub is the primary coding-assistant source.","Type":"count","Unit":"suggestions","Fed by":"GitHub"},{"Key":"github.cost.copilot_spend","What it measures":"GitHub's Copilot and AI-credit net spend for the month. Written as ai.cost.spend when this connection is the primary AI-cost source.","Type":"currency","Unit":"USD","Fed by":"GitHub"},{"Key":"github.cost.product_spend","What it measures":"GitHub spend on one product (Actions, Copilot, Packages, …) for the month; the product is in the observation's dimensions.","Type":"currency","Unit":"USD","Fed by":"GitHub"},{"Key":"github.cost.total_spend","What it measures":"GitHub's total spend for the month, every product included.","Type":"currency","Unit":"USD","Fed by":"GitHub"},{"Key":"github.deployments.count","What it measures":"Deployments GitHub recorded to a production environment in the month. Written to it.deployments.count instead when this connection is the primary source for deployments.","Type":"count","Unit":"deployments","Fed by":"GitHub"},{"Key":"github.pull_requests.additions_avg","What it measures":"GitHub's average lines added per pull request for the month.","Type":"average","Unit":null,"Fed by":"GitHub"},{"Key":"github.pull_requests.cycle_time_avg","What it measures":"GitHub's average pull request cycle time for the month.","Type":"duration","Unit":null,"Fed by":"GitHub"},{"Key":"github.pull_requests.merged_count","What it measures":"GitHub's pull requests merged count for the month.","Type":"count","Unit":null,"Fed by":"GitHub"}]},{"title":"Operations","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"operations.applications.processed_count","What it measures":"Applications reviewed and decided in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"operations.documents.data_entry_minutes_per_document","What it measures":"Staff minutes to key the data from one document.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"operations.documents.extraction_accuracy","What it measures":"Percentage of extracted fields that are correct without human correction.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"operations.documents.processed_count","What it measures":"Documents (PDFs, forms, emails) processed by the extraction pipeline in the period.","Type":"count","Unit":"documents","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"operations.forecasting.accuracy","What it measures":"Accuracy of the operating forecast (cash flow, demand or pipeline) against actuals.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"operations.forecasting.cycles","What it measures":"Forecast cycles run in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"operations.forecasting.hours_per_cycle","What it measures":"Staff hours to produce one complete forecast cycle.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"operations.processing.error_rate","What it measures":"Percentage of processed items that contained an error or needed manual correction.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"operations.reporting.delivery_lag_days","What it measures":"Days from period close to delivery of the period's report.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"operations.reporting.distribution_lag_hours","What it measures":"Hours between data availability and report delivery to stakeholders.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"operations.reporting.hours_per_week","What it measures":"Staff hours per week spent compiling and distributing reports by hand.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"operations.reporting.reports_automated","What it measures":"Distinct report types fully automated and removed from manual production.","Type":"count","Unit":"reports","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"OpenAI","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"openai.usage.cost_per_million_output_tokens","What it measures":"OpenAI's spend for the month over the output tokens it generated, per million. Written to ai.cost.per_million_output_tokens instead when this connection is the primary source for AI usage.","Type":"currency","Unit":"USD","Fed by":"OpenAI"},{"Key":"openai.usage.cost_per_request","What it measures":"OpenAI's spend for the month over the requests it served. Written to ai.cost.per_request instead when this connection is the primary source for AI usage.","Type":"currency","Unit":"USD","Fed by":"OpenAI"},{"Key":"openai.usage.input_tokens","What it measures":"OpenAI's input tokens for the month. Written to ai.usage.input_tokens instead when this connection is the primary source.","Type":"count","Unit":"tokens","Fed by":"OpenAI"},{"Key":"openai.usage.model_input_tokens","What it measures":"Input tokens sent to one OpenAI model in the month; the model is in the observation's dimensions.","Type":"count","Unit":"tokens","Fed by":"OpenAI"},{"Key":"openai.usage.model_output_tokens","What it measures":"Output tokens generated by one OpenAI model in the month; the model is in the observation's dimensions.","Type":"count","Unit":"tokens","Fed by":"OpenAI"},{"Key":"openai.usage.model_request_count","What it measures":"API requests to one OpenAI model in the month; the model is in the observation's dimensions.","Type":"count","Unit":"requests","Fed by":"OpenAI"},{"Key":"openai.usage.model_total_tokens","What it measures":"Input plus output tokens for one OpenAI model in the month; the model is in the observation's dimensions.","Type":"count","Unit":"tokens","Fed by":"OpenAI"},{"Key":"openai.usage.output_tokens","What it measures":"OpenAI's output tokens for the month. Written to ai.usage.output_tokens instead when this connection is the primary source.","Type":"count","Unit":"tokens","Fed by":"OpenAI"},{"Key":"openai.usage.request_count","What it measures":"OpenAI's API requests for the month. Written to ai.usage.request_count instead when this connection is the primary source.","Type":"count","Unit":"requests","Fed by":"OpenAI"},{"Key":"openai.usage.spend","What it measures":"OpenAI's usage spend for the month.","Type":"currency","Unit":"USD","Fed by":"OpenAI"},{"Key":"openai.usage.total_tokens","What it measures":"OpenAI's total tokens for the month. Written to ai.usage.total_tokens instead when this connection is the primary source.","Type":"count","Unit":"tokens","Fed by":"OpenAI"}]},{"title":"Media","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"media.audience.avg_active_users","What it measures":"Average monthly active users on the service.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"media.audience.monthly_watch_hours_per_user","What it measures":"Average monthly watch hours per active user.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"media.localization.cost_per_episode","What it measures":"Average cost to localize one episode (dubbing, subtitling and QC).","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"media.localization.episodes_localized","What it measures":"Episodes localized into additional languages in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"media.post_production.days_per_episode","What it measures":"Days from picture lock to delivery per episode.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"media.post_production.episode_count","What it measures":"Episodes entering post-production in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"media.rights.admin_hours_per_week","What it measures":"Staff hours per week on rights tracking, metadata correction and catalog reconciliation.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"media.royalties.dispute_rate","What it measures":"Share of royalty statements requiring dispute or correction.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"media.royalties.statement_count","What it measures":"Royalty statements issued in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"AI","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"ai.cost.per_million_output_tokens","What it measures":"All-in AI spend per million output tokens: everything the provider billed in the period (input, cache and output charges) divided by the output tokens it generated. The unit of AI Spend Optimization for a provider that reports tokens but no request count, such as Anthropic.","Type":"currency","Unit":"USD","Fed by":"Anthropic, OpenAI"},{"Key":"ai.cost.per_request","What it measures":"All-in AI spend per API request: everything the provider billed in the period divided by the requests made to it. The unit of AI Spend Optimization for a provider that reports request counts and its own spend, such as OpenAI.","Type":"currency","Unit":"USD","Fed by":"OpenAI"},{"Key":"ai.cost.spend","What it measures":"Total AI provider spend in the period — the AI-cost source's, or every one's added up when the account reads them combined.","Type":"currency","Unit":"USD","Fed by":"Anthropic, GitHub, OpenAI"},{"Key":"ai.outputs.human_review_rate","What it measures":"Percentage of AI outputs routed to a human reviewer before being acted on.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"ai.usage.input_tokens","What it measures":"Total prompt/input tokens consumed across the primary AI provider in the period.","Type":"count","Unit":"tokens","Fed by":"Anthropic, OpenAI"},{"Key":"ai.usage.output_tokens","What it measures":"Total completion/output tokens generated by the primary AI provider in the period.","Type":"count","Unit":"tokens","Fed by":"Anthropic, OpenAI"},{"Key":"ai.usage.request_count","What it measures":"Number of API requests made to the primary AI provider in the period. OpenAI and Gemini report it; Anthropic reports tokens but no request count.","Type":"count","Unit":"requests","Fed by":"OpenAI"},{"Key":"ai.usage.total_tokens","What it measures":"Total tokens (input + output) used through the primary AI provider in the period.","Type":"count","Unit":"tokens","Fed by":"Anthropic, OpenAI"}]},{"title":"Government","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"government.cases.decision_days","What it measures":"Average days from case intake to eligibility decision.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"government.cases.processed_count","What it measures":"Benefit applications and cases processed in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"government.cases.staff_hours_per_case","What it measures":"Average caseworker hours of hands-on work per case decided — not the days it waits for a decision.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"government.constituent_services.calls_per_month","What it measures":"Inbound constituent contacts per month.","Type":"count","Unit":"calls","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"government.constituent_services.requests_per_month","What it measures":"Constituent service requests per month across every channel (phone, web, app and chat), as the 311 or case system counts them.","Type":"count","Unit":"requests","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"government.permits.decision_days","What it measures":"Average days from permit intake to decision.","Type":"duration","Unit":"days","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"government.permits.processed_count","What it measures":"Permit applications processed in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"government.permits.staff_hours_per_permit","What it measures":"Average staff hours of hands-on work per permit decided — not the days it waits for a decision.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"NetSuite","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"netsuite.financials.expenses","What it measures":"NetSuite's expenses for the month. Written to finance.pnl.expenses instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"NetSuite"},{"Key":"netsuite.financials.net_income","What it measures":"NetSuite's net income for the month. Written to finance.pnl.net_income instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"NetSuite"},{"Key":"netsuite.financials.revenue","What it measures":"NetSuite's revenue for the month. Written to finance.pnl.revenue instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"NetSuite"},{"Key":"netsuite.invoices.count","What it measures":"NetSuite's invoices created for the month. Written to finance.invoices.count instead when this connection is the primary source.","Type":"count","Unit":"invoices","Fed by":"NetSuite"},{"Key":"netsuite.invoices.paid_count","What it measures":"NetSuite's invoices paid for the month. Written to finance.invoices.paid_count instead when this connection is the primary source.","Type":"count","Unit":"invoices","Fed by":"NetSuite"},{"Key":"netsuite.invoices.volume","What it measures":"NetSuite's invoice volume for the month. Written to finance.invoices.volume instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"NetSuite"},{"Key":"netsuite.vendor_bills.count","What it measures":"NetSuite's bills received for the month. Written to finance.bills.count instead when this connection is the primary source.","Type":"count","Unit":"bills","Fed by":"NetSuite"},{"Key":"netsuite.vendor_bills.volume","What it measures":"NetSuite's bill volume for the month. Written to finance.bills.volume instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"NetSuite"}]},{"title":"Pipedrive","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"pipedrive.deals.avg_sales_cycle_days","What it measures":"Pipedrive's average sales cycle for the month. Written to crm.deals.avg_sales_cycle_days instead when this connection is the primary source.","Type":"duration","Unit":"days","Fed by":"Pipedrive"},{"Key":"pipedrive.deals.avg_value","What it measures":"Pipedrive's average won deal size for the month. Written to crm.deals.avg_value instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"Pipedrive"},{"Key":"pipedrive.deals.lost_count","What it measures":"Pipedrive's lost deals for the month. Written to crm.deals.lost_count instead when this connection is the primary source.","Type":"count","Unit":"deals","Fed by":"Pipedrive"},{"Key":"pipedrive.deals.open_count","What it measures":"Deals open in Pipedrive at sync time, a snapshot rather than a period total, written once per month and rewritten on every sync.","Type":"count","Unit":null,"Fed by":"Pipedrive"},{"Key":"pipedrive.deals.open_value","What it measures":"Value of the deals open in Pipedrive at sync time, a snapshot rather than a period total, written once per month and rewritten on every sync.","Type":"currency","Unit":"USD","Fed by":"Pipedrive"},{"Key":"pipedrive.deals.win_rate","What it measures":"Pipedrive's deal win rate for the month. Written to crm.deals.win_rate instead when this connection is the primary source.","Type":"percentage","Unit":"%","Fed by":"Pipedrive"},{"Key":"pipedrive.deals.won_count","What it measures":"Pipedrive's won deals for the month. Written to crm.deals.won_count instead when this connection is the primary source.","Type":"count","Unit":"deals","Fed by":"Pipedrive"},{"Key":"pipedrive.deals.won_value","What it measures":"Pipedrive's won deal value for the month. Written to crm.deals.won_value instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"Pipedrive"}]},{"title":"QuickBooks","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"quickbooks.bills.count","What it measures":"QuickBooks's bills received for the month. Written to finance.bills.count instead when this connection is the primary source.","Type":"count","Unit":"bills","Fed by":"QuickBooks"},{"Key":"quickbooks.bills.volume","What it measures":"QuickBooks's bill volume for the month. Written to finance.bills.volume instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"QuickBooks"},{"Key":"quickbooks.financials.expenses","What it measures":"QuickBooks's expenses for the month. Written to finance.pnl.expenses instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"QuickBooks"},{"Key":"quickbooks.financials.net_income","What it measures":"QuickBooks's net income for the month. Written to finance.pnl.net_income instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"QuickBooks"},{"Key":"quickbooks.financials.revenue","What it measures":"QuickBooks's revenue for the month. Written to finance.pnl.revenue instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"QuickBooks"},{"Key":"quickbooks.invoices.count","What it measures":"QuickBooks's invoices created for the month. Written to finance.invoices.count instead when this connection is the primary source.","Type":"count","Unit":"invoices","Fed by":"QuickBooks"},{"Key":"quickbooks.invoices.paid_count","What it measures":"QuickBooks's invoices paid for the month. Written to finance.invoices.paid_count instead when this connection is the primary source.","Type":"count","Unit":"invoices","Fed by":"QuickBooks"},{"Key":"quickbooks.invoices.volume","What it measures":"QuickBooks's invoice volume for the month. Written to finance.invoices.volume instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"QuickBooks"}]},{"title":"Telecom","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"telecom.customer_care.calls_per_month","What it measures":"Inbound customer care calls per month.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"telecom.customer_care.contacts_per_month","What it measures":"Customer care contacts per month across every channel: calls, chat, app and self-service.","Type":"count","Unit":"contacts","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"telecom.customer_care.cost_per_subscriber","What it measures":"Customer care cost per subscriber per period.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"telecom.field_service.truck_rolls_per_month","What it measures":"Field dispatch events per month.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"telecom.network.incident_count","What it measures":"Network incidents in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"telecom.network.mttr_minutes","What it measures":"Mean minutes to recover from a network incident.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"telecom.retention.cost_per_retained_subscriber","What it measures":"Average cost of retention offers per subscriber retained.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"telecom.retention.retained_subscribers","What it measures":"Subscribers retained through save offers in the period.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"Xero","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"xero.bills.count","What it measures":"Xero's bills received for the month. Written to finance.bills.count instead when this connection is the primary source.","Type":"count","Unit":"bills","Fed by":"Xero"},{"Key":"xero.bills.volume","What it measures":"Xero's bill volume for the month. Written to finance.bills.volume instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"Xero"},{"Key":"xero.financials.expenses","What it measures":"Xero's expenses for the month. Written to finance.pnl.expenses instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"Xero"},{"Key":"xero.financials.net_income","What it measures":"Xero's net income for the month. Written to finance.pnl.net_income instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"Xero"},{"Key":"xero.financials.revenue","What it measures":"Xero's revenue for the month. Written to finance.pnl.revenue instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"Xero"},{"Key":"xero.invoices.count","What it measures":"Xero's invoices created for the month. Written to finance.invoices.count instead when this connection is the primary source.","Type":"count","Unit":"invoices","Fed by":"Xero"},{"Key":"xero.invoices.paid_count","What it measures":"Xero's invoices paid for the month. Written to finance.invoices.paid_count instead when this connection is the primary source.","Type":"count","Unit":"invoices","Fed by":"Xero"},{"Key":"xero.invoices.volume","What it measures":"Xero's invoice volume for the month. Written to finance.invoices.volume instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"Xero"}]},{"title":"Billing","columns":["Key","What it measures","Type","Unit","Fed by"],"optional_fields":["Watch out for","Good for","Guide"],"rows":[{"Key":"billing.charges.count","What it measures":"Charges in the period that kept revenue, in the currency the account settles in.","Type":"count","Unit":"charges","Fed by":"Stripe"},{"Key":"billing.charges.volume","What it measures":"What the period's charges kept, captured less refunded, tax included, in the currency the account settles in.","Type":"currency","Unit":"USD","Fed by":"Stripe"},{"Key":"billing.subscriptions.active_count","What it measures":"Subscriptions active at the end of the period.","Type":"count","Unit":"subscriptions","Fed by":"Stripe","Watch out for":["A count at the end of the period, not an average over it.","Check whether your billing system counts trials, paused or past-due subscriptions as active, and keep that the same before and after."],"Good for":["The base a change in churn, or in a cost per subscriber, is multiplied by."],"Guide":"https://roiva.ai/docs/how-value-is-calculated"},{"Key":"billing.subscriptions.churn_rate","What it measures":"Subscriptions canceled in the period as a percentage of those active at its start. Absent for a period with nothing active at the start.","Type":"percentage","Unit":"%","Fed by":"Stripe","Watch out for":["It moves with price, product and competitors, so a formula valuing its change takes only the share of it you credit to the initiative.","It's monthly. Compare it with a monthly baseline, never an annual rate.","On a small base a few cancellations move it a lot. Read it over several months."],"Good for":["Valuing churn prediction and save plays by the subscribers kept."],"Guide":"https://roiva.ai/docs/how-value-is-calculated"},{"Key":"billing.subscriptions.churned_count","What it measures":"Subscriptions canceled in the period.","Type":"count","Unit":"subscriptions","Fed by":"Stripe"},{"Key":"billing.subscriptions.mrr","What it measures":"Monthly recurring revenue from subscriptions active at the end of the period.","Type":"currency","Unit":"USD","Fed by":"Stripe","Watch out for":["A level at the end of the period, what active subscriptions bill each month, not the revenue the month earned.","It's revenue, not return: a formula books what you keep of it at your contribution margin."],"Good for":["Pricing a change in churn or net retention in recurring revenue kept."],"Guide":"https://roiva.ai/docs/how-value-is-calculated"},{"Key":"billing.subscriptions.new_count","What it measures":"Subscriptions created in the period.","Type":"count","Unit":"subscriptions","Fed by":"Stripe"}]},{"title":"Engineering","columns":["Key","What it measures","Type","Unit","Fed by"],"optional_fields":["Watch out for","Good for","Guide"],"rows":[{"Key":"engineering.coding_assistant.acceptance_rate","What it measures":"Accepted suggestions as a share of the suggestions offered in the period.","Type":"percentage","Unit":"%","Fed by":"Anthropic, Claude Enterprise, GitHub"},{"Key":"engineering.coding_assistant.acceptances","What it measures":"Suggestions developers accepted from an AI coding assistant in the period.","Type":"count","Unit":"acceptances","Fed by":"Anthropic, Claude Enterprise, GitHub","Watch out for":["Copilot counts acceptance activities, which can bundle several completions, and Claude Code counts single accepted edits, so totals from two tools aren't like for like. Compare one tool with itself, month to month.","It counts code a developer took, not code that shipped: an accepted suggestion can be rewritten or deleted later.","It rises with the number of developers using the tool. Read it beside active users before calling a rise better use."],"Good for":["Valuing the developer time an assistant saves: accepted suggestions × minutes saved per acceptance × your developer hourly rate.","Following adoption after a rollout, beside active users."],"Guide":"https://roiva.ai/docs/measuring-ai-coding-assistants"},{"Key":"engineering.coding_assistant.active_users","What it measures":"Developers using an AI coding assistant on an average day in the period. Summed across assistants when read combined.","Type":"average","Unit":"users","Fed by":"Anthropic, Claude Enterprise, GitHub"},{"Key":"engineering.coding_assistant.lines_accepted","What it measures":"Lines of code developers accepted from an AI coding assistant in the period.","Type":"count","Unit":"lines","Fed by":"Anthropic, Claude Enterprise, GitHub, OpenAI Codex","Watch out for":["A line is a poor measure of effort: a hard line and an easy one count the same, and a line the assistant wrote isn't always one anyone would have written.","Each tool counts its own lines: Copilot the lines accepted, Claude Code the lines it added, Codex the lines it added that developers kept. Don't add them up or compare them across tools."],"Good for":["Valuing the time saved by an assistant that reports no count of accepted suggestions, such as OpenAI's Codex. Where acceptances are reported, they're the better measure."],"Guide":"https://roiva.ai/docs/measuring-ai-coding-assistants"},{"Key":"engineering.coding_assistant.suggestions","What it measures":"Code suggestions an AI coding assistant offered developers in the period.","Type":"count","Unit":"suggestions","Fed by":"Anthropic, Claude Enterprise, GitHub"},{"Key":"engineering.pull_requests.cycle_time_avg","What it measures":"Average hours from a pull request being opened to being merged, over the pull requests merged in the period.","Type":"duration","Unit":"hours","Fed by":"GitHub"},{"Key":"engineering.pull_requests.merged_count","What it measures":"Pull requests merged in the period.","Type":"count","Unit":"pull requests","Fed by":"GitHub"}]},{"title":"Stripe","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"stripe.charges.count","What it measures":"Stripe's charges for the month that kept revenue, in the currency the account settles in.","Type":"count","Unit":null,"Fed by":"Stripe"},{"Key":"stripe.charges.volume","What it measures":"What Stripe's charges kept for the month, captured less refunded, tax included, in the currency the account settles in. Charges in other currencies aren't counted.","Type":"currency","Unit":"USD","Fed by":"Stripe"},{"Key":"stripe.subscriptions.active_count","What it measures":"Stripe's active subscriptions for the month. Written to billing.subscriptions.active_count instead when this connection is the primary source.","Type":"count","Unit":"subscriptions","Fed by":"Stripe"},{"Key":"stripe.subscriptions.churn_rate","What it measures":"Stripe's subscription churn rate for the month. Written to billing.subscriptions.churn_rate instead when this connection is the primary source.","Type":"percentage","Unit":"%","Fed by":"Stripe"},{"Key":"stripe.subscriptions.churned_count","What it measures":"Stripe's churned subscriptions for the month. Written to billing.subscriptions.churned_count instead when this connection is the primary source.","Type":"count","Unit":"subscriptions","Fed by":"Stripe"},{"Key":"stripe.subscriptions.mrr","What it measures":"Stripe's monthly recurring revenue for the month. Written to billing.subscriptions.mrr instead when this connection is the primary source.","Type":"currency","Unit":"USD","Fed by":"Stripe"},{"Key":"stripe.subscriptions.new_count","What it measures":"Stripe's new subscriptions for the month. Written to billing.subscriptions.new_count instead when this connection is the primary source.","Type":"count","Unit":"subscriptions","Fed by":"Stripe"}]},{"title":"Intercom","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"intercom.conversations.agent_resolved_count","What it measures":"Intercom's closed conversations for the month that no AI deflection rule on the connection matched, plus the ones a rule matched whose customer came back. Read as support.tickets.agent_resolved_count when this connection is the primary source.","Type":"count","Unit":"tickets","Fed by":"Intercom"},{"Key":"intercom.conversations.avg_first_response_hours","What it measures":"Intercom's average ticket first response time for the month. Written to support.tickets.avg_first_response_hours instead when this connection is the primary source.","Type":"duration","Unit":"hours","Fed by":"Intercom"},{"Key":"intercom.conversations.avg_resolution_days","What it measures":"Intercom's average time from a conversation opening to closing for the month, in days (Intercom reports hours; the computer converts). Read as support.tickets.avg_resolution_days when this connection is the primary source.","Type":"duration","Unit":"days","Fed by":"Intercom"},{"Key":"intercom.conversations.closed_count","What it measures":"Intercom's support tickets closed for the month. Written to support.tickets.closed_count instead when this connection is the primary source.","Type":"count","Unit":"tickets","Fed by":"Intercom"},{"Key":"intercom.conversations.csat_score","What it measures":"Intercom's average conversation rating for the month on the 0–1 scale the support keys use (Intercom rates 1–5; the computer converts). Read as support.tickets.csat_score when this connection is the primary source.","Type":"score","Unit":"0–1","Fed by":"Intercom"},{"Key":"intercom.conversations.volume","What it measures":"Intercom's support tickets opened for the month. Written to support.tickets.volume instead when this connection is the primary source.","Type":"count","Unit":"tickets","Fed by":"Intercom"}]},{"title":"Zendesk","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"zendesk.tickets.agent_resolved_count","What it measures":"Zendesk's solved and closed tickets for the month that no AI deflection rule on the connection matched, plus the ones a rule matched whose customer came back. Read as support.tickets.agent_resolved_count when this connection is the primary source.","Type":"count","Unit":"tickets","Fed by":"Zendesk"},{"Key":"zendesk.tickets.avg_first_response_hours","What it measures":"Zendesk's average ticket first response time for the month. Written to support.tickets.avg_first_response_hours instead when this connection is the primary source.","Type":"duration","Unit":"hours","Fed by":"Zendesk"},{"Key":"zendesk.tickets.avg_resolution_days","What it measures":"Zendesk's average time from a ticket's creation to its solve for the month, in days (the computer converts from hours). Read as support.tickets.avg_resolution_days when this connection is the primary source.","Type":"duration","Unit":"days","Fed by":"Zendesk"},{"Key":"zendesk.tickets.csat_score","What it measures":"Zendesk's ticket CSAT score for the month. Written to support.tickets.csat_score instead when this connection is the primary source.","Type":"score","Unit":"0–1","Fed by":"Zendesk"},{"Key":"zendesk.tickets.solved_count","What it measures":"Zendesk's support tickets closed for the month. Written to support.tickets.closed_count instead when this connection is the primary source.","Type":"count","Unit":"tickets","Fed by":"Zendesk"},{"Key":"zendesk.tickets.volume","What it measures":"Zendesk's support tickets opened for the month. Written to support.tickets.volume instead when this connection is the primary source.","Type":"count","Unit":"tickets","Fed by":"Zendesk"}]},{"title":"Claude Enterprise","columns":["Key","What it measures","Type","Unit","Fed by"],"optional_fields":["Watch out for","Good for","Guide"],"rows":[{"Key":"claude_enterprise.claude_code.acceptance_rate","What it measures":"Accepted tool actions as a share of those proposed across the Claude Enterprise organization for the month. Read as engineering.coding_assistant.acceptance_rate when Claude Enterprise is the primary coding-assistant source.","Type":"percentage","Unit":"%","Fed by":"Claude Enterprise"},{"Key":"claude_enterprise.claude_code.acceptances","What it measures":"Edits and writes developers accepted in Claude Code across the Claude Enterprise organization for the month — one accepted tool action each, the same unit as Anthropic's Claude Code report. Read as engineering.coding_assistant.acceptances when Claude Enterprise is the primary coding-assistant source.","Type":"count","Unit":"acceptances","Fed by":"Claude Enterprise","Watch out for":["One accepted edit or write each, a smaller unit than a Copilot acceptance, so the two are priced at separate minutes saved, never added up.","It covers Claude Code on Claude Enterprise seats only. If your developers also use Claude Code through an Anthropic Console organization, Roiva reads one of the two, not both."],"Good for":["Valuing Claude Code's share of the time saved where a team on Claude Enterprise runs it beside GitHub Copilot, each at its own minutes saved per acceptance."],"Guide":"https://roiva.ai/docs/measuring-ai-coding-assistants"},{"Key":"claude_enterprise.claude_code.active_users_avg","What it measures":"Members who used Claude Code on an average day in the month — members active only in other Claude products are not counted. Read as engineering.coding_assistant.active_users when Claude Enterprise is the primary coding-assistant source.","Type":"average","Unit":"users","Fed by":"Claude Enterprise"},{"Key":"claude_enterprise.claude_code.lines_accepted","What it measures":"Lines of code Claude Code added across the Claude Enterprise organization in the month. Read as engineering.coding_assistant.lines_accepted when Claude Enterprise is the primary coding-assistant source.","Type":"count","Unit":"lines","Fed by":"Claude Enterprise"},{"Key":"claude_enterprise.claude_code.proposals","What it measures":"Tool actions Claude Code proposed across the Claude Enterprise organization in the month, accepted and rejected together. Read as engineering.coding_assistant.suggestions when Claude Enterprise is the primary coding-assistant source.","Type":"count","Unit":"suggestions","Fed by":"Claude Enterprise"}]},{"title":"Cloud","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"cloud.cost.budget_amount","What it measures":"Cloud budget ceiling for the period, across providers.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"cloud.cost.forecasted_spend","What it measures":"Forecast end-of-period cloud spend based on the current usage trajectory.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"cloud.cost.total_spend","What it measures":"Total cloud infrastructure spend for the period on the primary provider.","Type":"currency","Unit":"USD","Fed by":"AWS, Azure, Databricks, Google Cloud, Snowflake"},{"Key":"cloud.resources.idle_share","What it measures":"Percentage of provisioned cloud resources running at low or zero utilization.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"cloud.usage.unit_count","What it measures":"What your cloud bill grows with (customers, orders, transactions or requests) in the period, counted the same way every period.","Type":"count","Unit":"units","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"Customer success","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"customer_success.accounts.csm_count","What it measures":"Customer success managers covering the accounts.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"customer_success.accounts.per_csm","What it measures":"Customer accounts managed per customer success manager.","Type":"count","Unit":null,"Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"customer_success.renewals.arr_up_for_renewal","What it measures":"Annual recurring revenue from accounts up for renewal in the period.","Type":"currency","Unit":"USD","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"customer_success.renewals.rate","What it measures":"Percentage of customers up for renewal who renewed.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"customer_success.revenue.net_retention_rate","What it measures":"Revenue retained from existing customers including expansion, as a percentage of the starting base.","Type":"percentage","Unit":"%","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"Freshdesk","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"freshdesk.tickets.agent_resolved_count","What it measures":"Freshdesk's resolved and closed tickets for the month that no AI deflection rule on the connection matched, plus the ones a rule matched whose customer came back. Read as support.tickets.agent_resolved_count when this connection is the primary source.","Type":"count","Unit":"tickets","Fed by":"Freshdesk"},{"Key":"freshdesk.tickets.avg_first_response_hours","What it measures":"Freshdesk's average ticket first response time for the month. Written to support.tickets.avg_first_response_hours instead when this connection is the primary source.","Type":"duration","Unit":"hours","Fed by":"Freshdesk"},{"Key":"freshdesk.tickets.avg_resolution_days","What it measures":"Freshdesk's average time from a ticket's creation to its resolution for the month, in days (the computer converts from hours). Read as support.tickets.avg_resolution_days when this connection is the primary source.","Type":"duration","Unit":"days","Fed by":"Freshdesk"},{"Key":"freshdesk.tickets.resolved_count","What it measures":"Freshdesk's support tickets closed for the month. Written to support.tickets.closed_count instead when this connection is the primary source.","Type":"count","Unit":"tickets","Fed by":"Freshdesk"},{"Key":"freshdesk.tickets.volume","What it measures":"Freshdesk's support tickets opened for the month. Written to support.tickets.volume instead when this connection is the primary source.","Type":"count","Unit":"tickets","Fed by":"Freshdesk"}]},{"title":"Snowflake","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"snowflake.compute.credits_used","What it measures":"Snowflake warehouse credits consumed in the month.","Type":"count","Unit":"credits","Fed by":"Snowflake"},{"Key":"snowflake.cost.service_spend","What it measures":"The month's Snowflake bill split by usage type — compute, storage, cloud services and the rest — with Cortex AI under the service type it bills by (AI_FUNCTIONS, CORTEX_AGENTS and so on), the line in the observation's dimensions. What a cost link's service mappings match.","Type":"currency","Unit":"USD","Fed by":"Snowflake"},{"Key":"snowflake.cost.total_spend","What it measures":"What Snowflake billed the account for the month, at its own contract rates, excluding usage Snowflake did not charge for. Read as cloud.cost.total_spend when this connection is the primary cloud cost source.","Type":"currency","Unit":"USD","Fed by":"Snowflake"},{"Key":"snowflake.query.avg_execution_seconds","What it measures":"Mean execution time of Snowflake queries in the month.","Type":"duration","Unit":"seconds","Fed by":"Snowflake"},{"Key":"snowflake.query.count","What it measures":"Successful Snowflake queries in the month.","Type":"count","Unit":"queries","Fed by":"Snowflake"}]},{"title":"Workflow automation","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"automation.runs.count","What it measures":"Runs of automated workflows that finished in the period, successful and failed.","Type":"count","Unit":"runs","Fed by":"Make, Zapier, n8n"},{"Key":"automation.runs.failed_count","What it measures":"Runs of automated workflows that failed in the period.","Type":"count","Unit":"runs","Fed by":"Make, Zapier, n8n"},{"Key":"automation.runs.manual_minutes_per_run","What it measures":"Minutes a person took to do the task one successful automated run now does, from a time study or your own timing. One figure for the initiative's workflows, so a study samples the tasks as often as each one runs.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"automation.runs.successful_count","What it measures":"Runs of automated workflows that succeeded in the period.","Type":"count","Unit":"runs","Fed by":"Make, Zapier, n8n"}]},{"title":"Calendar","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"calendar.meetings.avg_attendees","What it measures":"Average attendees per meeting in the period on the calendars this connection syncs.","Type":"average","Unit":"people","Fed by":"Google Workspace, Microsoft 365"},{"Key":"calendar.meetings.avg_duration_mins","What it measures":"Average length in minutes of a meeting on the calendars this connection syncs.","Type":"duration","Unit":"minutes","Fed by":"Google Workspace, Microsoft 365"},{"Key":"calendar.meetings.count","What it measures":"Meetings in the period on the calendars this connection syncs — confirmed, timed events with two or more attendees. A meeting on more than one of those calendars counts once.","Type":"count","Unit":"meetings","Fed by":"Google Workspace, Microsoft 365"},{"Key":"calendar.meetings.hours","What it measures":"Hours of meetings in the period on the calendars this connection syncs, each meeting counted once however many attend and however many of those calendars it sits on.","Type":"duration","Unit":"hours","Fed by":"Google Workspace, Microsoft 365"}]},{"title":"Google Workspace","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"google_workspace.calendar.avg_attendees","What it measures":"Average attendees per meeting on the Google calendars this connection syncs, for the month. Read as calendar.meetings.avg_attendees when this connection is the primary calendar source.","Type":"average","Unit":"people","Fed by":"Google Workspace"},{"Key":"google_workspace.calendar.avg_meeting_duration_mins","What it measures":"Average meeting length in minutes on the Google calendars this connection syncs, for the month. Read as calendar.meetings.avg_duration_mins when this connection is the primary calendar source.","Type":"duration","Unit":"minutes","Fed by":"Google Workspace"},{"Key":"google_workspace.calendar.meeting_count","What it measures":"Meetings on the Google calendars this connection syncs, for the month, a meeting on more than one of them counted once. Read as calendar.meetings.count when this connection is the primary calendar source.","Type":"count","Unit":"meetings","Fed by":"Google Workspace"},{"Key":"google_workspace.calendar.meeting_hours","What it measures":"Hours of meetings on the Google calendars this connection syncs, for the month, each meeting counted once. Read as calendar.meetings.hours when this connection is the primary calendar source.","Type":"duration","Unit":"hours","Fed by":"Google Workspace"}]},{"title":"Make","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"make.scenarios.credits","What it measures":"Make credits one scenario used in the month, which is what Make bills. Standard modules use 1 credit per operation; Make's built-in AI features add credits for tokens. The scenario is in the observation's dimensions.","Type":"count","Unit":"credits","Fed by":"Make"},{"Key":"make.scenarios.executions","What it measures":"Total runs of one Make scenario in the month; the scenario is in the observation's dimensions. Read as automation.runs.count, every scenario's row added, when this connection is the primary workflow-automation source.","Type":"count","Unit":"runs","Fed by":"Make"},{"Key":"make.scenarios.failed_executions","What it measures":"Failed runs of one Make scenario in the month; the scenario is in the observation's dimensions. Read as automation.runs.failed_count, every scenario's row added, when this connection is the primary workflow-automation source.","Type":"count","Unit":"runs","Fed by":"Make"},{"Key":"make.scenarios.successful_executions","What it measures":"Successful runs of one Make scenario in the month; the scenario is in the observation's dimensions. Read as automation.runs.successful_count, every scenario's row added, when this connection is the primary workflow-automation source.","Type":"count","Unit":"runs","Fed by":"Make"}]},{"title":"Microsoft 365","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"microsoft_365.calendar.avg_attendees","What it measures":"Average attendees per meeting on the Outlook calendars this connection syncs, for the month. Read as calendar.meetings.avg_attendees when this connection is the primary calendar source.","Type":"average","Unit":"people","Fed by":"Microsoft 365"},{"Key":"microsoft_365.calendar.avg_meeting_duration_mins","What it measures":"Average meeting length in minutes on the Outlook calendars this connection syncs, for the month. Read as calendar.meetings.avg_duration_mins when this connection is the primary calendar source.","Type":"duration","Unit":"minutes","Fed by":"Microsoft 365"},{"Key":"microsoft_365.calendar.meeting_count","What it measures":"Meetings on the Outlook calendars this connection syncs, for the month, a meeting on more than one of them counted once. Read as calendar.meetings.count when this connection is the primary calendar source.","Type":"count","Unit":"meetings","Fed by":"Microsoft 365"},{"Key":"microsoft_365.calendar.meeting_hours","What it measures":"Hours of meetings on the Outlook calendars this connection syncs, for the month, each meeting counted once. Read as calendar.meetings.hours when this connection is the primary calendar source.","Type":"duration","Unit":"hours","Fed by":"Microsoft 365"}]},{"title":"Work","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"work.issues.cycle_time_avg","What it measures":"Average hours from an issue's start to its resolution, over the issues resolved in the period.","Type":"duration","Unit":"hours","Fed by":"Jira"},{"Key":"work.issues.minutes_per_issue","What it measures":"Minutes of triage, coordination and hand-off one resolved issue takes, from a time study or your own timing. Not how long the issue was open.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"work.issues.resolved_count","What it measures":"Issues resolved in the period in the team's issue tracker.","Type":"count","Unit":"issues","Fed by":"Jira"},{"Key":"work.issues.story_points_completed","What it measures":"Story points on the issues resolved in the period.","Type":"count","Unit":"points","Fed by":"Jira"}]},{"title":"AI assistants","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"ai_assistant.seats.licensed","What it measures":"People holding a license for a workplace AI assistant, as of the period's latest report. Shown beside active users for adoption; never priced.","Type":"count","Unit":"users","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"ai_assistant.tasks.minutes_per_task","What it measures":"Hands-on minutes one of the tasks a time study timed takes, without the AI assistant before it and with it now. A time study on this key records both.","Type":"duration","Unit":"minutes","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"ai_assistant.users.monthly_active","What it measures":"People who used a workplace AI assistant at least once in the period, each counted once however often they used it.","Type":"count","Unit":"users","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"BigQuery","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"bigquery.jobs.bytes_processed","What it measures":"Bytes processed by BigQuery jobs in the month.","Type":"count","Unit":"bytes","Fed by":"BigQuery"},{"Key":"bigquery.jobs.count","What it measures":"BigQuery jobs run in the month.","Type":"count","Unit":"jobs","Fed by":"BigQuery"},{"Key":"bigquery.jobs.slot_ms","What it measures":"Slot milliseconds consumed by BigQuery jobs in the month.","Type":"count","Unit":"slot-ms","Fed by":"BigQuery"}]},{"title":"Google Cloud","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"gcp.billing.budget_amount","What it measures":"The amount of one GCP budget for the month; the budget is in the row's raw payload.","Type":"currency","Unit":"USD","Fed by":"Google Cloud"},{"Key":"gcp.billing.budget_spend","What it measures":"Spend against one GCP budget for the month, before tax; the budget is in the row's raw payload. Feeds cost entries through the initiative's budget mappings.","Type":"currency","Unit":"USD","Fed by":"Google Cloud"},{"Key":"gcp.billing.total_spend","What it measures":"Google Cloud's total billed spend for the month.","Type":"currency","Unit":"USD","Fed by":"Google Cloud"}]},{"title":"Jira","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"jira.issues.cycle_time_avg","What it measures":"Jira's average issue cycle time for the month. Read as work.issues.cycle_time_avg when Jira is the primary issue-tracking source.","Type":"duration","Unit":null,"Fed by":"Jira"},{"Key":"jira.issues.resolved_count","What it measures":"Jira's issues resolved in the month. Read as work.issues.resolved_count when Jira is the primary issue-tracking source.","Type":"count","Unit":null,"Fed by":"Jira"},{"Key":"jira.issues.story_points_completed","What it measures":"Jira's issues story points completed for the month. Read as work.issues.story_points_completed when Jira is the primary issue-tracking source.","Type":"count","Unit":null,"Fed by":"Jira"}]},{"title":"n8n","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"n8n.workflows.executions","What it measures":"Production executions of one n8n workflow that started in the month and finished, successful plus failed. Counted as n8n's Insights counts them, except evaluation runs: no manual test runs or sub-workflow runs, and a retry counts as an execution of its own. The workflow is in the observation's dimensions. Read as automation.runs.count, every workflow's row added, when this connection is the primary workflow-automation source.","Type":"count","Unit":"executions","Fed by":"n8n"},{"Key":"n8n.workflows.failed_executions","What it measures":"Production executions of one n8n workflow in the month that ended in error or crashed, including runs a later retry fixed; the workflow is in the observation's dimensions. Read as automation.runs.failed_count, every workflow's row added, when this connection is the primary workflow-automation source.","Type":"count","Unit":"executions","Fed by":"n8n"},{"Key":"n8n.workflows.successful_executions","What it measures":"Production executions of one n8n workflow in the month that succeeded, on the first try or a retry; the workflow is in the observation's dimensions. Read as automation.runs.successful_count, every workflow's row added, when this connection is the primary workflow-automation source.","Type":"count","Unit":"executions","Fed by":"n8n"}]},{"title":"OpenAI Codex","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"openai_codex.usage.lines_accepted","What it measures":"Lines of code Codex added that developers kept, for the month. Read as engineering.coding_assistant.lines_accepted when Codex is the primary coding-assistant source. Codex reports no count of accepted suggestions, so it feeds none of the other coding-assistant keys.","Type":"count","Unit":"lines","Fed by":"OpenAI Codex"},{"Key":"openai_codex.usage.lines_committed","What it measures":"Lines attributed to Codex that reached a commit, for the month — the stronger of the two line counts, but one the other assistants do not report, so it stays a platform key.","Type":"count","Unit":"lines","Fed by":"OpenAI Codex"},{"Key":"openai_codex.usage.turns","What it measures":"Codex turns in the workspace for the month. Stands in for an active-developer count, which exists only in per-developer rows Roiva deliberately does not request.","Type":"count","Unit":"turns","Fed by":"OpenAI Codex"}]},{"title":"Zapier","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"zapier.zaps.failed_runs","What it measures":"Failed Zap runs reported to Roiva's Zapier webhook in the month. Read as automation.runs.failed_count when this connection is the primary workflow-automation source.","Type":"count","Unit":"runs","Fed by":"Zapier"},{"Key":"zapier.zaps.runs","What it measures":"Total Zap runs reported to Roiva's Zapier webhook in the month. Read as automation.runs.count when this connection is the primary workflow-automation source.","Type":"count","Unit":"runs","Fed by":"Zapier"},{"Key":"zapier.zaps.successful_runs","What it measures":"Successful Zap runs reported to Roiva's Zapier webhook in the month. Read as automation.runs.successful_count when this connection is the primary workflow-automation source.","Type":"count","Unit":"runs","Fed by":"Zapier"}]},{"title":"AWS","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"aws.cost.service_spend","What it measures":"One AWS service's unblended cost for the month; the service is in the observation's dimensions. Feeds cost entries through the initiative's service mappings.","Type":"currency","Unit":"USD","Fed by":"AWS"},{"Key":"aws.cost.total_spend","What it measures":"AWS's total spend for the month.","Type":"currency","Unit":"USD","Fed by":"AWS"}]},{"title":"Azure","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"azure.cost.service_spend","What it measures":"One Azure service's cost for the month; the service is in the observation's dimensions. Feeds cost entries through the initiative's service mappings.","Type":"currency","Unit":"USD","Fed by":"Azure"},{"Key":"azure.cost.total_spend","What it measures":"Azure's total spend for the month.","Type":"currency","Unit":"USD","Fed by":"Azure"}]},{"title":"Databricks","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"databricks.cost.product_spend","What it measures":"Databricks list-price spend for the month on one product (billing_origin_product: MODEL_SERVING, JOBS, SQL, ...).","Type":"currency","Unit":"USD","Fed by":"Databricks"},{"Key":"databricks.cost.total_spend","What it measures":"Databricks list-price spend for the month, from system.billing.usage priced at system.billing.list_prices. Read as cloud.cost.total_spend when this connection is the primary cloud cost source.","Type":"currency","Unit":"USD","Fed by":"Databricks"}]},{"title":"Workforce","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"workforce.tasks.manual_per_week","What it measures":"Discrete manual tasks (data pulls, formatting, distribution) performed each week.","Type":"count","Unit":"tasks","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"},{"Key":"workforce.time.hours_saved_per_week","What it measures":"Net staff hours recovered per week as a direct result of the initiative.","Type":"duration","Unit":"hours","Fed by":"Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks, Snowflake or SQL Server)"}]},{"title":"American Express","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"amex.card.spend","What it measures":"What the American Express statements you uploaded charged in the month, in USD, for a month they cover end to end. A card is a payment rail rather than a provider billing for its own service, so this is not counted in provider-billed AI spend - a charge to a connected provider is already in that provider's own bill.","Type":"currency","Unit":"USD","Fed by":"American Express"}]},{"title":"Brex","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"brex.card.spend","What it measures":"What the Brex card was charged in the month, in USD. A card is a payment rail rather than a provider billing for its own service, so this is not counted in provider-billed AI spend - a charge to a connected provider is already in that provider's own bill.","Type":"currency","Unit":"USD","Fed by":"Brex (coming soon)"}]},{"title":"Looker","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"looker.looks.field_value","What it measures":"The monthly value of one numeric column of one Look; the Look and the column are in the observation's dimensions. Roiva cannot infer a unit from a Look, so the type is count unless a person overrides the definition.","Type":"count","Unit":null,"Fed by":"Looker"}]},{"title":"Ramp","columns":["Key","What it measures","Type","Unit","Fed by"],"rows":[{"Key":"ramp.card.spend","What it measures":"What the Ramp card was charged in the month, in USD. A card is a payment rail rather than a provider billing for its own service, so this is not counted in provider-billed AI spend - a charge to a connected provider is already in that provider's own bill.","Type":"currency","Unit":"USD","Fed by":"Ramp (coming soon)"}]}]}