Skip to content

My AI Usage

The page you see in your own session. Standing, nudges, sessions you can attribute. Heads-up, not a flag — tier 1 and 2 of the consequence ladder are non-punitive.

This page lives at /me/ai-usage. Every authenticated user can see their own; managers and admins can't see other people's standing here (they read it from the workforce-side governance views).

The standing card

For each active track the user is on, a StandingCard shows:

  • The track name (e.g. OFF_PROJECT_SPEND — meaning AI spend that hasn't been attributed to a project).
  • Current tier — 0 (clear), 1 (heads-up), 2 (acknowledge required), 3 (manager involved), 4 (escalated).
  • Current period start and the amount accumulated against the track in this period.
  • The last nudge timestamp, if any.

Most engineers most of the time see "Tier 0 — clear" with nothing else on the page. That's the goal.

The nudges section

Below the standing card, the NudgesList shows recent actions on the track — typically NUDGE_IN_SESSION or NUDGE_SLACK events delivered by the consequence engine.

Each nudge carries:

  • A short message ("You've spent £142 on AI calls this period without attributing them to a project").
  • An Acknowledge button — flips the nudge to handled.
  • An optional Mark as project button when the nudge points to specific unattributed sessions.

Mark as project

Clicking Mark as project opens a drawer with a project search (debounced at 300ms, server-side). Pick a project and confirm — the selected sessions are attributed to that project and the nudge resolves.

The drawer pulls projects from the user's current plan context. If the user lands on /me/ai-usage without a plan in their URL, the drawer falls back to the live plan.

The reply thread

For the primary track, a ReplyThread lets the engineer respond to nudges in long-form. Replies are recorded as SUBJECT_RESPONSE actions on the consequence state and are visible to the user's manager when they review the case.

This is the channel for context — "I was prototyping a new approach" or "this was for the customer X spike" — that doesn't fit on a single button.

The sessions tab

A second tab on the page — SessionsTab — lists every captured session for the user, with a counter for how many remain unmatched (no project attribution).

The pill on the tab updates live: Sessions (3) if three are unmatched, Sessions if everything's tidy. Clicking a session opens its detail. Same Mark as project flow as on the nudges.

What the consequence ladder is

The consequence ladder is the org's policy for what happens when an engineer accumulates unattributed spend, hits a budget threshold, or trips a content-safety rule repeatedly. Tiers map roughly to:

TierWhat happens
0Clear — no signal at all
1In-session nudge — the engineer sees it on this page
2Acknowledge required — the engineer must click Acknowledge for the period to clear
3Manager informed — a signal goes to the engineer's manager
4Escalated — security or finance gets a copy

Movement through the tiers is automatic and reversible — the next clean period drops the engineer back to tier 0.

What you won't see here

This page is read-only with respect to other people. There's no "view someone else's standing" — that's a manager workflow on the workforce side, not a self-service one. There's also no spend total card — the engineer's actual spend lives in the sessions tab as itemised rows.

Empty state

When the engineer is at tier 0 with no recent nudges, the page renders one card: "You're clear." The sessions tab still works for self-investigation but the standing area is intentionally minimal.

Flowstate Documentation