Rubicon asks you a question and you type an answer; an LLM writes the question and another LLM decides whether your answer is right. Both of those are per-round costs, and for months we had only a vague sense of what they came to.
When we finally metered it properly, the answer was about $5 per daily active user per month, against a target of $0.50. This is the breakdown, the two things we had wrong, and the changes that brought it to an estimated $0.40–0.60.
Almost nobody publishes these numbers. Vendor pricing pages give you dollars per million tokens, which tells you nothing about what a feature costs, and "it depends" is the standard answer to anyone who asks. So here is one real application's, with the caveats attached.
From our usage table, over six active days of real (small) traffic:
| Purpose | Model | Calls | Avg tokens in / out | $ per call |
|---|---|---|---|---|
| Generate a question | Haiku 4.5 | 180 | 3,100 / 360 | 0.0049 |
| Grade an answer | Haiku 4.5 | 126 | 3,100 / 190 | 0.0040 |
| Bot's own answer | Haiku 4.5 | 60 | 375 / 21 | 0.0005 |
| Translate a question | Haiku 4.5 | 42 | 270 / 330 | 0.0021 |
| Appeal a score | Sonnet 4.5 | 4 | 1,630 / 175 | 0.0075 |
| Generate / translate | Gemini | 6 | 0 / 0 | $0.00 — not metered |
Two things in that table were news to us.
$0.0040 against $0.0049. Marking an answer is intuitively the smaller job — the model reads a sentence and says yes or no — but the prompt is not smaller. Our judge carries a 3,100-token rubric into every single call: the question, the model answer, the points being looked for, the scoring guidance, the formatting rules. The answer being graded is maybe twenty tokens of that.
The cost of an LLM call is the cost of its prompt, and a rubric you wrote once and stopped looking at is a prompt you are paying for on every request forever. We had optimised the generation path repeatedly and never once looked at the grading path, because grading didn't feel like the expensive one.
Every Gemini call logged as $0.00, because our Gemini and Vertex adapters never surfaced
usageMetadata. The calls happened, the tokens were spent, and our own cost dashboard showed
nothing — and, worse, showed less the more traffic we moved to Gemini. A dashboard that
improves when you shift load to the unmetered provider is not a dashboard, it is a trap.
That was the first thing we fixed, before any optimisation, because nothing else could be measured until it was. If you run more than one model provider, check that each one is actually reporting tokens before you trust a single number you have about cost.
Per million tokens, which is what makes the rest of this arithmetic checkable:
| Model | Input | Output | What we use it for |
|---|---|---|---|
| claude-haiku-4-5 | $1.00 | $5.00 | fallback for everything |
| claude-sonnet-4-5 | $3.00 | $15.00 | appeals, when a player disputes a score |
| gemini-2.5-flash | $0.30 | $2.50 | question generation |
| gemini-2.5-flash-lite | $0.10 | $0.40 | grading |
| gemini-embedding-001 | negligible | — | the scoring gate |
At our prompt sizes that works out to:
| Call | On Haiku | On Gemini |
|---|---|---|
| Generate a question | $0.0049 | $0.0018 (Flash) |
| Grade an answer | $0.0040 | $0.0004 (Flash-Lite) |
One detail worth knowing if you are counting on prompt caching to save you: it did nothing for us on Haiku. Our 2,506-token prefix sits under the 4,096-token minimum for caching to engage. Just below a threshold is the worst place to be, because you get none of the benefit and no warning that you are missing it.
Seven changes, none of which alter what a player sees:
Per question answered, generation and grading together:
| Surface | Before | After |
|---|---|---|
| Solo / campaign, English | ~$0.004 | ~$0.0002 |
| Multiplayer, Easy and Medium | ~$0.008 | ~$0.0003 |
| Multiplayer, Hard | ~$0.008 | ~$0.002 |
| Duels | ~$0.009 | ~$0.002 |
Hard rounds and duels stay expensive because they still generate live — our stored questions sit at each topic's own difficulty tier, so a Hard round often has nothing to draw on, and duels use reasoning questions that were never pooled. That is the largest remaining cost and the next thing to fix.
At roughly 20 answers a day per player:
| Per player per day | Per player per month | |
|---|---|---|
| Before (measured) | ~$0.16 | ~$5 |
| After (estimated) | ~$0.015–0.02 | ~$0.45–0.60 |
The measurement itself cost almost nothing. Not having it cost us about ten times our target for months.
Rubicon is a trivia game where you answer in your own words and an AI judge marks what you meant, not how you spelled it. Every number above comes from the models that run it.