Week 1Day 5 of 30120 minutes~65 min of reading

Numbers — the RAID item nobody puts on the RAID log

Tokens, cost, and unit economics

Speak the language

Why this matters for a delivery manager

You already smell programs that cannot scale. AI adds a metered cost on every call and a latency budget users will not forgive. Delivery leads who can do the envelope math stop POCs that would have become surprise invoices. This is one of the fastest ways to look senior in an AI room.

Demo cost is a lie. Twelve people, twenty questions a day, a short prompt: rounding error. Two thousand users, eight questions, forty thousand tokens of retrieved policy, six agent steps: a budget line. Always ask for 10× the POC. Always put p95 latency next to the dollars. A smarter model that is four times slower can lose the floor even if the eval is prettier.

Today you will do copilot math and RAG math by hand. The numbers are placeholders — price cards move. The skill is the envelope, the 10×, and the RAID line. Bring that slide. You will look like the adult in the room.

You will be able to

  • Estimate tokens for a real workload without a spreadsheet priest
  • Separate input, output, cache, and embedding costs
  • Build a back-of-envelope for a 200-person copilot and a 50k-doc RAG
  • Put cost and latency on the same steering slide as 'accuracy'
  • Write a 10× stress and one design change that cuts the bill in half

2-hour clock

120:00

Now: Read the concepts (slowly) · 50m

The 2-hour session

Concepts, in full

This block is a slow read — about an hour with the diagrams. After each concept, write one sentence in notes (what you already do vs what is new) and tick annotated. Do not skim the last concept.

01

The meter is tokens in, tokens out

Hosted models bill per million tokens, with input cheaper than output (the model spends more compute writing). A chat app that stuffs the last 40 messages plus a 30-page PDF into every turn is an input-cost problem. A verbose 'strategic' system prompt that rambles for 2,000 tokens is also an input-cost problem — and a quality problem. You already hate unused process. Treat unused tokens the same way. They are waste you pay for on every call, not a one-time document.

Rough English rule: tokens ≈ words × 1.3. A 1,000-word status pack is ~1,300 tokens in. A 400-word brief out is ~520 tokens. You do not need a tokenizer to make a go / no-go; you need an order of magnitude. Before you sign a budget, check a real tokenizer on a sample — other languages, code, and tables can run hotter. The meeting skill is the 1.3. The signing skill is a sample. If someone fights you on 1.3 in the meeting, offer to recompute on a sample after, and still use the envelope today. Do not wait for a priest.

Embedding models bill separately and cheaply per token. They are usually not the line item that kills you. The chat / completion model in a loop (agents) is. People will obsess over embedding pennies because the number is easy to see on a dashboard. Meanwhile the generator is reading eight chunks and writing a long answer eight times per question because nobody capped the agent. Look at the generator first. Look at the loop second. Look at embeddings third. If finance asks where the money went, open the hop count, not the embedding dashboard. A 6-hop graph at frontier prices will beat an embedding line item by a large integer every time.

The cost path of one question: tokenize the system prompt, the history, the retrieved chunks, and the user question (input) → run the model → emit output tokens, maybe a tool call → if a tool, run the tool, send the result back as more input, emit more output. Each hop is a billable event. A 'single question' in a demo is often one hop. A 'single question' in an agent is eight hops. Your unit is not a question. Your unit is a question × the graph.

Price cards move. The skill is not memorizing a number from a blog. The skill is: write the assumption at the top of the envelope ('$3 / million input, $15 / million output, frontier class, no cache'), compute, then swap the card when procurement sends the real one. If you cannot swap the card without rewriting the logic, you did not do an envelope. You did a screenshot. Keep the formula. Date the card. Dated cards are how you explain a miss later without looking like you guessed. Guessing is not a delivery skill.

Latency is on the same meter even though it is not dollars. Users feel anything past ~3 seconds for a copilot turn. Long context and agent loops blow that. Output tokens take wall-clock time to stream. A 1,500-token 'strategic' answer is a cost bug and a UX bug. Put p95 latency on the steering slide next to unit cost and accuracy. If you only report accuracy, someone will pick the slow expensive model and you will find out on the floor.

Diagram

Token cost path of one user question

01

User question

Small. Not where the bill lives.

02

Assemble context

System + history + retrieved chunks. This is most of the input bill.

03

Model write

Output tokens (answer or tool call). Pricier per token; also latency.

04

Tool / retrieve hop

Your code runs; result comes back as more input. Optional, and easy to repeat.

05

Model write again

Another output bill. Agents loop here. Count the hops.

06

Log + cache

Logs are ops cost. A stable prefix may be discounted on the next call.

Every box after the user can add input tokens, output tokens, or both. An agent repeats the middle. Cap the repeats or the unit is not 'a question.'

02

Caching, batching, and the quiet multipliers

Prompt caching (supported by several frontier APIs) makes a large static prefix — system prompt, policy pack — much cheaper on subsequent calls. Design prompts with a stable prefix and a small tail. That is an architecture choice a delivery lead can demand. If every call reshuffles the system prompt or interpolates the date into the first line, you may break the cache. Put the volatile bits at the end. This is the same instinct as putting constants in a config and variables in the payload.

Batch APIs trade latency for a discount on offline jobs (classify 80k tickets overnight). Interactive copilots cannot batch. Do not use interactive prices for a back-office job, or batch prices for a user-facing SLA. A PMO digest that runs twice a day is a batch job wearing a copilot costume. Run it as a batch. A floor operator waiting on a lookup is interactive. Price them apart. If finance sees one blended rate, they will either panic or underfund. Split the envelope into two rows.

Agents multiply. A 'simple' agent that thinks, calls a tool, thinks, calls another tool, then answers can be 8–20 model calls per user question. Your unit is not 'a question.' It is 'a question × the graph.' Cap steps. Cap tools. Put a kill switch when daily spend exceeds X. If the builder says 'the agent will decide how many steps it needs,' you have not designed a system. You have designed a blank check. You would not give a vendor an unbounded SOW. Do not give a loop one.

Retries and repair loops are quiet multipliers. JSON failed, retry. Tool failed, retry. User hit regenerate. Each is a full bill. In the envelope, put a retry factor — 1.2 if you are honest, 2.0 if you have no eval and a flaky schema. Then go fix the schema so you can put 1.2. A delivery lead who ignores retries will be surprised by a bill that is 'unexplainably' 40 percent over. It is explainable. Look at the traces. If 30 percent of calls are a second try, you do not have a cost mystery. You have a contract bug. Structured output and a single retry cap are cheaper than arguing with finance about a vibe.

History is a quiet multiplier. Forty turns of chat, resent every time, is an input-cost problem that grows for the users who use you most — your champions. Cap history, summarize older turns, or retrieve from a session store instead of pasting the transcript. The people who love the copilot will be the most expensive if you do not cap. That is the opposite of what you want. Design for champions, not only for the first-turn demo. Put a history cap in the spec the way you put a row cap on a report. Unbounded history is an unbounded SOW the user did not know they signed. Cap it before the first champion hits turn 40.

Caching is not magic memory. It does not mean the model 'knows' the policy pack between users unless the vendor's cache is actually shared on that prefix, which has rules. Read the product doc. Assume cache is a discount on a repeated prefix for a window of minutes, not a knowledge base. Still demand it for production prompts with a large stable pack. The discount is often large enough to change the envelope. Leaving it off is leaving money on a table you will later RAID.

03

Worked envelope: copilot math

Copilot: 200 users × 6 queries/day × 22 working days. Each query: 4,000 input tokens (prompt + a bit of history) + 500 output. Monthly input 200×6×22×4,000 = 105.6M tokens; output 13.2M. At a notional $3 / $15 per million in/out, that is ~$317 in + $198 out ≈ $515/month in model spend — before retries, tools, and the 10× you should fear. Write the assumption at the top. This number is a teaching card, not a quote. Plug in the real card before you brief a VP.

If you stuffed 40k tokens of SharePoint each turn instead of 4k, multiply input by 10: ~$3,170 input plus the same output, ~$3.4k/month at this volume. Still not a company-ending number — until you 10× the users, or add an agent, or both. 2,000 users at 40k input is ~$31k/month input at this card, before output, retries, and tools. That is a budget line. That is also a latency line. The stuffing is doing double damage. Retrieval is a cost control, not only a quality control.

Agent version of the same copilot: 6 hops per question, same sizes each hop (this is pessimistic but useful). Calls go from 200×6×22 = 26,400 to 158,400. Input tokens ~634M, output ~79M. At $3/$15: ~$1,900 in + $1,185 out ≈ $3.1k/month at 200 users. At 2,000 users: ~$31k. At 2,000 users plus stuffing: ugly. Cap hops at 3. Cache the prefix. Retrieve 2–4 chunks not 20. Those three design changes are how a delivery lead cuts a 5× bill without 'using a worse model.'

Per-user unit. $515 / 200 users ≈ $2.60 per user per month at the thin copilot. That is coffee. Finance will not care — until you add seats, hops, and stuffing. Report unit and monthly and 10×, always. A unit of $2.60 looks safe. A unit of $26 with an agent and stuffing, times 2,000, does not. The 10× is not theatre. It is the first year of a successful copilot. Successful is the stress case. Failed POCs are cheap. That is why cheap POCs do not prove anything about cost.

What would cut input in half on this copilot. (1) Stable system prompt + cache. (2) History cap at 4 turns or a summary. (3) Retrieve 3 chunks of 400 tokens instead of a 12k paste. (4) Route 'what's the status of ticket X' to a tool lookup instead of a long generate. (5) Stop asking for a 800-word brief when a 120-word digest would do — that one is output, but it also reduces the next turn's history. Pick one. Put it on the slide. A slide with a number and no design change is a complaint. A slide with a number and a change is a decision.

Latency envelope, same copilot. One hop, 4k input, 500 output: often inside 3 seconds on a frontier API, not always. Six hops: you are in 10–20 seconds if you are lucky. Floor users will not wait. Steering-pack generation overnight can wait. Do not use one SLA. Interactive vs batch, again. If the builder wants an agent on the interactive path, they owe you a p95 under 3 seconds or a UI that does not pretend it is chat. A spinner for 20 seconds is a failed interface, even if the answer is good.

Diagram

Two workload envelopes (same price card)

A

200-user copilot

  • 200 × 6 × 22 queries = 26.4k calls
  • 4k in / 500 out per call (thin)
  • ~106M in / 13M out → ~$515 / mo
  • Stuff 40k in: ~$3.4k / mo
  • 6-hop agent: ~$3.1k / mo at thin
  • 10× users: multiply the row you actually built
B

50k-chunk RAG Q&A

  • 3,000 questions/day × 22 = 66k calls
  • Generator sees 3–8 chunks, not 50k
  • Retrieval + embeddings: cheap vs generate
  • Re-embed on corpus change: budget the job
  • Cost lives in the generator and in re-index
  • 10× questions: generator 10×; index does not

Placeholder card: $3 / million input, $15 / million output. Swap the card; keep the shape. 10× is the first year of a success, not a scare tactic.

04

Worked envelope: RAG math

RAG over 50k chunks, 3,000 questions/day. Retrieval is cheap; the generator still sees 3–8 chunks. Cost lives in the generator and in re-embedding when docs change. Budget a re-index job, not just Q&A. People see '50k documents' and multiply 50k by the generator price. That is the stuffing error in a different costume. The index can hold 50k. The prompt should hold 3–8. If your prompt holds 50k, you did not build RAG. You built a paste with extra steps.

Embeddings math, order of magnitude. 50k chunks × 400 tokens = 20M embedding tokens to build the index. At a notional $0.10 / million, that is $2. Noise. A full re-embed after a corpus cleanup is still noise at this size. It stops being noise at tens of millions of chunks or at a vendor who prices embeddings like generation. Still budget the job: who runs it, how long it takes, what happens to Q&A while it runs. Ops cost is not token cost, but it is a RAID line ('index stale for 14 hours').

Per-question generator: 8 chunks × 400 tokens = 3,200 tokens of evidence, plus 600 of system, plus 200 of question, plus 400 of history ≈ 4,400 input; 400 output. At $3/$15: about $0.013 input + $0.006 output ≈ $0.02 per question. 3,000/day × 22 = 66,000 questions ≈ $1,320/month. That is the honest RAG envelope at this card and this retrieve size. If someone quotes you $40k/month for this shape, they are stuffing, looping, or using a price card from a different planet. Ask which.

What blows RAG cost. Retrieving 20 chunks 'to be safe' (input × 2.5). Rewriting the query with a frontier model, then retrieving, then generating, then critiquing with a second model (4× hops). Re-ranking with a second model on every call when a first-stage retrieve was enough. Users who paste the previous novel into the next question. Multi-hop 'research agents' over an internal wiki. Each of these can be right for a hard task. None of them should be the default for 'what is the password-reset SOP.' Route the hard 5 percent. Do not pay research-agent prices for SOP lookup.

Corpus change is the RAG-specific tax. Policy pack updates every Thursday. Do you re-chunk and re-embed the changed docs (good) or the whole corpus (lazy, still cheap at 50k, not cheap at 50M)? Do you version the chunks so citations point at the Thursday pack, not last month's? A wrong citation is a quality bug that also wastes the next generator call when users retry. Put 'index freshness' on the RAID log next to token spend. Stale index plus a fluent answer is how you ship last quarter's policy with this quarter's confidence.

10× the questions: 30k/day. Generator 10× ≈ $13k/month at this card. Index does not 10×. This is why RAG at scale is usually a generator problem, not an embedding problem. Design changes that hold the 10×: smaller chunks but not more of them, cache the system+tooling prefix, a small model to refuse off-corpus questions before the frontier generator runs, batch the overnight digest instead of 3,000 interactive calls. Same story as the copilot. Different object. Same adult. Write the axis on the envelope: 10× questions, not 10× documents. Multiplying the corpus is the stuffing error in a forecast costume.

05

The 10× stress and why demo cost is a lie

A POC is a cost liar for structural reasons. Users are few and polite. Prompts are short because the corpus is a folder of twelve PDFs. Nobody built the agent yet. Nobody left history on. The model is on a credit. Finance is not in the room. Then the POC 'works' and someone multiplies seats by 50 without multiplying tokens per seat. The invoice is how you meet finance. You would rather meet them with an envelope. Put the envelope in the charter on day one of the POC, not the week the invoice lands. An envelope that was always there is a forecast. An envelope invented after the bill is an excuse.

How to 10× without theatre. Take the POC trace of a typical question. Count input tokens, output tokens, hops. Multiply questions × users × working days × 10. Add a retry factor. Add a champion-history factor (1.5× input if you have no cap). That is the stress. If that number needs a meeting, you needed the meeting before you promised the roll-out. If that number is coffee, say so, and still cap the hops so it stays coffee. Coffee with an unbounded graph becomes a budget line the first month champions actually use it. The cap is how coffee stays coffee. Write the cap as a number of hops, not as a hope.

What 10× usually finds. The retrieve is a paste. The agent is unbounded. The system prompt is a novella. The batch job is priced as interactive. The embedding bill is fine and everyone was staring at it. The interactive SLA is attached to a 12-hop graph. Fix those before you negotiate a discount. A discount on a stupid graph is a cheaper stupid graph. Vendors will happily sell you reserved capacity for it. Do not buy a reserved stupid graph.

The political use of 10×. Sponsors hear 'cheap' in the POC and 'expensive' at roll-out and conclude you sandbagged. If the steering pack on day one of the POC had the 10× line, you did not sandbag. You forecasted. Put the line in the charter next to the kill criteria. 'If 10× monthly model spend exceeds $X with the designed graph, we simplify the graph or we do not roll out.' That is a kill criteria a finance partner can love. It is also how you stop a transformation office from promising 80 copilots on a POC price.

Worked contrast. POC: 12 users, 20 questions/day, 2k in / 300 out, 1 hop, 20 working days. Input 9.6M, output 1.44M → ~$29 + $22 ≈ $51/month. Someone says 'see, it's free.' 10× users and a real retrieve (8k in) and 3 hops: 120 users, 20 q/day, 8k in, 300 out, 3 hops, 22 days. Calls 158.4k. Input 1.27B, output 47.5M → ~$3.8k + $713 ≈ $4.5k/month. Still maybe fine. 10× again to 1,200 users: $45k. The lie was not the math. The lie was treating $51 as the math.

Always say which 10×. 10× users, 10× questions per user, 10× hops, 10× input size are four different stresses. Do the one that matches how the program would actually grow. A successful internal copilot grows users first. A public-facing assistant grows questions first. An agent program grows hops first, by accident. Name the axis. A generic '10×' that nobody can audit is just a bigger vibe. Finance can challenge a named axis. They cannot challenge a vibe, so they will invent a worse number for you. Name it first.

06

Put it on the RAID log

Cost risk: volume assumptions wrong, agent loops unbounded, model price change, no cache, stuffing dressed up as RAG, retries on a broken schema, champion history uncapped. Mitigation: cap tools/steps, cache prefixes, route easy traffic to a small model, kill switch when daily spend exceeds X, history cap, retrieve-n not retrieve-all. You already know how to write this. The new part is the unit: tokens × calls × price, with a 10× stress. Bring that slide. A RAID item that says 'AI is expensive' cannot be closed. A RAID item that says 'if weekly spend > $Y, cap hops to 2' can. Closable items get closed. Bring the closable one.

Assign owners like any other RAID item. Spend kill switch: platform owner. Graph cap: the FDE or engineer who owns the loop. Price-card watch: the person who signed the vendor (it will change). Eval that a cheaper model still holds: AI PM or you. If all four owners are 'the AI team,' you have no owners. Split them. Cost is not a technicality that will be cleaned up after go-live. Cost is a go-live criterion. Write it next to the eval bar and the data path. A go-live that cannot name the spend owner is a go-live that will page you on a Sunday when the bill doubles. Name the owner before the cutover, not after the invoice.

Leading indicators, not only the invoice. Daily token burn vs the envelope. p95 hops per question. Cache hit rate. Percent of calls that hit the expensive model vs the cheap router. Retry rate. If retry rate is 30 percent, you do not have a cost mystery. You have a schema or a retrieve bug. Put two of these on the weekly pack. You already put defect aging on the weekly pack. This is defect aging for money. Pick burn-vs-envelope and p95 hops if you can only have two. They catch stuffing, unbounded graphs, and silent model swaps before finance does. Finance finding it first is a process failure, not a surprise.

Price change is a real RAID, not a joke. Vendors drop prices and they also retire cheap model names. A deprecation can move you to a more expensive successor. Re-run the envelope on the successor before you accept the auto-upgrade. Sometimes the move is 'stay on the old name until it dies, then re-eval.' Sometimes it is 'the successor is cheaper and better; take it after the eval.' Never 'it upgraded itself over the weekend and the bill doubled.' That sentence is a change-control failure.

What not to put on the RAID log: 'AI is expensive' as a vibe. That item cannot be closed. Put a number, an assumption, a trigger, an owner. 'If weekly spend > $Y for 2 weeks, cap hops to 2 and page the owner.' Closable. You look like a delivery manager. 'We should watch costs' looks like a newsletter. Closeable items get closed. Newsletter items get copied into the next pack. You already hate un-closeable RAID. Do not add one with the word AI on it.

Tie it to the seats. Transformation leads who cannot 10× a copilot will fill a portfolio with 80 un-enveloped ideas. Solutions engineers who skip the envelope will sell a graph the customer cannot afford. FDEs who skip it will be surprised in the customer's cloud bill. Delivery leads who bring the envelope will be invited back. This is a boring superpower. Boring superpowers ship. If your seat is transformation, the envelope is how you say no to use case 81. If your seat is solutions, it is how you survive year two of the contract.

RAID lines for cost. If the item has no number and no owner, it is a vibe. Vibe does not belong on a RAID log.
RiskTriggerMitigationOwner
Unbounded agent graphp95 hops > 4 or daily spend > XCap steps; kill switch; require a human on write-toolsEngineer who owns the loop
Stuffing dressed as RAGMedian input > 8k on a 'retrieve' pathRetrieve n=3–8; eval stuffing vs retrieveFDE / AI PM
Demo cost used as forecastRoll-out paper uses POC invoice10× envelope on the charter, named axisDelivery lead
Model price / deprecationVendor notice or silent name changePin; re-eval successor; re-run envelopeVendor owner
Retry / schema taxRetry rate > 15%Fix schema; structured output; cap repairs at 1Builder + you
Champion history bloatInput grows with tenure of the userCap or summarize historyApp owner

RAID lines for cost. If the item has no number and no owner, it is a vibe. Vibe does not belong on a RAID log.

07

What you say when finance wants a number tomorrow

Finance will not wait for a perfect model. They will wait for an envelope with an assumption line. Tomorrow's number is allowed to be ugly if it is labeled. 'Placeholder card $3 / $15 per million, 80 users, 10 queries, 8k / 600, 22 days, one hop, retry 1.2, no cache. Monthly about $X. 10× users about $10X. If we add a 6-hop agent, multiply calls by 6.' That paragraph is a deliverable. 'We are still figuring out AI costs' is not. You can write the paragraph in twenty minutes from day 5's method. Write it.

Separate the number they asked for from the number they need. They asked for 'what does Copilot cost.' They need: model spend at expected volume, model spend at 10×, the graph assumption (hops), and whether this is interactive or batch. If you give them a single monthly figure with no graph, they will treat it as a commitment and you will miss it when hops appear. Put the graph in the sentence. 'At one hop, coffee. At six hops, a budget line.' Finance can work with a range that has causes. They cannot work with a vibe that later doubles.

Do not hide the placeholder card. If you used today's teaching numbers, say so, and offer to swap the card when procurement sends the real one. Finance would rather see a formula than a screenshot of a vendor blog. The formula is tokens × calls × price × retry. Calls is users × questions × hops × days. Write it once at the top of the sheet. Then every argument is about an assumption, which is a decision, not about whether you 'know AI finance.' You know envelopes. That is the job.

What to refuse. A single 'per user per month' that assumes a consumer-seat analogy. Seats are not tokens. A user who asks two questions with a 2k prompt is not a user who asks twenty with a 40k paste. Per-user is a derived metric after you have the graph, not a starting price. If they need a per-user for a business case, give it with the graph attached: '$2.60 at the thin copilot, $26 at agent-plus-stuffing, for this volume.' Derived, labeled, killable. A naked per-user will be copied into a 5,000-seat fantasy.

Bring one design change with the number, or the meeting becomes a request for a discount. 'We can cut input in half by retrieving three chunks and caching the prefix. That takes a week of FDE time. Without it, 10× is $Y. With it, $Y/2.' Now finance has a choice that is not 'kill the program' or 'pay whatever.' You already run this move on vendor SOWs. Run it on the graph. The graph is the SOW the model signed with you. Cap it.

After the meeting, put the envelope on the RAID log with a trigger. If weekly spend exceeds the envelope by 20 percent for two weeks, the owner caps hops and pages you. Finance asked for a number tomorrow because they have been burned by unmetered tools. Give them a number and a trigger. Then they will stop asking every week. A number without a trigger is a promise. A number with a trigger is operations. You are here for operations.

Worked case · stay here ~20 minutes

Finance at 8:15: the POC was forty-seven dollars

Friday 8:15 a.m., Ravi Mehta's small room, finance wants a number before a 9:30 investment committee. Ravi, Priya on video, Malik with a POC trace, Chris, and you. Glen is not invited.

Ravi opens a spreadsheet that already has a round number in it. 'The POC was forty-seven dollars last month. Priya wants two thousand claims users in Q3. What do I put in the paper.' Forty-seven is twelve people, short prompts, one hop, credits, no agent, no champion history. It is a cost liar for structural reasons. You write the formula at the top of the whiteboard before anyone defends the forty-seven. Tokens times calls times price times retry. Calls is users times questions times hops times days. Placeholder card, dated today, labeled teaching: three dollars per million input, fifteen per million output. Swap when procurement sends the real SKU. If you cannot swap the card without rewriting the logic, you did not do an envelope. You did a screenshot. Priya says the committee will want one monthly figure. You say they can have a range with causes: one hop coffee, six hops a budget line. A single figure with no graph will be treated as a commitment and missed when hops appear. Finance can work with a range that has causes. They cannot work with a vibe that later doubles.

Malik pastes a typical POC trace. One question from Asha: 2,100 input, 280 output, one hop, no retrieve, the pep prompt Chris has since retired. You do not use that trace as the production graph. You use the designed v1 graph from the charter: 4,000 input with three retrieved chunks and a short system, 500 output, one hop, temperature 0. Then you do the volume Priya is about to promise: 200 managers, six questions a day, 22 days. 26,400 calls. Input about 106 million tokens, output about 13 million. At the teaching card: roughly 515 dollars a month. Unit about 2.60 per user. Coffee. You write it, and you write the assumption line above it. Ravi relaxes. You do not let him. 'That is the thin copilot we designed. It is not the product people will try to build between now and Q3.' Chris admits he had been playing with an agent graph that thinks, searches, thinks, searches, then answers. Six hops on a good day. You will price that next. Coffee is true only for the graph you freeze. Unfrozen graphs do not belong in an investment paper.

Agent version, same 200 users, same sizes each hop, pessimistic on purpose. Calls from 26,400 to 158,400. Input about 634 million, output about 79 million. At three and fifteen: about 3.1k a month. Still maybe fine. At 2,000 users: about 31k, before retries and stuffing. You add a retry factor of 1.2 because the schema is young, 2.0 if they ship with no eval. History factor 1.5 on input if champions keep a 40-turn thread. Those two quiet multipliers are how a bill goes 40 percent over without a mystery. You name them. R7 from Monday is still playground settings. New R16: unbounded agent graph. Trigger: p95 hops over 4 or daily spend over a number Ravi will pick before 9:30. Mitigation: cap steps at 3, kill switch, no write-tools. Owner: Chris, because he owns the loop. Priya asks whether the agent is 'the smart version.' You say the agent is a blank check until it has a cap. You would not give a vendor an unbounded SOW. You will not give a loop one. You put it on a second row, labeled stress, not labeled plan.

Stuffing, the other way to turn coffee into a line. If the retrieve work slips and someone pastes 40,000 tokens of SharePoint into each turn, input at 200 users is ten times the thin graph: about 3.4k a month. At 2,000 users, about 31k input before output, retries, and hops. Latency dies with it. Floor managers will not wait ten seconds for SOP-14. You put stuffing next to the agent as a design failure, not as a growth case. Retrieval is a cost control, not only a quality control. Malik's throwaway index is therefore a finance artifact. Ravi had filed it under engineering. You move it. Four bullets for the slide he will take upstairs: volume as users times questions times hops; unit cost at the designed graph; monthly at 200; monthly at 10x users, plus the one design change that cuts input in half. The change: retrieve three chunks, cache a stable prefix, cap history at four turns. A slide with a number and no change is a complaint. A slide with a number and a change is a decision. Committee papers need decisions.

10x, named on an axis, because a generic 10x is a bigger vibe. The axis for this program is users. A successful internal copilot grows seats first, then questions, then someone adds hops by accident. You do users. 200 to 2,000 at the thin one-hop graph: about 5k a month at the teaching card. Same 2,000 at six hops: about 31k. Same 2,000 at stuffing-plus-hops: a conversation with Ravi's boss, not a rounding error. You say which 10x you did not do: 10x questions per user, 10x hops, 10x input size. Those are different stresses. The charter kill you already wrote still holds: if 10x monthly at the designed graph exceeds 15k and you have not cut input in half, you do not roll out. Ravi likes a kill with a dollar. He has been burned by unmetered tools. You give him a number and a trigger. After 9:30, weekly spend 20 percent over the envelope for two weeks pages you and Chris caps hops. A number without a trigger is a promise. A number with a trigger is operations.

You refuse the per-user he was asked to bring. Consumer-seat analogies are how 5,000-seat fantasies get copied into papers. Per-user is a derived metric after the graph exists, not a starting price. You give it derived and labeled: 2.60 at the thin copilot, about 26 at agent-plus-stuffing, for this volume, teaching card, date. If they copy the 2.60 without the graph, they will miss. You put the graph in the sentence so copying it takes the hops with it. Ravi asks what to do if the committee wants the agent because a board member saw a demo. You give him the fallback that ships: route the 10 percent failures to a more expensive model or a second hop; keep the 90 percent on one hop and a small retrieve. That compromise has a table. A demand to use the expensive graph 'because it is the best' on a task the SOP eval already solves is a brand demand. He can lose that fight once. You would like him not to lose it at 9:30 with forty-seven dollars as the base.

Latency belongs on the same slide even though it is not dollars. Users feel anything past about three seconds for a copilot turn. One hop, 4k input, 500 output: often inside that, not always. Six hops: 10 to 20 seconds if you are lucky. A 1,500-token 'strategic' answer is a cost bug and a UX bug. p95 latency next to unit cost and accuracy. If you only report accuracy, someone will pick the slow expensive model and you will find out on the floor. Priya says the committee does not care about seconds. Floor managers do. The SOP copilot dies if it is slower than searching SharePoint badly. You add a row: interactive versus batch. Overnight extract of complaints is a batch job and can wait. A manager on a claim cannot. Do not use one SLA. Do not use one blended rate. If finance sees one blended rate they will either panic or underfund. Split the envelope into two rows even if only one product is funded today. The second row is how you stop the extract job from inheriting copilot prices.

Design changes that cut the bill without 'a worse model,' because otherwise 9:30 becomes a discount request. Cache the stable prefix — system plus tool schemas — and put volatile bits at the end. Cap history or summarize it. Retrieve three to eight chunks, not 20 'to be safe.' Route 'what is the status of ticket X' to a lookup tool instead of a long generate. Stop asking for an 800-word brief when a 120-word digest would do; that one is output and it also shrinks the next turn's history. Cap agent hops at 3. Route easy traffic to a small model after the frontier model proved the task. Pick two for v1: retrieve n=3 and a history cap. Put them in the paper as work, not as hopes. FDE time is a week. Without it, 10x is the ugly row. With it, half. Now the committee has a choice that is not kill the program or pay whatever. The graph is the SOW the model signed with you. Cap it. Reserved capacity on an uncapped graph is a reserved stupid graph. Do not buy one.

RAID for cost, written so it can close. Not 'AI is expensive.' That item cannot be closed. R16 unbounded graph, Chris, cap and kill switch. R17 stuffing dressed as RAG, Malik, median input over 8k. R3 demo cost as forecast, you, this envelope in the paper. R18 model price or deprecation, Malik, pin and re-run. R19 retry and schema tax, Chris, retry rate over 15 percent. R20 champion history bloat, app owner, cap. Leading indicators on the weekly pack: daily burn versus envelope, p95 hops, cache hit rate, percent on the expensive model, retry rate. If retry is 30 percent you do not have a cost mystery. You have a schema bug. Ravi asks who owns the spend kill switch. Platform, named person, not 'the AI team.' You name Malik for the switch, Chris for the graph, you for the envelope, Pat for not stuffing the pack. Split. Cost is a go-live criterion, not a cleanup after. Priya agrees to put the 10x line on the charter next to the groundedness kill. She will not get accused of sandbagging if the line existed on day one of the POC.

What you send upstairs, in a paragraph Ravi can paste. 'Placeholder card 3/15 per million, dated, swap on SKU. Designed graph: 200 users, 6 questions, 4k/500, 1 hop, retry 1.2, no cache yet. Monthly about 600 dollars. 10x users about 6k. If we add a 6-hop agent, multiply calls by 6. If retrieve slips to a 40k paste, input times 10. v1 ships with retrieve n=3, history cap 4, hop cap 1. Kill: 10x at designed graph over 15k without an input cut, or p95 over 5 seconds on the floor. Batch extract is a separate row and is not in this number.' Ugly and labeled is allowed. 'We are still figuring out AI costs' is not. You wrote the paragraph in twelve minutes because day 5 is a method. Ravi puts it in the paper under assumptions, not under commitments. Priya still wants to say cheap. You let her say cheap at 200 and one hop, in the same breath as the kill. Cheap with a kill is a forecast. Cheap alone is how you meet finance through an invoice.

9:12, Priya asks whether to mention Glen's discount. You say no. A discount on a stupid graph is a cheaper stupid graph. Fix the graph first. If the designed row still needs a conversation at 2,000 users, then talk discount, reserved capacity, or a smaller model on the easy 90 percent. Reserved capacity bought at POC volume is a reserved demo. Reserve after the 10x envelope, or do not reserve. Ravi agrees because he has signed reserved capacity on unused warehouses before. You add one sentence for the committee if a board member says 'just use the smartest model.' Discovery with a big model, production with the cheapest that holds the eval, fallback on low confidence. Write that as a policy. It saves you from stingy quality and from theatrical spend. The SOP task is narrow. The 40-row set exists. If a small model holds it next month, the envelope drops without a new vendor. That option only exists if the eval exists. The eval is a finance instrument. You have now said that in a finance room. You say it now.

After they go to the committee you file the envelope next to charter v0, dated, teaching card called out, graph drawn, 10x axis named users. You add a proof line to your notes: 'I stopped a 47-dollar POC from becoming a 2,000-user agent forecast without hops, retrieve size, or a kill.' That is the senior move in an AI room. Not a model name. Not a certificate. An envelope with a trigger. If the committee copies the 2.60 anyway, you still have the RAID trigger when weekly spend lies. You also send Chris a one-line ticket: hop cap 1 in anything that might be shown as v1, agent graphs in a branch named experiment, not in main. He hates the word cap. He will like it when the invoice matches the paper. Ravi texts you 'they took the range.' Range with causes is the deliverable. A single heroic monthly figure was the trap. You did not bring Glen. That was a delivery decision too. Vendors price POCs in charm. Charm does not survive 9:30. Formulas do.

Diagram

Envelope beats: 47 dollars is a liar

01

Write the formula

Tokens × calls × price × retry. Calls = users × questions × hops × days.

02

Price the designed graph

200 × 6 × 22, 4k/500, one hop. Coffee. Assumption line on top.

03

Stress hops and stuffing

Six hops and 40k paste are design failures, not growth.

04

Name the 10x axis

Users. Not hops, not questions. Kill at 15k if input is not cut in half.

05

Refuse naked per-user

Derived, labeled with the graph. Range with causes for the committee.

06

RAID + trigger

Cap hops. Weekly spend +20% for two weeks pages you. No Glen discount on a stupid graph.

Formula first. Designed graph next. Agent and stuffing as stress rows. 10x on users. Kill in dollars. Trigger after.

Practice

Envelope math and a 10× stress

50 minutes

A VP asked 'what does this cost if it works?' You have 20 minutes before the meeting.

  1. Assume $3 / million input tokens and $15 / million output for a frontier model (placeholder — always plug in the real card). State the assumption at the top.
  2. Workload 1: 80 account managers, 10 queries/day, 8k input / 600 output, 22 days. Compute monthly model spend.
  3. Same workload with 6 agent steps (6× calls, same sizes). Compute again.
  4. Workload 2 (RAG): 2,000 questions/day, 5 chunks × 400 tokens evidence + 800 other input, 400 output, 22 days. Compute monthly. State why 40k documents do not appear in the multiply.
  5. Write four steering bullets: unit, monthly, 10× on users, one design change that cuts input tokens in half.

Done looks like: Numbers with units, a 10× line on a named axis, a RAG line that does not multiply the whole corpus, and one design change (cache, smaller retrieve, fewer steps, cheaper model for routing).

Check yourself

Attempt in your notes first. Reveal is for after, not during.

  • Why is output often more expensive than input?

  • What quietly multiplies a 'simple chatbot' bill?

  • What two numbers belong on the steering slide with accuracy?

  • In RAG, why don't you multiply the generator price by 50k documents?

  • Name three design changes that cut a copilot bill without 'a worse model.'

  • Why is demo cost a lie?

  • What do you put on the RAID log for cost so the item can close?

Terms from this day

Input tokens
Tokens you send: system, history, retrieved docs, user. Usually cheaper per million than output.
Output tokens
Tokens the model writes. Cost and latency both live here.
Prompt cache
A vendor feature that discounts a repeated prefix of the prompt across calls.
Unit economics
Cost (and latency) per successful task, not per demo.
Agent loop tax
The extra model calls created by think → tool → think cycles. Cap them.
10× stress
Recompute the envelope at ten times the growing axis (users, questions, hops, or input size). Success is the expensive case.

If you have extra minutes

  • Current price cards of two vendors you might actually use

    Look up today's numbers; they move. Your skill is the envelope, not memorizing a price.

Your notes for day 5

Saved on this device. Use this as the start of the artifact.