{
  "slug": "subscription-tracker",
  "name": "gizza-ai/subscription-tracker",
  "version": "0.1.0",
  "title": "Subscription Cost Tracker — gizza.ai",
  "description": "Add up every recurring subscription, normalize each billing cycle to a monthly and annual figure, and see the biggest spend to cancel. Private, in-browser.",
  "tags": [
    "subscription tracker",
    "subscription cost calculator",
    "recurring spend",
    "annual cost",
    "monthly cost",
    "5-year cost",
    "cancel subscriptions",
    "budget"
  ],
  "category": "data",
  "urls": {
    "page": "https://gizza.ai/tools/subscription-tracker/",
    "markdown": "https://gizza.ai/tools/subscription-tracker/index.md",
    "descriptor": "https://gizza.ai/tools/subscription-tracker/tool.json",
    "deep_link_example": "https://gizza.ai/tools/subscription-tracker/?subscriptions=Netflix%3A%2015.99%20monthly%0ASpotify%3A%2010.99%0AAmazon%20Prime%3A%20139%20yearly%0AAdobe%3A%2059.99%20quarterly&default_cycle=monthly&currency=%24&sort=cost"
  },
  "cli": "gizza tool subscription-tracker \"Netflix: 15.99 monthly\nSpotify: 10.99\nAmazon Prime: 139 yearly\nAdobe: 59.99 quarterly\"",
  "tool": {
    "description": "Add up your recurring subscriptions and see what they really cost — privately, in your browser, with no accounts or bank linking. Paste your plans as one `Name: amount [cycle]` per line (subscriptions param). The tool normalizes every plan to a common monthly and annual figure (weekly ×52, biweekly ×26, monthly ×12, quarterly ×4, semiannual ×2, yearly ×1), reports the combined monthly / annual / 5-year / per-day spend, shows each plan's share of the total, and flags the single biggest annual spend as a cancel candidate with the yearly savings. Use default_cycle for lines that omit a cycle, currency for the display symbol, and sort (cost/name/input) for the row order.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "currency": {
          "default": "$",
          "description": "Currency symbol prefixed to every amount in the report (e.g. $, £, €). Default `$`. Cosmetic only — the tool does not convert between currencies.",
          "type": "string"
        },
        "default_cycle": {
          "default": "monthly",
          "description": "Billing cycle assumed for any line that omits one. Default `monthly`. Annualization multipliers: weekly ×52, biweekly ×26, monthly ×12, quarterly ×4, semiannual ×2, yearly ×1.",
          "enum": [
            "weekly",
            "biweekly",
            "monthly",
            "quarterly",
            "semiannual",
            "yearly"
          ],
          "type": "string"
        },
        "sort": {
          "default": "cost",
          "description": "Row order. `cost` (default) lists the biggest annual spend first, `name` sorts alphabetically, `input` keeps your paste order. The cancel-candidate callout is always the biggest annual spend regardless of sort.",
          "enum": [
            "cost",
            "name",
            "input"
          ],
          "type": "string"
        },
        "subscriptions": {
          "description": "Your subscriptions, one per line as `Name: amount [cycle]` (e.g. `Netflix: 15.99 monthly`). The `:` or `=` is optional — `Netflix 15.99 monthly` works too. The cycle keyword is optional and falls back to `default_cycle`; accepted cycles are daily, weekly, biweekly, monthly, quarterly, semiannual and yearly (plus synonyms like mo, /yr, wk, annually). Amounts may include a currency symbol and grouping commas. Blank lines and lines starting with `#` are ignored. Max 200 lines.",
          "type": "string"
        }
      },
      "required": [
        "subscriptions"
      ],
      "type": "object"
    }
  }
}