{"slug":"reporting-tables","title":"Reporting tables","summary":"Every table and column in the Parquet files Roiva builds for Power BI and data warehouses: what a row is, and what each column means.","section":"Reference","url":"https://roiva.ai/docs/reference/reporting-tables","generated":"Generated from what Roiva ships, on every deploy.","license":"https://roiva.ai/terms","tables":[{"title":"snapshot","intro":"One row: the snapshot itself. When the tables were built, for which account, and what they leave out. Join any table to it on snapshot_id.","columns":["Column","Type","What it means"],"rows":[{"Column":"snapshot_id","Type":"string\nalways present","What it means":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"Column":"schema_version","Type":"string\nalways present","What it means":"The version of this schema the files follow."},{"Column":"generated_at","Type":"timestamp (UTC)\nalways present","What it means":"The moment every table in the snapshot describes, in UTC."},{"Column":"as_of","Type":"date\nalways present","What it means":"The day the snapshot describes, in UTC. \"To date\" figures run through it."},{"Column":"account_id","Type":"int64\nalways present","What it means":"The account's id in Roiva."},{"Column":"account_name","Type":"string\nalways present","What it means":"The account's name."},{"Column":"fiscal_year_start_month","Type":"int64\nalways present","What it means":"The month the account's fiscal year starts, 1 to 12. Fiscal quarters and years in reported_totals follow it."},{"Column":"sample_initiatives_excluded","Type":"int64\nalways present","What it means":"How many sample initiatives the account holds. Their figures are invented for a demonstration, so no table includes them."}]},{"title":"initiatives","intro":"One row per initiative, sample initiatives excluded. The account's AI initiatives: where each stands, who owns it, and its business case. The planned figures are the business case, which can change. What was signed off is in budgets.","columns":["Column","Type","What it means"],"rows":[{"Column":"snapshot_id","Type":"string\nalways present","What it means":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"Column":"initiative_id","Type":"int64\nalways present","What it means":"The initiative's id in Roiva. Every other table joins on it."},{"Column":"title","Type":"string\nalways present","What it means":"The initiative's name."},{"Column":"stage","Type":"string\nalways present","What it means":"Where it is in its lifecycle: identified, reviewing, implementing, live, paused, completed, rejected, dismissed."},{"Column":"previous_stage","Type":"string\nmay be empty","What it means":"The stage it was in before it was paused, for a paused initiative."},{"Column":"category","Type":"string\nalways present","What it means":"The kind of work it does."},{"Column":"module_kind","Type":"string\nmay be empty","What it means":"The Roiva module it belongs to."},{"Column":"department","Type":"string\nmay be empty","What it means":"The department it serves."},{"Column":"business_unit","Type":"string\nmay be empty","What it means":"The business unit it serves."},{"Column":"priority","Type":"int64\nmay be empty","What it means":"Its priority, 1 highest."},{"Column":"owner_id","Type":"int64\nmay be empty","What it means":"The person who owns it."},{"Column":"owner_name","Type":"string\nmay be empty","What it means":"The owner's name."},{"Column":"started_at","Type":"timestamp (UTC)\nmay be empty","What it means":"When work on it began."},{"Column":"went_live_at","Type":"timestamp (UTC)\nmay be empty","What it means":"When it went live."},{"Column":"closed_at","Type":"timestamp (UTC)\nmay be empty","What it means":"When it was completed or retired."},{"Column":"archived_at","Type":"timestamp (UTC)\nmay be empty","What it means":"When it was dismissed."},{"Column":"planned_capex_cents","Type":"int64 (cents)\nmay be empty","What it means":"The business case's one-off cost, in cents."},{"Column":"planned_opex_cents","Type":"int64 (cents)\nmay be empty","What it means":"The business case's running cost per value period, in cents."},{"Column":"planned_cost_savings_cents","Type":"int64 (cents)\nmay be empty","What it means":"The business case's cost savings per value period, in cents."},{"Column":"planned_revenue_uplift_cents","Type":"int64 (cents)\nmay be empty","What it means":"The business case's revenue uplift per value period, in cents."},{"Column":"planned_capacity_cents","Type":"int64 (cents)\nmay be empty","What it means":"The business case's freed capacity per value period, in cents: hours priced at what they cost. Not cash, and not in planned_value_cents."},{"Column":"planned_value_period","Type":"string\nmay be empty","What it means":"The period the planned per-period figures are stated for."},{"Column":"planned_value_cents","Type":"int64 (cents)\nalways present","What it means":"Planned cash value over the whole ROI horizon, in cents: the per-period cost savings and revenue at its margin, annualized, times the horizon."},{"Column":"roi_horizon_years","Type":"int64\nmay be empty","What it means":"The years the business case is measured over."},{"Column":"time_to_value_months","Type":"int64\nmay be empty","What it means":"The months the business case expected before value arrives."},{"Column":"description","Type":"string\nmay be empty · free text","What it means":"What the initiative is, as its team wrote it."},{"Column":"hypothesis","Type":"string\nmay be empty · free text","What it means":"What its team expects it to change, in their words."},{"Column":"created_at","Type":"timestamp (UTC)\nalways present","What it means":"When it was added to Roiva."},{"Column":"roiva_url","Type":"string\nalways present","What it means":"Its page in Roiva."}]},{"title":"reported_value","intro":"One row per approved value entry, sample initiatives excluded. The value the account's initiatives have returned, approved by a person or by the account's auto-approve setting. An entry belongs to the period its period_start falls in, as in every Roiva report, so a twelve-month entry starting in January counts in Q1 and in no other quarter. Cash value is the sum of usd_amount_cents over the cash types (revenue_gain, cost_savings, cost_avoidance, capacity_realized). Freed capacity is never added to it: for each initiative and period_month it is capacity less capacity_realized, floored at zero.","columns":["Column","Type","What it means"],"rows":[{"Column":"snapshot_id","Type":"string\nalways present","What it means":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"Column":"value_entry_id","Type":"int64\nalways present","What it means":"The entry's id in Roiva."},{"Column":"initiative_id","Type":"int64\nalways present","What it means":"The initiative it belongs to."},{"Column":"amount_cents","Type":"int64 (cents)\nalways present","What it means":"The approved figure, in cents of currency."},{"Column":"currency","Type":"string\nalways present","What it means":"The currency of amount_cents."},{"Column":"usd_amount_cents","Type":"int64 (cents)\nmay be empty","What it means":"The approved figure in US dollars, in cents: amount_cents itself for a dollar entry, converted at usd_rate for another currency, and empty while the entry waits on the ECB's rate for its period. reported_totals add this column."},{"Column":"usd_rate","Type":"double\nmay be empty","What it means":"US dollars per unit of currency: the average of the European Central Bank's daily euro reference rates over usd_rate_from to usd_rate_through, crossed through the euro. Empty for a dollar entry."},{"Column":"usd_rate_from","Type":"date\nmay be empty","What it means":"The first ECB day usd_rate averages."},{"Column":"usd_rate_through","Type":"date\nmay be empty","What it means":"The last ECB day usd_rate averages."},{"Column":"entry_type","Type":"string\nalways present","What it means":"What kind of value it is: revenue_gain, cost_savings, cost_avoidance, capacity, capacity_realized."},{"Column":"period_start","Type":"timestamp (UTC)\nmay be empty","What it means":"When the period it covers begins. It decides which period the entry counts in."},{"Column":"period_end","Type":"timestamp (UTC)\nmay be empty","What it means":"When the period it covers ends."},{"Column":"period_month","Type":"date\nmay be empty","What it means":"The first day of the month period_start falls in, in UTC."},{"Column":"is_estimated","Type":"boolean\nalways present","What it means":"Whether whoever recorded it marked it an estimate."},{"Column":"confidence_score","Type":"double\nmay be empty","What it means":"The confidence recorded with it, 0 to 100."},{"Column":"source_type","Type":"string\nalways present","What it means":"How it reached Roiva: manual (typed in), assistant (drafted by the Roiva Assistant for the person in recorded_by_id), csv (imported), calculated (by a formula) or integration (synced from a connection)."},{"Column":"provenance","Type":"string\nalways present","What it means":"Where the number came from, in the phrase an approver is shown."},{"Column":"connection_id","Type":"int64\nmay be empty","What it means":"The connection it was synced from."},{"Column":"platform","Type":"string\nmay be empty","What it means":"The platform that connection reads."},{"Column":"source_ref","Type":"string\nmay be empty","What it means":"The id the originating system knows it by."},{"Column":"formula_id","Type":"int64\nmay be empty","What it means":"The formula that calculated it."},{"Column":"formula_key","Type":"string\nmay be empty","What it means":"That formula's key, stable across its versions."},{"Column":"formula_name","Type":"string\nmay be empty","What it means":"That formula's name."},{"Column":"formula_version","Type":"int64\nmay be empty","What it means":"The formula version it was computed with, recorded when it was evaluated. A formula revised later keeps this row at the version that produced it."},{"Column":"formula_expression","Type":"string\nmay be empty","What it means":"The expression it was computed with, as recorded when it was evaluated."},{"Column":"input_snapshot","Type":"string (JSON)\nalways present","What it means":"The inputs frozen with the figure, as JSON with sorted keys. A formula entry holds one object per input, flattened in value_inputs; a synced entry holds what the sync counted."},{"Column":"input_snapshot_sha256","Type":"string\nalways present","What it means":"SHA-256 of input_snapshot. Roiva computes the same digest for the same inputs, so a figure can be checked against the entry in Roiva."},{"Column":"vendor_price_effect_cents","Type":"int64 (cents)\nmay be empty","What it means":"Of a saving in AI spend, the part the provider's own price changes gave, in cents. Empty where the entry carries no such split."},{"Column":"own_changes_effect_cents","Type":"int64 (cents)\nmay be empty","What it means":"Of the same saving, the part the account's own choices earned, in cents."},{"Column":"notes","Type":"string\nmay be empty · free text","What it means":"What a person wrote about the figure, in their own words."},{"Column":"recorded_by_id","Type":"int64\nmay be empty","What it means":"The person who recorded it, or who had the Roiva Assistant draft it (source_type assistant). Empty when Roiva calculated or synced it."},{"Column":"recorded_by_name","Type":"string\nmay be empty","What it means":"Their name."},{"Column":"approved_at","Type":"timestamp (UTC)\nmay be empty","What it means":"When it was approved."},{"Column":"approved_by_id","Type":"int64\nmay be empty","What it means":"The person who approved it. Empty when the account's auto-approve did."},{"Column":"approved_by_name","Type":"string\nmay be empty","What it means":"Their name."},{"Column":"approval_source","Type":"string\nalways present","What it means":"auto when the account's auto-approve setting approved it, direct when a person did."},{"Column":"created_at","Type":"timestamp (UTC)\nalways present","What it means":"When it was recorded."},{"Column":"updated_at","Type":"timestamp (UTC)\nalways present","What it means":"When it last changed, or its month was locked or reopened."},{"Column":"roiva_url","Type":"string\nalways present","What it means":"Its page in Roiva, with its inputs and approval history."},{"Column":"basis","Type":"string\nmay be empty","What it means":"What it was compared with: measured (a baseline measured before go-live), reconstructed (one measured after go-live on work done without the AI), estimated (a benchmark or a judgment, or a figure its recorder marked an estimate) or none (no baseline: a count priced per unit, or a figure a person entered)."}]},{"title":"value_inputs","intro":"One row per input of each approved formula entry. What each calculated figure was computed from, as frozen when it was evaluated. Join to reported_value on value_entry_id, and to metric_readings on observation_id.","columns":["Column","Type","What it means"],"rows":[{"Column":"snapshot_id","Type":"string\nalways present","What it means":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"Column":"value_entry_id","Type":"int64\nalways present","What it means":"The approved entry these are the inputs of."},{"Column":"initiative_id","Type":"int64\nalways present","What it means":"The initiative the entry belongs to."},{"Column":"variable","Type":"string\nalways present","What it means":"The input's name in the formula's expression."},{"Column":"label","Type":"string\nmay be empty","What it means":"What the input is, in words."},{"Column":"value","Type":"double\nmay be empty","What it means":"The value the formula used."},{"Column":"source_type","Type":"string\nmay be empty","What it means":"Where the value came from: observation (a metric reading for the period), baseline (the reading before the initiative), assumption, period, or derived (computed from other inputs)."},{"Column":"metric_key","Type":"string\nmay be empty","What it means":"The metric the value was read from."},{"Column":"observation_id","Type":"int64\nmay be empty","What it means":"The metric reading used. Its row is in metric_readings."},{"Column":"assumption_id","Type":"int64\nmay be empty","What it means":"The assumption used, for an assumption input."},{"Column":"assumption_key","Type":"string\nmay be empty","What it means":"That assumption's key."},{"Column":"assumption_scope","Type":"string\nmay be empty","What it means":"system for one of Roiva's defaults, account for the account's own figure."},{"Column":"requires_confirmation","Type":"boolean\nmay be empty","What it means":"Whether the input was one of Roiva's defaults awaiting the account's confirmation when it was used."},{"Column":"assumption_effective_from","Type":"string\nmay be empty","What it means":"The date the assumption's figure took effect, as recorded."},{"Column":"observed_at","Type":"string\nmay be empty","What it means":"When the reading was taken, as recorded (a date or an ISO 8601 time)."},{"Column":"input_period_start","Type":"string\nmay be empty","What it means":"The start of the period the value covers, as recorded."},{"Column":"input_period_end","Type":"string\nmay be empty","What it means":"The end of the period the value covers, as recorded."},{"Column":"expression","Type":"string\nmay be empty","What it means":"For a derived input, the expression that computed it."}]},{"title":"value_supporting_documents","intro":"One row per document an approved value entry cites. The evidence each approved figure cites: business cases, review decks, statements of work and contracts held on the initiative in Roiva. Join to reported_value on value_entry_id.","columns":["Column","Type","What it means"],"rows":[{"Column":"snapshot_id","Type":"string\nalways present","What it means":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"Column":"value_entry_id","Type":"int64\nalways present","What it means":"The approved entry that cites it."},{"Column":"document_id","Type":"int64\nalways present","What it means":"The document's id in Roiva."},{"Column":"initiative_id","Type":"int64\nalways present","What it means":"The initiative the document is held on."},{"Column":"kind","Type":"string\nalways present","What it means":"What the document is: business_case, review_deck, sow, contract, other."},{"Column":"restricted","Type":"boolean\nalways present","What it means":"Whether it is an SOW or a contract, which Roiva shows only to owners, admins and the initiative's approvers."},{"Column":"title","Type":"string\nmay be empty","What it means":"The document's title. Empty for a restricted document."},{"Column":"format","Type":"string\nalways present","What it means":"file for an uploaded file, link for a link to one held elsewhere."},{"Column":"cited_at","Type":"timestamp (UTC)\nalways present","What it means":"When the entry was made to cite it."},{"Column":"roiva_url","Type":"string\nalways present","What it means":"The citing entry's page in Roiva, where the document opens for those allowed to see it."}]},{"title":"metric_readings","intro":"One row per metric reading an approved formula entry used. The readings behind the reported figures. Join to value_inputs on observation_id.","columns":["Column","Type","What it means"],"rows":[{"Column":"snapshot_id","Type":"string\nalways present","What it means":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"Column":"observation_id","Type":"int64\nalways present","What it means":"The reading's id in Roiva."},{"Column":"metric_key","Type":"string\nalways present","What it means":"The metric it is a reading of."},{"Column":"metric_name","Type":"string\nmay be empty","What it means":"The metric's name."},{"Column":"initiative_id","Type":"int64\nmay be empty","What it means":"The initiative it was recorded for. Empty for an account-wide reading."},{"Column":"role","Type":"string\nalways present","What it means":"reading for a period's figure, baseline for the figure before the initiative."},{"Column":"value","Type":"double\nalways present","What it means":"The reading."},{"Column":"currency","Type":"string\nmay be empty","What it means":"The currency of value for a money reading (a CRM's deals all in euros read in EUR); empty for a reading that isn't money."},{"Column":"period_start","Type":"timestamp (UTC)\nmay be empty","What it means":"When the period it covers begins."},{"Column":"period_end","Type":"timestamp (UTC)\nmay be empty","What it means":"When the period it covers ends."},{"Column":"observed_at","Type":"timestamp (UTC)\nmay be empty","What it means":"When it was observed."},{"Column":"sample_size","Type":"int64\nmay be empty","What it means":"How many records an average was taken over, where recorded."},{"Column":"is_estimated","Type":"boolean\nalways present","What it means":"Whether it was marked an estimate."},{"Column":"source_type","Type":"string\nalways present","What it means":"How it reached Roiva: integration (synced from a connection), manual (typed in), assistant (recorded by the Roiva Assistant for the person in recorded_by_id), csv (imported), calculated (by a formula), system (a baseline Roiva estimated or calculated) or time_study (a time study's published mean)."},{"Column":"connection_id","Type":"int64\nmay be empty","What it means":"The connection it was synced from."},{"Column":"dimensions","Type":"string (JSON)\nalways present","What it means":"The breakdown it belongs to, such as a line of business, as JSON with sorted keys."},{"Column":"notes","Type":"string\nmay be empty · free text","What it means":"What a person wrote about the reading, in their own words."},{"Column":"recorded_by_id","Type":"int64\nmay be empty","What it means":"The person who recorded it by hand, or who had the Roiva Assistant record it (source_type assistant)."},{"Column":"recorded_by_name","Type":"string\nmay be empty","What it means":"Their name."},{"Column":"baseline_method","Type":"string\nmay be empty","What it means":"For a baseline, how the before-figure was measured: history, time_study, without_ai_sample, benchmark, estimate. Empty on a reading."},{"Column":"time_study_id","Type":"int64\nmay be empty","What it means":"For source_type time_study, the time study it is the published mean of."},{"Column":"valid_until","Type":"date\nmay be empty","What it means":"For a time study's figure, the last day it stands: the study's last day plus its re-study interval. Months after it hold value calculated from it as due for re-study."}]},{"title":"costs","intro":"One row per cost entry, sample initiatives excluded. What the account's initiatives cost to build and run. An entry belongs to the period its period_start falls in, as value does. capex and opex split the same rows, so they add up to the total.","columns":["Column","Type","What it means"],"rows":[{"Column":"snapshot_id","Type":"string\nalways present","What it means":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"Column":"cost_entry_id","Type":"int64\nalways present","What it means":"The entry's id in Roiva."},{"Column":"initiative_id","Type":"int64\nalways present","What it means":"The initiative it is booked to."},{"Column":"amount_cents","Type":"int64 (cents)\nalways present","What it means":"What it cost, in cents of currency."},{"Column":"currency","Type":"string\nalways present","What it means":"The currency of amount_cents."},{"Column":"usd_amount_cents","Type":"int64 (cents)\nmay be empty","What it means":"What it cost in US dollars, in cents: amount_cents itself for a dollar cost, converted at usd_rate for another currency. Empty, and in no total, when there is no rate: a currency the ECB doesn't publish, or a cost whose month was locked before it was converted. An undated cost takes the rate for the day it was booked. reported_totals add this column."},{"Column":"usd_rate","Type":"double\nmay be empty","What it means":"US dollars per unit of currency: the average of the European Central Bank's daily euro reference rates over usd_rate_from to usd_rate_through, crossed through the euro. Empty for a dollar cost."},{"Column":"usd_rate_from","Type":"date\nmay be empty","What it means":"The first ECB day usd_rate averages."},{"Column":"usd_rate_through","Type":"date\nmay be empty","What it means":"The last ECB day usd_rate averages."},{"Column":"usd_rate_provisional","Type":"boolean\nmay be empty","What it means":"Whether usd_rate is the latest ECB rate rather than its period's average, because the period's rates weren't all published yet. A later snapshot carries the average, unless the month was locked before then."},{"Column":"cost_category","Type":"string\nalways present","What it means":"capex for a one-off cost to build, opex for a cost to run."},{"Column":"cost_type","Type":"string\nalways present","What it means":"What kind of cost it is, such as licenses, infrastructure or labor."},{"Column":"period_start","Type":"timestamp (UTC)\nmay be empty","What it means":"When the period it covers begins. It decides which period the entry counts in."},{"Column":"period_end","Type":"timestamp (UTC)\nmay be empty","What it means":"When the period it covers ends."},{"Column":"period_month","Type":"date\nmay be empty","What it means":"The first day of the month period_start falls in, in UTC."},{"Column":"is_estimated","Type":"boolean\nalways present","What it means":"Whether it was marked an estimate."},{"Column":"locked","Type":"boolean\nalways present","What it means":"Whether a closed accounting period holds it, so it can no longer be changed."},{"Column":"vendor_id","Type":"int64\nmay be empty","What it means":"The vendor it was paid to, in Roiva's vendor list."},{"Column":"vendor_name","Type":"string\nmay be empty","What it means":"The vendor's name as recorded."},{"Column":"description","Type":"string\nmay be empty · free text","What it means":"What the cost was for, as recorded or synced."},{"Column":"notes","Type":"string\nmay be empty · free text","What it means":"What a person wrote about it, in their own words."},{"Column":"books_account_name","Type":"string\nmay be empty","What it means":"The general-ledger account it was booked to, for a cost from the books."},{"Column":"source_type","Type":"string\nalways present","What it means":"How it reached Roiva, such as manual, assistant (recorded by the Roiva Assistant), csv or integration."},{"Column":"connection_id","Type":"int64\nmay be empty","What it means":"The connection it was synced from."},{"Column":"platform","Type":"string\nmay be empty","What it means":"The platform that connection reads."},{"Column":"source_ref","Type":"string\nmay be empty","What it means":"The id the originating system knows it by."},{"Column":"implementation_id","Type":"int64\nmay be empty","What it means":"The implementation project it is attributed to, when it is one."},{"Column":"recurring_cost_id","Type":"int64\nmay be empty","What it means":"The recurring cost that wrote it, when it is one."},{"Column":"allocation_line_id","Type":"int64\nmay be empty","What it means":"The allocation line that split it from a shared bill, when it is one."},{"Column":"recorded_by_id","Type":"int64\nmay be empty","What it means":"The person who recorded it by hand, or who had the Roiva Assistant record it (source_type assistant)."},{"Column":"recorded_by_name","Type":"string\nmay be empty","What it means":"Their name."},{"Column":"created_at","Type":"timestamp (UTC)\nalways present","What it means":"When it was recorded."},{"Column":"updated_at","Type":"timestamp (UTC)\nalways present","What it means":"When it last changed."},{"Column":"roiva_url","Type":"string\nalways present","What it means":"Its page in Roiva."}]},{"title":"approval_decisions","intro":"One row per approval decision, sample initiatives excluded. Who approved, rejected, disputed or sent back what, and when. A value entry's rows show how it came to be approved; join on subject_id where subject_kind is value_entry.","columns":["Column","Type","What it means"],"rows":[{"Column":"snapshot_id","Type":"string\nalways present","What it means":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"Column":"approval_decision_id","Type":"int64\nalways present","What it means":"The decision's id in Roiva."},{"Column":"subject_kind","Type":"string\nalways present","What it means":"What was decided on: initiative, value_entry, budget, charter."},{"Column":"subject_id","Type":"int64\nalways present","What it means":"Its id: a value_entry_id, an initiative_id or a budget_id."},{"Column":"initiative_id","Type":"int64\nmay be empty","What it means":"The initiative it concerns. Empty once that initiative has been deleted."},{"Column":"subject_title","Type":"string\nalways present","What it means":"What it was called when the decision was taken."},{"Column":"item_label","Type":"string\nmay be empty","What it means":"The line decided on, for a value entry or a budget."},{"Column":"decision","Type":"string\nalways present","What it means":"The decision: approved, step_approved, rejected, disputed, sent_back. step_approved is one approver's sign-off in a chain that needs more."},{"Column":"resulting_state","Type":"string\nmay be empty","What it means":"The state it left the subject in."},{"Column":"step","Type":"int64\nmay be empty","What it means":"Which step of the approval chain this was."},{"Column":"total_steps","Type":"int64\nmay be empty","What it means":"How many steps the chain had."},{"Column":"source","Type":"string\nalways present","What it means":"How it was taken: direct, bulk, auto, backfill, assistant, import. auto is the account's auto-approve setting."},{"Column":"amount_cents","Type":"int64 (cents)\nmay be empty","What it means":"The amount decided on, in cents, for a value entry or a budget."},{"Column":"currency","Type":"string\nmay be empty","What it means":"The currency of amount_cents."},{"Column":"reason","Type":"string\nmay be empty · free text","What it means":"The reason the approver gave, in their own words."},{"Column":"decided_by_id","Type":"int64\nmay be empty","What it means":"The person who decided. Empty for the account's auto-approve."},{"Column":"decided_by_name","Type":"string\nmay be empty","What it means":"Their name."},{"Column":"decided_at","Type":"timestamp (UTC)\nalways present","What it means":"When the decision was taken."}]},{"title":"budgets","intro":"One row per budget version, sample initiatives excluded. What was signed off for each initiative, version by version: its one-off cost and its running cost. This is the approved budget, not the business case. How spend compares with it is in budget_vs_actual.","columns":["Column","Type","What it means"],"rows":[{"Column":"snapshot_id","Type":"string\nalways present","What it means":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"Column":"budget_id","Type":"int64\nalways present","What it means":"The version's id in Roiva."},{"Column":"initiative_id","Type":"int64\nalways present","What it means":"The initiative it budgets."},{"Column":"status","Type":"string\nalways present","What it means":"pending, approved, rejected, withdrawn. Only approved versions are budgets."},{"Column":"source","Type":"string\nalways present","What it means":"How it arose: approval (set when the initiative was approved), revision or manual."},{"Column":"capex_cents","Type":"int64 (cents)\nalways present","What it means":"The one-off cost signed off, in cents: a total, not a rate."},{"Column":"opex_cents","Type":"int64 (cents)\nalways present","What it means":"The running cost signed off, in cents per opex_cadence."},{"Column":"opex_cadence","Type":"string\nalways present","What it means":"The period opex_cents is stated for: monthly, quarterly or annually."},{"Column":"currency","Type":"string\nalways present","What it means":"The currency of the amounts."},{"Column":"effective_from","Type":"date\nalways present","What it means":"The version applies from the start of this date's month."},{"Column":"ends_on","Type":"date\nmay be empty","What it means":"The last day it applies, when it has an end."},{"Column":"reason","Type":"string\nmay be empty · free text","What it means":"Why the version was set, in the words of whoever set it."},{"Column":"set_by_id","Type":"int64\nmay be empty","What it means":"The person who set it."},{"Column":"set_by_name","Type":"string\nmay be empty","What it means":"Their name."},{"Column":"decided_at","Type":"timestamp (UTC)\nmay be empty","What it means":"When it was approved, rejected or withdrawn."},{"Column":"decided_by_id","Type":"int64\nmay be empty","What it means":"The person who decided it."},{"Column":"decided_by_name","Type":"string\nmay be empty","What it means":"Their name."},{"Column":"decision_reason","Type":"string\nmay be empty · free text","What it means":"The reason given with the decision, in the decider's words."},{"Column":"approval_decision_id","Type":"int64\nmay be empty","What it means":"The approval_decisions row that decided it, when one did."},{"Column":"created_at","Type":"timestamp (UTC)\nalways present","What it means":"When the version was written."},{"Column":"roiva_url","Type":"string\nalways present","What it means":"The initiative's budget page in Roiva."}]},{"title":"budget_vs_actual","intro":"One row per budgeted initiative per as_of day: the snapshot's day, and the end of each of the last 8 complete fiscal quarters. How spend compares with the approved budget, computed as Roiva's budget pages and the Board Brief compute it. CapEx is a total against a total; OpEx is spend against the budget for the months elapsed. Only initiatives with an approved budget in effect on as_of have a row.","columns":["Column","Type","What it means"],"rows":[{"Column":"snapshot_id","Type":"string\nalways present","What it means":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"Column":"as_of","Type":"date\nalways present","What it means":"The day the comparison runs through."},{"Column":"initiative_id","Type":"int64\nalways present","What it means":"The initiative."},{"Column":"status","Type":"string\nalways present","What it means":"within or over, as Roiva shows it. Over when either the CapEx or the OpEx half is over."},{"Column":"budget_id","Type":"int64\nalways present","What it means":"The budget version in effect on as_of."},{"Column":"revised","Type":"boolean\nalways present","What it means":"Whether the budget has been revised since it was first approved."},{"Column":"capex_budget_cents","Type":"int64 (cents)\nalways present","What it means":"CapEx signed off, in cents."},{"Column":"capex_actual_cents","Type":"int64 (cents)\nalways present","What it means":"CapEx spent since the budget began, in cents."},{"Column":"opex_budget_to_date_cents","Type":"int64 (cents)\nalways present","What it means":"OpEx budget for the months from the budget's start through as_of, in cents."},{"Column":"opex_actual_cents","Type":"int64 (cents)\nalways present","What it means":"OpEx spent over those months, in cents."},{"Column":"budget_to_date_cents","Type":"int64 (cents)\nalways present","What it means":"CapEx budget plus OpEx budget to date, in cents."},{"Column":"actual_to_date_cents","Type":"int64 (cents)\nalways present","What it means":"CapEx plus OpEx spent, in cents."},{"Column":"variance_cents","Type":"int64 (cents)\nalways present","What it means":"Budget to date less actual, in cents. Positive is under budget."},{"Column":"opex_budget_fiscal_year_cents","Type":"int64 (cents)\nalways present","What it means":"The OpEx budget for the whole fiscal year as_of falls in, in cents."},{"Column":"opex_budget_fiscal_ytd_cents","Type":"int64 (cents)\nalways present","What it means":"The part of it through as_of, in cents."},{"Column":"opex_actual_fiscal_ytd_cents","Type":"int64 (cents)\nalways present","What it means":"OpEx spent in the fiscal year through as_of, in cents."},{"Column":"spent_before_budget_cents","Type":"int64 (cents)\nalways present","What it means":"Spend dated before the budget began, reported apart rather than charged to it, in cents."},{"Column":"budget_monthly_run_rate_cents","Type":"int64 (cents)\nalways present","What it means":"The version's OpEx per month, in cents."},{"Column":"actual_monthly_run_rate_cents","Type":"int64 (cents)\nmay be empty","What it means":"Average OpEx per month over the recent complete months the budget covered, in cents. Empty before one has passed."}]},{"title":"portfolio_decisions","intro":"One row per portfolio decision, sample initiatives excluded. The account's decisions about its initiatives, with the figures each was taken on. The figures are all-time as of the decision, not the snapshot.","columns":["Column","Type","What it means"],"rows":[{"Column":"snapshot_id","Type":"string\nalways present","What it means":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"Column":"portfolio_decision_id","Type":"int64\nalways present","What it means":"The decision's id in Roiva."},{"Column":"initiative_id","Type":"int64\nmay be empty","What it means":"The initiative decided on. Empty once that initiative has been deleted; the decision is kept."},{"Column":"subject_title","Type":"string\nalways present","What it means":"The initiative's name when it was decided."},{"Column":"outcome","Type":"string\nalways present","What it means":"continue, scale, fix, pause, retire."},{"Column":"stage_before","Type":"string\nalways present","What it means":"The initiative's stage before the decision."},{"Column":"stage_after","Type":"string\nalways present","What it means":"Its stage after."},{"Column":"rationale","Type":"string\nalways present · free text","What it means":"Why, in the words of whoever decided."},{"Column":"next_review_on","Type":"date\nmay be empty","What it means":"When it is to be reviewed again."},{"Column":"cash_value_cents","Type":"int64 (cents)\nalways present","What it means":"Approved cash value to the decision, in cents."},{"Column":"freed_capacity_cents","Type":"int64 (cents)\nalways present","What it means":"Approved freed capacity to the decision, in cents. Not cash, and not in roi."},{"Column":"cost_to_date_cents","Type":"int64 (cents)\nalways present","What it means":"Cost to the decision, in cents."},{"Column":"planned_value_cents","Type":"int64 (cents)\nmay be empty","What it means":"The business case's value over its whole horizon, in cents, at the time."},{"Column":"planned_value_to_date_cents","Type":"int64 (cents)\nmay be empty","What it means":"The business case's value to the decision, in cents."},{"Column":"roi","Type":"double\nmay be empty","What it means":"Cash ROI at the decision: (cash value − cost) ÷ cost. Empty without both."},{"Column":"currency","Type":"string\nalways present","What it means":"The currency of the amounts."},{"Column":"decided_by_id","Type":"int64\nmay be empty","What it means":"The person who decided."},{"Column":"decided_by_name","Type":"string\nmay be empty","What it means":"Their name."},{"Column":"decided_at","Type":"timestamp (UTC)\nalways present","What it means":"When."},{"Column":"roiva_url","Type":"string\nmay be empty","What it means":"The initiative's decisions in Roiva. Empty once it has been deleted."}]},{"title":"accounting_periods","intro":"One row per month finance has opened for close. The account's accounting periods and whether each is locked. A month with no row has never been through close in Roiva.","columns":["Column","Type","What it means"],"rows":[{"Column":"snapshot_id","Type":"string\nalways present","What it means":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"Column":"month","Type":"date\nalways present","What it means":"The first day of the month."},{"Column":"status","Type":"string\nalways present","What it means":"open, in_review, locked, reopened."},{"Column":"locked","Type":"boolean\nalways present","What it means":"Whether the month is locked now."},{"Column":"locked_at","Type":"timestamp (UTC)\nmay be empty","What it means":"When it was last locked."},{"Column":"locked_by_id","Type":"int64\nmay be empty","What it means":"Who locked it."},{"Column":"locked_by_name","Type":"string\nmay be empty","What it means":"Their name."},{"Column":"reopened_at","Type":"timestamp (UTC)\nmay be empty","What it means":"When it was last reopened."},{"Column":"reopened_by_id","Type":"int64\nmay be empty","What it means":"Who reopened it."},{"Column":"reopened_by_name","Type":"string\nmay be empty","What it means":"Their name."},{"Column":"reopen_reason","Type":"string\nmay be empty · free text","What it means":"Why it was reopened, in their words."}]},{"title":"ai_spend","intro":"One row per month per provider connection with a bill, one per month per AI vendor on the books and card feeds with a bill, plus one row per month for the card feeds together. AI spend as the providers billed it and as the books and cards paid AI vendors, before any initiative books it, and how much of it an initiative does. A provider row whose attribution is unlinked or unmapped, and an ai_vendor row whose attribution is unbooked, is spend no initiative carries. ai_billed_cents and ai_booked_cents on provider_bill and ai_vendor rows add up to the figures Finance > AI Spend shows, except that a sample initiative's booking is never counted here: the page counts one while the account has only sample data. Card rows are what corporate cards were charged, stated beside the other rows and never added to them: an AI vendor's charges are in its ai_vendor row too. Every amount is US dollars: a bill in another currency counts at its month's ECB rate (a bill on the books or cards at its day's), or the latest one while that month's rates are out, and one with no ECB rate is in no row. Card rows count charges made in US dollars.","columns":["Column","Type","What it means"],"rows":[{"Column":"snapshot_id","Type":"string\nalways present","What it means":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"Column":"month","Type":"date\nalways present","What it means":"The first day of the month."},{"Column":"source_kind","Type":"string\nalways present","What it means":"provider_bill for a provider's own bill, ai_vendor for an AI vendor's bills on the books and card feeds, card for the card feeds."},{"Column":"connection_id","Type":"int64\nmay be empty","What it means":"The provider connection. Empty on ai_vendor and card rows."},{"Column":"platform","Type":"string\nmay be empty","What it means":"The provider. Empty on ai_vendor and card rows."},{"Column":"connection_name","Type":"string\nmay be empty","What it means":"The connection's name in Roiva. Empty on ai_vendor and card rows."},{"Column":"vendor_name","Type":"string\nmay be empty","What it means":"The AI vendor, as Roiva names it: on its list of AI vendors, or as an Owner or Admin counted it. Empty on provider_bill and card rows."},{"Column":"billed_cents","Type":"int64 (cents)\nalways present","What it means":"What was billed, or charged to the cards, that month, in cents. The whole bill: for a cloud, data platform or GitHub connection, ai_billed_cents is the AI part of it. On an ai_vendor row, the vendor's bills on the books and cards, less any part its own connection bills."},{"Column":"currency","Type":"string\nalways present","What it means":"The currency of the amounts."},{"Column":"attribution","Type":"string\nmay be empty","What it means":"attributed when an initiative books the connection's bill or the vendor's bills; unlinked when no initiative links the connection; unmapped when it is linked but nothing maps its costs; unbooked when no initiative books the vendor's bills. Empty on card rows."},{"Column":"set_aside","Type":"boolean\nmay be empty","What it means":"Whether an admin marked the connection, or the vendor on every connection carrying it, as belonging to no initiative. Its spend still counts as unattributed. Empty on card rows."},{"Column":"initiative_count","Type":"int64\nmay be empty","What it means":"How many initiatives take cost from the connection or the vendor's bills. Empty on card rows."},{"Column":"booked_cents","Type":"int64 (cents)\nmay be empty","What it means":"On a card row, the part of the charges already booked to an initiative, and on an ai_vendor row, of the vendor's bills, in cents. Empty on provider rows; ai_booked_cents is theirs."},{"Column":"ai_billed_cents","Type":"int64 (cents)\nmay be empty","What it means":"The AI part of billed_cents, in cents: all of a model provider's bill; a cloud, data platform or GitHub bill's AI services and the lines an initiative claims; all of an ai_vendor row's billed_cents. What Finance > AI Spend counts as billed. Empty on card rows."},{"Column":"ai_booked_cents","Type":"int64 (cents)\nmay be empty","What it means":"What of ai_billed_cents an initiative's links book, in cents: 0 when unlinked, unmapped or unbooked. ai_billed_cents less this is what Finance > AI Spend calls attached to nothing. Empty on card rows."}]},{"title":"reported_totals","intro":"One row per window, for the portfolio and for each initiative: all time, each fiscal quarter and each fiscal year from the first with value or cost. Approved cash value and freed capacity, kept apart, with cost, net cash value and cash ROI, exactly as Roiva's reports compute them, sample initiatives excluded. Freed capacity is in neither the net value nor the ROI. A figure built from reported_value and costs must equal the row for its window; Roiva checks that before publishing a snapshot.","columns":["Column","Type","What it means"],"rows":[{"Column":"snapshot_id","Type":"string\nalways present","What it means":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"Column":"scope","Type":"string\nalways present","What it means":"portfolio for the whole account, initiative for one initiative."},{"Column":"initiative_id","Type":"int64\nmay be empty","What it means":"The initiative, for an initiative row."},{"Column":"window_kind","Type":"string\nalways present","What it means":"all_time, fiscal_quarter or fiscal_year."},{"Column":"window_key","Type":"string\nalways present","What it means":"The window's key: all, fy2026-q1, fy2026."},{"Column":"window_label","Type":"string\nalways present","What it means":"The window as Roiva names it."},{"Column":"from_date","Type":"date\nmay be empty","What it means":"The window's first day. Empty for all time."},{"Column":"through_date","Type":"date\nmay be empty","What it means":"The window's last day. Empty for all time."},{"Column":"window_complete","Type":"boolean\nalways present","What it means":"Whether the window had ended when the snapshot was built."},{"Column":"cash_value_cents","Type":"int64 (cents)\nalways present","What it means":"Approved cash value in the window, in cents: the margin on revenue earned, costs that fell, losses and spend that didn't happen, and freed capacity shown to have become cash."},{"Column":"freed_capacity_cents","Type":"int64 (cents)\nalways present","What it means":"Approved freed capacity in the window, in cents: hours and output freed, priced at what they cost. Not cash, and in no other figure here; never add it to cash_value_cents."},{"Column":"cost_cents","Type":"int64 (cents)\nalways present","What it means":"Cost in the window, in cents."},{"Column":"net_value_cents","Type":"int64 (cents)\nalways present","What it means":"Cash value less cost, in cents. Freed capacity is not in it."},{"Column":"roi","Type":"double\nmay be empty","What it means":"Cash ROI: net value ÷ cost. Empty unless both cash value and cost are above zero, as in Roiva."},{"Column":"capex_cents","Type":"int64 (cents)\nmay be empty","What it means":"The CapEx part of cost_cents, in cents. Portfolio rows only."},{"Column":"opex_cents","Type":"int64 (cents)\nmay be empty","What it means":"The OpEx part of cost_cents, in cents. Portfolio rows only."},{"Column":"planned_value_to_date_cents","Type":"int64 (cents)\nmay be empty","What it means":"The business cases' value for the months of the window each initiative was live, in cents: the plan the approved value is set against. Portfolio rows only; leaves out a plan Roiva filled in that no one has confirmed."},{"Column":"planned_capacity_to_date_cents","Type":"int64 (cents)\nmay be empty","What it means":"The business cases' freed capacity for the months of the window each initiative was live, in cents. Portfolio rows only; leaves out a plan Roiva filled in that no one has confirmed."},{"Column":"planned_opex_to_date_cents","Type":"int64 (cents)\nmay be empty","What it means":"The business cases' running cost for the months of the window each initiative was under way, in cents. Portfolio rows only; leaves out a plan Roiva filled in that no one has confirmed."},{"Column":"planned_capex_cents","Type":"int64 (cents)\nmay be empty","What it means":"The business cases' one-off cost, in cents. Portfolio rows only; leaves out a plan Roiva filled in that no one has confirmed."},{"Column":"vendor_price_effect_cents","Type":"int64 (cents)\nmay be empty","What it means":"Of the approved value, the part AI providers' own price changes gave, in cents. Portfolio rows only; empty where no entry carries that split."}]}]}