{
 "name": "The ScriptGrain Writing Index",
 "version": "1.0.0",
 "current_period": "2026-Q4",
 "license": "CC BY 4.0",
 "doi_note": "No DOI. Cite the version and the URL.",
 "how_to_read": "One row per company homepage per period in scriptgrain-writing-index.csv. Headline measures are a fixed set of six; there is no composite score.",
 "headline_measures": [
  {
   "id": "words",
   "column": "words",
   "label": "Words of prose on the homepage",
   "level": "median",
   "change_statistic": "median of the site-by-site differences",
   "threshold": 33
  },
  {
   "id": "sentence_length",
   "column": "avg_sentence_length",
   "label": "Average sentence length (words)",
   "level": "median",
   "change_statistic": "median of the site-by-site differences",
   "threshold": 0.07
  },
  {
   "id": "ai_era_vocab",
   "column": "ai_era_style_per1000",
   "label": "AI-era vocabulary, style words only, per 1,000 words",
   "level": "mean",
   "change_statistic": "mean of the site-by-site differences",
   "threshold": 0.52
  },
  {
   "id": "dotcom_vocab",
   "column": "dotcom_vocab_per1000",
   "label": "Dotcom corporate vocabulary per 1,000 words",
   "level": "mean",
   "change_statistic": "mean of the site-by-site differences",
   "threshold": 0.59
  },
  {
   "id": "em_dash_share",
   "column": "em_only_per1000",
   "label": "Share of homepages with at least one em dash",
   "level": "share_positive",
   "change_statistic": "difference in the share, matched sites",
   "threshold": 0.06
  },
  {
   "id": "ai_tell",
   "column": "ai_tell_per1000",
   "label": "ScriptGrain AI-tell density per 1,000 words",
   "level": "mean",
   "change_statistic": "mean of the site-by-site differences",
   "threshold": 0.08
  }
 ],
 "columns": [
  {
   "name": "index_version",
   "description": "Version of the Index definition the row was made under"
  },
  {
   "name": "period",
   "description": "Calendar year (SGR-004 captures nearest 1 July) or a quarter such as 2026-Q4 (live fetch)"
  },
  {
   "name": "collected",
   "description": "Date the page was captured (Wayback capture date) or fetched (live), YYYY-MM-DD"
  },
  {
   "name": "domain",
   "description": "Company homepage measured"
  },
  {
   "name": "sector",
   "description": "One of the 11 panel sectors"
  },
  {
   "name": "source",
   "description": "wayback_rendered, wayback_raw or live"
  },
  {
   "name": "status",
   "description": "measured, too_little_prose, bot_wall, archive_redirect, no_capture, render_failed, fetch_failed, http_error or not_fetched"
  },
  {
   "name": "words",
   "description": "Words of prose on the homepage"
  },
  {
   "name": "words_article",
   "description": "Word count by the product's article extractor, for comparison"
  },
  {
   "name": "avg_sentence_length",
   "description": "Average sentence length (words)"
  },
  {
   "name": "sentence_length_variance",
   "description": "Variance of sentence length"
  },
  {
   "name": "comma_density",
   "description": "Commas per sentence"
  },
  {
   "name": "exclamation_rate",
   "description": "Exclamation marks per 1,000 words"
  },
  {
   "name": "semicolon_frequency",
   "description": "Semicolons per 1,000 words"
  },
  {
   "name": "contraction_frequency",
   "description": "Contractions per 1,000 words"
  },
  {
   "name": "question_mark_in_body",
   "description": "Whether the prose contains a question mark"
  },
  {
   "name": "pronoun_i",
   "description": "Share of I/we/you pronouns that are I"
  },
  {
   "name": "pronoun_we",
   "description": "Share that are we"
  },
  {
   "name": "pronoun_you",
   "description": "Share that are you"
  },
  {
   "name": "word_short",
   "description": "Share of short words"
  },
  {
   "name": "word_medium",
   "description": "Share of medium words"
  },
  {
   "name": "word_long",
   "description": "Share of long words"
  },
  {
   "name": "ai_tell_per1000",
   "description": "ScriptGrain AI-tell density per 1,000 words"
  },
  {
   "name": "not_x_but_y",
   "description": "Count of 'not X but Y' shapes"
  },
  {
   "name": "triadic_list",
   "description": "Count of reflexive lists of three"
  },
  {
   "name": "em_dash_per1000",
   "description": "Em and en dashes per 1,000 words"
  },
  {
   "name": "em_only_per1000",
   "description": "Em dashes (U+2014) per 1,000 words"
  },
  {
   "name": "burstiness_variation",
   "description": "Variation in sentence length"
  },
  {
   "name": "short_sentence_share",
   "description": "Share of sentences under eight words"
  },
  {
   "name": "ai_era_vocab_per1000",
   "description": "AI-era vocabulary per 1,000 words, all 29 entries"
  },
  {
   "name": "ai_era_style_per1000",
   "description": "AI-era vocabulary without ai-powered and powered by ai"
  },
  {
   "name": "dotcom_vocab_per1000",
   "description": "Dotcom corporate vocabulary per 1,000 words"
  }
 ],
 "columns_note": "Column names never change within a major version. A new column is added at the end and noted in the changelog; a column is never renamed or repurposed.",
 "periods": [
  {
   "period": "2000",
   "sites": 161,
   "measured": 39,
   "too_little_prose": 66,
   "bot_wall": 1,
   "no_capture": 55,
   "words": 169,
   "sentence_length": 7.9,
   "ai_era_vocab": 0.42,
   "dotcom_vocab": 3.65,
   "em_dash_share": 0.03,
   "ai_tell": 0.06
  },
  {
   "period": "2001",
   "sites": 161,
   "measured": 54,
   "too_little_prose": 62,
   "bot_wall": 1,
   "no_capture": 44,
   "words": 192,
   "sentence_length": 8.22,
   "ai_era_vocab": 0.49,
   "dotcom_vocab": 3.18,
   "em_dash_share": 0.07,
   "ai_tell": 0.02
  },
  {
   "period": "2002",
   "sites": 161,
   "measured": 60,
   "too_little_prose": 61,
   "bot_wall": 1,
   "no_capture": 39,
   "words": 174.5,
   "sentence_length": 7.69,
   "ai_era_vocab": 0.29,
   "dotcom_vocab": 2.41,
   "em_dash_share": 0.08,
   "ai_tell": 0.42
  },
  {
   "period": "2003",
   "sites": 161,
   "measured": 63,
   "too_little_prose": 59,
   "bot_wall": 2,
   "no_capture": 37,
   "words": 235,
   "sentence_length": 7.84,
   "ai_era_vocab": 0.24,
   "dotcom_vocab": 3.28,
   "em_dash_share": 0.05,
   "ai_tell": 0.43
  },
  {
   "period": "2004",
   "sites": 161,
   "measured": 74,
   "too_little_prose": 54,
   "bot_wall": 2,
   "no_capture": 31,
   "words": 227,
   "sentence_length": 8.11,
   "ai_era_vocab": 0.11,
   "dotcom_vocab": 3.45,
   "em_dash_share": 0.08,
   "ai_tell": 0.32
  },
  {
   "period": "2005",
   "sites": 161,
   "measured": 82,
   "too_little_prose": 58,
   "no_capture": 21,
   "words": 209,
   "sentence_length": 8.09,
   "ai_era_vocab": 0.14,
   "dotcom_vocab": 2.62,
   "em_dash_share": 0.1,
   "ai_tell": 0.75
  },
  {
   "period": "2006",
   "sites": 161,
   "measured": 101,
   "too_little_prose": 41,
   "no_capture": 19,
   "words": 247,
   "sentence_length": 8.19,
   "ai_era_vocab": 0.24,
   "dotcom_vocab": 2.7,
   "em_dash_share": 0.1,
   "ai_tell": 0.11
  },
  {
   "period": "2007",
   "sites": 161,
   "measured": 103,
   "too_little_prose": 39,
   "no_capture": 19,
   "words": 245,
   "sentence_length": 8.03,
   "ai_era_vocab": 0.58,
   "dotcom_vocab": 2.07,
   "em_dash_share": 0.09,
   "ai_tell": 0.18
  },
  {
   "period": "2008",
   "sites": 161,
   "measured": 103,
   "too_little_prose": 32,
   "bot_wall": 1,
   "no_capture": 25,
   "words": 251,
   "sentence_length": 8,
   "ai_era_vocab": 0.34,
   "dotcom_vocab": 1.89,
   "em_dash_share": 0.12,
   "ai_tell": 0.12
  },
  {
   "period": "2009",
   "sites": 161,
   "measured": 117,
   "too_little_prose": 32,
   "bot_wall": 1,
   "no_capture": 11,
   "words": 287,
   "sentence_length": 7.79,
   "ai_era_vocab": 0.24,
   "dotcom_vocab": 1.61,
   "em_dash_share": 0.1,
   "ai_tell": 0.11
  },
  {
   "period": "2010",
   "sites": 161,
   "measured": 120,
   "too_little_prose": 32,
   "no_capture": 9,
   "words": 318.5,
   "sentence_length": 7.31,
   "ai_era_vocab": 0.44,
   "dotcom_vocab": 2.06,
   "em_dash_share": 0.16,
   "ai_tell": 0.03
  },
  {
   "period": "2011",
   "sites": 161,
   "measured": 122,
   "too_little_prose": 29,
   "archive_redirect": 1,
   "no_capture": 9,
   "words": 343,
   "sentence_length": 7.58,
   "ai_era_vocab": 0.32,
   "dotcom_vocab": 2.34,
   "em_dash_share": 0.18,
   "ai_tell": 0.31
  },
  {
   "period": "2012",
   "sites": 161,
   "measured": 124,
   "too_little_prose": 29,
   "no_capture": 8,
   "words": 341,
   "sentence_length": 7.36,
   "ai_era_vocab": 0.45,
   "dotcom_vocab": 2.07,
   "em_dash_share": 0.19,
   "ai_tell": 0.13
  },
  {
   "period": "2013",
   "sites": 161,
   "measured": 124,
   "too_little_prose": 31,
   "no_capture": 6,
   "words": 378.5,
   "sentence_length": 7.73,
   "ai_era_vocab": 0.42,
   "dotcom_vocab": 2.17,
   "em_dash_share": 0.16,
   "ai_tell": 0.12
  },
  {
   "period": "2014",
   "sites": 161,
   "measured": 128,
   "too_little_prose": 27,
   "bot_wall": 1,
   "archive_redirect": 1,
   "no_capture": 4,
   "words": 395.5,
   "sentence_length": 7.88,
   "ai_era_vocab": 0.57,
   "dotcom_vocab": 2.46,
   "em_dash_share": 0.18,
   "ai_tell": 0.16
  },
  {
   "period": "2015",
   "sites": 161,
   "measured": 136,
   "too_little_prose": 21,
   "bot_wall": 1,
   "no_capture": 3,
   "words": 392.5,
   "sentence_length": 8.09,
   "ai_era_vocab": 0.83,
   "dotcom_vocab": 1.69,
   "em_dash_share": 0.21,
   "ai_tell": 0.13
  },
  {
   "period": "2016",
   "sites": 161,
   "measured": 132,
   "too_little_prose": 22,
   "bot_wall": 1,
   "archive_redirect": 1,
   "no_capture": 4,
   "render_failed": 1,
   "words": 399,
   "sentence_length": 8.06,
   "ai_era_vocab": 0.64,
   "dotcom_vocab": 1.94,
   "em_dash_share": 0.2,
   "ai_tell": 0.13
  },
  {
   "period": "2017",
   "sites": 161,
   "measured": 126,
   "too_little_prose": 25,
   "archive_redirect": 2,
   "no_capture": 7,
   "render_failed": 1,
   "words": 377,
   "sentence_length": 8.55,
   "ai_era_vocab": 0.82,
   "dotcom_vocab": 2,
   "em_dash_share": 0.23,
   "ai_tell": 0.28
  },
  {
   "period": "2018",
   "sites": 161,
   "measured": 131,
   "too_little_prose": 23,
   "archive_redirect": 1,
   "no_capture": 5,
   "render_failed": 1,
   "words": 379,
   "sentence_length": 8.48,
   "ai_era_vocab": 0.96,
   "dotcom_vocab": 2,
   "em_dash_share": 0.27,
   "ai_tell": 0.16
  },
  {
   "period": "2019",
   "sites": 161,
   "measured": 133,
   "too_little_prose": 20,
   "archive_redirect": 2,
   "no_capture": 4,
   "render_failed": 2,
   "words": 428,
   "sentence_length": 8.83,
   "ai_era_vocab": 1.29,
   "dotcom_vocab": 1.93,
   "em_dash_share": 0.29,
   "ai_tell": 0.19
  },
  {
   "period": "2020",
   "sites": 161,
   "measured": 132,
   "too_little_prose": 21,
   "archive_redirect": 1,
   "no_capture": 5,
   "render_failed": 2,
   "words": 436.5,
   "sentence_length": 9.23,
   "ai_era_vocab": 0.86,
   "dotcom_vocab": 1.55,
   "em_dash_share": 0.3,
   "ai_tell": 0.18
  },
  {
   "period": "2021",
   "sites": 161,
   "measured": 136,
   "too_little_prose": 16,
   "no_capture": 8,
   "render_failed": 1,
   "words": 417,
   "sentence_length": 9.2,
   "ai_era_vocab": 1.12,
   "dotcom_vocab": 1.68,
   "em_dash_share": 0.28,
   "ai_tell": 0.15
  },
  {
   "period": "2022",
   "sites": 161,
   "measured": 128,
   "too_little_prose": 26,
   "archive_redirect": 1,
   "no_capture": 6,
   "words": 480.5,
   "sentence_length": 9.14,
   "ai_era_vocab": 1.07,
   "dotcom_vocab": 1.42,
   "em_dash_share": 0.27,
   "ai_tell": 0.14
  },
  {
   "period": "2023",
   "sites": 161,
   "measured": 129,
   "too_little_prose": 16,
   "archive_redirect": 1,
   "no_capture": 14,
   "render_failed": 1,
   "words": 522,
   "sentence_length": 8.8,
   "ai_era_vocab": 1.5,
   "dotcom_vocab": 1.42,
   "em_dash_share": 0.32,
   "ai_tell": 0.05
  },
  {
   "period": "2024",
   "sites": 161,
   "measured": 125,
   "too_little_prose": 24,
   "bot_wall": 2,
   "no_capture": 9,
   "render_failed": 1,
   "words": 520,
   "sentence_length": 9.11,
   "ai_era_vocab": 1.86,
   "dotcom_vocab": 1.38,
   "em_dash_share": 0.29,
   "ai_tell": 0.11
  },
  {
   "period": "2025",
   "sites": 161,
   "measured": 121,
   "too_little_prose": 22,
   "bot_wall": 3,
   "no_capture": 12,
   "render_failed": 3,
   "words": 576,
   "sentence_length": 9.53,
   "ai_era_vocab": 1.79,
   "dotcom_vocab": 1.35,
   "em_dash_share": 0.35,
   "ai_tell": 0.17
  },
  {
   "period": "2026",
   "sites": 161,
   "measured": 107,
   "too_little_prose": 27,
   "bot_wall": 4,
   "archive_redirect": 1,
   "no_capture": 16,
   "render_failed": 6,
   "words": 606,
   "sentence_length": 9.02,
   "ai_era_vocab": 2.17,
   "dotcom_vocab": 1.77,
   "em_dash_share": 0.38,
   "ai_tell": 0.2
  },
  {
   "period": "2026-Q4",
   "sites": 161,
   "measured": 149,
   "too_little_prose": 6,
   "fetch_failed": 6,
   "words": 639,
   "sentence_length": 8.79,
   "ai_era_vocab": 2.34,
   "dotcom_vocab": 1.29,
   "em_dash_share": 0.42,
   "ai_tell": 0.31
  }
 ],
 "latest_comparison": {
  "period": "2026-Q4",
  "against": "2026",
  "matched_sites": 105,
  "measures": [
   {
    "id": "words",
    "label": "Words of prose on the homepage",
    "threshold": 33,
    "matched_sites": 105,
    "baseline": 617,
    "current": 651,
    "change": 34,
    "lo": 15,
    "hi": 86,
    "label_result": "changed",
    "direction": "up"
   },
   {
    "id": "sentence_length",
    "label": "Average sentence length (words)",
    "threshold": 0.07,
    "matched_sites": 105,
    "baseline": 9.04,
    "current": 9.35,
    "change": 0,
    "lo": -0.05,
    "hi": 0.15,
    "label_result": "no detectable change",
    "direction": "none"
   },
   {
    "id": "ai_era_vocab",
    "label": "AI-era vocabulary, style words only, per 1,000 words",
    "threshold": 0.52,
    "matched_sites": 105,
    "baseline": 2.21,
    "current": 2.16,
    "change": -0.05,
    "lo": -0.52,
    "hi": 0.43,
    "label_result": "no detectable change",
    "direction": "down"
   },
   {
    "id": "dotcom_vocab",
    "label": "Dotcom corporate vocabulary per 1,000 words",
    "threshold": 0.59,
    "matched_sites": 105,
    "baseline": 1.69,
    "current": 1.22,
    "change": -0.47,
    "lo": -0.92,
    "hi": -0.08,
    "label_result": "moved, below the threshold",
    "direction": "down"
   },
   {
    "id": "em_dash_share",
    "label": "Share of homepages with at least one em dash",
    "threshold": 0.06,
    "matched_sites": 105,
    "baseline": 0.38,
    "current": 0.43,
    "change": 0.05,
    "lo": -0.03,
    "hi": 0.12,
    "label_result": "no detectable change",
    "direction": "up"
   },
   {
    "id": "ai_tell",
    "label": "ScriptGrain AI-tell density per 1,000 words",
    "threshold": 0.08,
    "matched_sites": 105,
    "baseline": 0.21,
    "current": 0.29,
    "change": 0.08,
    "lo": -0.05,
    "hi": 0.23,
    "label_result": "no detectable change",
    "direction": "up"
   }
  ]
 },
 "changelog": [
  {
   "version": "1.0.0",
   "released": "2026-11-04",
   "period_added": "2026-Q4",
   "summary": [
    "First release of the Index. Starts from the 2,950 measured homepage-years of SGR-004 (161 companies, 2000 to 2026, Wayback captures nearest 1 July) and adds one live fetch of each company's current homepage as period 2026-Q4.",
    "Fixes the six headline measures, their statistics and the thresholds for calling a quarter-on-quarter move a change. No composite score.",
    "Columns are those of the SGR-004 dataset plus index_version, period, collected, source and ai_era_style_per1000 (SGR-004 derived it in its analysis step; the Index stores it)."
   ]
  }
 ]
}