{
  "project": "AI Coding Pricing / Cost Hub",
  "slug": "aicodingpricing",
  "domain": "aicodingpricing.com",
  "tenant": "site-aicodingpricing-20260521",
  "generated_at": "2026-05-21T12:33:43Z",
  "contract_version": "2026-05-21.backend-data.v1",
  "status": "frontend_data_contract_ready",
  "scope": "P0 data contract for static/client-side pricing hub + calculator + changelog + newsletter capture; no login, no Stripe, no paid gates in V1.",
  "source_artifacts": {
    "user_input": "/tmp/aicodingpricing_input_20260521.md",
    "prd": "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/prd/prd-aicodingpricing-20260521.md",
    "route_contract": "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/prd/route-contract.json",
    "pricing_report": "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/pricing/pricing-report.md",
    "compliance_report": "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/compliance/compliance-report.md",
    "seo_baseline": "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/seo/serp-geo-baseline.md"
  },
  "data_files": {
    "providers_seed": "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/data/providers-seed.json",
    "calculator_formulas": "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/data/calculator-formulas.json",
    "changelog_schema": "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/data/changelog-schema.json",
    "newsletter_schema": "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/data/newsletter-schema.json",
    "frontend_contract": "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/data/frontend-contract.json"
  },
  "route_data_requirements": {
    "/": {
      "modules": [
        "calculator",
        "provider_summary_cards",
        "latest_changelog",
        "newsletter_cta",
        "global_disclaimer"
      ],
      "provider_ids": [
        "anthropic",
        "openai",
        "cursor",
        "github"
      ],
      "index_ready_if": [
        "calculator renders",
        "pricing row sources visible",
        "changelog has >=3 verified public entries"
      ]
    },
    "/claude-code-pricing": {
      "provider_ids": [
        "anthropic"
      ],
      "required_rows": [
        "claude-pro",
        "claude-max-5x",
        "claude-max-20x",
        "claude-api"
      ],
      "disclaimer": "brand_page",
      "source_required": true
    },
    "/claude-code-usage-limits": {
      "provider_ids": [
        "anthropic"
      ],
      "required_rows": [
        "claude-pro",
        "claude-max-5x",
        "claude-max-20x"
      ],
      "disclaimer": "brand_page",
      "must_distinguish": [
        "session limits",
        "weekly limits",
        "model/tool/context factors",
        "account-specific limits"
      ]
    },
    "/codex-pricing": {
      "provider_ids": [
        "openai"
      ],
      "required_rows": [
        "chatgpt-plus-codex",
        "chatgpt-pro-codex-5x",
        "chatgpt-pro-codex-20x",
        "codex-api-key"
      ],
      "disclaimer": "brand_page",
      "source_required": true
    },
    "/codex-usage": {
      "provider_ids": [
        "openai"
      ],
      "required_rows": [
        "chatgpt-plus-codex",
        "chatgpt-pro-codex-5x",
        "chatgpt-pro-codex-20x",
        "codex-api-key"
      ],
      "disclaimer": "brand_page",
      "must_distinguish": [
        "local messages",
        "cloud tasks",
        "code reviews",
        "API-key mode",
        "credits"
      ]
    },
    "/cursor-pricing": {
      "provider_ids": [
        "cursor"
      ],
      "required_rows": [
        "cursor-hobby",
        "cursor-pro",
        "cursor-pro-plus",
        "cursor-ultra",
        "cursor-teams",
        "cursor-enterprise"
      ],
      "disclaimer": "brand_page",
      "source_required": true
    },
    "/claude-code-vs-codex": {
      "provider_ids": [
        "anthropic",
        "openai"
      ],
      "disclaimer": "comparison_page",
      "comparison_dimensions": [
        "monthly price",
        "usage multiplier/limits",
        "workflow surface",
        "API/subscription distinction",
        "team/admin controls",
        "source freshness"
      ]
    },
    "/claude-code-vs-cursor": {
      "provider_ids": [
        "anthropic",
        "cursor"
      ],
      "disclaimer": "comparison_page",
      "comparison_dimensions": [
        "monthly price",
        "usage pool",
        "CLI vs IDE workflow",
        "team/admin controls",
        "source freshness"
      ]
    },
    "/pricing-changelog": {
      "provider_ids": [
        "anthropic",
        "openai",
        "cursor",
        "github"
      ],
      "required_schema": "changelog_schema",
      "initial_public_entries_min": 3,
      "index_policy": "index only if verified public entries render with source/date/confidence"
    }
  },
  "redirects_required": [
    {
      "from": "/codex-vs-claude-code",
      "to": "/claude-code-vs-codex",
      "status": 301,
      "sitemap": false
    },
    {
      "from": "/cursor-vs-claude-code",
      "to": "/claude-code-vs-cursor",
      "status": 301,
      "sitemap": false
    }
  ],
  "pricing_seed_policy": {
    "last_checked_current": "2026-05-21",
    "launch_freshness_gate": "All P0 rows must be rechecked within 72 hours before production launch; replace last_checked and add changelog entries for changes.",
    "confidence_rules": {
      "high": "Official pricing/docs/support page directly supports row",
      "medium": "Official info is partial/ambiguous or future-effective",
      "low": "Public report/community only; cannot appear in core pricing table"
    },
    "source_policy": "Official/public sources only. No account dashboards, no credentialed/private scraping, no user tokens/cookies, no unofficial logos/screenshots. If automation is added later, run ToS/robots review first.",
    "manual_update_model": true,
    "manual_update_reason": "Provider pricing/limits change frequently and some pages are dynamic or account-specific; live scraping/API is not safe enough for launch trust. P0 uses transparent manual source review with visible last_checked/confidence/caveat fields."
  },
  "calculator_policy": {
    "version": "2026-05-21.v1",
    "run_location": "client-side preferred; server should not store calculator inputs in P0",
    "privacy_policy": "Calculator inputs are processed locally by default and not stored. If saved scenarios are introduced later, update Privacy and consent copy before launch.",
    "input_schema": {
      "team_size": {
        "type": "integer",
        "min": 1,
        "default": 1,
        "buckets": [
          {
            "id": "solo",
            "max": 1
          },
          {
            "id": "small_team",
            "min": 2,
            "max": 5
          },
          {
            "id": "team",
            "min": 6,
            "max": 50
          },
          {
            "id": "enterprise",
            "min": 51
          }
        ]
      },
      "coding_hours_per_week": {
        "type": "number",
        "min": 0,
        "max": 100,
        "default": 10
      },
      "sessions_per_day": {
        "type": "number",
        "min": 0,
        "max": 20,
        "default": 2
      },
      "heavy_agent_sessions_per_week": {
        "type": "number",
        "min": 0,
        "max": 100,
        "default": 3
      },
      "large_repo_work": {
        "type": "boolean",
        "default": false
      },
      "workflow_mode": {
        "type": "enum",
        "values": [
          "cli_agent",
          "ai_ide",
          "cloud_tasks",
          "api_key",
          "mixed"
        ],
        "default": "mixed"
      },
      "candidate_tools": {
        "type": "array",
        "values": [
          "claude-code",
          "codex",
          "cursor",
          "github-copilot"
        ],
        "default": [
          "claude-code",
          "codex",
          "cursor"
        ]
      },
      "api_usage": {
        "type": "object",
        "fields": {
          "input_tokens_mtok_month": "number",
          "output_tokens_mtok_month": "number",
          "model": "string"
        },
        "default": {
          "input_tokens_mtok_month": 0,
          "output_tokens_mtok_month": 0,
          "model": "none"
        }
      }
    },
    "derived_metrics": {
      "monthly_coding_hours": "coding_hours_per_week * 4.345",
      "monthly_heavy_agent_sessions": "heavy_agent_sessions_per_week * 4.345",
      "seat_monthly_cost": "plan.price_usd_monthly * team_size for seat_subscription plans, else plan.price_usd_monthly for individual subscription scenarios",
      "annualized_monthly_cost": "price_usd_annual / 12 when annual billing is selected",
      "cost_per_coding_hour": "estimated_monthly_cost / max(monthly_coding_hours, 1)",
      "api_estimated_cost": "sum(model_input_price_per_mtok * input_tokens_mtok_month + model_output_price_per_mtok * output_tokens_mtok_month) plus provider-specific cache/runtime charges when configured"
    },
    "risk_rules": [
      {
        "id": "light",
        "if": "coding_hours_per_week <= 5 and heavy_agent_sessions_per_week <= 1",
        "limit_risk_level": "low",
        "message": "A free or entry paid plan may be enough; verify feature access and wait before upgrading."
      },
      {
        "id": "regular",
        "if": "coding_hours_per_week > 5 and coding_hours_per_week <= 15 and heavy_agent_sessions_per_week <= 4",
        "limit_risk_level": "medium",
        "message": "Entry paid plans may work, but limit risk rises with long sessions, large repos, and frontier models."
      },
      {
        "id": "heavy",
        "if": "coding_hours_per_week > 15 or heavy_agent_sessions_per_week > 4 or large_repo_work == true",
        "limit_risk_level": "high",
        "message": "Consider higher-usage tiers or API fallback; show caveats before recommending upgrade."
      },
      {
        "id": "team",
        "if": "team_size >= 2",
        "limit_risk_level": "admin_review",
        "message": "Include team/admin controls, privacy mode, billing ownership, and usage reporting in recommendation; do not compare on seat price alone."
      }
    ],
    "recommendation_logic": [
      {
        "tool": "claude-code",
        "prefer_when": [
          "workflow_mode == 'cli_agent'",
          "heavy terminal/repository agent sessions",
          "Claude model preference"
        ],
        "start_plan": "claude-pro",
        "upgrade_path": [
          "claude-max-5x",
          "claude-max-20x"
        ],
        "fallback": "claude-api",
        "do_not_claim": [
          "unlimited",
          "exact billing",
          "guaranteed latest limits"
        ]
      },
      {
        "tool": "codex",
        "prefer_when": [
          "workflow_mode in ['cloud_tasks','api_key','mixed']",
          "ChatGPT subscription already in use",
          "need CLI/IDE/cloud task flexibility"
        ],
        "start_plan": "chatgpt-plus-codex",
        "upgrade_path": [
          "chatgpt-pro-codex-5x",
          "chatgpt-pro-codex-20x"
        ],
        "fallback": "codex-api-key",
        "do_not_claim": [
          "reads private usage",
          "fixed limits for every account"
        ]
      },
      {
        "tool": "cursor",
        "prefer_when": [
          "workflow_mode == 'ai_ide'",
          "developer wants integrated editor experience",
          "team wants IDE-level usage/admin"
        ],
        "start_plan": "cursor-pro",
        "upgrade_path": [
          "cursor-pro-plus",
          "cursor-ultra",
          "cursor-teams"
        ],
        "fallback": "cursor-enterprise",
        "do_not_claim": [
          "unlimited usage",
          "same pool for all team members unless source-backed"
        ]
      },
      {
        "tool": "github-copilot",
        "prefer_when": [
          "GitHub-native workflow",
          "IDE completions/chat",
          "organization already uses GitHub"
        ],
        "start_plan": "copilot-pro",
        "upgrade_path": [
          "copilot-pro-plus",
          "copilot-max"
        ],
        "fallback": "copilot-business-or-enterprise-later",
        "p1_only": true,
        "do_not_claim": [
          "stable request billing after 2026-06-01",
          "official partnership"
        ]
      }
    ],
    "output_schema": {
      "estimated_monthly_cost_usd": "number|null",
      "recommended_plan_id": "string",
      "runner_up_plan_ids": "string[]",
      "limit_risk_level": "low|medium|high|admin_review|unknown",
      "cost_breakdown": [
        {
          "label": "string",
          "amount_usd": "number|null",
          "formula": "string",
          "confidence": "high|medium|low"
        }
      ],
      "assumptions": "string[]",
      "source_refs": "source_url[]",
      "caveats": "string[]",
      "cta": "Estimate again | Get pricing change alerts | Compare tools"
    },
    "analytics_mapping": {
      "calculator_start": [
        "path",
        "default_tool",
        "default_plan"
      ],
      "calculator_submit": [
        "path",
        "selected_tools",
        "team_size_bucket",
        "usage_bucket",
        "mode"
      ],
      "calculator_result_view": [
        "recommended_plan",
        "estimated_monthly_cost_bucket",
        "limit_risk_level"
      ]
    },
    "rounding_policy": "Show dollars to nearest whole dollar for subscription totals; show cents for per-request/token/credit rates; label all API/token estimates as approximate.",
    "blocking_ui_requirements": [
      "Show calculator_result disclaimer next to results",
      "Show source rows used for recommendation",
      "Do not store or transmit raw calculator inputs in P0",
      "If a plan has promo_end_date, display it near the price"
    ]
  },
  "changelog_policy": {
    "schema_file": "/root/.hermes/kanban/boards/site-factory/reports/site-pipeline/site-aicodingpricing-20260521/aicodingpricing/data/changelog-schema.json",
    "indexable": true,
    "reason": "Initial verified seed entries exist; if implementation omits entries or maintenance owner, noindex/withhold changelog page."
  },
  "newsletter_policy": {
    "free_in_p0": true,
    "provider_interest_values": [
      "claude-code",
      "codex",
      "cursor",
      "github-copilot",
      "all"
    ],
    "paid_alerts_p1_only": {
      "price_usd_monthly": 7,
      "price_usd_annual": 70,
      "limit": "up to 20 saved provider/tool alerts or saved scenarios/month"
    }
  },
  "compliance_constraints": {
    "no_logos": true,
    "no_official_claims": true,
    "nominative_fair_use_only": true,
    "required_disclaimers": {
      "global_footer": "AI Coding Pricing is an independent comparison and calculator site. Claude Code, Claude, Anthropic, OpenAI, Codex, ChatGPT, Cursor, GitHub, GitHub Copilot, and related names are trademarks of their respective owners. This site is not affiliated with, endorsed by, sponsored by, or officially connected to those companies. Pricing and usage limits can change; always verify details on official sources before buying.",
      "brand_page": "Independent guide. We are not affiliated with or endorsed by {provider}. Prices and limits may change. Each claim below should link to an official source and show a last-checked date.",
      "comparison_page": "This comparison is for informational purposes only. Brand names are used only to identify the products being compared and do not imply affiliation, sponsorship, or endorsement. Verify current pricing and limits with each provider before purchasing.",
      "pricing_table": "Pricing and usage limits are based on publicly available sources and manual review. They may vary by region, account type, plan, promotion, taxes, exchange rates, and provider policy changes. We show source links, last-checked dates, and confidence levels so you can verify before buying.",
      "calculator_result": "Calculator results are estimates based on your inputs and our current public pricing assumptions. They are not billing quotes and may not match your actual provider invoice or account-specific limits.",
      "newsletter": "Pricing alerts are informational. We may miss or delay updates, and providers can change prices or limits before our next review.",
      "changelog": "Changelog entries summarize public pricing or limit changes we observed. They may not capture every regional, enterprise, promotional, or account-specific change."
    },
    "forbidden_claims": [
      "official",
      "certified",
      "approved",
      "partner",
      "endorsed",
      "guaranteed",
      "100% accurate",
      "unlimited",
      "real-time official",
      "exact billing estimate"
    ],
    "privacy_terms_required": [
      "/privacy-policy",
      "/terms-of-service",
      "/contact",
      "/about"
    ]
  },
  "backend_recommendation": {
    "p0": "Static JSON + client-side calculator + optional Pages Function for newsletter subscribe. D1 only if newsletter/changelog admin route is implemented; no auth/payment.",
    "d1_tables_if_used": [
      "pricing_changelog",
      "newsletter_subscribers"
    ],
    "r2_if_used": "Only source snapshots after legal review; not required for P0.",
    "cloudflare_launch_gate": "Crawler Hints checked/value=true evidence required in deploy task. Not in scope for this data task."
  },
  "verification": {
    "json_validated": true,
    "source_files_read": 6,
    "web_sources_checked": [
      "https://claude.com/pricing",
      "https://support.claude.com/en/articles/11049741-what-is-the-max-plan",
      "https://support.claude.com/en/articles/9797557-usage-limit-best-practices",
      "https://developers.openai.com/codex/pricing",
      "https://chatgpt.com/codex/pricing",
      "https://cursor.com/pricing",
      "https://github.com/features/copilot/plans",
      "https://docs.github.com/en/copilot/concepts/billing/individual-plans",
      "https://docs.github.com/en/copilot/concepts/billing/usage-based-billing-for-individuals"
    ],
    "known_limitations": [
      "Prices/limits must be rechecked within 72h before launch",
      "Claude pricing page extraction was partly ambiguous for Max, so Max rows use official Help Center article",
      "Copilot is P1 seed and has 2026-06-01 billing transition; do not promote to P0 without copy/SEO review",
      "No production D1/R2/CF resources were created in this task"
    ]
  }
}
