{
  "feedVersion": "analytica-feed-v1",
  "project": {
    "slug": "hashmark",
    "name": "Hashmark",
    "type": "app",
    "audience": "public-unlaunched",
    "url": "https://hashmark.football"
  },
  "generatedAt": "2026-08-13T02:07:49.795Z",
  "refreshSeconds": 604800,
  "refreshMechanism": "rebuild",
  "refreshDisclosure": "Precomputed from aggregate product records and rebuilt during an evidence refresh. A page older than seven days labels itself stale.",
  "precomputed": true,
  "transport": "http",
  "machineReadable": "/stats.json",
  "showcase": [
    "franchises-preserved",
    "player-careers",
    "exports-preserved",
    "playoff-lines-rescued"
  ],
  "privacy": {
    "aggregateOnly": true,
    "smallCountThreshold": 5,
    "identitiesIncluded": false
  },
  "provenance": {
    "source": "gateway-backed aggregate PostgreSQL query",
    "rawRowsPublished": false,
    "queryShapeSha256": "4db778cba36c44168b33c359deb9e920df73ae57c11468814e1ba17a8aeddccf"
  },
  "metrics": [
    {
      "id": "franchises-preserved",
      "label": "Franchises preserved",
      "value": "fewer than 5",
      "banded": true,
      "unitOrDenominator": "franchise league records, all accounts",
      "period": "all-time",
      "computedAt": "2026-08-13T02:07:49.795Z",
      "format": "integer",
      "category": "community",
      "interpretation": "Each franchise is a separate long-memory football archive; the count includes created leagues, not anonymous visits.",
      "public": true
    },
    {
      "id": "player-careers",
      "label": "Player careers on file",
      "value": 2077,
      "unitOrDenominator": "distinct player records across all franchises",
      "period": "all-time",
      "computedAt": "2026-08-13T02:07:49.795Z",
      "format": "integer",
      "category": "archive",
      "interpretation": "This is the durable player registry available for longitudinal scouting and career context, not a count of active people.",
      "fun": true,
      "public": true
    },
    {
      "id": "exports-preserved",
      "label": "Companion exports preserved",
      "value": 301,
      "unitOrDenominator": "authenticated raw export receipts",
      "period": "all-time",
      "computedAt": "2026-08-13T02:07:49.795Z",
      "format": "integer",
      "category": "archive",
      "interpretation": "Every accepted Companion App payload is retained as an audit receipt before normalization; retries are receipts, not unique sessions.",
      "public": true
    },
    {
      "id": "exports-last-30d",
      "label": "Exports in the last 30 days",
      "value": 0,
      "unitOrDenominator": "authenticated raw export receipts",
      "period": "rolling-30d",
      "computedAt": "2026-08-13T02:07:49.795Z",
      "format": "integer",
      "category": "momentum",
      "interpretation": "Export traffic is flat versus the preceding 30-day window; this measures receipts, not active users.",
      "trend": {
        "direction": "flat",
        "changePct": 0,
        "comparedTo": "previous 30 days"
      },
      "public": true
    },
    {
      "id": "playoff-lines-rescued",
      "label": "Playoff stat lines rescued",
      "value": 0,
      "unitOrDenominator": "immutable postseason player-stat rows",
      "period": "all-time",
      "computedAt": "2026-08-13T02:07:49.795Z",
      "format": "integer",
      "category": "archive",
      "interpretation": "These are postseason stat rows preserved beyond the game’s rolling career summary—the core data-loss problem Hashmark exists to solve.",
      "fun": true,
      "public": true
    },
    {
      "id": "weekly-records",
      "label": "Weekly team records captured",
      "value": 147,
      "unitOrDenominator": "records declared by weekly team and schedule exports",
      "period": "all-time",
      "computedAt": "2026-08-13T02:07:49.795Z",
      "format": "integer",
      "category": "archive",
      "interpretation": "This sums source-declared record counts in weekly team and schedule exports; it does not infer missing weeks as zero.",
      "public": true
    },
    {
      "id": "stories-archived",
      "label": "Stories archived",
      "value": "fewer than 5",
      "banded": true,
      "unitOrDenominator": "immutable editorial archive entries",
      "period": "all-time",
      "computedAt": "2026-08-13T02:07:49.795Z",
      "format": "integer",
      "category": "editorial",
      "interpretation": "Every edition in this count is an append-only archive entry; corrections create a new record rather than rewriting history.",
      "public": true
    },
    {
      "id": "commissioner-accounts",
      "label": "Commissioner accounts",
      "value": "fewer than 5",
      "banded": true,
      "unitOrDenominator": "registered Hashmark user accounts",
      "period": "all-time",
      "computedAt": "2026-08-13T02:07:49.795Z",
      "format": "integer",
      "category": "community",
      "interpretation": "This counts registered accounts, not monthly actives, email subscribers, or page visitors; small values are banded for privacy.",
      "public": true
    }
  ],
  "definitions": {
    "franchises-preserved": "League records created inside Hashmark. A league may be active, dormant, or in setup.",
    "player-careers": "Distinct player rows in the franchise archive. This is not the number of human players.",
    "exports-preserved": "Authenticated raw export receipts retained before normalization. Idempotent retries may produce more than one receipt.",
    "exports-last-30d": "Receipts received in the trailing 30 days compared with the immediately preceding 30 days.",
    "playoff-lines-rescued": "Postseason stat rows stored in Hashmark’s dedicated playoff vault.",
    "weekly-records": "Sum of record_count declared by the latest unique weekly team/schedule export rows.",
    "stories-archived": "Append-only editorial archive entries, including corrections as separate editions.",
    "commissioner-accounts": "Registered product accounts. Counts from one to four are rendered as a privacy band."
  },
  "integrity": {
    "algorithm": "sha256",
    "value": "cae3c68ff7537d5634953d1dac0de82a34dd2eb52eaf28d65157dee7b69441a2"
  }
}
