{"version":"v1","tables":[{"name":"snapshot","grain":"One row: the snapshot itself.","description":"When the tables were built, for which account, and what they leave out. Join any table to it on snapshot_id.","columns":[{"name":"snapshot_id","type":"string","nullable":false,"description":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"name":"schema_version","type":"string","nullable":false,"description":"The version of this schema the files follow."},{"name":"generated_at","type":"timestamp","nullable":false,"description":"The moment every table in the snapshot describes, in UTC."},{"name":"as_of","type":"date","nullable":false,"description":"The day the snapshot describes, in UTC. \"To date\" figures run through it."},{"name":"account_id","type":"id","nullable":false,"description":"The account's id in Roiva."},{"name":"account_name","type":"string","nullable":false,"description":"The account's name."},{"name":"fiscal_year_start_month","type":"integer","nullable":false,"description":"The month the account's fiscal year starts, 1 to 12. Fiscal quarters and years in reported_totals follow it."},{"name":"sample_initiatives_excluded","type":"integer","nullable":false,"description":"How many sample initiatives the account holds. Their figures are invented for a demonstration, so no table includes them."}]},{"name":"initiatives","grain":"One row per initiative, sample initiatives excluded.","description":"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":[{"name":"snapshot_id","type":"string","nullable":false,"description":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"name":"initiative_id","type":"id","nullable":false,"description":"The initiative's id in Roiva. Every other table joins on it."},{"name":"title","type":"string","nullable":false,"description":"The initiative's name."},{"name":"stage","type":"string","nullable":false,"description":"Where it is in its lifecycle: identified, reviewing, implementing, live, paused, completed, rejected, dismissed."},{"name":"previous_stage","type":"string","nullable":true,"description":"The stage it was in before it was paused, for a paused initiative."},{"name":"category","type":"string","nullable":false,"description":"The kind of work it does."},{"name":"module_kind","type":"string","nullable":true,"description":"The Roiva module it belongs to."},{"name":"department","type":"string","nullable":true,"description":"The department it serves."},{"name":"business_unit","type":"string","nullable":true,"description":"The business unit it serves."},{"name":"priority","type":"integer","nullable":true,"description":"Its priority, 1 highest."},{"name":"owner_id","type":"id","nullable":true,"description":"The person who owns it."},{"name":"owner_name","type":"string","nullable":true,"description":"The owner's name."},{"name":"started_at","type":"timestamp","nullable":true,"description":"When work on it began."},{"name":"went_live_at","type":"timestamp","nullable":true,"description":"When it went live."},{"name":"closed_at","type":"timestamp","nullable":true,"description":"When it was completed or retired."},{"name":"archived_at","type":"timestamp","nullable":true,"description":"When it was dismissed."},{"name":"planned_capex_cents","type":"cents","nullable":true,"description":"The business case's one-off cost, in cents."},{"name":"planned_opex_cents","type":"cents","nullable":true,"description":"The business case's running cost per value period, in cents."},{"name":"planned_cost_savings_cents","type":"cents","nullable":true,"description":"The business case's cost savings per value period, in cents."},{"name":"planned_revenue_uplift_cents","type":"cents","nullable":true,"description":"The business case's revenue uplift per value period, in cents."},{"name":"planned_capacity_cents","type":"cents","nullable":true,"description":"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."},{"name":"planned_value_period","type":"string","nullable":true,"description":"The period the planned per-period figures are stated for."},{"name":"planned_value_cents","type":"cents","nullable":false,"description":"Planned cash value over the whole ROI horizon, in cents: the per-period cost savings and revenue at its margin, annualized, times the horizon."},{"name":"roi_horizon_years","type":"integer","nullable":true,"description":"The years the business case is measured over."},{"name":"time_to_value_months","type":"integer","nullable":true,"description":"The months the business case expected before value arrives."},{"name":"description","type":"text","nullable":true,"description":"What the initiative is, as its team wrote it."},{"name":"hypothesis","type":"text","nullable":true,"description":"What its team expects it to change, in their words."},{"name":"created_at","type":"timestamp","nullable":false,"description":"When it was added to Roiva."},{"name":"roiva_url","type":"string","nullable":false,"description":"Its page in Roiva."}]},{"name":"reported_value","grain":"One row per approved value entry, sample initiatives excluded.","description":"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":[{"name":"snapshot_id","type":"string","nullable":false,"description":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"name":"value_entry_id","type":"id","nullable":false,"description":"The entry's id in Roiva."},{"name":"initiative_id","type":"id","nullable":false,"description":"The initiative it belongs to."},{"name":"amount_cents","type":"cents","nullable":false,"description":"The approved figure, in cents of currency."},{"name":"currency","type":"string","nullable":false,"description":"The currency of amount_cents."},{"name":"usd_amount_cents","type":"cents","nullable":true,"description":"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."},{"name":"usd_rate","type":"number","nullable":true,"description":"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."},{"name":"usd_rate_from","type":"date","nullable":true,"description":"The first ECB day usd_rate averages."},{"name":"usd_rate_through","type":"date","nullable":true,"description":"The last ECB day usd_rate averages."},{"name":"entry_type","type":"string","nullable":false,"description":"What kind of value it is: revenue_gain, cost_savings, cost_avoidance, capacity, capacity_realized."},{"name":"period_start","type":"timestamp","nullable":true,"description":"When the period it covers begins. It decides which period the entry counts in."},{"name":"period_end","type":"timestamp","nullable":true,"description":"When the period it covers ends."},{"name":"period_month","type":"date","nullable":true,"description":"The first day of the month period_start falls in, in UTC."},{"name":"is_estimated","type":"boolean","nullable":false,"description":"Whether whoever recorded it marked it an estimate."},{"name":"confidence_score","type":"number","nullable":true,"description":"The confidence recorded with it, 0 to 100."},{"name":"source_type","type":"string","nullable":false,"description":"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)."},{"name":"provenance","type":"string","nullable":false,"description":"Where the number came from, in the phrase an approver is shown."},{"name":"connection_id","type":"id","nullable":true,"description":"The connection it was synced from."},{"name":"platform","type":"string","nullable":true,"description":"The platform that connection reads."},{"name":"source_ref","type":"string","nullable":true,"description":"The id the originating system knows it by."},{"name":"formula_id","type":"id","nullable":true,"description":"The formula that calculated it."},{"name":"formula_key","type":"string","nullable":true,"description":"That formula's key, stable across its versions."},{"name":"formula_name","type":"string","nullable":true,"description":"That formula's name."},{"name":"formula_version","type":"integer","nullable":true,"description":"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."},{"name":"formula_expression","type":"string","nullable":true,"description":"The expression it was computed with, as recorded when it was evaluated."},{"name":"input_snapshot","type":"json","nullable":false,"description":"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."},{"name":"input_snapshot_sha256","type":"string","nullable":false,"description":"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."},{"name":"vendor_price_effect_cents","type":"cents","nullable":true,"description":"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."},{"name":"own_changes_effect_cents","type":"cents","nullable":true,"description":"Of the same saving, the part the account's own choices earned, in cents."},{"name":"notes","type":"text","nullable":true,"description":"What a person wrote about the figure, in their own words."},{"name":"recorded_by_id","type":"id","nullable":true,"description":"The person who recorded it, or who had the Roiva Assistant draft it (source_type assistant). Empty when Roiva calculated or synced it."},{"name":"recorded_by_name","type":"string","nullable":true,"description":"Their name."},{"name":"approved_at","type":"timestamp","nullable":true,"description":"When it was approved."},{"name":"approved_by_id","type":"id","nullable":true,"description":"The person who approved it. Empty when the account's auto-approve did."},{"name":"approved_by_name","type":"string","nullable":true,"description":"Their name."},{"name":"approval_source","type":"string","nullable":false,"description":"auto when the account's auto-approve setting approved it, direct when a person did."},{"name":"created_at","type":"timestamp","nullable":false,"description":"When it was recorded."},{"name":"updated_at","type":"timestamp","nullable":false,"description":"When it last changed, or its month was locked or reopened."},{"name":"roiva_url","type":"string","nullable":false,"description":"Its page in Roiva, with its inputs and approval history."},{"name":"basis","type":"string","nullable":true,"description":"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)."}]},{"name":"value_inputs","grain":"One row per input of each approved formula entry.","description":"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":[{"name":"snapshot_id","type":"string","nullable":false,"description":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"name":"value_entry_id","type":"id","nullable":false,"description":"The approved entry these are the inputs of."},{"name":"initiative_id","type":"id","nullable":false,"description":"The initiative the entry belongs to."},{"name":"variable","type":"string","nullable":false,"description":"The input's name in the formula's expression."},{"name":"label","type":"string","nullable":true,"description":"What the input is, in words."},{"name":"value","type":"number","nullable":true,"description":"The value the formula used."},{"name":"source_type","type":"string","nullable":true,"description":"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)."},{"name":"metric_key","type":"string","nullable":true,"description":"The metric the value was read from."},{"name":"observation_id","type":"id","nullable":true,"description":"The metric reading used. Its row is in metric_readings."},{"name":"assumption_id","type":"id","nullable":true,"description":"The assumption used, for an assumption input."},{"name":"assumption_key","type":"string","nullable":true,"description":"That assumption's key."},{"name":"assumption_scope","type":"string","nullable":true,"description":"system for one of Roiva's defaults, account for the account's own figure."},{"name":"requires_confirmation","type":"boolean","nullable":true,"description":"Whether the input was one of Roiva's defaults awaiting the account's confirmation when it was used."},{"name":"assumption_effective_from","type":"string","nullable":true,"description":"The date the assumption's figure took effect, as recorded."},{"name":"observed_at","type":"string","nullable":true,"description":"When the reading was taken, as recorded (a date or an ISO 8601 time)."},{"name":"input_period_start","type":"string","nullable":true,"description":"The start of the period the value covers, as recorded."},{"name":"input_period_end","type":"string","nullable":true,"description":"The end of the period the value covers, as recorded."},{"name":"expression","type":"string","nullable":true,"description":"For a derived input, the expression that computed it."}]},{"name":"value_supporting_documents","grain":"One row per document an approved value entry cites.","description":"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":[{"name":"snapshot_id","type":"string","nullable":false,"description":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"name":"value_entry_id","type":"id","nullable":false,"description":"The approved entry that cites it."},{"name":"document_id","type":"id","nullable":false,"description":"The document's id in Roiva."},{"name":"initiative_id","type":"id","nullable":false,"description":"The initiative the document is held on."},{"name":"kind","type":"string","nullable":false,"description":"What the document is: business_case, review_deck, sow, contract, other."},{"name":"restricted","type":"boolean","nullable":false,"description":"Whether it is an SOW or a contract, which Roiva shows only to owners, admins and the initiative's approvers."},{"name":"title","type":"string","nullable":true,"description":"The document's title. Empty for a restricted document."},{"name":"format","type":"string","nullable":false,"description":"file for an uploaded file, link for a link to one held elsewhere."},{"name":"cited_at","type":"timestamp","nullable":false,"description":"When the entry was made to cite it."},{"name":"roiva_url","type":"string","nullable":false,"description":"The citing entry's page in Roiva, where the document opens for those allowed to see it."}]},{"name":"metric_readings","grain":"One row per metric reading an approved formula entry used.","description":"The readings behind the reported figures. Join to value_inputs on observation_id.","columns":[{"name":"snapshot_id","type":"string","nullable":false,"description":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"name":"observation_id","type":"id","nullable":false,"description":"The reading's id in Roiva."},{"name":"metric_key","type":"string","nullable":false,"description":"The metric it is a reading of."},{"name":"metric_name","type":"string","nullable":true,"description":"The metric's name."},{"name":"initiative_id","type":"id","nullable":true,"description":"The initiative it was recorded for. Empty for an account-wide reading."},{"name":"role","type":"string","nullable":false,"description":"reading for a period's figure, baseline for the figure before the initiative."},{"name":"value","type":"number","nullable":false,"description":"The reading."},{"name":"currency","type":"string","nullable":true,"description":"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."},{"name":"period_start","type":"timestamp","nullable":true,"description":"When the period it covers begins."},{"name":"period_end","type":"timestamp","nullable":true,"description":"When the period it covers ends."},{"name":"observed_at","type":"timestamp","nullable":true,"description":"When it was observed."},{"name":"sample_size","type":"integer","nullable":true,"description":"How many records an average was taken over, where recorded."},{"name":"is_estimated","type":"boolean","nullable":false,"description":"Whether it was marked an estimate."},{"name":"source_type","type":"string","nullable":false,"description":"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)."},{"name":"connection_id","type":"id","nullable":true,"description":"The connection it was synced from."},{"name":"dimensions","type":"json","nullable":false,"description":"The breakdown it belongs to, such as a line of business, as JSON with sorted keys."},{"name":"notes","type":"text","nullable":true,"description":"What a person wrote about the reading, in their own words."},{"name":"recorded_by_id","type":"id","nullable":true,"description":"The person who recorded it by hand, or who had the Roiva Assistant record it (source_type assistant)."},{"name":"recorded_by_name","type":"string","nullable":true,"description":"Their name."},{"name":"baseline_method","type":"string","nullable":true,"description":"For a baseline, how the before-figure was measured: history, time_study, without_ai_sample, benchmark, estimate. Empty on a reading."},{"name":"time_study_id","type":"id","nullable":true,"description":"For source_type time_study, the time study it is the published mean of."},{"name":"valid_until","type":"date","nullable":true,"description":"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."}]},{"name":"costs","grain":"One row per cost entry, sample initiatives excluded.","description":"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":[{"name":"snapshot_id","type":"string","nullable":false,"description":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"name":"cost_entry_id","type":"id","nullable":false,"description":"The entry's id in Roiva."},{"name":"initiative_id","type":"id","nullable":false,"description":"The initiative it is booked to."},{"name":"amount_cents","type":"cents","nullable":false,"description":"What it cost, in cents of currency."},{"name":"currency","type":"string","nullable":false,"description":"The currency of amount_cents."},{"name":"usd_amount_cents","type":"cents","nullable":true,"description":"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."},{"name":"usd_rate","type":"number","nullable":true,"description":"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."},{"name":"usd_rate_from","type":"date","nullable":true,"description":"The first ECB day usd_rate averages."},{"name":"usd_rate_through","type":"date","nullable":true,"description":"The last ECB day usd_rate averages."},{"name":"usd_rate_provisional","type":"boolean","nullable":true,"description":"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."},{"name":"cost_category","type":"string","nullable":false,"description":"capex for a one-off cost to build, opex for a cost to run."},{"name":"cost_type","type":"string","nullable":false,"description":"What kind of cost it is, such as licenses, infrastructure or labor."},{"name":"period_start","type":"timestamp","nullable":true,"description":"When the period it covers begins. It decides which period the entry counts in."},{"name":"period_end","type":"timestamp","nullable":true,"description":"When the period it covers ends."},{"name":"period_month","type":"date","nullable":true,"description":"The first day of the month period_start falls in, in UTC."},{"name":"is_estimated","type":"boolean","nullable":false,"description":"Whether it was marked an estimate."},{"name":"locked","type":"boolean","nullable":false,"description":"Whether a closed accounting period holds it, so it can no longer be changed."},{"name":"vendor_id","type":"id","nullable":true,"description":"The vendor it was paid to, in Roiva's vendor list."},{"name":"vendor_name","type":"string","nullable":true,"description":"The vendor's name as recorded."},{"name":"description","type":"text","nullable":true,"description":"What the cost was for, as recorded or synced."},{"name":"notes","type":"text","nullable":true,"description":"What a person wrote about it, in their own words."},{"name":"books_account_name","type":"string","nullable":true,"description":"The general-ledger account it was booked to, for a cost from the books."},{"name":"source_type","type":"string","nullable":false,"description":"How it reached Roiva, such as manual, assistant (recorded by the Roiva Assistant), csv or integration."},{"name":"connection_id","type":"id","nullable":true,"description":"The connection it was synced from."},{"name":"platform","type":"string","nullable":true,"description":"The platform that connection reads."},{"name":"source_ref","type":"string","nullable":true,"description":"The id the originating system knows it by."},{"name":"implementation_id","type":"id","nullable":true,"description":"The implementation project it is attributed to, when it is one."},{"name":"recurring_cost_id","type":"id","nullable":true,"description":"The recurring cost that wrote it, when it is one."},{"name":"allocation_line_id","type":"id","nullable":true,"description":"The allocation line that split it from a shared bill, when it is one."},{"name":"recorded_by_id","type":"id","nullable":true,"description":"The person who recorded it by hand, or who had the Roiva Assistant record it (source_type assistant)."},{"name":"recorded_by_name","type":"string","nullable":true,"description":"Their name."},{"name":"created_at","type":"timestamp","nullable":false,"description":"When it was recorded."},{"name":"updated_at","type":"timestamp","nullable":false,"description":"When it last changed."},{"name":"roiva_url","type":"string","nullable":false,"description":"Its page in Roiva."}]},{"name":"approval_decisions","grain":"One row per approval decision, sample initiatives excluded.","description":"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":[{"name":"snapshot_id","type":"string","nullable":false,"description":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"name":"approval_decision_id","type":"id","nullable":false,"description":"The decision's id in Roiva."},{"name":"subject_kind","type":"string","nullable":false,"description":"What was decided on: initiative, value_entry, budget, charter."},{"name":"subject_id","type":"id","nullable":false,"description":"Its id: a value_entry_id, an initiative_id or a budget_id."},{"name":"initiative_id","type":"id","nullable":true,"description":"The initiative it concerns. Empty once that initiative has been deleted."},{"name":"subject_title","type":"string","nullable":false,"description":"What it was called when the decision was taken."},{"name":"item_label","type":"string","nullable":true,"description":"The line decided on, for a value entry or a budget."},{"name":"decision","type":"string","nullable":false,"description":"The decision: approved, step_approved, rejected, disputed, sent_back. step_approved is one approver's sign-off in a chain that needs more."},{"name":"resulting_state","type":"string","nullable":true,"description":"The state it left the subject in."},{"name":"step","type":"integer","nullable":true,"description":"Which step of the approval chain this was."},{"name":"total_steps","type":"integer","nullable":true,"description":"How many steps the chain had."},{"name":"source","type":"string","nullable":false,"description":"How it was taken: direct, bulk, auto, backfill, assistant, import. auto is the account's auto-approve setting."},{"name":"amount_cents","type":"cents","nullable":true,"description":"The amount decided on, in cents, for a value entry or a budget."},{"name":"currency","type":"string","nullable":true,"description":"The currency of amount_cents."},{"name":"reason","type":"text","nullable":true,"description":"The reason the approver gave, in their own words."},{"name":"decided_by_id","type":"id","nullable":true,"description":"The person who decided. Empty for the account's auto-approve."},{"name":"decided_by_name","type":"string","nullable":true,"description":"Their name."},{"name":"decided_at","type":"timestamp","nullable":false,"description":"When the decision was taken."}]},{"name":"budgets","grain":"One row per budget version, sample initiatives excluded.","description":"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":[{"name":"snapshot_id","type":"string","nullable":false,"description":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"name":"budget_id","type":"id","nullable":false,"description":"The version's id in Roiva."},{"name":"initiative_id","type":"id","nullable":false,"description":"The initiative it budgets."},{"name":"status","type":"string","nullable":false,"description":"pending, approved, rejected, withdrawn. Only approved versions are budgets."},{"name":"source","type":"string","nullable":false,"description":"How it arose: approval (set when the initiative was approved), revision or manual."},{"name":"capex_cents","type":"cents","nullable":false,"description":"The one-off cost signed off, in cents: a total, not a rate."},{"name":"opex_cents","type":"cents","nullable":false,"description":"The running cost signed off, in cents per opex_cadence."},{"name":"opex_cadence","type":"string","nullable":false,"description":"The period opex_cents is stated for: monthly, quarterly or annually."},{"name":"currency","type":"string","nullable":false,"description":"The currency of the amounts."},{"name":"effective_from","type":"date","nullable":false,"description":"The version applies from the start of this date's month."},{"name":"ends_on","type":"date","nullable":true,"description":"The last day it applies, when it has an end."},{"name":"reason","type":"text","nullable":true,"description":"Why the version was set, in the words of whoever set it."},{"name":"set_by_id","type":"id","nullable":true,"description":"The person who set it."},{"name":"set_by_name","type":"string","nullable":true,"description":"Their name."},{"name":"decided_at","type":"timestamp","nullable":true,"description":"When it was approved, rejected or withdrawn."},{"name":"decided_by_id","type":"id","nullable":true,"description":"The person who decided it."},{"name":"decided_by_name","type":"string","nullable":true,"description":"Their name."},{"name":"decision_reason","type":"text","nullable":true,"description":"The reason given with the decision, in the decider's words."},{"name":"approval_decision_id","type":"id","nullable":true,"description":"The approval_decisions row that decided it, when one did."},{"name":"created_at","type":"timestamp","nullable":false,"description":"When the version was written."},{"name":"roiva_url","type":"string","nullable":false,"description":"The initiative's budget page in Roiva."}]},{"name":"budget_vs_actual","grain":"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.","description":"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":[{"name":"snapshot_id","type":"string","nullable":false,"description":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"name":"as_of","type":"date","nullable":false,"description":"The day the comparison runs through."},{"name":"initiative_id","type":"id","nullable":false,"description":"The initiative."},{"name":"status","type":"string","nullable":false,"description":"within or over, as Roiva shows it. Over when either the CapEx or the OpEx half is over."},{"name":"budget_id","type":"id","nullable":false,"description":"The budget version in effect on as_of."},{"name":"revised","type":"boolean","nullable":false,"description":"Whether the budget has been revised since it was first approved."},{"name":"capex_budget_cents","type":"cents","nullable":false,"description":"CapEx signed off, in cents."},{"name":"capex_actual_cents","type":"cents","nullable":false,"description":"CapEx spent since the budget began, in cents."},{"name":"opex_budget_to_date_cents","type":"cents","nullable":false,"description":"OpEx budget for the months from the budget's start through as_of, in cents."},{"name":"opex_actual_cents","type":"cents","nullable":false,"description":"OpEx spent over those months, in cents."},{"name":"budget_to_date_cents","type":"cents","nullable":false,"description":"CapEx budget plus OpEx budget to date, in cents."},{"name":"actual_to_date_cents","type":"cents","nullable":false,"description":"CapEx plus OpEx spent, in cents."},{"name":"variance_cents","type":"cents","nullable":false,"description":"Budget to date less actual, in cents. Positive is under budget."},{"name":"opex_budget_fiscal_year_cents","type":"cents","nullable":false,"description":"The OpEx budget for the whole fiscal year as_of falls in, in cents."},{"name":"opex_budget_fiscal_ytd_cents","type":"cents","nullable":false,"description":"The part of it through as_of, in cents."},{"name":"opex_actual_fiscal_ytd_cents","type":"cents","nullable":false,"description":"OpEx spent in the fiscal year through as_of, in cents."},{"name":"spent_before_budget_cents","type":"cents","nullable":false,"description":"Spend dated before the budget began, reported apart rather than charged to it, in cents."},{"name":"budget_monthly_run_rate_cents","type":"cents","nullable":false,"description":"The version's OpEx per month, in cents."},{"name":"actual_monthly_run_rate_cents","type":"cents","nullable":true,"description":"Average OpEx per month over the recent complete months the budget covered, in cents. Empty before one has passed."}]},{"name":"portfolio_decisions","grain":"One row per portfolio decision, sample initiatives excluded.","description":"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":[{"name":"snapshot_id","type":"string","nullable":false,"description":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"name":"portfolio_decision_id","type":"id","nullable":false,"description":"The decision's id in Roiva."},{"name":"initiative_id","type":"id","nullable":true,"description":"The initiative decided on. Empty once that initiative has been deleted; the decision is kept."},{"name":"subject_title","type":"string","nullable":false,"description":"The initiative's name when it was decided."},{"name":"outcome","type":"string","nullable":false,"description":"continue, scale, fix, pause, retire."},{"name":"stage_before","type":"string","nullable":false,"description":"The initiative's stage before the decision."},{"name":"stage_after","type":"string","nullable":false,"description":"Its stage after."},{"name":"rationale","type":"text","nullable":false,"description":"Why, in the words of whoever decided."},{"name":"next_review_on","type":"date","nullable":true,"description":"When it is to be reviewed again."},{"name":"cash_value_cents","type":"cents","nullable":false,"description":"Approved cash value to the decision, in cents."},{"name":"freed_capacity_cents","type":"cents","nullable":false,"description":"Approved freed capacity to the decision, in cents. Not cash, and not in roi."},{"name":"cost_to_date_cents","type":"cents","nullable":false,"description":"Cost to the decision, in cents."},{"name":"planned_value_cents","type":"cents","nullable":true,"description":"The business case's value over its whole horizon, in cents, at the time."},{"name":"planned_value_to_date_cents","type":"cents","nullable":true,"description":"The business case's value to the decision, in cents."},{"name":"roi","type":"number","nullable":true,"description":"Cash ROI at the decision: (cash value − cost) ÷ cost. Empty without both."},{"name":"currency","type":"string","nullable":false,"description":"The currency of the amounts."},{"name":"decided_by_id","type":"id","nullable":true,"description":"The person who decided."},{"name":"decided_by_name","type":"string","nullable":true,"description":"Their name."},{"name":"decided_at","type":"timestamp","nullable":false,"description":"When."},{"name":"roiva_url","type":"string","nullable":true,"description":"The initiative's decisions in Roiva. Empty once it has been deleted."}]},{"name":"accounting_periods","grain":"One row per month finance has opened for close.","description":"The account's accounting periods and whether each is locked. A month with no row has never been through close in Roiva.","columns":[{"name":"snapshot_id","type":"string","nullable":false,"description":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"name":"month","type":"date","nullable":false,"description":"The first day of the month."},{"name":"status","type":"string","nullable":false,"description":"open, in_review, locked, reopened."},{"name":"locked","type":"boolean","nullable":false,"description":"Whether the month is locked now."},{"name":"locked_at","type":"timestamp","nullable":true,"description":"When it was last locked."},{"name":"locked_by_id","type":"id","nullable":true,"description":"Who locked it."},{"name":"locked_by_name","type":"string","nullable":true,"description":"Their name."},{"name":"reopened_at","type":"timestamp","nullable":true,"description":"When it was last reopened."},{"name":"reopened_by_id","type":"id","nullable":true,"description":"Who reopened it."},{"name":"reopened_by_name","type":"string","nullable":true,"description":"Their name."},{"name":"reopen_reason","type":"text","nullable":true,"description":"Why it was reopened, in their words."}]},{"name":"ai_spend","grain":"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.","description":"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":[{"name":"snapshot_id","type":"string","nullable":false,"description":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"name":"month","type":"date","nullable":false,"description":"The first day of the month."},{"name":"source_kind","type":"string","nullable":false,"description":"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."},{"name":"connection_id","type":"id","nullable":true,"description":"The provider connection. Empty on ai_vendor and card rows."},{"name":"platform","type":"string","nullable":true,"description":"The provider. Empty on ai_vendor and card rows."},{"name":"connection_name","type":"string","nullable":true,"description":"The connection's name in Roiva. Empty on ai_vendor and card rows."},{"name":"vendor_name","type":"string","nullable":true,"description":"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."},{"name":"billed_cents","type":"cents","nullable":false,"description":"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."},{"name":"currency","type":"string","nullable":false,"description":"The currency of the amounts."},{"name":"attribution","type":"string","nullable":true,"description":"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."},{"name":"set_aside","type":"boolean","nullable":true,"description":"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."},{"name":"initiative_count","type":"integer","nullable":true,"description":"How many initiatives take cost from the connection or the vendor's bills. Empty on card rows."},{"name":"booked_cents","type":"cents","nullable":true,"description":"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."},{"name":"ai_billed_cents","type":"cents","nullable":true,"description":"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."},{"name":"ai_booked_cents","type":"cents","nullable":true,"description":"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."}]},{"name":"reported_totals","grain":"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.","description":"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":[{"name":"snapshot_id","type":"string","nullable":false,"description":"The snapshot this row belongs to. Every table in one snapshot describes the same moment."},{"name":"scope","type":"string","nullable":false,"description":"portfolio for the whole account, initiative for one initiative."},{"name":"initiative_id","type":"id","nullable":true,"description":"The initiative, for an initiative row."},{"name":"window_kind","type":"string","nullable":false,"description":"all_time, fiscal_quarter or fiscal_year."},{"name":"window_key","type":"string","nullable":false,"description":"The window's key: all, fy2026-q1, fy2026."},{"name":"window_label","type":"string","nullable":false,"description":"The window as Roiva names it."},{"name":"from_date","type":"date","nullable":true,"description":"The window's first day. Empty for all time."},{"name":"through_date","type":"date","nullable":true,"description":"The window's last day. Empty for all time."},{"name":"window_complete","type":"boolean","nullable":false,"description":"Whether the window had ended when the snapshot was built."},{"name":"cash_value_cents","type":"cents","nullable":false,"description":"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."},{"name":"freed_capacity_cents","type":"cents","nullable":false,"description":"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."},{"name":"cost_cents","type":"cents","nullable":false,"description":"Cost in the window, in cents."},{"name":"net_value_cents","type":"cents","nullable":false,"description":"Cash value less cost, in cents. Freed capacity is not in it."},{"name":"roi","type":"number","nullable":true,"description":"Cash ROI: net value ÷ cost. Empty unless both cash value and cost are above zero, as in Roiva."},{"name":"capex_cents","type":"cents","nullable":true,"description":"The CapEx part of cost_cents, in cents. Portfolio rows only."},{"name":"opex_cents","type":"cents","nullable":true,"description":"The OpEx part of cost_cents, in cents. Portfolio rows only."},{"name":"planned_value_to_date_cents","type":"cents","nullable":true,"description":"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."},{"name":"planned_capacity_to_date_cents","type":"cents","nullable":true,"description":"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."},{"name":"planned_opex_to_date_cents","type":"cents","nullable":true,"description":"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."},{"name":"planned_capex_cents","type":"cents","nullable":true,"description":"The business cases' one-off cost, in cents. Portfolio rows only; leaves out a plan Roiva filled in that no one has confirmed."},{"name":"vendor_price_effect_cents","type":"cents","nullable":true,"description":"Of the approved value, the part AI providers' own price changes gave, in cents. Portfolio rows only; empty where no entry carries that split."}]}]}