How to contribute

Two ways in: fix the catalogue, or measure a plan nobody has measured.

Everything here lives in one JSON file per vendor at data/providers/. Edit a file, run the build, open a pull request. The build fails on anything malformed, so a green check means the shape is right. It cannot tell whether the number is true, which is what review is for.

The bar for a number

Every plan needs a first-party source URL. A vendor pricing page, vendor docs, or a vendor changelog. Not a comparison blog, not an SEO aggregator, not a YouTube description. Third-party figures for AI pricing contradict each other constantly and a good number of them are generated.

If you cannot source it, leave it null. A blank cell is a correct statement that nobody knows. A number copied off a listicle is a wrong statement that looks authoritative, and it will get quoted back at people. Google AI Ultra sat here with a null price for exactly this reason before the vendor was dropped.

If sources conflict, record it in note rather than picking a winner. There are live contradictions in GLM Pro and Max pricing and in Kimi's dollar tiers, and the notes say so.

Update checked when you verify. It is the date somebody actually looked, not the date the file changed.

Measuring a plan

This is the valuable one. 15 of 19 plans have no ceiling anybody can put a number on, because the vendor publishes a price and a multiplier and nothing else. The only way through is measurement.

The easy way: run the skill

Drop skill.md into .claude/skills/aisubsidy-measure/SKILL.md and ask your agent to measure your plan. It reads your local logs, prices them, shows you the result, asks which plan you are on and whether you hit the cap, then shows you the exact JSON and waits for a yes before sending anything.

curl -o ~/.claude/skills/aisubsidy-measure/SKILL.md \
  --create-dirs https://aisubsidy.pages.dev/skill.md

The manual way

git clone https://github.com/hunterjreid/aisubsidy
cd aisubsidy
node probe/windows.js --days 30
node probe/probe.js --days 30 --plan <plan-id> --submit measurement.json
curl -X POST https://aisubsidy.pages.dev/api/submit -H 'content-type: application/json' \
  --data @measurement.json

Both read the token counts Claude Code and Codex already write to ~/.claude/projects and ~/.codex/sessions. Nothing leaves your machine unless you pass --submit, and the file that writes contains model names and token counts only: no paths, no project names, no prompts. Open it before you attach it anyway.

Attach it to an issue titled measurement: <plan-id>. A useful measurement says how the plan was used: one model or several, interactive or long autonomous runs, and whether you actually hit the cap. Somebody who never reaches the limit measures a floor, not a ceiling, and a plan measured only by light users reads as worse value than it is. A figure moves into the catalogue once several independent measurements agree, because one person's month is a sample of one.

Which vendors belong here

A vendor qualifies only if it ships both its own model and its own coding agent. An API key is not a plan. A reseller is not first party.

Harnesses are out on purpose. Cursor and GitHub Copilot are good products and neither trains the model you are billed for, so their credit pools measure a retail markup rather than a subsidy. Both were built here and then removed.

Plan shape

{
  "id": "kebab-case-globally-unique",
  "name": "Human name",
  "price_usd_month": 20,
  "quota": {
    "kind": "credit_pool | rate_window | request_count | token_pool | byok",
    "windows": [{ "period": "5h", "unit": "prompts", "amount": 80 }],
    "included_value_usd": null,
    "tokens_month": null,
    "confidence": "published | derived | measured | unknown",
    "note": "anything the fields cannot carry"
  },
  "models": ["model-id"],
  "sources": ["https://vendor.example/pricing"]
}

Pick kind by what the vendor actually meters: a dollar balance is credit_pool, an opaque cap per rolling window is rate_window, countable prompts or calls are request_count, an explicit token allowance is token_pool, and a free tool that bills through the API is byok. Setting a dollar figure while leaving confidence unknown is rejected by the build, because an unsourceable dollar figure is the exact thing this project exists to avoid.

House rules

Repository · Open an issue · MIT licensed