Skip to main content
← Back to blog

A FinOps Workbook That Tells Finance What It Is Missing

Riya Mittal
Riya Mittal Engineer · Zop.Dev
5 min read
A FinOps Workbook That Tells Finance What It Is Missing

A FinOps Workbook That Tells Finance What It Is Missing

A monthly finance pack fails the moment someone asks which of its numbers are final. ZopNight’s Cost Reports can now build an Excel workbook from your billing data, and its first sheet answers that question before anyone asks it.

Export on Cost Reports → Summary is now a menu. The Standard report (CSV) stays exactly as it was. The Advanced report (Excel workbook) opens a page where you design the file, preview it, and have a download link emailed to you.

A gap-first workbook is a report that opens by stating what its figures are missing. It also refuses to build when it cannot vouch for the data underneath. The rest of this piece shows where each part of that rule lives.

Ready-Made Sheets Start the Pack and a Template Finishes It

You begin from ready-made sheets: cost by service, account, team, region, pricing model or tag, a monthly overview, reserved instance, VM and service views, and charge-level dumps for compute, network, databases and storage. A team sheet is where a showback or chargeback conversation starts. Then you make the pack yours. Rename sheets, reorder them, add columns, group charges into your own buckets, and filter by any field or tag.

Under the hood, the pack is a template. A template holds 1 to 12 sheets, each sheet holds 1 to 4 tables, and each table is a dump, a pivot or a monthly layout. A dump can carry up to 60 columns, drawn from fields such as team, a tag key, one of your own buckets or the month.

You can save the setup to a file and open it again next month. Decoding is strict: an unknown field is rejected with a 400 that names it. A typo in a saved setup therefore fails at once, rather than producing a sheet that quietly lacks a column.

A Preview Catches the Problem Before the Email Does

Export is slow work that happens off screen, so the place to catch a mistake is before it starts. The preview validates your template against your real data. It returns sample rows, totals, caveats and a provenance record of whether billing data exists and which cost source the figures use.

You choose 1 to 24 months. Each month is converted into your organization’s currency at that month’s exchange rate, so a pack that spans a rate change never restates an old month at today’s rate.

Architecture diagram

Previews are capped at 2 per pod, with a 429 beyond that, and a preview that runs past 2 minutes returns a 422. Those caps keep a heavy template from tying up a pod that other people share.

Refusing Is Safer Than Guessing

Every row below is a decision to say no instead of shipping a plausible file.

SituationWhat happens
Request body over 64 KBRefused with a 413
Unknown field in the templateRefused with a 400 naming the field
Modeled rack-rate cost sourceRefused with a 409
Tag or team coverage read failsRefused with a 503
Build fails, returns empty or crashesAn export.failed notification is posted
Caller lacks org-wide report:viewRefused before the body is read

The coverage row is the clearest case. If the workbook carried on after a failed tag read, every team column would show zero, and finance would read zero as unallocated spend rather than as missing data. A 503 forces the question to be asked instead.

The modeled rack-rate source is not billing data, so the workbook declines it. And a build that fails or comes back empty posts an export.failed notification, so a missing email is not the only sign that something went wrong.

The First Sheet Names the Gaps

The file opens on an About this report sheet. It says what the figures are and what they are missing, for example months not yet invoiced or tags still being prepared. The caveats the preview showed travel with the file.

That matters because a workbook is forwarded, pasted into a board deck and reopened months later, long after the preview screen is gone. A caveat that lives only in the app is a caveat the next reader never sees.

This works when the reader opens the first tab. It cannot stop someone copying one sheet’s totals onto a slide. What it does is put the gap one click from the first tab, instead of leaving it as something only the exporter knew.

A Two-Year Pack Is Written Row by Row

A 24 month pack is built to be written as it is read. Data streams from the deduplicated line items with one keyset-paged query for each table and each month, and tags and teams are joined in. The writer streams into a temporary file with a streamed zip, so memory follows the size of a page and not the size of the report.

Two bounds still apply. One sheet is capped at 3 GiB, and Excel’s own cap of 1,048,576 rows per sheet is the ceiling for a dump. The emailed link is valid for one hour, so the file does not sit at a permanent address.

This ships without a migration, a new table, a cron job or an environment variable, and the CSV export is untouched. The MCP server gains preview_cost_workbook and export_cost_workbook, so an assistant follows the same preview-then-export path a person does.

Tagged
Riya Mittal

Riya Mittal

Engineer · Zop.Dev

Riya is an AI engineer at ZopDev, working on production LLM pipelines behind the company's content and account-intelligence platforms. She works on the engineering that makes these systems reliable and repeatable, from multi-provider orchestration and structured output validation to evals, idempotent pipelines, and automated recovery. She writes about what it takes to make AI systems reliable enough to run in production.

Stop watching the waste.
Start cutting it.

See. Find. Fix. Automatic.

Connect your first cloud account in under 5 minutes. See your first remediation in under 7. No credit card required.

CDCR connect detect classify remediate
full audit every action traceable
read-only default access
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·