Making AI spend visible, then letting leaders ask it questions
AI spend at MillerKnoll was spread across six vendors, each with its own portal and billing model. The AI Analytics Dashboard puts all of it on one screen that refreshes daily, and its Data Assistant answers questions about what’s on that screen.
The problem
As AI adoption grew, so did the number of places its cost showed up. Claude Enterprise seats and usage, Claude Console workspaces, GitHub Copilot, M365 Copilot licences, AWS Bedrock and Gemini each had their own portal, their own billing model, and their own definition of a month. Nobody could answer a simple question like “what are we spending on AI, and who is using it?” without stitching exports together by hand. By the time the spreadsheet was done, the numbers were out of date.
What we built
The AI Analytics Dashboard, built by AISE with Andrew Stoddard in Enterprise Apps, pulls every source into one view every day. It shows total AI spend by month, Claude seats and adoption by budget owner, spend limits, per-vendor detail, a year-end projection, and the initiative pipeline. There’s no build step and no server: scheduled jobs fetch from each vendor’s API and commit the data, and the page reads it.
Most of the work was making the numbers honest. Vendor APIs disagree with each other and sometimes with themselves. The Claude analytics API reported 146 seats in June when 40 people actually held one, so seat counts come from the licence tracker instead. Credit-covered usage doesn’t show up in any API this org can reach, so the spend tabs carried a banner saying so until the credit lapsed. One-time and monthly budget lines are never added together into a single figure. Where a number can’t be trusted, the dashboard says so rather than showing it as fact.
“Where a figure can’t be trusted, the dashboard says so. A number with a caveat is more useful to a leader than a clean number that’s wrong.”
— AI Solutions Engineering
Then we let people ask it questions
A dashboard answers the questions its designer thought of. The Data Assistant handles the rest. It’s a panel on every tab that knows which tab you’re on and what the page has already loaded, so “why did this jump in August?” means the chart in front of you. It knows the budget owners, the Technology Leadership Team, and the fiscal year, and every figure it gives comes from the dashboard’s own data. Ask where spend lands for the year and you get the dashboard’s projection, named as such. It never produces a forecast of its own.
The first version ran as a Power Automate flow, and answers took 47 to 150 seconds, too slow to use in a conversation. Moving the Claude call and the tool loop into an Azure Function and streaming the answer brought a warm response down to about six seconds. That makes it something a leader can use in the middle of a meeting. Cory Whipple in Enterprise Apps set up the Function App, then linked it behind the dashboard’s MillerKnoll sign-in, so only signed-in users can reach the assistant and there is no key to manage.
What it changes
Leadership can see what AI costs, where it’s growing, and whether licences are being used, without waiting for a report. The initiative pipeline sits beside the spend, so cost and delivery are discussed together. The same approach carries into every AISE build: the value of an agent depends on whether people can trust its numbers.
