AI & data platform cost audit · read-only
Token burn isn’t a
mystery. It’s a list.
Zephto audits Microsoft Foundry, Databricks, Fabric and the Azure estate underneath them across 118 checks — every deployment, job and capacity named, priced against your actual rates, sorted by what it costs you to leave alone.
Where the growth is
AI and data platform spend is the fastest-growing line on the bill and the least governed
Every other Azure service has a decade of FinOps practice behind it. Tokens, DBUs and Capacity Units have about two years — and they bill in units nobody in finance can read. 52 of our 118 checks live here.
Microsoft Foundry & Azure OpenAI
PTU sizing against P95 demand, idle provisioned deployments, max_tokens inflating reserved capacity, prompt-prefix cache alignment, batch-eligible traffic on Global Standard, frontier models doing mini-model work, Data Zone premiums without a residency requirement, fine-tune hosting left running, token telemetry that cannot be attributed to a feature.
Databricks
All-Purpose clusters running scheduled production jobs, auto-termination windows measured in hours, SQL warehouse class against real query pattern, Photon enabled where it does not pay, jobs that fail repeatedly and bill anyway, DBCU commitment coverage, Standard-tier workspaces facing the October 2026 Premium upgrade, untagged workloads in system.billing.usage.
Microsoft Fabric
F-SKU sized against a peak that no longer happens, pay-as-you-go capacities never paused, reserved capacity paused under the impression it stops billing, throttling absorbed silently instead of surfaced, background versus interactive workload placement against the smoothing window, OneLake storage growth, dev and test sharing a production capacity.
The units are the problem. A PTU-hour, a DBU and a CU-second are three different abstractions over the same question: is this thing doing work? Every check in this block resolves back to that question and then to a dollar figure at your contracted rate.
One caveat we would rather say up front. These findings are harder to bank than infrastructure ones. Deleting a disk takes a change ticket; changing model routing takes an eval harness and someone who owns AI cost. We report identified and realistic separately for exactly this reason, and the realization rates in this block are the lowest in the report.
Three findings that show up almost every time
The expensive defaults
max_tokens is a reservation, not a ceiling
Provisioned throughput utilization counts input tokens plus whatever you set as max_tokens — not what the model actually returned. A default of 4096 against 200-token answers means you sized your PTU commitment for capacity you have never once used.
Production ETL on an interactive cluster
All-Purpose compute costs roughly two to three times Jobs compute for identical hardware. Pipelines land there because a cluster was already running and nobody changed the default, and the premium buys nothing an automated job can use.
Capacity billing through the night
A pay-as-you-go F-SKU pauses in seconds and resumes in about thirty. A capacity serving a team that works business hours and never pauses is spending most of its life idle — and the mirror-image error, pausing a reserved capacity expecting the bill to stop, is just as common.
Where the money sat
The waste rate is highest here — and unlike a deleted disk, it comes back
The distribution below is the one in our sample pack: 39 findings across nine domains, on an estate that is deliberately AI-heavy. Yours will look different. If AI and data sit under about a fifth of your bill, commitment coverage and compute rightsizing will still be the larger number in dollars — the first assessment is how you find out which side of that line you are on.
Why we still lead with the AI and data blocks. Most classic infrastructure savings are one-time — delete the orphaned snapshots and they are gone for good. Token, DBU and capacity waste regenerates every time a model ships, a prompt changes or an agent gets deployed. The percentages here are also simply higher: a 2–3x compute-class error or a capacity that never pauses dwarfs the 10–20% you recover from rightsizing a VM.
Governance returns nothing directly — and it is near the top of the list. Untagged token spend does not cost extra. It costs you the ability to say which feature, team or customer burned it, which is why the rows above took a year to notice.
The check set
Everything underneath, still checked
The AI and data platform work sits on top of an estate that also drifts. 66 checks cover it, grouped the way your subscriptions actually are.
Kept current
The check set is versioned, and it moves every month
Microsoft repriced Foundry geographies in September. Databricks is retiring a tier in October. Fabric’s pause mechanics do not work the way most teams assume. A check set written last year is quietly wrong, so ours ships with a version number (v2026.08) and a changelog — and every run uses the current one.
Foundry geography premiums
Microsoft Foundry raised EU Data Zone pricing 9% above Global and non-US Regional deployments 7–16%, and launched an APAC Data Zone at a 20% premium, effective 1 September. Added AIF-019: deployments sitting in a premium geography with no data-residency requirement behind them.
Prompt cache breakpoints
GPT-5.6 and later families support explicit cache breakpoints on Standard deployments, and cache writes can now carry a charge. Revised AIF-014 to test prefix stability against the new breakpoint model rather than assuming caching is free and automatic.
Databricks Standard tier sunset
Azure blocked new Standard workspaces in April and auto-upgrades every remaining one to Premium on 1 October 2026, a rate increase north of 35%. Added DBX-015: Standard workspaces with no migration plan and no budget line for the change.
Fabric pause and reservation mechanics
Pausing a capacity only stops billing on pay-as-you-go; reserved capacity bills through the pause. Fabric still has no native capacity autoscale. Split FAB-009 into separate pay-as-you-go and reserved checks, because the correct action is opposite in each case.
You get the version number on the report. When your second audit runs against a newer check set, the comparison names which findings are new because your estate changed and which are new because the platform did. Those are different problems and they go to different people.
The run
Three steps, one week
Grant read access
Reader and Cost Management Reader on Azure, a read grant on the Databricks system tables, and capacity metrics read on Fabric. Nothing installed, nothing deployed, nothing changed.
Run the audit
Ninety days of inventory, token telemetry, DBU consumption, CU utilization and billing detail, then all 118 checks resolved down to named deployments, jobs, capacities and resources.
Work the list
The workbook, a three-page summary for whoever signs off, and a call where your engineers get to tell us which four findings are wrong. The disagreements are the useful part.
Find out what your tokens are costing you
Read-only access, one week, a list you can hand straight to your platform and data teams.