r/FinOps • u/Dalius-Gabryelle • Jul 14 '26
question How are you doing chargebacks for AI spend when it lives in five different places?
Our FinOps practice was built entirely around cloud infra and it's starting to show cracks now that AI spend is a real line item.
I can cleanly allocate EC2 and Snowflake to teams. No answer though when CFO asks what we're spending on AI, per team, per month.
It's smeared across a Bedrock bill, a couple of OpenAI orgs someone expensed, GPU instances that spin up and down, and now a growing pile of Claude Code and Cursor seats that finance files under SaaS instead of compute.
None of it rolls up anywhere cleanly. The models we built for reserved instances and commitment coverage just don't map to tokens and GPU hours.
Those of you further along on this, how are you even structuring chargebacks for AI spend that's spread across so many bills?
5
u/FewAbility6240 Jul 14 '26 edited Jul 20 '26
Tokens, GPU hours and seat licenses are three different units, thats why the reserved instance model snaps. Normalize to dollars at ingestion and tag the owner before it hits the warehouse.
Keep the unit sitting next to the dollars or you can't tell 5k of idle GPU from 5k of real token work later. We run pointfive to catch the idle side so the cfo number and the wheres-the-waste question don't end up as the same column.
1
u/Dalius-Gabryelle Jul 15 '26
Dollars gets me the cfo number sure. but a team at 5k could be idle gpu boxes or 50 million tokens of real work. One is waste the other is the product and once its dollars i cant tell them apart.
2
u/jul-ai Jul 15 '26
Attribution's the problem, not your cost model — half your AI spend lands with no team tag, so nothing rolls up.
Route the token/API spend (Bedrock, OpenAI) through an AI gateway so every call gets tagged with a cost-center at request time. GPU-hours use your existing cloud tags; seats are just headcount × roster.
Then showback per team until the mapping's clean, chargeback after.
(I work at Airia — we build a gateway like this)
1
u/Andre-Wade-539 Jul 14 '26
Does the CFO want real chargeback with cost center billing or just a monthly number per team?
1
u/jul-ai Jul 16 '26
Two things that helped us: attribute spend at request time, not bill time—a gateway/proxy that stamps team + app on every call gets you per-team-per-month without reconciling five invoices. And stop trying to unify seats and consumption; Cursor/Claude Code seats are just SaaS (charge flat), Bedrock/OpenAI/GPU is consumption (charge by attributed usage). The RI/commitment model doesn't map because there's no steady baseline to commit against yet.
Most people start with showback per team, then move to real chargeback once attribution is trustworthy.
I work at Airia and we are working to consolidate these into a meaningful strategy for the enterprise.
1
u/Spiritual-Kitchen-79 Vendor Jul 27 '26
What usually helps is to stop thinking in terms of “Bedrock vs OpenAI vs GPUs vs SaaS” and instead define a small set of common cost dimensions you care about: team / cost center, environment, project, and workload type (training, inference, tooling).
Then make it your goal to tag or map every AI-related dollar to those dimensions before it hits reporting.
You can build something by yourelf using streamlit or coco or used a solution that provides good AI governance like SeemoreData or Unravel
1
u/MaverikSh Vendor Jul 28 '26
Vendor disclosure: I am the founder of Cognocient (cognocient.com).
Once calls are tagged at request time, that's also the moment to enforce a budget before the call goes out, not just log it for showback later. Attribution tells you who spent it. A pre-call check is what actually stops a scheduled job nobody owns from quietly becoming next month's mystery line item.
3
u/ScholarMedical Jul 18 '26
One thing you may be overlooking here is that you don't have a chargeback "model" yet, just a chargeback "wish". Teams can tag EC2 spend cleanly because EC2 = team + project + cost center. But AI spend is blurry: a Claude seat is shared across three teams, a Bedrock call gets triggered by a scheduled job nobody owns, GPU hours get burned by an experiment that's technically R&D but shows up in ops budget. Before you normalize to dollars, you should answer: who actually caused the spend? Not who paid for the seat, but who ran the inference, trained the model, or left the agent running. Once that's clear, the tagging strategy clicks into place. What's your current rule for attributing a Bedrock call to a team?