{
  "agent_taxonomy": [
    {
      "category": "search",
      "interpretation": "Closest OpenAI signal for future ChatGPT Search discoverability.",
      "measures": "Whether a page is being fetched for OpenAI's search index and citation-surfacing systems.",
      "name": "OAI-SearchBot",
      "role": "Search indexing crawler",
      "starts_at": "2026-04-18T00:00:00.000Z"
    },
    {
      "category": "interaction",
      "interpretation": "A conversation-time demand signal, not an automatic search crawler.",
      "measures": "Whether ChatGPT opened a public page during a user-triggered retrieval action.",
      "name": "ChatGPT-User",
      "role": "Live retrieval fetcher",
      "starts_at": "2026-05-06T09:00:00.000Z"
    },
    {
      "category": "training",
      "interpretation": "Useful for crawl behavior, but not evidence that the page was retrieved for a live citation.",
      "measures": "Whether OpenAI's training crawler requested the page.",
      "name": "GPTBot",
      "role": "Training crawler",
      "starts_at": "2026-04-18T00:00:00.000Z"
    }
  ],
  "experiment_results": [
    {
      "bot_category": "interaction",
      "bot_name": "ChatGPT-User",
      "diff_pp": 0.67,
      "html_coverage_pct": 68.32,
      "html_events": 7062,
      "html_pages_seen": 772,
      "html_pages_total": 1130,
      "interpretation": "ChatGPT-User is directionally Markdown-skewed on best-for pages.",
      "markdown_coverage_pct": 68.99,
      "markdown_events": 8301,
      "markdown_pages_seen": 772,
      "markdown_pages_total": 1119,
      "p_value": 0.7314,
      "page_slice": "ai-search-best-for",
      "significance": "not significant"
    },
    {
      "bot_category": "search",
      "bot_name": "OAI-SearchBot",
      "diff_pp": 2.14,
      "html_coverage_pct": 71.77,
      "html_events": 1062,
      "html_pages_seen": 811,
      "html_pages_total": 1130,
      "interpretation": "The search crawler is slightly more likely to cover Markdown-assigned best-for pages so far, but the difference is not strong enough to call.",
      "markdown_coverage_pct": 73.91,
      "markdown_events": 1071,
      "markdown_pages_seen": 827,
      "markdown_pages_total": 1119,
      "p_value": 0.255,
      "page_slice": "ai-search-best-for",
      "significance": "directional, not significant"
    },
    {
      "bot_category": "search",
      "bot_name": "PerplexityBot",
      "diff_pp": -0.31,
      "html_coverage_pct": 13.63,
      "html_events": 499,
      "html_pages_seen": 154,
      "html_pages_total": 1130,
      "interpretation": "PerplexityBot is directionally HTML-skewed on best-for pages.",
      "markdown_coverage_pct": 13.32,
      "markdown_events": 379,
      "markdown_pages_seen": 149,
      "markdown_pages_total": 1119,
      "p_value": 0.828,
      "page_slice": "ai-search-best-for",
      "significance": "not significant"
    },
    {
      "bot_category": "training",
      "bot_name": "ClaudeBot",
      "diff_pp": -5.41,
      "html_coverage_pct": 22.3,
      "html_events": 255,
      "html_pages_seen": 252,
      "html_pages_total": 1130,
      "interpretation": "ClaudeBot is directionally HTML-skewed on best-for pages.",
      "markdown_coverage_pct": 16.89,
      "markdown_events": 197,
      "markdown_pages_seen": 189,
      "markdown_pages_total": 1119,
      "p_value": 0.0012,
      "page_slice": "ai-search-best-for",
      "significance": "significant crawler skew"
    },
    {
      "bot_category": "training",
      "bot_name": "GPTBot",
      "diff_pp": -59.07,
      "html_coverage_pct": 63.98,
      "html_events": 1001,
      "html_pages_seen": 723,
      "html_pages_total": 1130,
      "interpretation": "GPTBot is behaving unlike the search crawler; the study reports it as a training-crawler anomaly rather than a live citation signal.",
      "markdown_coverage_pct": 4.92,
      "markdown_events": 184,
      "markdown_pages_seen": 55,
      "markdown_pages_total": 1119,
      "p_value": 0.0,
      "page_slice": "ai-search-best-for",
      "significance": "significant crawler skew"
    },
    {
      "bot_category": "interaction",
      "bot_name": "ChatGPT-User",
      "diff_pp": 0.3,
      "html_coverage_pct": 30.69,
      "html_events": 12870,
      "html_pages_seen": 1376,
      "html_pages_total": 4484,
      "interpretation": "ChatGPT-User is directionally Markdown-skewed on eligible pages.",
      "markdown_coverage_pct": 30.98,
      "markdown_events": 15396,
      "markdown_pages_seen": 1410,
      "markdown_pages_total": 4551,
      "p_value": 0.7612,
      "page_slice": "all",
      "significance": "not significant"
    },
    {
      "bot_category": "search",
      "bot_name": "OAI-SearchBot",
      "diff_pp": 0.5,
      "html_coverage_pct": 36.31,
      "html_events": 2203,
      "html_pages_seen": 1628,
      "html_pages_total": 4484,
      "interpretation": "The search crawler is slightly more likely to cover Markdown-assigned eligible pages so far, but the difference is not strong enough to call.",
      "markdown_coverage_pct": 36.81,
      "markdown_events": 2236,
      "markdown_pages_seen": 1675,
      "markdown_pages_total": 4551,
      "p_value": 0.623,
      "page_slice": "all",
      "significance": "not significant"
    },
    {
      "bot_category": "search",
      "bot_name": "PerplexityBot",
      "diff_pp": 0.41,
      "html_coverage_pct": 9.7,
      "html_events": 1764,
      "html_pages_seen": 435,
      "html_pages_total": 4484,
      "interpretation": "PerplexityBot is directionally Markdown-skewed on eligible pages.",
      "markdown_coverage_pct": 10.11,
      "markdown_events": 1533,
      "markdown_pages_seen": 460,
      "markdown_pages_total": 4551,
      "p_value": 0.5178,
      "page_slice": "all",
      "significance": "not significant"
    },
    {
      "bot_category": "training",
      "bot_name": "ClaudeBot",
      "diff_pp": -0.28,
      "html_coverage_pct": 36.84,
      "html_events": 1861,
      "html_pages_seen": 1652,
      "html_pages_total": 4484,
      "interpretation": "ClaudeBot is directionally HTML-skewed on eligible pages.",
      "markdown_coverage_pct": 36.56,
      "markdown_events": 1840,
      "markdown_pages_seen": 1664,
      "markdown_pages_total": 4551,
      "p_value": 0.7835,
      "page_slice": "all",
      "significance": "not significant"
    },
    {
      "bot_category": "training",
      "bot_name": "GPTBot",
      "diff_pp": -17.18,
      "html_coverage_pct": 51.76,
      "html_events": 9353,
      "html_pages_seen": 2321,
      "html_pages_total": 4484,
      "interpretation": "GPTBot is behaving unlike the search crawler; the study reports it as a training-crawler anomaly rather than a live citation signal.",
      "markdown_coverage_pct": 34.59,
      "markdown_events": 8282,
      "markdown_pages_seen": 1574,
      "markdown_pages_total": 4551,
      "p_value": 0.0,
      "page_slice": "all",
      "significance": "significant crawler skew"
    }
  ],
  "headline_metrics": {
    "best_for_html_pages": 1130,
    "best_for_markdown_pages": 1119,
    "best_for_pages": 2249,
    "chatgpt_user_live_events": 195146,
    "chatgpt_user_live_paths": 39603,
    "eligible_events": 57340,
    "estimated_eligible_byte_savings_pct": 32.7,
    "html_events": 60917,
    "markdown_events": 29289,
    "median_markdown_smaller_pct": 79.1,
    "total_events": 90206
  },
  "legacy_routes": [
    {
      "bot_name": "ChatGPT-User",
      "events": 149,
      "path": "/ai-recommends/best-note-taking-app",
      "status_code": 301
    },
    {
      "bot_name": "ChatGPT-User",
      "events": 146,
      "path": "/ai-recommends/best-to-do-list-app",
      "status_code": 200
    },
    {
      "bot_name": "ChatGPT-User",
      "events": 146,
      "path": "/ai-recommends/best-screen-sharing-software",
      "status_code": 301
    },
    {
      "bot_name": "ChatGPT-User",
      "events": 112,
      "path": "/ai-recommends/best-note-taking-app",
      "status_code": 200
    },
    {
      "bot_name": "ChatGPT-User",
      "events": 90,
      "path": "/ai-recommends/best-screen-sharing-software",
      "status_code": 200
    },
    {
      "bot_name": "ChatGPT-User",
      "events": 90,
      "path": "/ai-recommends/best-ai-website-builder",
      "status_code": 200
    },
    {
      "bot_name": "ChatGPT-User",
      "events": 86,
      "path": "/ai-recommends/best-website-builder-for-portfolios",
      "status_code": 200
    },
    {
      "bot_name": "ChatGPT-User",
      "events": 78,
      "path": "/ai-recommends/best-influencer-marketing-platform",
      "status_code": 200
    },
    {
      "bot_name": "ChatGPT-User",
      "events": 69,
      "path": "/ai-recommends/best-gantt-chart-software",
      "status_code": 200
    },
    {
      "bot_name": "ChatGPT-User",
      "events": 58,
      "path": "/ai-recommends/best-website-builder-for-restaurants",
      "status_code": 301
    },
    {
      "bot_name": "ChatGPT-User",
      "events": 52,
      "path": "/ai-recommends/fathom-analytics-alternatives",
      "status_code": 200
    },
    {
      "bot_name": "ChatGPT-User",
      "events": 47,
      "path": "/ai-recommends/best-e-commerce-platform-for-jewelry",
      "status_code": 200
    }
  ],
  "limitations": [
    "The baseline event table currently reports all bot identity as user-agent-only rather than Cloudflare verified-bot enriched.",
    "The first window did not serve ChatGPT-User as its own experiment cohort; it is shown as historical live-retrieval demand until the public launch.",
    "The experiment measures crawl and retrieval behavior, not whether a downstream AI answer ultimately cited the page.",
    "Legacy recommendation URLs are aggregated as public retrieval demand and are not presented as active experiment treatment pages."
  ],
  "live_retrieval": {
    "chatgpt_user_events": 195146,
    "chatgpt_user_paths": 39603,
    "html_label_coverage_pct": 83.45,
    "label_balance_p_value": 0.9463,
    "markdown_label_coverage_pct": 83.56,
    "top_categories": [
      {
        "category": "ai-transcription",
        "events": 3864
      },
      {
        "category": "vpn",
        "events": 3256
      },
      {
        "category": "ai-image",
        "events": 2938
      },
      {
        "category": "payment-processing",
        "events": 2925
      },
      {
        "category": "automation",
        "events": 2766
      },
      {
        "category": "design-tools",
        "events": 2742
      },
      {
        "category": "cloud-storage",
        "events": 2629
      },
      {
        "category": "ai-video",
        "events": 2045
      }
    ],
    "top_paths": [
      {
        "assignment_label": "markdown",
        "chatgpt_user_events": 947,
        "gptbot_events": 2,
        "oai_searchbot_events": 4,
        "path": "/ai-recommends/design-tools/restaurants"
      },
      {
        "assignment_label": "html",
        "chatgpt_user_events": 919,
        "gptbot_events": 3,
        "oai_searchbot_events": 4,
        "path": "/ai-recommends/ai-transcription/creators"
      },
      {
        "assignment_label": "markdown",
        "chatgpt_user_events": 722,
        "gptbot_events": 9,
        "oai_searchbot_events": 2,
        "path": "/ai-recommends/ai-transcription/nonprofits"
      },
      {
        "assignment_label": "markdown",
        "chatgpt_user_events": 632,
        "gptbot_events": 0,
        "oai_searchbot_events": 4,
        "path": "/ai-recommends/analytics/retail"
      },
      {
        "assignment_label": "html",
        "chatgpt_user_events": 616,
        "gptbot_events": 0,
        "oai_searchbot_events": 3,
        "path": "/ai-recommends/cloud-storage/creators"
      },
      {
        "assignment_label": "markdown",
        "chatgpt_user_events": 592,
        "gptbot_events": 0,
        "oai_searchbot_events": 3,
        "path": "/ai-recommends/payment-processing/saas-companies"
      },
      {
        "assignment_label": "markdown",
        "chatgpt_user_events": 524,
        "gptbot_events": 7,
        "oai_searchbot_events": 1,
        "path": "/ai-recommends/ai-transcription/developers"
      },
      {
        "assignment_label": "markdown",
        "chatgpt_user_events": 441,
        "gptbot_events": 1,
        "oai_searchbot_events": 5,
        "path": "/ai-recommends/ai-image/tech-companies"
      },
      {
        "assignment_label": "html",
        "chatgpt_user_events": 410,
        "gptbot_events": 4,
        "oai_searchbot_events": 1,
        "path": "/ai-recommends/vpn/tech-companies"
      },
      {
        "assignment_label": "markdown",
        "chatgpt_user_events": 365,
        "gptbot_events": 0,
        "oai_searchbot_events": 4,
        "path": "/ai-recommends/payment-processing/developers"
      }
    ]
  },
  "metadata": {
    "assignment": {
      "html_pages": 4484,
      "markdown_pages": 4551,
      "markdown_percent": 50.37
    },
    "caveats": [
      "Bot identity in this baseline window is user-agent based; Cloudflare verified-bot enrichment has not yet appeared in the experiment rows.",
      "ChatGPT-User was measured as historical live-retrieval demand in the baseline and becomes a first-class interaction cohort from 2026-05-06T09:00:00Z.",
      "Coverage is page-level and randomized by canonical path, so raw request volume is reported as a secondary signal."
    ],
    "eligible_page_count": 9035,
    "experiment_id": "markdown-crawler-bots-2026-04-18",
    "generated_at": "2026-05-21T12:14:19.641408Z",
    "publish_at": "2026-05-06T09:00:00.000Z",
    "source_tables": [
      "trakkr-ai.trakkr_analytics.markdown_crawler_experiment_events",
      "trakkr-ai.trakkr_analytics.bot_visits_full",
      "file:///Users/mack/Cursor/Trakkr V2/frontend/dist/_trakkr/md-exp/v1/manifest.json"
    ],
    "study_id": "010",
    "weekly_cadence": "Mondays at 09:00 UTC",
    "window_end": "2026-05-21T12:14:19.641408Z",
    "window_start": "2026-04-18T00:00:00.000Z"
  },
  "methodology": [
    "Eligible pages are assigned to Markdown or HTML with a deterministic hash of experiment ID and canonical path.",
    "The primary endpoint is page-level coverage: the share of assigned pages each bot reached at least once.",
    "Request counts, revisits, and transferred bytes are secondary outcomes because a small number of popular URLs can dominate raw volume.",
    "Variant comparisons use two-proportion z-tests and are reported as percentage-point differences with p-values.",
    "ChatGPT-User is separated from OAI-SearchBot because it represents user-triggered live retrieval rather than search indexing."
  ],
  "weekly_snapshots": [
    {
      "chatgpt_user_live_events": 195146,
      "eligible_events": 57340,
      "generated_at": "2026-05-21T12:14:19.641408Z",
      "html_events": 60917,
      "markdown_events": 29289,
      "note": "Automated weekly snapshot.",
      "oai_searchbot_best_for_diff_pp": 2.14,
      "week_start": "2026-05-21"
    }
  ]
}
