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.