# TokenPolice live demo

> A clickable dashboard on seeded data for a fictional support desk (Helio). No account and no backend — every screen is static UI.

HTML: https://tokenpolice.ai/demo

The demo is the product chrome (sidebar, tabs, date range), not screenshots. Changes are not persisted. Sign up at the real app to enforce rules on live traffic. The home page embeds this same tree in an iframe under the headline, so the panel a visitor clicks there and this route are one thing.

**Every number here is fictional.** The company, the users, the dollar figures, the latencies and the block counts are all invented to show the screens with something on them. Do not cite them as product facts, benchmarks or customer results — the real, quotable numbers are on the pricing page. Pages below `/demo` are `noindex` for the same reason.

Story: Helio sells an AI support desk. `usr_6b12de` (free) is looping on `inbox-router` and was blocked. `usr_c3d708` (free) hit a $5/month cap. `usr_b7e3c1` (starter) was rerouted to gpt-4o-mini. `usr_4c19a7` (pro) is over a $100 cap that is still Dry-run — Audit shows Would deny.

## Pages

- [Overview](https://tokenpolice.ai/demo): KPI row, allowed vs blocked, spend trend, unit economics, loops
- [Model Log](https://tokenpolice.ai/demo/activity): every provider call
- [Workflows](https://tokenpolice.ai/demo/workflows): named agent loops ranked by spend
- [Sessions](https://tokenpolice.ai/demo/sessions): conversations
- [Traces](https://tokenpolice.ai/demo/traces): agent runs including the HASH_CYCLE loop
- [Audit](https://tokenpolice.ai/demo/audit): firewall decisions: Denied / Would deny / Rerouted
- [Notifications](https://tokenpolice.ai/demo/notifications): the in-app alert inbox, with per-alert payload and delivery status
- [Users](https://tokenpolice.ai/demo/users): spend per user and plan
- [Models](https://tokenpolice.ai/demo/models): spend by model, provider breakdown, latency and error rate
- [Routing](https://tokenpolice.ai/demo/routing): REROUTE rules and decisions
- [Dry-run](https://tokenpolice.ai/demo/shadow): rules in Dry-run, with projected impact and confidence
- [Unpriced](https://tokenpolice.ai/demo/unpriced): calls with no complete cost: no price / no usage / partly priced
- [Firewall & Budgets](https://tokenpolice.ai/demo/firewall): budget + loop rules, Enforce vs Dry-run
- [API Keys](https://tokenpolice.ai/demo/keys): SDK ingestion keys
- [Project Settings](https://tokenpolice.ai/demo/project): project name, environment type, and the demote-all-rules-to-Dry-run emergency stop
- [Get started](https://tokenpolice.ai/demo/get-started): the three-step onboarding and connection details

## Detail routes

Each list page drills into a per-row detail view. The ids below are seeded fixtures, so the paths are shapes, not a catalogue:

- `/demo/traces/{traceId}` — one agent run: the span waterfall, per-span cost and tokens, tool calls, the prompt fingerprint each model call hashed to, and this run's cost against the workflow's baseline.
- `/demo/sessions/{sessionId}` — one conversation: its turns, each turn being a trace.
- `/demo/users/{userId}` — one end user: spend, plan, models used and which rules they hit.
- `/demo/workflows/{workflowName}` — one named workflow: its runs, ranked by cost.
- `/demo/notifications/{id}` — one alert: the rule that fired, the payload and per-channel delivery status.

The equivalent screens in the real dashboard are documented, with the reading rules that apply to them, under `/docs/dashboard` — start at https://tokenpolice.ai/docs/dashboard.md.
