OpenAI + Anthropic + Google in One Product: How to See Cost and Margin in One Place
Somewhere in your codebase, OpenAI handles the fast chat path. Anthropic handles the thing that needs a steadier hand. Google covers long context, or embeddings, or the integration your CTO did not want to rewrite. Each of those choices made sense in isolation. None of them came with a unified view of what you spend to serve customer A versus customer B — because that was never the providers' job.
So every month, someone exports three CSVs, smushes them into a Google Sheet, and adds a tab called "FINAL v3." By Tuesday, someone else has already found a mistake in a formula. By Friday, leadership is still asking a simple question — "which customers are profitable?" — and the honest answer is still "we think so, but we cannot prove it in one screen."
This is not a rant against spreadsheets. They got you this far. The problem is using them as a permanent bridge between systems that were never designed to talk in your vocabulary: your account IDs, your feature names, your Stripe price IDs. The question is not which model wins on a leaderboard. It is whether you can look at your own business and see margin — across every provider you actually use.
What the dashboards are actually for
OpenAI, Anthropic, and Google will show you what to put on an invoice. They will show you model mix, rough usage trends, sometimes helpful breakdowns. What they will not do is inherit your notion of "customer." They do not know that workspace 4410 is on a legacy plan, or that feature flags send certain traffic to Claude and other traffic to GPT. Export all three and you get three different dialects of "usage" — and you have not even joined Stripe yet.
That is not negligence on their side. It is scope. Your unit economics are your problem. The uncomfortable part is pretending a stack of exports is the same as understanding them.
What "one view" actually means
You need a few boring ingredients. First, the same customer or workspace identifier on every AI call, no matter which provider answers. If IDs drift between services, you will reconcile forever. Second, a way to turn raw tokens and seconds into dollars that match reality — list prices change, discounts exist, and your margin moves even when user behaviour looks flat. Third, billing in the loop: Stripe (or whatever you charge with) stays the source of truth for what each account actually paid you.
None of that magically requires a data warehouse on day one. It does require admitting that finance cannot carry the entire mapping in their head, and engineering cannot answer "who costs us money?" from three browser tabs. Someone has to own a layer that is not a vendor dashboard and not a fragile formula.
When that layer exists, the conversations change. Instead of "AI spend is up twenty percent," you get "these twelve accounts crossed a line we set" or "this feature spiked when we shipped the new default model." Specific beats theatrical.
Rates change, and your spreadsheet does not know yet
Providers adjust pricing. Models get cheaper or more expensive. Promotional credits expire. If your only alarm is the total bill, you notice late — usually in a month when nothing obvious changed in the product, which makes everyone defensive. If you watch cost per customer and per feature, you can react with routing, pricing, or limits while the problem is still explainable.
The organisational comedy is familiar: engineering lives in three consoles, finance lives in one spreadsheet, and neither side fully trusts the other's artefact. Another steering committee will not fix that. A shared place where both numbers meet might.
If you want a place to play before you commit
Our model pricing pages and AI cost calculator are useful for asking "what if we moved this workload?" across vendors without a single line of code. When you are tired of being the human glue between OpenAI, Anthropic, Google, and Stripe, PerUnit is what we built: direct sync to those provider accounts, mapped to the customer and feature tags you already send — so the next time someone asks who is driving the bill, you have an answer that did not come from a tab named FINAL v4.