← FinOpsAid blog

What do I actually send to the CFO? Reading the Reports page — FinOpsAid blog

What do I actually send to the CFO? Reading the Reports page

Executive summary, current-month and year-end figures, storage splits, report highlights and the budget-versus-actual table — what each number means and what to export.

Reports is the page you open when someone else needs the numbers. It doesn't compute anything new — every figure appears somewhere else in the product — but it assembles them in the order a finance conversation actually goes: here's the position, here's the trajectory, here's where it's going, here's what we said we'd spend.

Two cards have Export buttons. Those exports are the deliverable; the page is the review before you send them.

Conventions used below are in the grammar behind every number.

Executive Report

A generated summary as a bulleted list, headed by the generation date and organisation name, with an Export button that writes the summary lines to CSV.

Read it as a draft, not as a source. Every claim in it is derived from a card elsewhere in the product, and that card is where the number's basis lives. Before pasting a line into an email, check whether the figure behind it is billed or modeled — the summary text won't carry the badge, and the distinction is exactly what someone in finance will ask about.

The three headline tiles

Tile What it is Direction
Current Month Month-to-date billed spend, with a month-over-month delta chip. Worse.
YTD Spend Year-to-date total. Worse — but this is the accountability number.
Projected Year End Extrapolated full-year spend. Worse.

These three are the shape of the whole conversation: where we are, where we've been, where this ends up.

The gap between YTD and Projected Year End is the part that carries information. If you're seven months in with YTD at $400k and a projection of $600k, the remaining five months are projected at $40k a month against a $57k average so far — which is either a plan or an error, and someone will ask which. Have the answer ready.

Projected Year End extrapolates from history. It doesn't know about the Copilot rollout you're planning or the runner fleet you're about to decommission. Adjust it out loud rather than presenting it as a forecast that accounts for your roadmap.

Storage by category

A ranked list of net storage cost by category — the same data as the treemap on Overview and the donut on Storage, shaped for a report.

It's billed, so it's one of the safest figures on the page to quote. It's here because storage is the line item most likely to be questioned and least likely to be understood — having the category split in the report pre-empts "what is that?"

Report highlights

Six small statistics in a grid:

Stat What it counts Direction
Wasted seats Seats paid for and unused. Lower is better.
Savings (est.) Estimated recoverable value from those seats. Modeled.
Codespaces Total environments. Neutral.
Idle codespaces Environments past the idle threshold. Lower is better.
Open alerts Currently active alerts. Lower is better.
Recommendations Open savings opportunities. Ambiguous — opportunity implies current waste.

This grid is the "are we managing this" section. Wasted seats and idle Codespaces are the two most legible waste metrics in the product — both are countable, both have owners, and neither needs a model to explain. If you're reporting monthly, these two moving down over time is the most persuasive evidence that a cost programme is working.

Budget vs actual

Reading the budget versus actual table Each row shows scope, key, unit, the budgeted amount, the actual to date, percent used and a status chip reading ok, warn or over. Rows are sorted by percent used descending so the ones nearest trouble appear first. Rows whose actual is modeled carry an est. marker beside the key. BUDGET VS ACTUAL — SORTED BY % USED, WORST FIRST SCOPEKEYUNIT BUDGETACTUAL % USEDSTATUS productcopilotUSD $12,000$13,410 112% over teamplatform (est.)USD $4,000$3,520 88% warn Row 2 carries “(est.)” — its actual is a modeled credit-share figure, not a billed one. Never present an (est.) row as an overspend without saying how it was computed. Org and product budgets track billed figures. Team, user and repo budgets track modeled ones. Both rows export to CSV with their status, which is what makes this table the report-ready one.
The (est.) marker is the difference between a finding and an accusation. A team shown over budget on a modeled actual is a conversation about the model as much as about the spend — bring both.

Columns: Scope, Key (with (est.) where the actual is modeled), Unit (USD or credits), Budget, Actual, % used (rendered in the alert colour when over), and a Status chip — ok green, warn amber, over red. Sorted by percent used descending.

The card subtitle is worth noting: "Your configured budgets and usage as of last sync. Manage them on the Budgets page." This table is read-only; it reports on decisions made on Budgets.

With no budgets configured, the card reads "No budgets configured. Set one on the Budgets page" — which is itself a finding, and one worth fixing before you send a monthly report, because a report with no budget line has nothing to hold anyone to.

Building the monthly report from this page

A workable sequence:

  1. Position — Current Month with its delta, YTD.
  2. Trajectory — Projected Year End, with your own adjustment for anything the extrapolation can't know.
  3. Accountability — Budget vs actual, exported. Flag any (est.) row explicitly.
  4. Progress — Wasted seats and idle Codespaces, compared to last month. This is the evidence the programme is working.
  5. Composition — Storage by category, and the product split from Cost Explorer, for the "what is this made of" question.
  6. Next — the top high-confidence items from Savings, with their evidence lines.

The full argument for that structure is in the monthly GitHub cost report executives actually read.

What people get wrong on this page

The 60-second read

Frequently asked questions

What should go in a monthly GitHub cost report?

Position, trajectory and accountability, in that order: current month with its delta and year-to-date, then projected year end, then budget versus actual. Add wasted seats and idle Codespaces compared with last month, since those trending down is the clearest evidence a cost programme is working.

Can I trust the AI executive summary in the report?

Treat it as a draft rather than a source. Every claim in it is derived from a card elsewhere in the product, and that card is where the number's basis lives. The summary text carries no billed-versus-modeled badge, which is exactly what someone in finance will ask about.

What does the (est.) marker mean in the budget versus actual table?

It means that row's actual is a modeled figure rather than a billed one, which happens for team, user and repository scopes because GitHub does not attribute cost that way. Never present an (est.) row as a hard overspend without also saying how it was computed.

Want a monthly report you can send without editing? Connect your GitHub org — read-only and free during beta — or explore the demo first. Next: how to read the Sync Activity page.