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.
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.
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.
From the chat window — no different from any router today.
Pulled from the resourcing, timekeeping, or CRM system you already run. Nothing new to maintain.
An auto router decides between a high and low model, controllable by project — optimized for quality first, speed second.
Same place your time entries live: model used, tokens, cost, timestamp. The meter reading, not the transcript.
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 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.
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.
| 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.
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 →