The model is not in the request path
Sharpening a prompt here calls no model. That is why it is free with no credits to run out and no account to make — and why it still gets better over time, because the model runs on a schedule, over the shapes of what people asked, rather than once per visitor.
When you press Sharpen it, the work happens in your browser. A deterministic engine reads your ask, routes it to one of 21 kinds of ask, and fills each move from the framework’s defaults. With AI mode off it does not even reach our server — there is no request to make, because there is no answer only a server could give.
An AI tier does exist, and it is better. It is off by default, and turning it on takes a deliberate setting rather than the mere presence of an API key — a credential arriving for some unrelated reason must never quietly change where your words go. /collect reports which is running, live, per request.
Each sharpen leaves behind the structure of the ask and none of the person: which kind of ask it was, which moves you already had, which we filled, and which we left blank because only you could know them. Text is scrubbed to typed placeholders before it crosses the network. The full detail is on /collect.
The field that carries the most is the one nobody designed first: a blank you chose to fill. That is a move we named and the words a real person picked for it — volunteered, not inferred. Nothing else in the pipeline is that clean.
Once a week, a local tool re-runs the captured asks through Claude and prints every case where the model routed an ask differently from the deterministic engine. Each disagreement is a candidate: a word real people used that the engine does not yet recognise. Adding it is a one-line change to the framework.
That improvement then ships to every visitor, free, permanently, and without anything calling an API on their behalf. The model is a tool for improving the tool — it is not the product.
These are real token counts from real runs, not estimates. Measured 2026-09-20 against claude-sonnet-5.
| For 1,000 asks | Per ask | Total | How often you pay it |
|---|---|---|---|
| Answered by the model, live | $0.0325 | $32.50 | Every 1,000 asks, forever |
| Captured, then reviewed in one batch | $0.0164 | $16.40 | Once. The result is permanent |
The cheaper number is the smaller half of the point. The live cost recurs with traffic; the review cost recurs with review, and what it buys stays bought. Ten thousand asks cost ten times as much to serve and roughly the same to learn from.
Why the two figures differ, which is not just batching
Two regimes, because caching only helps when calls cluster. A COLD call pays the cache write at 1.25x and reads nothing back; a WARM one reads the ~6.8k system prompt at 0.1x. Live traffic on a low-volume site is mostly cold — visitors arrive minutes apart and the cache TTL is 5 minutes — so the live counterfactual uses the cold figure. A batched `review --ai` pass is warm after its first call, so it costs closer to the warm one.
- cold
- 7,029 input, 0 cache read, 1,497 output = $0.0325. Source: review --ai, 1 real captured ask, no warm cache.
- warm
- 20 asks for $0.3281 = $0.0164 each. Source: bakeoff, 20 sequential asks sharing one cache entry.
It would be easy, and flattering, to quote the warm figure for the live case too. It would also be wrong. Visitors to a small site arrive minutes apart, and the prompt cache expires in five — so a live call almost always pays full price while a batched one does not. The comparison above uses the expensive number for the case we are arguing against, because the argument does not need the help.
Not generosity — arithmetic. Most prompt tools call a model every time you press the button, so every press costs them money, so they meter it: a free tier, then credits, then a card. That meter is not a business decision bolted on afterwards. It is the direct consequence of putting a model in the request path.
There is no meter here because there is nothing to meter. Your sharpen runs in your browser. It costs us the same whether you do it once or four hundred times, which is nothing, which is why there is no reason to count.
Anonymous follows from the same place. An account exists to attach usage to a payer. With nothing to charge for, there is nothing to attach, so there is no sign-up, no profile, and nothing kept that points at a person. Not a policy we could quietly revise — there is no column to put you in.