Reading the dashboard
Costpilot answers one question: what does AI-assisted work on a feature cost? Everything on the dashboard is cost, rolled up by a dimension, for a date range. This page explains how to read it without knowing the telemetry underneath.
Pick a date range
The range picker offers Today, 7, 30 and 90 days, This month, Last month, All time and a custom range. Every number on the page follows it, and the deltas compare against the previous period of the same length.
Dates are the dates the cost occurred, in UTC, not when an issue was created or closed. An issue that was worked on in two months shows up in both with the respective share.
The hero band
| Figure | Meaning |
|---|---|
| Spend | Total cost in USD. Claude Code's own reported cost where available, otherwise priced from tokens |
| Issues touched | Distinct issues with at least one model call in the range |
| Ø cost per issue | Spend divided by issues touched |
| Turns | Prompts people sent, each with the model calls until the next prompt, plus one turn per pipeline-agent run. Shown with Ø cost per turn in place of the issue figures once the scope is a single issue |
| Ø cost per turn | Spend inside turns divided by turns |
The chart under the figures is the cost per day, or per hour for ranges up to two days. In a drilldown it becomes the trend of the selected scope, or a stacked chart by the group-by dimension.
Tokens are not comparable across tools, providers or models because tokenizers and prices differ. USD is the authoritative, comparable figure.
Dimensions and drilldown
Seven tiles break the cost down: Project, Issue, Actor, Provider, Model, Source (which tool emitted the telemetry) and Repository. Actor type separates humans from agents. Click any value to drill down. The breadcrumb shows the active filters; filters combine, so "project PLAT, actor Alice" is one click away.
- Project comes from the issue key when it matches a project's pattern, else from the repository. "No project" means neither matched; see Projects.
- Issue carries the key and, if your tracker is mirrored, the title.
"No issue" collects calls on branches without an issue key; the branch
name is still available as the
branchdimension. - Actor is a person at a coding tool or a named pipeline agent. An actor's drilldown shows a KPI strip, the active period, and a weekday × hour punchcard of calls. An agent's drilldown shows runs and cost per run. "No actor" is usage with neither a user nor an agent name.
The Analysis tab
The Analysis tab compares issues inside a project, or across all projects: by cost, by turns, or by cost per turn. A distribution shows where the median sits and which issues are outliers, and a scatter plots every issue. You can compare two groups, for example two squads' projects, within the same date range. Groups under 30 issues carry a note that differences may be chance.
By default (whole) an issue counts everything ever recorded for it, so
that an issue that started before the range is not cut in half; range
counts only the selected range.
Tool usage card
Calls, errors and average duration of the coding tools' tool calls (Claude Code, Gemini CLI, Codex CLI) and MCP servers. It shows how often tools were used, never what they cost: the telemetry cannot split tokens by tool. See What telemetry can tell you.
What is deliberately missing
- Lines of code are collected but not shown. They reward the wrong thing.
- Active time is collected but not shown as a KPI either. It is a tool-side measure that includes waits on the human; the turn is the unit the dashboard works with.
- Cost per prompt is not shown; the atomic unit is the model call, and the turn is the unit of developer interaction.
- Issues without any AI usage never appear. The absence of tokens cannot be distinguished from "no AI work" and "work without AI".