Fireworks AI spend desk with team chargeback and idle GPU audit

By General Input

Break down Fireworks AI spend by model, key, and team over any date range, flag untagged usage loudly, and catch dedicated capacity you pay for but never use.

Integrations

  • Fireworks AI
  • Google Sheets
  • Slack Bot

Type

App

Categories

  • Finance
  • Engineering

Build me an internal app that our platform lead opens once a week to see where our Fireworks AI money actually goes, and to catch capacity we are paying for but not using. It has two main tabs plus two actions, and it is the single place we answer the question "who spent this and why did it go up".

The first tab is the spend breakdown, and it is the default view. At the top put a date range picker that defaults to the current month to date, with quick presets for last 7 days, last 30 days, and previous calendar month. Use the Fireworks AI Get Billing Usage operation to pull rated usage and cost for the selected window, and render three groupings the user can switch between: by model, by API key, and by custom tag. Each grouping is a sortable table showing the dimension name, total cost, share of total spend for the window, and token or request volume where the billing data provides it. Sort by cost descending by default.

Every spend line needs an owner. Keep a team ownership map in a Google Sheet and read it with the Google Sheets Get Values operation. The sheet has columns for the dimension type (model, key, or tag), the dimension value, the owning team, and the team contact. Join that map onto the billing rows so every line in every grouping displays an owner column. Let the user set the spreadsheet ID and tab range in an app settings panel, and cache the map per page load rather than re-reading it for each row.

Flag untagged spend loudly at the very top of the page, above the tables, as a full width banner. Untagged usage is the part no team ever claims, so it should be impossible to miss. The banner shows the untagged dollar amount for the selected window, what percentage of total spend it represents, and which models and API keys the untagged usage came from, so someone can go attach tags at the source. Style it as a warning when untagged spend is above a threshold the user can configure, defaulting to five percent of total spend, and as a quiet confirmation when untagged spend is zero. Spend that has a tag but no matching row in the ownership sheet is a separate and equally visible problem: show those lines as "unmapped owner" so the fix is obvious, which is adding a row to the sheet rather than tagging in Fireworks.

The second tab is the dedicated deployment audit. Use the Fireworks AI List Deployments operation to get every dedicated deployment in the account, then call Get Deployment for each one to pull its full configuration and status. Show a table with the deployment name, the model it serves, accelerator type and count, replica counts including minimum and maximum, autoscaling settings, current state, and creation or update time. This tab exists because dedicated deployments bill for GPU capacity whether or not they are serving traffic, which is a completely different cost model from serverless. Sort the deployments most likely to be wasting money to the top: deployments that are running with no recent usage attributed to them in the billing data, deployments whose minimum replica count keeps capacity permanently warm, and deployments that look oversized for the traffic they serve. Give each row a plain reason chip such as "idle, no billed usage this window" or "floor of 2 replicas always on" so the ranking explains itself. Also make it clear in the interface that a rate limit error on a dedicated deployment means that deployment is saturated rather than an account level cap, because saturated and idle are opposite decisions and this page is where someone decides which one they are looking at.

Put an "Explain this" button on every spend line in the first tab. Clicking it starts a background agent scoped to that specific line and date window. The agent pulls the usage breakdown for that dimension and window with Get Billing Usage, compares it against the preceding equivalent window to quantify the change, then checks the Fireworks AI List Models operation and the List Supervised Fine-Tuning Jobs operation to find what changed around that time, such as a newly added custom model, a model that was swapped, or fine-tuning jobs that ran and added cost. It then writes a short plain language explanation back into the app, attached to that spend line, saying what drove the increase and what the likely cause was. Show the explanation inline under the row once it is ready, with a timestamp and the window it covered, and keep past explanations so the same question does not get asked twice. While the agent is working, show that line as pending rather than blocking the rest of the page, since several explanations may be running at once. Tell the agent to write for a platform lead who wants a cause and not a chart, and to say plainly when the data does not show a clear cause instead of inventing one.

Add an "Export chargeback" button for month end. It takes the current window, computes the per team split by rolling every spend line up to its owning team from the ownership map, and writes those rows to the Google Sheet with the Append Values operation, one row per team with the period, team name, dollar amount, percentage of total, and a separate explicit row for untagged and unmapped spend so the sheet always reconciles to the full bill. After the sheet write succeeds, post the summary to our platform channel using the Slack Bot Send a Message operation, with the total for the period, the per team split, the untagged amount called out, and a short note on any idle deployments the audit tab found. Show a confirmation in the app with a link to the Slack message, and guard against someone exporting the same period twice by warning when a period has already been written.

A few rules to bake in throughout. Money is the unit of the whole app, so format every figure as currency with consistent precision and always show the window a number covers. The page should be readable cold by someone who did not build it, so label what serverless versus dedicated spend means where the distinction affects a number. Handle an empty or malformed ownership sheet gracefully by falling back to showing all spend as unmapped rather than failing the page, and make the app settings panel the one place to configure the spreadsheet, the Slack channel, and the untagged threshold.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerA brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensStop cold emails to anyone with a live deal in PipedriveLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasoniMessage campaign console with pre-flight checks and delivery board