AI Investment Overview
Last updated: August 28, 2026
Every AI coding interaction produces token usage. We look up the price for that model and
apply it, then spread the resulting dollars across the PRs, models, and tasks that the work
touched - so cost can be sliced any way the product needs.
Data flow
flowchart LR
A[Capture activity via coding hooks] --> B[Normalize into turns]
B --> C[Price the tokens via API or pricing settings]
C --> D[Allocate the dollars between atoms]
D --> E[Cost & Outcomes]
1. Where the data comes from
AI activity is captured by two collection paths:
Coding hooks — our client-side hooks in the developer’s tools (Cursor, GitHub Copilot,
Claude Code, Codex, VS Code).Auspex hooks — our open-source / standards-based collection path.
Both feed the same downstream pipeline, so a customer can send data either way.
2. Normalize into turns
Raw events are cleaned up and grouped into turns (one request / response exchange with a model), tagged with the model name and token counts (input, output, cached, cache-read, reasoning).
3. Price the tokens
Each turn is priced by looking up the rate for its (model, date, usage tier):
Most tools (Copilot, Claude Code, Codex, VS Code) are priced from tokens using our
managed price catalog.Cursor is different: we use Cursor’s own billing numbers as the source of truth rather than re-deriving them from tokens. Cursor cost is token-based where Cursor reports token cost, and per-request where it reports a flat request charge.
If no price exists yet for a model, the turn is marked unpriced (not $0) so we never under-report - it gets priced automatically once a rate is available (see automatic change detection).
4. Allocate the dollars
Priced dollars are spread across dimensions so cost is additive and sliceable:
Across PRs the trace contributed to (weighted by lines changed).
Across models used (depending on actual usage).
Across tasks the work was classified into (equally between all detected tasks).
This is what powers multi-dimensional breakdowns (e.g. repository → task → model → PR status).
5. Show in product
Costs surface in the AI cost / trace cost views, in per-PR cost breakdowns, and in the
Sankey-style cost granularity breakdowns.
How customers can affect pricing
Lever | What it does |
|---|---|
Custom price rows | Alongside our curated default rates, an org can have custom rows in the price catalog. These are resolved per-org, so a customer’s negotiated or actual rates can override defaults for their models. |
Per-request vs token pricing | Tools that bill per request (notably some Cursor usage) are costed on a per-request basis; token-billed usage is costed on tokens. This mirrors how the underlying vendor actually charges. |
Cursor billing as source of truth | For Cursor, the customer’s actual Cursor billing drives the number — we don’t estimate it. |
Model coverage | Cost only appears for models we have a price for. New or unusual models show as unpriced until a rate (default or custom) is added — surfaced via monitoring rather than hidden. |
Supported tools
Every tool feeds the same pipeline; the difference is where the number comes from and which token types matter.
Tool | How data arrives | Pricing basis | Notes |
|---|---|---|---|
Cursor | Cursor billing (via sync) | Cursor's own billing | Source of truth — we don't estimate. Token-based where Cursor reports token cost, per-request where it reports a flat request charge. |
GitHub Copilot | Coding hooks / Auspex | Tokens (our catalog) | Prices input, output, and both cached and cache-read tokens. |
Claude Code | Coding hooks / Auspex | Tokens (our catalog) | Prices input, output, cache-read, and short-/long-lived cache-write tokens separately. |
Codex | Coding hooks / Auspex | Tokens (our catalog) | Prices input, output, and cached input tokens. |
VS Code | Coding hooks / Auspex | Tokens (our catalog) | Prices input and output tokens. |
Everything except Cursor is priced from tokens using our managed catalog, so custom price rows and new-model coverage apply to those tools. Cursor cost tracks the customer's actual Cursor billing instead.
Automatic change detection
Prices change over time (vendor price cuts, new models, corrected rates, new custom rows). The
system keeps costs current automatically:
The pipeline continuously checks for pricing changes in our settings and re-prices any affected activity - no manual backfill needed.
A safety net regularly re-tries anything still unpriced, so activity captured before a rate existed gets costed once the rate lands.
Monitoring alerts fire when a model/tool is producing activity but has no price, so gaps get
caught and closed quickly.
Key principles
Unpriced ≠ free. Missing a rate means “we don’t know yet,” never “$0.”
Cursor is authoritative; everything else is priced from tokens.
Costs are additive. The same dollar is consistently attributable to a PR, a model, and a task,
which is what makes cross-cutting breakdowns trustworthy.