How AI data arrives in Flowstate
Every AI figure in Flowstate comes from one of three places. Knowing which one tells you why two screens can show different numbers for the same month.
The three sources
| Source | What it tells you | How it arrives | Where you see it |
|---|---|---|---|
| Provider bills | What each AI provider charged, and for whom where the provider reports it | You connect each provider under Settings → Integrations. Flowstate brings in past bills straight away, then checks every hour | Dashboard (Provider spend), Breakdown, Adoption, AI caps, spend alerts |
| Cloud Proxy sessions | Each AI conversation on a company Mac: who, which tool and model, what for, and its estimated cost | The Flowstate agent on your Macs sends covered AI traffic through the Cloud Proxy | Agent sessions, My AI → My sessions, spend by project, initiative and task, AI impact |
| AI service accounts | The AI use of your own services, such as a support chatbot | Your engineers add the Flowstate SDK to the service, with the account’s key | Settings → AI → AI Service Accounts, agents’ actual spend |
Set them up: Connect AI providers, Cloud Proxy, AI service accounts.
Matching provider spend to people
- Flowstate matches each provider’s users to your employees by email address, ignoring capitals, then to your contractors.
- Anyone who doesn’t match shows as Unlinked — followed by their email or username, and isn’t counted in any team’s total.
- Flowstate tries again every time it checks the provider, so adding the person or correcting their email in Flowstate fixes it.
Some providers only send a total for the whole organisation, so there’s nobody to match. Connect AI providers shows which.
Tying sessions to people
- Each Mac reports its assigned user’s email from your device management tool.
- Flowstate matches it to an employee’s or contractor’s work email, ignoring capitals.
- If the email doesn’t match anyone in Flowstate, the session isn’t added.
If the person was signed in to the AI tool with an account Flowstate doesn’t recognise — a personal ChatGPT account, for example — the session is kept but shows the person as Unknown.
Tying sessions to work
Title, summary and category. Flowstate reads each session and gives it a short title, a one-line summary and a category: Feature, Architecture, Refactor, Testing, Bug Fix, Debugging, Investigation / Spike, Dependency / Maintenance, Documentation, Personal / Sidetracked or Unclassified. A Personal / Sidetracked session keeps no title or summary and shows as Personal session.
Project. Flowstate ties each session to a project from the work it was part of, such as the tickets and code it relates to. A session’s project shows Pending… until this is done, then a project or No project.
Initiative. A session takes the initiative of its project.
Pull requests. Flowstate links sessions to the GitHub pull requests they helped with. That’s what feeds Engineering insights → AI impact.
Fixing a session’s project
- In Insights → Agent insights → Agent sessions, open the session, then Session actions → Reassign project. You can do this for your own sessions, or for anyone’s if you administer AI governance.
- Anyone can pick a project for their own sessions: in My AI → My sessions, filter to Needs a project and choose one.
- You can’t change a session’s category. What decides where a session’s cost goes is its project, so if a session is counted in the wrong place, reassign its project.
A reassigned session’s cost counts towards its new project.
How AI costs land
Cost formulas are on How costs are calculated.
| Where | From provider bills | From sessions |
|---|---|---|
| Person | The matched employee or contractor | The employee who had the session |
| Team | The person’s current team | The person’s current team |
| Project | — bills don’t say what the spend was for | The session’s project. A session’s whole cost goes to one project |
| Initiative | — | The project’s initiative |
| AI service account | — | Its own line, not on any person or team |
Copilots and agents. A copilot is an AI tool a person uses, such as Cursor or Claude Code. Its spend belongs to that person, never to a separate worker. An agent is an AI worker you plan in Resourcing → Agents & copilots. Its spend is its own line, from the AI service account it runs under. The same tool can be either: Claude Code used by an engineer is copilot use; Claude Code running on its own under a service account is agent work. See The AI cost model.
Seat-based and usage-based tools
In Agent sessions, the Billing model filter picks out sessions by how their tool charges:
| Billing model | What it means | What a session’s cost shows |
|---|---|---|
| Metered usage | You pay for what’s used, such as API tokens | An estimated cost and the tokens used |
| Flat seat | A fixed monthly price per person | The seat’s monthly price, followed by “/mo seat”. The session is covered by the seat |
| Hybrid (seat + overage) | A seat, plus charges above an allowance | ”Seat +”, the overage amount, then “overage” |
| Unmeasured | Flowstate can’t measure the cost | Not measured |
Seat charges come through in provider spend, from the provider’s bill.
What “Spend accounted for” means
Spend accounted for, on the Agent insights Dashboard, compares the two for each month:
- Billed: provider spend for the month.
- Accounted for: the cost of that month’s sessions, with or without a project.
A low share means much of your AI spend happens where the Cloud Proxy can’t see it — tools it doesn’t cover, computers without the agent, or services calling providers directly without an AI service account. It rises as you roll out the Cloud Proxy and add AI service accounts. Months with no bill aren’t shown.
Spend by task, next to it, splits session spend by category. It needs AI attribution.