Token-cost benchmarks: AI sessions with and without the code map
Every question you ask an AI assistant about your codebase starts with the assistant re-reading your codebase — and that re-reading is most of the token bill. Vibgrate AI Context replaces it with answers from a pre-built code map. This page publishes what that is worth, measured: the same tasks, the same model, with and without the map, at equal verified success — including the repo sizes where the map is not worth it.
~29% fewer tokens, same results
The same coding tasks, the same model, with and without the Vibgrate code map — on a ~300-file codebase. We count only the tasks both runs solved, so it is fewer tokens for the same result, never “cheaper because it gave up”.
Measured with a frontier coding model. On tiny repositories grep already finds the code and the map costs more — we publish that part of the curve too.
How the numbers are measured
Same model, twice
Each coding task runs twice with the same model on two fresh copies of the repo: once with generic file tools (list, search, read, write), once with Vibgrate AI Context (vg serve) for discovery.
Only discovery differs
Both runs can read and write files. The only difference is how the model finds the right code: walking and grepping the tree, or asking the pre-built code map.
Success is verified, not assumed
After each run, a deterministic verifier executes the edited code in the language’s real runtime and checks behaviour. A run that fails the verifier counts for nothing.
Savings only count when results match
Reduction is computed only across tasks both runs solved. The headline is “fewer tokens, same results” — never “cheaper because it gave up”. Tiers where the map saves nothing are published too.
The tasks are symptom-described — “the total is wrong after a promotion”, “refunds omit the tax” — the shape a real bug report takes, not “change function X”. They run against a ~300-file commerce codebase plus small fixtures, so the curve shows where a code map earns its keep and where grep already wins. The mix is fixed in advance (a written pre-registration) so the result can’t be tuned after the fact. Tokens are the model’s own reported usage summed across every step. The run is expensive (a live model over the whole corpus), so it is measured intermittently against a pinned CLI build and reviewed before publication — not on every release. The report below is pinned to the version it was last measured on.
Latest report — Vibgrate CLI v2026.814.2
Model gpt-5.4-mini · measured 2026-08-17 · step cap 30 · 35 of 38 tasks solved by both runs. This is one A/B run against the shipped build; the mix was run three times and the discovery-tier median held at +33.8% fewer tokens (per-task variance is large, so the median is the honest figure).
The curve — result by repository size
| Repo size | Tasks compared | File-tools tokens | AI Context tokens | Result |
|---|---|---|---|---|
| Small (3–5 files) | 4/6 | 9,985 | 23,663 | 137% more |
| Mid (~300 files) | 30/31 | 771,704 | 549,341 | 28.8% fewer |
| XL (~1,000 files) | 1/1 | 25,825 | 17,458 | 32.4% fewer |
A code map earns little on tiny repositories — any tool finds the code instantly, so the map’s fixed overhead shows as a cost. The saving appears as the repository grows and discovery becomes the dominant token cost. We publish the whole curve, not a single flattering number.
Every task, every repository
| Task | Repository | Language | Files | File tools | AI Context | Result |
|---|---|---|---|---|---|---|
| Fix order total to apply the discount | orders-api | JavaScript | 5 | 2,632 tok · 4 steps | 6,749 tok · 4 steps | 156.4% more |
| Fix the cents/dollars mixup in shipping quotes (mid repo) | meridian-commerce | JavaScript | 323 | 23,373 tok · 5 steps | 10,928 tok · 4 steps | 53.2% fewer |
| Stop billing shipping on packaging weight (mid repo) | meridian-commerce | JavaScript | 323 | 19,885 tok · 5 steps | 17,135 tok · 6 steps | 13.8% fewer |
| Implement the statement balance from its usage (mid repo) | meridian-commerce | JavaScript | 323 | 18,453 tok · 6 steps | 19,654 tok · 5 steps | 6.5% more |
| Stop reporting amounts from dropping cents (mid repo) | meridian-commerce | JavaScript | 323 | 93,850 tok · 8 steps | 25,702 tok · 6 steps | 72.6% fewer |
| Fix the tax-exemption boundary (mid repo) | meridian-commerce | JavaScript | 323 | 10,664 tok · 4 steps | 9,092 tok · 4 steps | 14.7% fewer |
| Apply the checkout promotion to invoice totals (Ruby) | ledger-app | Ruby | 116 | 21,644 tok · 5 steps | 13,255 tok · 5 steps | 38.8% fewer |
| Apply discount with README cents rounding | commerce-docs | JavaScript | 6 | 4,290 tok · 5 steps | did not finish | — |
| Make slugify lowercase and punctuation-safe | slug-lib | JavaScript | 4 | 2,305 tok · 4 steps | 7,047 tok · 5 steps | 205.7% more |
| Stop charging sales tax on the shipping fee (mid repo) | meridian-commerce | JavaScript | 323 | 40,278 tok · 7 steps | 10,342 tok · 4 steps | 74.3% fewer |
| Charge the card fee on the original captured amount (mid repo) | meridian-commerce | JavaScript | 323 | 43,834 tok · 7 steps | 13,184 tok · 5 steps | 69.9% fewer |
| Implement the late-fee calculator from its usage (mid repo) | meridian-commerce | JavaScript | 323 | 11,348 tok · 4 steps | 23,024 tok · 6 steps | 102.9% more |
| Raise the free-shipping minimum everywhere (mid repo) | meridian-commerce | JavaScript | 323 | 30,071 tok · 8 steps | 10,792 tok · 7 steps | 64.1% fewer |
| Apply the checkout promotion to invoice totals (XL repo) | meridian-commerce-xl | JavaScript | 963 | 25,825 tok · 4 steps | 17,458 tok · 6 steps | 32.4% fewer |
| Apply the checkout promotion to invoice totals (Java) | inventory-forge | Java | 88 | 14,514 tok · 5 steps | 15,035 tok · 5 steps | 3.6% more |
| Fix tiny-validate 1.2 call site from library docs | libdocs-mini | JavaScript | 4 | 2,304 tok · 4 steps | 4,905 tok · 4 steps | 112.9% more |
| Implement parseArgs from how it is used | argv-cli | JavaScript | 3 | did not finish | did not finish | — |
| Fix wholesale lines billing below the agreed price (mid repo) | meridian-commerce | JavaScript | 323 | 18,441 tok · 6 steps | 10,157 tok · 4 steps | 44.9% fewer |
| Free shipping should use the pre-discount subtotal (mid repo) | meridian-commerce | JavaScript | 323 | 24,456 tok · 6 steps | 44,100 tok · 11 steps | 80.3% more |
| Fix the monthly-to-annual rate conversion (mid repo) | meridian-commerce | JavaScript | 323 | 59,887 tok · 5 steps | 46,470 tok · 5 steps | 22.4% fewer |
| Make the two discount helpers agree (mid repo) | meridian-commerce | JavaScript | 323 | 19,715 tok · 4 steps | 10,200 tok · 4 steps | 48.3% fewer |
| Apply the checkout promotion to invoice totals (Python) | atlas-crm | Python | 137 | 18,337 tok · 5 steps | 10,516 tok · 4 steps | 42.7% fewer |
| Apply the checkout promotion to invoice totals (PHP) | storefront-cart | PHP | 106 | 14,618 tok · 5 steps | 10,952 tok · 4 steps | 25.1% fewer |
| Prefix normalizeId once; keep all callers on core | impact-mini | JavaScript | 5 | 2,744 tok · 4 steps | 4,962 tok · 4 steps | 80.8% more |
| Apply the checkout promotion to invoice totals (mid repo) | meridian-commerce | JavaScript | 323 | 22,723 tok · 5 steps | 17,185 tok · 6 steps | 24.4% fewer |
| Include the sales tax in return credits (mid repo) | meridian-commerce | JavaScript | 323 | 22,099 tok · 5 steps | 9,770 tok · 4 steps | 55.8% fewer |
| Fix subscription invoices billing 100× too high (mid repo) | meridian-commerce | JavaScript | 323 | 3,383 tok · 5 steps | 10,296 tok · 4 steps | 204.3% more |
| Fix the sign on account running balances (mid repo) | meridian-commerce | JavaScript | 323 | did not finish | did not finish | — |
| Round totals to the nearest cent, not truncate (mid repo) | meridian-commerce | JavaScript | 323 | 32,304 tok · 6 steps | 18,935 tok · 7 steps | 41.4% fewer |
| Apply the checkout promotion to invoice totals (TypeScript) | harbor-api | TypeScript | 128 | 6,464 tok · 4 steps | 10,492 tok · 4 steps | 62.3% more |
| Apply the checkout promotion to invoice totals (Bash) | ops-toolkit | Bash | 95 | 5,689 tok · 4 steps | 10,295 tok · 4 steps | 81% more |
| Implement the refund amount calculator (mid repo) | meridian-commerce | JavaScript | 323 | 35,854 tok · 7 steps | 39,829 tok · 9 steps | 11.1% more |
| Stop loyalty credits from reducing taxable amount (mid repo) | meridian-commerce | JavaScript | 323 | 29,188 tok · 6 steps | 18,127 tok · 6 steps | 37.9% fewer |
| Apply gift cards as a fixed dollar amount (mid repo) | meridian-commerce | JavaScript | 323 | 11,124 tok · 4 steps | 13,029 tok · 5 steps | 17.1% more |
| Raise the sales-tax rate everywhere it is applied (mid repo) | meridian-commerce | JavaScript | 323 | 49,061 tok · 8 steps | 21,680 tok · 6 steps | 55.8% fewer |
| Round refund amounts to cents (mid repo) | meridian-commerce | JavaScript | 323 | 58,355 tok · 6 steps | 50,534 tok · 9 steps | 13.4% fewer |
| Apply the checkout promotion to invoice totals (Go) | freight-routing | Go | 86 | 5,240 tok · 4 steps | 17,767 tok · 6 steps | 239.1% more |
| Apply the checkout promotion to invoice totals (C) | sensor-hub | C | 70 | 6,852 tok · 5 steps | 10,864 tok · 4 steps | 58.6% more |
“did not finish” means that run failed the behaviour verifier; such tasks are excluded from every aggregate on this page.
Previous reports
- v2026.722.240.7% fewer overall · 31/35 tasks comparable2026-07-22
- v2026.718.222.6% fewer overall · 33/35 tasks comparable2026-07-20
- v2026.711.233.6% fewer overall · 32/35 tasks comparable2026-07-13
- v2026.708.332.5% fewer overall · 32/35 tasks comparable2026-07-09
- v2026.704.122.9% fewer overall · 24/25 tasks comparable2026-07-04
These reports sit alongside the CLI release benchmarks (scan correctness, code-graph extraction, retrieval accuracy, performance) and follow the same rule: measured on a pinned corpus, reviewed by a human before anything appears here. Unlike those, which run with every release, this token-savings run is measured intermittently because it drives a live model.
See the code graph in action
A replay of the actual CLI querying the code map — ask a question in plain English, trace a change’s blast radius, follow a path between symbols. Nothing executes in your browser.