Dashboard
Once events land, the dashboard needs no configuration — every registered field is already a dimension you can chart, group, and filter by. This page is a tour of what each surface is for.
Overview#
The landing page for a project: the all-time total, spend cards for Today, Yesterday, the previous 7 days, and the previous 30 days, and a daily spend chart for the last 30 days. It answers "what are we spending, and is it moving" — for everything else, the Explorer.
Explorer#
The workhorse. Three controls compose into any slice of your spend:
- Range — presets (Today, 7, 30, 90 days) or any custom day range.
- Filter — pick observed values per dimension from a combobox (or type your own). Multiple values on one dimension are OR; filters on different dimensions are AND. Matching is exact.
- Group by — collapse the range into one row per value of a dimension: Model and Provider are built in, and every registered field joins them. The chart stacks the top-5 groups (plus "Other"); the table below is complete, with each group's total, event count, and share.
Ungrouped, the Explorer is a paged event list — cost, model, and one column per registered field — the place to confirm events are tagged the way you intended. Grouped, clicking a value drills down: it becomes a filter and the events behind the number appear.
The entire state lives in the URL, so any slice is shareable — paste the link and a teammate sees exactly what you see:
| Param | Meaning |
|---|---|
range=today|7d|30d|90d or from+to | The day range (calendar days) |
group=<dimension> | Group-by dimension (model, provider, or a field key) |
f.<key>=<value> (repeated per value) | Filters — OR within a key, AND across keys |
sort, page | Event-list order and page |
Saved views#
Any Explorer state can be saved under a name — the slices you keep coming back to ("Top customers, 30d", "Prod chat spend") become one click, shared with every member of the project. When you tweak a saved view, it shows an (edited) marker and offers Update view to persist the change. Up to 50 per project.
Insights#
One spend chart per dimension — model, provider, and every registered field — on a single page, under one Today / 7 days / 30 days control (Today is bucketed hourly). It's the zero-effort answer to "where is the money going right now"; expanding a tile shows the top-10 values, and Open in Explorer jumps to the same slice with the full toolkit.
Models#
Where pricing lives. Marginal's catalog (synced daily) prices most hosted models automatically; this page shows the per-token rates in $ / 1M tokens. For a model the catalog doesn't know — fine-tunes, self-hosted, deprecated snapshots — add a custom price for the exact model string; custom prices take precedence over the catalog.
An event whose model can't be priced still lands, with its token counts but no cost — never a silent $0. The Explorer shows an unpriced notice linking here; add the price and new events start pricing (already-landed events keep their frozen state).
Prices are applied at ingest and frozen on the event — editing a price never rewrites history. That keeps your totals stable, but it means a custom price is worth adding early.
Timezones#
Every day-based number — the Overview cards and chart, Explorer ranges, Insights buckets — is computed in the project's timezone (Settings). Events are stored in UTC and never rewritten: changing the timezone only regroups days at read time, and the all-time total never changes.