{
 "name": "mindshare-index-schema",
 "title": "The MindShare Index \u2014 data dictionary",
 "description": "Field definitions for the open data published at https://mindshareindex.com/data/. Covers the cumulative CSV and the per-edition JSON files. Methodology: https://mindshareindex.com/methodology.html",
 "homepage": "https://mindshareindex.com/",
 "version": "1.0",
 "updated": "2026-07-25",
 "license": {
  "name": "CC BY 4.0",
  "url": "https://creativecommons.org/licenses/by/4.0/",
  "attribution": "The MindShare Index (mindshareindex.com)"
 },
 "coverage": {
  "country": "US",
  "cadence": "weekly, Monday\u2013Sunday measurement window",
  "first_edition": "2026-w08",
  "entries_per_edition": 50,
  "note": "Editions are calendar-aligned. No. 18 (Jun 1\u20137) and No. 20 (Jun 15\u201321) were not published and are permanent gaps."
 },
 "resources": [
  {
   "name": "all-weeks",
   "path": "https://mindshareindex.com/data/all-weeks.csv",
   "format": "csv",
   "mediatype": "text/csv",
   "encoding": "utf-8",
   "description": "Every entry from every published edition, one row per entry.",
   "schema": {
    "primaryKey": [
     "edition",
     "rank"
    ],
    "fields": [
     {
      "name": "edition",
      "type": "string",
      "description": "Edition slug, ISO-year + chart week number.",
      "example": "2026-w24"
     },
     {
      "name": "week",
      "type": "string",
      "description": "Human-readable measurement window (Monday\u2013Sunday). Not ISO; use `edition` as the key.",
      "example": "July 13 \u2013 19, 2026"
     },
     {
      "name": "rank",
      "type": "integer",
      "constraints": {
       "minimum": 1,
       "maximum": 50
      },
      "description": "Position on this edition's chart. 1 is highest."
     },
     {
      "name": "prev_rank",
      "type": "integer",
      "description": "This title's rank in the previous published edition. Empty when the title was not on the previous chart.",
      "null_when": "entry is NEW, a re-entry, or predates NEW/RE tracking"
     },
     {
      "name": "weekly_change",
      "type": "string",
      "description": "DISPLAY STRING ONLY \u2014 do not parse. Encoding varies by era: edition 2026-w08 uses percentages (e.g. '+0.0%'); 2026-w09 onward use rank arrows (e.g. '#10\u2192#13'); all eras also use the bare words 'NEW' and 'RE'; 30 rows in 2026-w11 and 2026-w13 are blank. Use `rank`, `prev_rank` and `status` instead.",
      "machine_readable": false
     },
     {
      "name": "status",
      "type": "string",
      "constraints": {
       "enum": [
        "RANKED",
        "NEW",
        "RE",
        "UNKNOWN"
       ]
      },
      "description": "Machine-readable entry status. RANKED = present on the previous chart (see prev_rank). NEW = first appearance on the Index. RE = re-entry after an absence. UNKNOWN = from 2026-w11 and 2026-w13, before NEW/RE flagging was reliable; these cannot be retroactively distinguished.",
      "added": "2026-07-25"
     },
     {
      "name": "title",
      "type": "string",
      "description": "Entry title as published. Titles for recurring entries may change between editions (e.g. a World Cup stage, a dated WWE Raw episode); continuity is editorial, not a stable ID."
     },
     {
      "name": "category",
      "type": "string",
      "constraints": {
       "enum": [
        "Live Event",
        "Show",
        "Movie",
        "Music",
        "Podcast"
       ]
      },
      "description": "Mutually exclusive entry category. EMPTY for all 250 rows in editions 2026-w08 through 2026-w12, which predate the category taxonomy (introduced v5.2.1)."
     },
     {
      "name": "mindshare",
      "type": "number",
      "unit": "index points, 0\u2013100",
      "description": "Published MindShare score. 100 = the largest raw score in the rolling 52-week window. From v5.3 (July 2026) the mapping is 100 \u00d7 sqrt(raw \u00f7 52-week peak); before v5.3 it was linear. Scores are comparable across weeks WITHIN a scale version but pre-v5.3 and v5.3+ values are not directly comparable."
     },
     {
      "name": "attention_hours_est",
      "type": "integer",
      "unit": "hours",
      "description": "ESTIMATED total hours of US attention for the entry during the measurement week. An estimate, not a measurement \u2014 derived from published rankings, ratings, grosses and stream counts. See methodology for per-source derivation."
     },
     {
      "name": "depth_multiplier",
      "type": "number",
      "description": "Attention-quality multiplier applied to attention_hours_est, from a fixed table (e.g. long-form podcast 3.0, theatrical film 2.5, live sports 1.3). Higher means more concentrated attention per hour."
     },
     {
      "name": "platforms",
      "type": "string",
      "format": "pipe-delimited list",
      "description": "Distribution and attention channels, joined by '|'. Combines the primary platform and secondaries. Includes both reception channels (netflix, hbo, broadcast, theatrical) and buzz channels (youtube, tiktok) \u2014 a buzz channel means conversation there, not distribution.",
      "example": "broadcast|cable|peacock|youtube|tiktok"
     }
    ]
   }
  },
  {
   "name": "edition-json",
   "path": "https://mindshareindex.com/data/2026-wNN.json",
   "format": "json",
   "mediatype": "application/json",
   "description": "A single edition. Same entry fields as the CSV, plus raw_score and creator; does NOT carry the `status` field \u2014 derive it from weekly_change using the rule in the `status` field description above.",
   "additional_fields": [
    {
     "name": "raw_score",
     "type": "number",
     "description": "Pre-normalisation score: attention_hours_est \u00d7 depth \u00d7 velocity \u00d7 cultural reach \u00d7 recency decay. mindshare = 100 \u00d7 sqrt(raw_score \u00f7 benchmark_peak_raw). Absent from backfilled editions that predate the scoring script."
    },
    {
     "name": "creator",
     "type": "string",
     "description": "Studio, network, platform or label. May be empty for podcasts and live events."
    },
    {
     "name": "benchmark_peak_raw",
     "type": "number",
     "description": "Top-level field. The rolling 52-week peak raw score that this edition's MindShare values were normalised against."
    },
    {
     "name": "methodology_version",
     "type": "string",
     "description": "Top-level field. Scoring methodology version in effect for this edition."
    }
   ]
  },
  {
   "name": "manifest",
   "path": "https://mindshareindex.com/data/index.json",
   "format": "json",
   "mediatype": "application/json",
   "description": "List of all published editions with slug, volume label, week label, methodology version and per-edition JSON URL."
  }
 ],
 "known_issues": [
  "weekly_change is a display string with three different encodings across eras. Use rank/prev_rank/status.",
  "category is empty for all 250 rows in editions 2026-w08 through 2026-w12 (pre-taxonomy).",
  "raw_score is absent from backfilled editions that predate the scoring script.",
  "Two rows carry status=NEW alongside a populated prev_rank (2026-w08 rank 32, 2026-w14 rank 4). Both are legacy artifacts of recurring titles being renamed between editions; treat prev_rank as authoritative.",
  "attention_hours_est is an estimate throughout. Nielsen's US streaming measurement runs roughly five weeks behind publication, so no streaming figure is measured at time of publication.",
  "Titles are not stable identifiers across editions; recurring entries are sometimes renamed."
 ],
 "fields": {
  "content_form": {
   "type": "string",
   "description": "What kind of thing the entry is, declared explicitly rather than inferred from the platform it charted on. Added v5.9. Depth follows form, so a reality series takes reality depth wherever it streams and a feature film released to a streaming service is scored as a film, not as television. Required on every Show, Movie and Live Event entry; a missing value fails the build rather than defaulting.",
   "enum": [
    "SCRIPTED_SERIES",
    "ANIMATED_SERIES",
    "SOAP_OPERA",
    "REALITY_COMPETITION",
    "DOCUSERIES",
    "DOCUMENTARY",
    "FEATURE_FILM",
    "NATIONAL_NEWS",
    "LATE_NIGHT",
    "TALK_VARIETY",
    "AWARDS",
    "LIVE_SPORT",
    "LIVE_EVENT",
    "CREATOR_VIDEO"
   ]
  },
  "measured_fraction": {
   "type": [
    "string",
    "number",
    "null"
   ],
   "description": "Podcast entries: measured hours divided by total. Published so readers can see how much of a figure is measurement and how much is model (v5.5)."
  },
  "modeled_basis": {
   "type": [
    "string",
    "number",
    "null"
   ],
   "description": "Podcast entries with a modelled audio leg: the full derivation of that figure in words, plus why it cannot be verified."
  },
  "modeled_refresh_date": {
   "type": [
    "string",
    "number",
    "null"
   ],
   "description": "Date the modelled leg is next due for re-examination."
  }
 }
}