The blog

October 5, 2026 · Timothy O’Brien

Keeping a Pricing Book Honest, One Night at a Time

A book about model prices goes stale the day it ships. Here is the nightly process I use to catch provider changes, validate every dated statement, and keep the book trustworthy.

Cover-style card for the post: Keeping a Pricing Book Honest, One Night at a Time

Every week, the model names change. The prices change too.

When the first edition went online, I made a quiet arrangement with myself: never let the book quietly go out of date. Two volumes of reasoning about cost and capacity don’t help anybody if the rate card in Chapter 7 reads like last year’s rate card. So I set up a nightly job that checks the providers for me, and I want to describe what it does, because the method is the reusable part, not the model names.

Why a book about prices needs a process

Writing about model pricing is unlike writing about, say, database design. The principles in Scale Without Surprise are stable: separate price from workload, measure cost per accepted task, keep the as-of date attached to every rate. But the examples that carry those principles age in weeks.

Two forces make this worse than it sounds. The first is naming. The same model family can appear as a dated route, a contributor variant, and a free endpoint, each with its own price and its own terms; the version, the processing mode, and the access tier all matter. If I write “GPT-6 Astra at $10/$50” without the rest of the record, I’ve written a sentence that can be wrong in several directions at once. The second is the windows. Providers quote introductory rates that expire, and the rate card doesn’t display the expiry. Gemini 4 Argon launched at $2/$10 with a move to $4/$20 afterward; Gemini 3.8 Flash runs a promotion that ends on December 31, 2026. An introductory rate is part of the offering, and it’s the part most likely to be gone when a reader arrives.

So the book cites dated snapshots, never “current prices.” And dated snapshots need re-checking, which is a schedule, not an intention.

What the nightly job does

At two in the morning, Pacific time, a scheduled agent wakes up and works through five steps.

It starts by pulling the current manuscripts from the repositories, both volumes plus the website, and if another working session left uncommitted edits it leaves them alone and reports the conflict instead of resolving it. A reconciliation is a decision, and decisions belong to daylight hours. Then it checks the providers, primary sources first: provider blogs and announcements, then price pages, looking for new models, price changes, expiring introductory windows, cache-discount changes, rate-limit changes, and access-tier changes. It also surveys an aggregation platform for usage coverage, because a model can become popular enough to matter before any provider announcement mentions it.

Third, it validates the book’s statements. Every dated, non-historical price in the manuscript gets checked against a primary or high-quality secondary source: the launch rates, the introductory windows, the cache discounts, the access phases. Statements about what happened on a particular date are historical record; they’re only re-checked if a source says the fact was wrong. Statements presented as a snapshot of the latest need to still be true. When something actually changed, the edit is one dated sentence in the relevant chapter plus a footnote carrying the announcement URL, the rates, and the access conditions. No rewrites. The reasoning in a chapter should not change just because a rate did.

Finally, both volumes rebuild, the website regenerates from the manuscripts, a checker validates every route, link, figure, and PDF, and the job emails me a summary: what was checked, what changed, what was validated, what remains open. Even a night with no changes gets an email that says so. Silence is not a status.

The principle underneath

Strip away the mechanics and the job is the book’s own advice, pointed at the book. Every rate carries the date it was observed and the source it came from, which is exactly what makes the claims checkable: you can’t re-validate “current pricing,” but you can re-validate “the September 30 announcement.” The job reports what it observed and does not quietly convert a failed check into “no change.” If a page was unavailable or a response was malformed, the summary says that part was incomplete; never turn a missing observation into a confident zero. The usage survey runs on a stated boundary, routes above a trillion weekly tokens, say, and a route that crosses it becomes a review item rather than an automatic inclusion. Deletion works the same way: a decline is a review item, not an automatic retirement. And if tonight’s check fails, yesterday’s complete survey is retained, labeled as such, with evidence stored alongside dates so the next session can see the lineage. A partial survey never replaces a complete one.

Those four habits cost almost nothing to adopt, and they transfer directly to whatever your team rechecks: contracts, incidents, capacity reservations, compliance attestations. Any practice that keeps dated claims honest ends up looking like this.

What this kind of checking catches

The examples are already in Chapter 7, each one a dated footnote. A processing tier was announced one week and appeared on the provider’s published price list a few days later, at six times the standard rate, applied to every token the tier processes. An introductory rate turned out to carry an expiry the rate card does not display. A frontier model was reachable only through a vetted program at announcement, with paid API availability promised for a later phase and no published dates. And a mid-cycle price cut, eighty percent on one model and twenty on another, arrived attributed to serving efficiency, which is a pricing event whether or not your workload changes.

None of those were hypothetical, and each is exactly the kind of fact that goes stale without a process behind it.

What I’d tell you to copy

If your documentation, dashboards, or contracts quote anything with a dollar sign and a date, the recipe transfers. Cite dated snapshots with the source attached, never “current” anything. Schedule the re-check: a human reads the summary, but something else does the watching. Separate observation from conclusion, and report what was checked and what was unavailable, in those words. When a fact changes, change the fact, not the paragraph. And keep a failure honest: retain the last good state, label it, and say what tonight’s attempt couldn’t see.

The job doesn’t make the book current. Nothing does. It keeps the book current at a known date, with the checking to show it, and when the rate card moves weekly, the date is doing real work.


The two volumes of Scale Without Surprise are free to read online. If you’d like a note when new chapters and posts go up, the newsletter is the place — it’s occasional, and it carries the same dates and sources as everything else here. Sign up here.

The Without Surprise newsletter

A little perspective.
Delivered occasionally.

New chapters, visual summaries, practical notes on cost and capacity, and new posts — with the same dates and sources as everything else here.

More from the blog