A concept for governing AI spend at professional-services firms

Attributability is accountability.

Left uncoded, AI-assisted work defaults to overhead — nobody bills a chat. I built this concept out end to end to see how a firm could match every prompt to an open client or project code before it runs, so the work stays billable and the spend stays accountable. Below is the argument, how it works, and a demo you can click through.

Ledger.AI is a concept, not a product for sale. Everything except the model call is built and running; the model responses are simulated.

The real exposure

Why ration the tokens that make you money?

Usage caps and per-model cost controls barely move the needle. A $5 prompt is noise next to the $200 a properly coded engagement can bill for the work it produced. The lever that matters isn't spend control — it's making sure every prompt carries a code.

A coded prompt bills exactly like any other time entry under T&M: same code, same rate card, same invoice. An uncoded one doesn't vanish — it's revenue the firm already earned and has no mechanism to capture. Most firms can't say which client or project should have been billed for that work in the first place.

The fix

Treat every prompt like a time entry.

Your resourcing or timekeeping system already requires an open client code before it logs an hour. Ledger applies the same rule upstream of the model: match the request to a code from your existing list, or tell the sender exactly who can unblock it. Nothing routes uncoded.

How it works

A router that checks your code list before it checks the model list.

RECEIVE

A prompt comes in

From the chat window — no different from any router today.

MATCH

It's matched to a live client or project code

Pulled from the resourcing, timekeeping, or CRM system you already run. Nothing new to maintain.

ROUTE

Only a coded request reaches a model

An auto router decides between a high and low model, controllable by project — optimized for quality first, speed second.

RECORD

The token cost lands in that code's ledger entry

Same place your time entries live: model used, tokens, cost, timestamp. The meter reading, not the transcript.

Leverage, not free time

AI is leverage. Leverage gets tracked and billed.

LLMs have thrown a genuine wrench into time-and-materials: when a task that used to take two hours takes twelve minutes, the hours-based logic underneath the rate card stops making sense. Nobody's landed on what actually replaces it yet. Until they do, the practical move is to keep the model and price the leverage correctly.

A first-year bills at an hourly rate that's already marked up over what they actually cost the firm. AI needs the same treatment: every coded request logs a real cost — the model call, the tokens, the seconds — and that cost gets the same markup logic, instead of being written off as a productivity gain nobody bills for.

The same logic holds in a value-billed environment, too — project margins matter regardless of how the client sees the invoice. Knowing what an engagement actually consumed in model spend, by client and by project, is the number that tells you whether that fixed fee made money.

Usage tracking
Every request is metered against the code it's tied to, not against a global spend ceiling nobody actually watches.
Project-level budgets
Set and watch a budget at the engagement level, the same way a project budget already gets watched today.
Marked-up AI usage
AI time becomes its own billable line, marked up the same way any other resource on the invoice already is.
Built for billable practices

Without it, most firms are penny-wise on tokens and pound-foolish on everything else.

Usage limits don't save money — they move the cost somewhere worse. A cap gets hit mid-afternoon, IT gets pulled in to raise the ceiling for three hundred people, and every billable hour waiting on that chat sits idle in the meantime. The tokens saved never come close to covering what just got lost in stalled, billable time. The fix isn't a tighter limit — it's a code on every request instead.

Law firms
Every prompt lands on a project number, the same as every hour.
Accounting & advisory
AI cost sits on the engagement it belongs to, not off to the side.
Consulting firms
Even a quick internal question lands on a code.
Multi-entity & PE-backed groups
One roll-up view of AI cost by entity, not by user.
The honest comparison

What you keep. What you give up.

We're not trying to out-build Claude or ChatGPT's chat experience — that's not a fight worth having against companies spending billions on exactly that surface. Ledger does one thing they structurally can't: attribute a token to a project code. Here's where that trade actually lands, no spin.

✓ yes ~ partial ✗ no / not yet
Feature Ledger.AI Direct to Claude / ChatGPT
Attributes usage to a client / project code ✓ ✗
Enforces a budget per project before it runs ✓ ✗
Shows why a model was chosen, per message ✓ ✗
Reads PDFs & images ✓ ✓
Reads Word, Excel & PowerPoint files ~ ✓
Saves answers as Word, Excel & PowerPoint ✓ ✓
Real computation on a spreadsheet (pivots, charts) ✗ ✓
Iterative document / canvas editing ✗ ✓
Memory carried across every project ✗ ✓
Chat history ~ ✓

Uploads parse to text (Mammoth / SheetJS / OOXML) — good enough to ask questions about a document, not a substitute for real spreadsheet computation. Saving works the other way and keeps structure: headings become Word styles, tables become real Excel sheets, sections become slides. Memory not carrying across projects is deliberate, not a gap: a document from Project A quietly informing an answer on Project B is a confidentiality problem, not a convenience. Chat history is kept 30 days and then purged; the underlying spend record (model, tokens, cost, project) is kept permanently either way.

Working on this too?

If you're working through AI enablement or governance, let's talk.

I built this to understand how firms can see and account for what AI is doing on their behalf. I'm always glad to compare notes.

Find me on LinkedIn →