{
  "$comment": "Machine-readable plan and rules for Heartbreak Hedge. Pilot preview: nothing here is live, no bets are placed and no money moves.",
  "service": "Heartbreak Hedge",
  "tagline": "When your teams lose, your charity wins.",
  "status": "pilot_preview",
  "as_of": "2026-10-30",
  "site": "https://heartbreakhedge.com",
  "agent_docs": "https://heartbreakhedge.com/agents",
  "llms_txt": "https://heartbreakhedge.com/llms.txt",
  "openapi": "https://heartbreakhedge.com/openapi.yaml",
  "what_it_is": "Each week the service places one moneyline parlay that pays only if every one of the owner's teams loses. A team losing is a crack. Every team losing is a heartbreak, and only a heartbreak pays out. Every dollar of a payout goes to the charities the owner picked, given in Heartbreak Hedge's name. The owner never receives winnings.",
  "vocabulary": {
    "leg_status": {
      "scheduled": "Game not played yet.",
      "cracked": "The owner's team lost. The ticket stays alive.",
      "held": "The owner's team won or (soccer) drew. The ticket ends with no payout.",
      "dropped": "No line was posted before the ticket was placed, so the game is not on the ticket."
    },
    "ticket_outcome": {
      "open": "Games still to play.",
      "heart_held": "At least one team won. No payout.",
      "heartbreak": "Every team lost. The whole payout goes to the owner's charities."
    },
    "never_say": "A leg never 'wins'. Fans never root for their teams to lose."
  },
  "plans": [
    {
      "id": "weekly",
      "name": "Weekly heartbreak parlay",
      "billing": "Charged only in weeks with a ticket.",
      "weekly_amount": {
        "currency": "USD",
        "presets": [
          5,
          10,
          20,
          50
        ],
        "min": null,
        "max": null,
        "note": "One fixed amount set by the owner. Changes apply from the next week. Limits to be set.",
        "goes_on_ticket": "100%"
      },
      "fee": {
        "model": "flat fee on top of the weekly amount, or a cut of the subscription",
        "amount": null,
        "status": "to_be_set"
      },
      "share_of_payouts_taken": "0%",
      "payouts": {
        "to": "charity_only",
        "owner_receives": "0%",
        "donor": "Heartbreak Hedge",
        "charities": "The owner picks one or more charities and how gifts split among them; changeable any time.",
        "owner_sees": "Heartbreak Hedge gave $X on your behalf, per charity, this month and all time.",
        "giving_schedule": "Pooled and sent once a month, one gift per charity."
      },
      "stake_source": "Always new money. Payouts never fund future weeks."
    }
  ],
  "ticket_rules": [
    "One parlay per week, moneyline only, on every one of the owner's teams losing.",
    "One game per team: when a team plays more than once in a week, its leg is the game closest to the weekend (Fri to Sun).",
    "Placed as soon as every leg has a line, and no later than the earliest leg's start. A game with no line by then is dropped.",
    "One sportsbook's prices per ticket. No odds shopping.",
    "Soccer: only a loss is a crack. A draw holds the heart and ends the ticket."
  ],
  "teams_supported": [
    {
      "id": "louisville-football",
      "name": "Louisville Cardinals football",
      "league": "NCAAF"
    },
    {
      "id": "louisville-mbb",
      "name": "Louisville Cardinals men's basketball",
      "league": "NCAAB"
    },
    {
      "id": "pittsburgh-steelers",
      "name": "Pittsburgh Steelers",
      "league": "NFL"
    },
    {
      "id": "tottenham-hotspur",
      "name": "Tottenham Hotspur",
      "league": "EPL"
    }
  ],
  "charities_planned": [
    {
      "id": "feeding-america",
      "name": "Feeding America",
      "cause": "Hunger"
    },
    {
      "id": "dare-to-care",
      "name": "Dare to Care Food Bank",
      "cause": "Hunger, Louisville"
    },
    {
      "id": "boys-girls-clubs",
      "name": "Boys & Girls Clubs of America",
      "cause": "Kids and youth sports"
    },
    {
      "id": "st-jude",
      "name": "St. Jude Children's Research Hospital",
      "cause": "Children's health"
    },
    {
      "id": "wounded-warrior",
      "name": "Wounded Warrior Project",
      "cause": "Veterans"
    },
    {
      "id": "ncpg",
      "name": "National Council on Problem Gambling",
      "cause": "Gambling harm"
    },
    {
      "id": "team-foundation",
      "name": "The team's own foundation",
      "cause": "Where one exists"
    }
  ],
  "charities_note": "A planned list. None of these organizations is a partner yet. Gifts are pooled and sent once a month in Heartbreak Hedge's name, and the owner sees what was given on their behalf.",
  "eligibility": {
    "min_age": 21,
    "location": "US states where it is legal. Checked at approval.",
    "owner_only_steps": [
      "identity and age check",
      "location check",
      "payment method",
      "raising the weekly amount or any limit"
    ],
    "responsible_gaming": "If betting stops being fun, call 1-800-GAMBLER. Pause, limits and self-exclusion are always available, and agents may request them for their owner at any time."
  },
  "agent_subscribe": {
    "status": "planned",
    "summary": "An agent may read everything here without signing in, prepare a subscription for its owner, and send the owner an approval link. The owner finishes the checks and payment. After approval the agent gets a scoped token to read status and make low-risk changes.",
    "start": "POST /v1/subscription-intents (see openapi.yaml)"
  },
  "openapi_json": "https://heartbreakhedge.com/openapi.json"
}
