{
  "schemaVersion": "deck-intelligence.v1",
  "id": "019dd923-622c-750b-8b97-11abf671ba12",
  "slug": "e116ed19ca52",
  "title": "GSX Techedu (GSX)",
  "subtitle": "Carson Block · 2020-05",
  "author": "Carson Block",
  "date": "2020-05-18 00:00:00",
  "pageCount": 25,
  "kind": "research-note",
  "orientation": "portrait",
  "aspectRatio": 0.77272725,
  "targetCompany": "GSX Techedu",
  "targetTicker": "GSX",
  "document": {
    "id": "019dd923-622c-750b-8b97-11abf671ba12",
    "slug": "e116ed19ca52",
    "title": "GSX Techedu (GSX)",
    "rawTitle": "MW GSX 05182020",
    "authorId": "51_Muddy_Waters",
    "authorName": "Carson Block",
    "authorDisplay": "Carson Block",
    "kind": {
      "slug": "research-note",
      "label": "Research note"
    },
    "sourceType": {
      "slug": "short_seller",
      "label": "Short seller"
    },
    "fileName": "2020-05-MW_GSX_05182020.pdf",
    "sourceUrl": null,
    "sourceDate": "2020-05-18 00:00:00",
    "presentationDate": "2020-05-18 00:00:00",
    "ingestedAt": "2026-04-22 19:44:53+00",
    "status": "ready",
    "pageCount": 25,
    "orientation": "portrait",
    "aspectRatio": 0.77272725,
    "targetCompany": "GSX Techedu",
    "targetTicker": "GSX",
    "metadata": {
      "local_root": "/tmp/legacy-images/e116ed19ca52",
      "activist_firm": "Muddy Waters Capital",
      "origin_corpus": "contrarian",
      "extraction_seconds": 117.69785785675049
    }
  },
  "coverage": {
    "pageCount": 25,
    "pagesIndexed": 25,
    "pagesWithImages": 25,
    "pagesWithMetadata": 25,
    "imageCoveragePct": 100,
    "metadataCoveragePct": 100,
    "componentCount": 153,
    "chartCount": 5,
    "metricSlides": 0,
    "toolMatches": 13,
    "documentToolMatches": 3,
    "frameworkMatches": 2,
    "arcMatches": 1,
    "beatMatches": 3,
    "loopMatches": 1,
    "patternMatches": 0,
    "storymakersMatch": false,
    "scoreAvailable": false,
    "reviewAvailable": false,
    "activistThesisAvailable": true,
    "pitchdeckMetadataAvailable": false,
    "pitchdeckProfileAvailable": false
  },
  "blocks": [],
  "matches": {
    "arcs": [
      {
        "arc": {
          "name": "Problem-Agitate-Solution",
          "slug": "problem-agitate-solution",
          "status": "active",
          "bestFor": "Sales pitches, urgency-driven, competitive displacement",
          "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
          "version": 1,
          "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
          "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
          "description": null,
          "familyLabel": null,
          "categoryName": "Strategy & Business",
          "categorySlug": "strategy-business"
        },
        "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
        "evidence": "The document follows a problem-agitate-solution narrative, highlighting the issue of bot activity, its implications, and a proposed solution",
        "isPrimary": true,
        "confidence": 0.8,
        "extraction": {
          "at": "2026-07-16 21:58:28.072053+00",
          "model": "or:meta-llama/llama-4-scout",
          "runId": null,
          "seconds": null,
          "promptVersion": "doc-narrative-v1"
        }
      }
    ],
    "beats": [
      {
        "to": 4,
        "arc": {
          "name": "Problem-Agitate-Solution",
          "slug": "problem-agitate-solution",
          "status": "active",
          "bestFor": "Sales pitches, urgency-driven, competitive displacement",
          "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
          "version": 1,
          "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
          "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
          "description": null,
          "familyLabel": null,
          "categoryName": "Strategy & Business",
          "categorySlug": "strategy-business"
        },
        "from": 2,
        "name": "Problem (Identify pain)",
        "beatId": "ef65fdda-b53a-47e7-ad02-b40a1fc3e851",
        "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
        "beatType": {
          "name": "Problem (Identify pain)",
          "slug": "problem-agitate-solution-problem-identify-pain",
          "status": "active",
          "canonId": "019dd9b8-0e78-74bb-b8f6-54348367a131",
          "version": 1,
          "description": null
        },
        "evidence": "The document highlights the issue of bot activity on GSX Techedu's platform",
        "position": 0,
        "isPrimaryArc": true,
        "parentBeatType": {
          "name": "Complication",
          "slug": "complication",
          "status": "active",
          "canonId": "019dd9b8-0275-7709-b2d6-4f77c3fc7579",
          "version": 1,
          "description": "The point in the narrative where the audience should feel discomfort. Required for argumentative arcs."
        },
        "alignedBlockIds": null,
        "matchConfidence": 0.8
      },
      {
        "to": 10,
        "arc": {
          "name": "Problem-Agitate-Solution",
          "slug": "problem-agitate-solution",
          "status": "active",
          "bestFor": "Sales pitches, urgency-driven, competitive displacement",
          "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
          "version": 1,
          "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
          "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
          "description": null,
          "familyLabel": null,
          "categoryName": "Strategy & Business",
          "categorySlug": "strategy-business"
        },
        "from": 5,
        "name": "Agitate (Make it worse)",
        "beatId": "bfb25005-744d-4f56-a9bd-94aa58cefabc",
        "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
        "beatType": {
          "name": "Agitate (Make it worse)",
          "slug": "problem-agitate-solution-agitate-make-it-worse",
          "status": "active",
          "canonId": "019dd9b8-0f5a-71dd-bae7-8fadb0d09456",
          "version": 1,
          "description": null
        },
        "evidence": "The document presents data on the frequency and impact of bot joiners",
        "position": 1,
        "isPrimaryArc": true,
        "parentBeatType": {
          "name": "Development",
          "slug": "development",
          "status": "active",
          "canonId": "019dd9b8-0332-7008-b3aa-11b0840a57b1",
          "version": 1,
          "description": "The middle stretch in arcs that have one. Often where length problems creep in."
        },
        "alignedBlockIds": null,
        "matchConfidence": 0.8
      },
      {
        "to": 25,
        "arc": {
          "name": "Problem-Agitate-Solution",
          "slug": "problem-agitate-solution",
          "status": "active",
          "bestFor": "Sales pitches, urgency-driven, competitive displacement",
          "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
          "version": 1,
          "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
          "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
          "description": null,
          "familyLabel": null,
          "categoryName": "Strategy & Business",
          "categorySlug": "strategy-business"
        },
        "from": 11,
        "name": "Solution (Provide relief)",
        "beatId": "22b51ee0-c483-4634-ab46-435735227a51",
        "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
        "beatType": {
          "name": "Solution (Provide relief)",
          "slug": "problem-agitate-solution-solution-provide-relief",
          "status": "active",
          "canonId": "019dd9b8-0fee-73e9-9ae5-799c7f3895cd",
          "version": 1,
          "description": null
        },
        "evidence": "The document proposes a methodology for analyzing and addressing bot activity",
        "position": 2,
        "isPrimaryArc": true,
        "parentBeatType": {
          "name": "Resolution",
          "slug": "resolution",
          "status": "active",
          "canonId": "019dd9b8-045d-703b-8dd7-e92aba3ba91b",
          "version": 1,
          "description": "How the deck ends. Required in 19/20 arcs. The exception (Sparkline) ends with new bliss which is functionally a resolution."
        },
        "alignedBlockIds": null,
        "matchConfidence": 0.8
      }
    ],
    "loops": [
      {
        "to": 25,
        "from": 2,
        "loop": {
          "name": "01_logic_chain",
          "slug": "01-logic-chain",
          "status": "active",
          "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
          "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
          "version": 1,
          "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
          "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
          "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
          "familyLabel": null,
          "categoryName": "Logical Reasoning",
          "categorySlug": "logical-reasoning"
        },
        "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
        "evidence": "The document presents a series of logical steps to analyze and address bot activity",
        "position": 0,
        "objective": "To present a logical chain of evidence and analysis to support the conclusion",
        "confidence": 0.7,
        "extraction": {
          "at": "2026-07-16 21:58:28.320505+00",
          "model": "or:meta-llama/llama-4-scout",
          "runId": null,
          "seconds": null,
          "promptVersion": "doc-narrative-v1"
        }
      }
    ],
    "tools": [
      {
        "tool": {
          "name": "CEO quote contradiction",
          "slug": "ceo-quote-contradiction",
          "status": "active",
          "bestFor": "When management credibility is the lever",
          "canonId": "019dd9e1-52e9-717f-8454-93e627563ed6",
          "version": 1,
          "bodyDocId": "019dd9a1-8296-720d-8f51-da76937f9415",
          "description": "You reproduce management's own words — verbatim, with source and date — and\nthen place them next to the outcome that contradicts them. The CEO built\nthe rope; you put it around their own neck.",
          "familyLabel": null,
          "categoryName": null,
          "categorySlug": null
        },
        "agent": null,
        "layer": "document",
        "agents": null,
        "matchId": "64ba361d-e1e8-4617-8948-fbf3124e483c",
        "evidence": null,
        "pageRefs": null,
        "priority": null,
        "whenToUse": "When management credibility is the lever",
        "confidence": null,
        "extraction": {
          "at": "2026-04-29 12:07:50.005477+00",
          "model": "unknown-legacy",
          "runId": null,
          "seconds": null,
          "promptVersion": null
        },
        "pageNumber": null,
        "whyItWorks": "- **Maximum credibility**: no adjective you could write is as damning as the\n  target's own prior statement.\n- **No rebuttal path**: management can't argue they didn't say it.\n- **It forces accountability onto a person**, not an institution — even if\n  you aren't explicitly naming a villain elsewhere.\n- **Reporters amplify it**. A CEO-quote-contradiction slide is quotable,\n  which means it lands in WSJ/FT/Bloomberg coverage.",
        "antipattern": null,
        "cardinality": null,
        "narrativePurpose": null
      },
      {
        "tool": {
          "name": "Villain naming",
          "slug": "villain-naming",
          "status": "active",
          "bestFor": "When governance or specific decisions are the core thesis",
          "canonId": "019dd9e1-55a4-74db-9314-0ced4cd46cd2",
          "version": 1,
          "bodyDocId": "019dd9a1-88f1-72ad-8f4e-56ec29d7b369",
          "description": "You identify a **specific person** responsible for the target's underperformance\nor the behaviour you want changed — and name them. Not \"management\" or \"the\nboard\". A named executive or director with a specific failure attributable to\nthem.",
          "familyLabel": null,
          "categoryName": null,
          "categorySlug": null
        },
        "agent": null,
        "layer": "document",
        "agents": null,
        "matchId": "ab312e03-39f7-4371-a3d0-dd4023b91460",
        "evidence": "Larry Xiangdong Chen (Chairman, GSX Techedu)",
        "pageRefs": null,
        "priority": null,
        "whenToUse": "When governance or specific decisions are the core thesis",
        "confidence": null,
        "extraction": {
          "at": "2026-04-29 12:07:50.005477+00",
          "model": "unknown-legacy",
          "runId": null,
          "seconds": null,
          "promptVersion": null
        },
        "pageNumber": null,
        "whyItWorks": "- **Accountability needs a face.** Voters (shareholders, regulators,\n  journalists) act faster against people than institutions.\n- **Credibility rises with specificity.** \"The CFO has repeatedly missed\n  guidance\" > \"Management has missed guidance\".\n- It **pre-empts evasion**. An individual can be removed; an abstraction\n  cannot.\n- It **forces the target to respond personally** — and their defensive\n  response usually generates more attention for your thesis.",
        "antipattern": null,
        "cardinality": null,
        "narrativePurpose": null
      },
      {
        "tool": {
          "name": "Villain slide",
          "slug": "villain-slide",
          "status": "active",
          "bestFor": "In activist decks where the personality matters",
          "canonId": "019dd9e1-518c-7404-976a-5be5a517b659",
          "version": 1,
          "bodyDocId": null,
          "description": "A dedicated slide presenting the named villain visually",
          "familyLabel": null,
          "categoryName": null,
          "categorySlug": null
        },
        "agent": null,
        "layer": "document",
        "agents": null,
        "matchId": "1e99af63-9eef-4664-a9e2-93f61363b644",
        "evidence": null,
        "pageRefs": null,
        "priority": null,
        "whenToUse": "In activist decks where the personality matters",
        "confidence": null,
        "extraction": {
          "at": "2026-04-29 12:07:50.005477+00",
          "model": "unknown-legacy",
          "runId": null,
          "seconds": null,
          "promptVersion": null
        },
        "pageNumber": null,
        "whyItWorks": "Makes the antagonist concrete",
        "antipattern": null,
        "cardinality": null,
        "narrativePurpose": null
      },
      {
        "tool": {
          "name": "Audience Definition",
          "slug": "audience-definition",
          "status": "active",
          "bestFor": null,
          "canonId": "019dd956-7f2a-775d-aeee-ff099bcb7756",
          "version": 1,
          "bodyDocId": null,
          "description": "Six key questions: Who are they? What do they know? What do they believe? What do they care about? What do they fear? What decisions can they make?",
          "familyLabel": null,
          "categoryName": "Block",
          "categorySlug": "block"
        },
        "agent": "Storyteller",
        "layer": "slide",
        "agents": [
          "Storyteller"
        ],
        "matchId": "6d228d94-a329-428c-bf1d-f4e4e4608db1",
        "evidence": "Over half (52.8%) of the unique users in our sample were identified as bots because they are “Precise Joiners” or are linked to them.",
        "pageRefs": null,
        "priority": "Core",
        "whenToUse": null,
        "confidence": 0.7,
        "extraction": {
          "at": "2026-07-16 22:58:45.312153+00",
          "model": "or:meta-llama/llama-4-scout",
          "runId": null,
          "seconds": null,
          "promptVersion": null
        },
        "pageNumber": 5,
        "whyItWorks": null,
        "antipattern": null,
        "cardinality": null,
        "narrativePurpose": null
      },
      {
        "tool": {
          "name": "Data Story Arc",
          "slug": "data-story-arc",
          "status": "active",
          "bestFor": null,
          "canonId": "019dd956-9c30-728e-b974-d3fb123dcf5a",
          "version": 1,
          "bodyDocId": null,
          "description": "Context → Conflict → Insight → Implication structure for data narratives",
          "familyLabel": null,
          "categoryName": "Loop",
          "categorySlug": "loop"
        },
        "agent": "Storyteller",
        "layer": "slide",
        "agents": [
          "Storyteller"
        ],
        "matchId": "c5e592e2-c41a-4a42-8395-071893c4a094",
        "evidence": "Over half (52.8%) of the unique users in our sample were identified as bots because they are “Precise Joiners” or are linked to them.",
        "pageRefs": null,
        "priority": "Core",
        "whenToUse": null,
        "confidence": 0.6,
        "extraction": {
          "at": "2026-07-16 22:58:45.353256+00",
          "model": "or:meta-llama/llama-4-scout",
          "runId": null,
          "seconds": null,
          "promptVersion": null
        },
        "pageNumber": 5,
        "whyItWorks": null,
        "antipattern": null,
        "cardinality": null,
        "narrativePurpose": null
      },
      {
        "tool": {
          "name": "Anchoring Bias",
          "slug": "anchoring-bias",
          "status": "active",
          "bestFor": null,
          "canonId": "019dd956-9254-73de-8f1b-c7250f8f4c9c",
          "version": 1,
          "bodyDocId": null,
          "description": "First piece of information becomes reference point for all subsequent judgments",
          "familyLabel": null,
          "categoryName": "Block",
          "categorySlug": "block"
        },
        "agent": "Architect",
        "layer": "slide",
        "agents": [
          "Architect",
          "Storyteller"
        ],
        "matchId": "5733c0a5-deb1-4f26-83d9-025412fe1e1c",
        "evidence": "Adding GSX IP Joiners brings the total percentage of High Confidence bot users to 34,534 users, or 63.9%.",
        "pageRefs": null,
        "priority": null,
        "whenToUse": null,
        "confidence": 0.5,
        "extraction": {
          "at": "2026-07-16 22:58:45.47355+00",
          "model": "or:meta-llama/llama-4-scout",
          "runId": null,
          "seconds": null,
          "promptVersion": null
        },
        "pageNumber": 7,
        "whyItWorks": null,
        "antipattern": null,
        "cardinality": null,
        "narrativePurpose": null
      },
      {
        "tool": {
          "name": "Chart Selection Guide",
          "slug": "chart-selection-guide",
          "status": "active",
          "bestFor": null,
          "canonId": "019dd956-b1a0-700b-ba17-0e16c4d5bcae",
          "version": 1,
          "bodyDocId": null,
          "description": "Choosing the right chart type for your data and message",
          "familyLabel": null,
          "categoryName": "Slide",
          "categorySlug": "slide"
        },
        "agent": "Designer",
        "layer": "slide",
        "agents": [
          "Designer"
        ],
        "matchId": "4d543548-329e-40cd-a782-6f7a1ca3c100",
        "evidence": "Scatter plot showing user join times with numbered burst events",
        "pageRefs": null,
        "priority": null,
        "whenToUse": null,
        "confidence": 0.6,
        "extraction": {
          "at": "2026-07-16 22:58:45.553973+00",
          "model": "or:meta-llama/llama-4-scout",
          "runId": null,
          "seconds": null,
          "promptVersion": null
        },
        "pageNumber": 8,
        "whyItWorks": null,
        "antipattern": null,
        "cardinality": null,
        "narrativePurpose": null
      },
      {
        "tool": {
          "name": "Big Idea Formula",
          "slug": "big-idea-formula",
          "status": "active",
          "bestFor": "Any narrative-driven persuasive deck whose job is to move the audience: keynotes, fundraising pitches, capital-allocation board asks, all-hands behaviour-change talks, conference talks meant to shift mental models. Use it before structuring; pair with Pyramid when the deck must also withstand line-by-line scrutiny.",
          "canonId": "019dd956-7dd1-74d7-9866-ffdef19ecfbf",
          "version": 1,
          "bodyDocId": "c30d7484-69e0-4e21-82cf-20fa0966869e",
          "description": "Nancy Duarte's articulation of how to frame a presentation's central message: the speaker's unique point of view plus what's at stake for the audience, expressed as one complete declarative sentence. The narrative-driven counterpart to Minto's analytical governing thought.",
          "familyLabel": null,
          "categoryName": "Block",
          "categorySlug": "block"
        },
        "agent": "Storyteller",
        "layer": "slide",
        "agents": [
          "Storyteller"
        ],
        "matchId": "4eea0852-e830-4bbc-b136-d1e5ecc70fbc",
        "evidence": "There is significant overlap among the various bot use patterns we observed.",
        "pageRefs": null,
        "priority": "Core",
        "whenToUse": "Any narrative-driven persuasive deck whose job is to move the audience: keynotes, fundraising pitches, capital-allocation board asks, all-hands behaviour-change talks, conference talks meant to shift mental models. Use it before structuring; pair with Pyramid when the deck must also withstand line-by-line scrutiny.",
        "confidence": 0.5,
        "extraction": {
          "at": "2026-07-16 22:58:45.637446+00",
          "model": "or:meta-llama/llama-4-scout",
          "runId": null,
          "seconds": null,
          "promptVersion": null
        },
        "pageNumber": 9,
        "whyItWorks": "Solves the topic-not-thesis trap and the stake-less recommendation trap simultaneously. A single declarative sentence with a verb forces the speaker's stance into the room; routing the consequence through the word 'you' translates internal urgency into the audience's currency. The result is short enough to be repeated after the meeting — and that repetition is the persuasion mechanism.",
        "antipattern": "A topic dressed as a thesis ('Sustainability Roadmap 2026'), a stake attached to the speaker rather than the audience, two ideas spliced with 'and', abstract verbs (leverage / unlock / empower) that survive deletion, or writing the Big Idea after the deck is already built so the slides don't actually defend it.",
        "cardinality": null,
        "narrativePurpose": "Forces the deck to commit to a single declarative thesis before slide one — a sentence that names the speaker's stance and routes a consequence through the audience's currency. Acts as the filter every slide, anecdote, and chart must ladder up to."
      },
      {
        "tool": {
          "name": "Before-After-Bridge",
          "slug": "before-after-bridge",
          "status": "active",
          "bestFor": null,
          "canonId": "019dd956-8604-7188-883f-42370288ad05",
          "version": 1,
          "bodyDocId": null,
          "description": "Narrative structure: Paint the before, show the after, explain the bridge",
          "familyLabel": null,
          "categoryName": "Block",
          "categorySlug": "block"
        },
        "agent": "Storyteller",
        "layer": "slide",
        "agents": [
          "Storyteller"
        ],
        "matchId": "cd522e05-9b82-454f-9a9b-d784d4858339",
        "evidence": "Totaling up the previous three categories, 73.2% are High Confidence bots. We think it is very likely that another 7.7% (4,143) are also bots, based on their “Early Joiner” behavior pattern.",
        "pageRefs": null,
        "priority": null,
        "whenToUse": null,
        "confidence": 0.7,
        "extraction": {
          "at": "2026-07-16 22:58:45.718034+00",
          "model": "or:meta-llama/llama-4-scout",
          "runId": null,
          "seconds": null,
          "promptVersion": null
        },
        "pageNumber": 10,
        "whyItWorks": null,
        "antipattern": null,
        "cardinality": null,
        "narrativePurpose": null
      },
      {
        "tool": {
          "name": "Analytical method",
          "slug": "analytical-method",
          "status": "active",
          "bestFor": null,
          "canonId": "b42c4911-7946-49b5-951c-5f3d23f4e2bd",
          "version": 1,
          "bodyDocId": null,
          "description": "Diagnostic / structuring methods (5-whys, fishbone, issue tree, hypothesis-driven).",
          "familyLabel": null,
          "categoryName": null,
          "categorySlug": null
        },
        "agent": null,
        "layer": "slide",
        "agents": null,
        "matchId": "aa8947f7-d680-4200-83c7-b4ec0a3f228d",
        "evidence": "Analyzing Gaotu100.com and Genshuixue.com required two different approaches.",
        "pageRefs": null,
        "priority": null,
        "whenToUse": null,
        "confidence": 0.6,
        "extraction": {
          "at": "2026-07-16 22:58:45.880458+00",
          "model": "or:meta-llama/llama-4-scout",
          "runId": null,
          "seconds": null,
          "promptVersion": null
        },
        "pageNumber": 13,
        "whyItWorks": null,
        "antipattern": null,
        "cardinality": "common",
        "narrativePurpose": null
      },
      {
        "tool": {
          "name": "Data-Ink Ratio",
          "slug": "data-ink-ratio",
          "status": "active",
          "bestFor": null,
          "canonId": "019dd956-afc8-70da-b378-92834d36fde6",
          "version": 1,
          "bodyDocId": null,
          "description": "Maximize data, minimize non-data ink - remove chartjunk and decoration",
          "familyLabel": null,
          "categoryName": "Slide",
          "categorySlug": "slide"
        },
        "agent": "Designer",
        "layer": "slide",
        "agents": [
          "Designer"
        ],
        "matchId": "a8a37cf7-fc03-465c-a3c3-792ef4fcf208",
        "evidence": "Distribution of GSX Users by Type: Teachers (Type 1), Tutors (Type 2), Students (Type 0) with counts and percentages.",
        "pageRefs": null,
        "priority": "Core",
        "whenToUse": null,
        "confidence": 0.5,
        "extraction": {
          "at": "2026-07-16 22:58:45.962994+00",
          "model": "or:meta-llama/llama-4-scout",
          "runId": null,
          "seconds": null,
          "promptVersion": null
        },
        "pageNumber": 14,
        "whyItWorks": null,
        "antipattern": null,
        "cardinality": null,
        "narrativePurpose": null
      },
      {
        "tool": {
          "name": "Annotation",
          "slug": "annotation",
          "status": "active",
          "bestFor": null,
          "canonId": "019dd956-b5b9-7668-bf0e-3af99823ec5c",
          "version": 1,
          "bodyDocId": null,
          "description": "Adding explanatory labels to highlight key data points",
          "familyLabel": null,
          "categoryName": "Slide",
          "categorySlug": "slide"
        },
        "agent": "Designer",
        "layer": "slide",
        "agents": [
          "Designer"
        ],
        "matchId": "dfe17089-953a-46fe-a36d-859232ccc49e",
        "evidence": "Additional Collateral Shares means the class B ordinary shares in GSX Techedu Inc. (GSX) owned by the Company which are required from time to time to be subject to the Security created by the Deed pursuant to the",
        "pageRefs": null,
        "priority": null,
        "whenToUse": null,
        "confidence": 0.6,
        "extraction": {
          "at": "2026-07-16 22:58:46.043356+00",
          "model": "or:meta-llama/llama-4-scout",
          "runId": null,
          "seconds": null,
          "promptVersion": null
        },
        "pageNumber": 15,
        "whyItWorks": null,
        "antipattern": null,
        "cardinality": null,
        "narrativePurpose": null
      },
      {
        "tool": {
          "name": "Annotation",
          "slug": "annotation",
          "status": "active",
          "bestFor": null,
          "canonId": "019dd956-b5b9-7668-bf0e-3af99823ec5c",
          "version": 1,
          "bodyDocId": null,
          "description": "Adding explanatory labels to highlight key data points",
          "familyLabel": null,
          "categoryName": "Slide",
          "categorySlug": "slide"
        },
        "agent": "Designer",
        "layer": "slide",
        "agents": [
          "Designer"
        ],
        "matchId": "8b87f4fe-4add-4e3f-af27-e9856180a6bd",
        "evidence": "Short description of the property charged: The Company as legal and beneficial owner mortgaged in favour of the Mortgagee...",
        "pageRefs": null,
        "priority": null,
        "whenToUse": null,
        "confidence": 0.6,
        "extraction": {
          "at": "2026-07-16 22:58:46.121892+00",
          "model": "or:meta-llama/llama-4-scout",
          "runId": null,
          "seconds": null,
          "promptVersion": null
        },
        "pageNumber": 16,
        "whyItWorks": null,
        "antipattern": null,
        "cardinality": null,
        "narrativePurpose": null
      }
    ],
    "frameworks": [
      {
        "matchId": "c8936a8b-6f73-4007-8b95-18564abbc8ac",
        "evidence": "The slide systematically details the methodology for identifying bot patterns and links them to financial fraud.",
        "framework": null,
        "confidence": 0.9,
        "extraction": {
          "at": "2026-05-02 20:48:44.013+00",
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "seconds": null,
          "promptVersion": null
        },
        "pageNumber": 3,
        "frameworkName": "fraud-exposure"
      },
      {
        "matchId": "da2c3cc0-3151-44cf-8450-c3a36b163e02",
        "evidence": "The text explicitly describes a mechanism for inflating revenue through fake accounts and ad spend recycling.",
        "framework": null,
        "confidence": 0.9,
        "extraction": {
          "at": "2026-05-02 20:48:46.138+00",
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "seconds": null,
          "promptVersion": null
        },
        "pageNumber": 12,
        "frameworkName": "fraud-exposure"
      }
    ],
    "patterns": []
  },
  "storymakers": null,
  "score": null,
  "review": null,
  "activistThesis": {
    "tone": "adversarial",
    "notes": "Classic Muddy Waters Word-document-style short report (not a slide deck). Cover page (p.2) opens with 'Rise of the Machines' headline and a bot-prevalence pie chart, followed by SCQA-style bullet thesis on pp.2-3. Distinctive evidentiary moves: (1) forensic analysis of GSX's own data files (not scraped), (2) bilingual transcript of a former-manager interview describing 'group robot' rooms (pp.11-12), and (3) a BVI registry filing screenshot evidencing Chen's $319M share pledge to Credit Suisse (p.15). Quotes Chen's pre-publication taunt ('there is a high probability that I think Muddy Waters will not be so stupid') and explicitly 'calls the bluff'. No price target — fraud thesis implies ~100% downside. Appendices 1 and 2 detail the data-extraction methodology (Chrome DevTools, HTTP proxy on iPhone) and teacher/tutor/student type identification.",
    "kpisCited": [
      {
        "detail": "73.2% of 54,065 unique users in 200+ paid K-12 classes flagged as bots",
        "metric": "Bot prevalence (high confidence)"
      },
      {
        "detail": "~80.8% including 'Early Joiners'; ~90% under less company-favorable assumptions",
        "metric": "Bot prevalence (likely)"
      },
      {
        "detail": "52.8% of users are Precise Joiners or linked to them; 5,742 unique PJs (10.6%)",
        "metric": "Precise Joiner share"
      },
      {
        "detail": "463,217 sign-on records across 54,065 unique users in over 200 paid K-12 classes (Jan-Mar 2020)",
        "metric": "Sample size"
      },
      {
        "detail": "29 teachers (Type 1), 371 tutors (Type 2), 53,694 students (Type 0)",
        "metric": "User type distribution"
      },
      {
        "detail": "6,000,000 Class B shares (~9,000,000 ADSs) pledged 30 March 2020 at Credit Suisse, ~$319M market value",
        "metric": "Chairman Chen share pledge"
      },
      {
        "detail": "Outside bot-network operators paid ~2-5% of would-be revenue to round-trip fake purchases",
        "metric": "Bot-vendor commission"
      },
      {
        "detail": "Price $35.43, market cap $8.5bn, float 24.9%, 30-day ADV $194.6M",
        "metric": "Stock metrics at publication"
      }
    ],
    "closingAsk": null,
    "extraction": {
      "at": "2026-04-22 19:44:53+00",
      "model": "unknown-legacy",
      "runId": null,
      "seconds": 117.69786,
      "promptVersion": null
    },
    "scqaReward": "If revenue tied to fake users is fraudulent, GSX is 'an almost completely empty box' implying near-total loss for long holders, with Chairman Chen's $319M margin-pledged stock amplifying forced-selling downside.",
    "thesisTypes": [
      "fraud_exposure"
    ],
    "top3Reasons": [
      "At least 73% of GSX's paid K-12 users are bots, likely 80%+",
      "Former GSX manager confirms 'group robot' rooms controlling 10,000+ devices",
      "Chairman Chen's $319M pledged stock at Credit Suisse adds margin-call crash risk"
    ],
    "scqaSituation": "GSX Techedu is a NYSE-listed Chinese online K-12 tutoring platform with an $8.5bn market cap, a 24.9% float, and a post-IPO record of explosive reported user growth and unusual profitability for the sector.",
    "thesisSummary": "Muddy Waters argues GSX Techedu is a 'near-total fraud' built on industrial-scale user fabrication. Using GSX's own attendance and sign-on records — 463,217 logins from 54,065 unique users across more than 200 paid K-12 classes — analysts identified three bot patterns ('Precise Joiners', 'GSX IP Joiners', 'Burst Joiners') showing that at least 73.2% of users are bots, rising to ~80.8% when 'Early Joiners' are included and ~90% under less company-favorable assumptions. A former GSX manager corroborated the analysis, describing in-house 'group robot' rooms that control 10,000+ devices and outside bot-network vendors paid 2-5% commissions to round-trip fake purchases. Because revenue depends on these bots, GSX is 'an almost completely empty box'. Chairman Larry Xiangdong Chen has pledged 6 million Class B shares (~$319 million) at Credit Suisse, creating margin-call risk that could accelerate the collapse.",
    "primaryDemands": [
      "Treat GSX as a near-total fraud and exit long positions",
      "Recognize that reported revenue is largely fabricated via bot users"
    ],
    "scqaResolution": "Muddy Waters discloses a short position and publishes the dataset, methodology and a former-manager interview, urging the market to treat GSX as a near-total fraud and discount its reported revenue accordingly.",
    "thesisOneLiner": "GSX Techedu is a near-total fraud: at least 73% — likely 80%+ — of paid K-12 users are bots, and Chairman Chen's $319M pledged stock heightens crash risk.",
    "precedentsCited": [],
    "scqaComplication": "Forensic analysis of 463,217 sign-on records and a former manager's testimony show that 73-90% of paid users are bots controlled by GSX's own 'group robot' rooms and outside vendors round-tripping cash through ad placements.",
    "narrativeInterest": 4,
    "notableSlidePages": [
      2,
      3,
      5,
      11,
      14
    ],
    "peerCompaniesCited": [],
    "valuationFrameworks": [
      "not_shown"
    ],
    "visualCraftInterest": 2
  },
  "pitchdeck": {
    "metadata": null,
    "profile": null
  },
  "slides": [
    {
      "page": 1,
      "type": "setup",
      "title": "Page 1 of 25",
      "function": "other",
      "imagePath": "https://imgproxy.kitesheet.com/1X1N0x5zQJARgaT7TaE7XunZsqYqPyn2YuZ-xAjDM5o/rs:fit:1200:1200:0/q:82/f:webp/czM6Ly9raXRlc2hlZXQvY29ycHVzL3NsaWRlcy9lMTE2ZWQxOWNhNTIvcDAwMS5qcGc",
      "rawType": "disclaimer",
      "block": null,
      "metadata": {
        "slideType": "disclaimer",
        "slideTypeCanon": {
          "name": "Disclaimer",
          "slug": "disclaimer",
          "status": "active",
          "canonId": "019de52d-0801-727b-b98a-5ed095aeee78",
          "version": 1,
          "description": null
        },
        "function": "other",
        "functionCanon": {
          "name": "Other (fallback)",
          "slug": "other",
          "status": "active",
          "canonId": "019de52d-15e1-75bc-99dc-07732380e2ce",
          "version": 1,
          "description": null
        },
        "density": "sparse",
        "densityScore": 10,
        "componentCount": 3,
        "textChars": 345,
        "nDataPoints": 0,
        "notes": "Page 1 of 25",
        "elementsJson": [
          "paragraph"
        ],
        "confidence": 1,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:42.021+00",
          "seconds": 2.145,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/1",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-1",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": {
            "h": 0.05,
            "w": 0.9,
            "x": 0.05,
            "y": 0.11
          },
          "kind": "disclaimer",
          "text": "These Terms of Use govern current reports published by Muddy Waters Research and supersede any prior Terms of Use for older reports of Muddy Waters Research, which you may download from the Muddy Waters Research's website.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Disclaimer",
              "slug": "disclaimer",
              "status": "active",
              "canonId": "91173477-d91f-4024-bbaf-d4f93e3f82dc",
              "version": 1,
              "description": "Legal/cautionary text that occupies most of the body of its slide."
            },
            "tool": null,
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:42.021+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "b3600f12-8c8f-46d0-9ef3-25112d6bf332",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.75,
            "w": 0.9,
            "x": 0.05,
            "y": 0.17
          },
          "kind": "paragraph",
          "text": "The reports on this website have been prepared by Muddy Waters Capital LLC... [full legal text follows]",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:42.021+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "f061a78b-0b07-4b68-8c75-47b706a48f85",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.05,
            "w": 0.2,
            "x": 0.05,
            "y": 0.05
          },
          "kind": "title",
          "text": "Muddy Waters Capital",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:42.021+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "80a037fe-bf99-4b85-a301-1e11cedbfc56",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [],
      "frameworks": [],
      "arcBeats": [],
      "loops": [],
      "thumbSrc": "https://imgproxy.kitesheet.com/B7NTNDIuNURiub6ULB6zQjsixozIKZbCgYlRz1nGlFI/rs:fit:480:480:0/q:78/f:webp/czM6Ly9raXRlc2hlZXQvY29ycHVzL3NsaWRlcy9lMTE2ZWQxOWNhNTIvcDAwMS5qcGc",
      "imagePathAlt": "https://imgproxy.kitesheet.com/JhJylVGe73J7A7UuUm87TdIuvFYhjNmJdaOrGJBts6w/rs:fit:1200:1200:0/q:82/f:webp/czM6Ly9raXRlc2hlZXQvY29ycHVzL3NsaWRlcy9lMTE2ZWQxOWNhNTIvcDAwMS5wbmc",
      "thumbSrcAlt": "https://imgproxy.kitesheet.com/_OR3exF6VgAmjuZdSaCAhU2wEez-N4IBCmWDBqW4uws/rs:fit:480:480:0/q:78/f:webp/czM6Ly9raXRlc2hlZXQvY29ycHVzL3NsaWRlcy9lMTE2ZWQxOWNhNTIvcDAwMS5wbmc"
    },
    {
      "page": 2,
      "type": "analysis",
      "title": "The slide uses a pie chart to visualize the alleged bot prevalence, supporting a short thesis.",
      "function": "diagnose_problem",
      "rawType": "executive_summary",
      "block": null,
      "metadata": {
        "slideType": "executive_summary",
        "slideTypeCanon": {
          "name": "Executive summary",
          "slug": "executive_summary",
          "status": "active",
          "canonId": "019de52d-06be-73ff-81b3-f99fe7f0025e",
          "version": 1,
          "description": null
        },
        "function": "diagnose_problem",
        "functionCanon": {
          "name": "Diagnose problem",
          "slug": "diagnose_problem",
          "status": "active",
          "canonId": "019de52d-176d-761f-b608-cf52262d2ab2",
          "version": 1,
          "description": null
        },
        "density": "balanced",
        "densityScore": 38,
        "componentCount": 6,
        "textChars": 760,
        "nDataPoints": 7,
        "notes": "The slide uses a pie chart to visualize the alleged bot prevalence, supporting a short thesis.",
        "elementsJson": [
          "data_table",
          "headline_text",
          "pie_chart",
          "bullet_list"
        ],
        "confidence": 1,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:43.34+00",
          "seconds": 2.947,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/2",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-2",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "We are short GSX because we conclude that it is a near-total fraud.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d2-67179562a6f1",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.23,
            "w": 0.46,
            "x": 0.27,
            "y": 0.39
          },
          "kind": "chart",
          "text": "GSX Bot Prevalence: High Confidence Bots (73.2%), Highly Likely Bots (7.6%), Somewhat Real (19.2%)",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Chart",
              "slug": "chart",
              "status": "active",
              "canonId": "019de52c-f9a0-76ef-adc6-0b859109d1f8",
              "version": 1,
              "description": "Quantitative chart."
            },
            "tool": null,
            "subkind": {
              "name": "Pie chart",
              "slug": "pie",
              "status": "active",
              "canonId": "019de52c-ffdb-71bb-a800-5c5ab9f1c373",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "pie",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:43.34+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "6b766e2d-5a93-41c8-89c8-e61febdacdc9",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.25,
            "w": 0.75,
            "x": 0.14,
            "y": 0.68
          },
          "kind": "list",
          "text": "We are short GSX because we conclude that it is a near-total fraud. We conclude that at least ~70% of its users are fake, and we think it’s quite likely that at least ~80% of its users are fake. Our conclusions are based on GSX's own user and attendance data files. In addition, a former GSX manager corroborated our analysis.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "List",
              "slug": "list",
              "status": "active",
              "canonId": "019de52c-f94b-779b-a53b-fd4904a5f4d2",
              "version": 1,
              "description": "Bullet or numbered list."
            },
            "tool": null,
            "subkind": {
              "name": "Bullet list",
              "slug": "bullet",
              "status": "active",
              "canonId": "019de52c-fc98-7169-a083-5cab805076ca",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "bullet",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:43.34+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "24302fc8-e5a9-48fe-8117-128ce7858fb7",
          "parentComponentId": null
        },
        {
          "bbox": null,
          "kind": "metric",
          "text": "bot prevalence: 73.2%",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Metric",
              "slug": "metric",
              "status": "active",
              "canonId": "019de52c-f923-73bf-8081-d0b1a8c5264d",
              "version": 1,
              "description": "Big-number or KPI value."
            },
            "tool": {
              "name": "Quantification",
              "slug": "quantification",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-47ab-72ce-a079-aab1f5299e88",
              "version": 1,
              "bodyDocId": null,
              "description": "Translating a claim into numbers, charts, or tables.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": "primary",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d2-688e554a2369",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.19,
            "w": 0.88,
            "x": 0.11,
            "y": 0.09
          },
          "kind": "table",
          "text": "Report Date: May 18, 2020; Company: GSX Techedu Inc.; Ticker: GSX US; Industry: Fraud (nominally education); Stock Price: $35.43; Market Cap: $8.5 billion; Float: 24.9%; Average Daily Volume (30-day): $194.6 million",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Table",
              "slug": "table",
              "status": "active",
              "canonId": "019de52c-f9c8-7148-8119-eaac9594cd28",
              "version": 1,
              "description": "Tabular data layout."
            },
            "tool": null,
            "subkind": {
              "name": "Data table",
              "slug": "data",
              "status": "active",
              "canonId": "019de52d-02d5-75b8-8abf-88e92bf63569",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "data",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:43.34+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "3a020a56-ab87-47f1-afea-78413c4db9fa",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.03,
            "w": 0.32,
            "x": 0.34,
            "y": 0.32
          },
          "kind": "title",
          "text": "GSX Techedu: Rise of the Machines",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:43.34+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "f950e927-796d-42a8-b1c9-23fb11ddb249",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 4,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 2,
          "name": "Problem (Identify pain)",
          "beatId": "ef65fdda-b53a-47e7-ad02-b40a1fc3e851",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Problem (Identify pain)",
            "slug": "problem-agitate-solution-problem-identify-pain",
            "status": "active",
            "canonId": "019dd9b8-0e78-74bb-b8f6-54348367a131",
            "version": 1,
            "description": null
          },
          "evidence": "The document highlights the issue of bot activity on GSX Techedu's platform",
          "position": 0,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Complication",
            "slug": "complication",
            "status": "active",
            "canonId": "019dd9b8-0275-7709-b2d6-4f77c3fc7579",
            "version": 1,
            "description": "The point in the narrative where the audience should feel discomfort. Required for argumentative arcs."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 3,
      "type": "tension",
      "title": "The slide functions as a short-seller research note exposing alleged fraud.",
      "function": "expose_contradiction",
      "rawType": "expose_contradiction",
      "block": null,
      "metadata": {
        "slideType": "expose_contradiction",
        "slideTypeCanon": {
          "name": "Expose contradiction",
          "slug": "expose_contradiction",
          "status": "active",
          "canonId": "019de52d-124c-75aa-984a-0a3d0d8fc8df",
          "version": 1,
          "description": null
        },
        "function": "expose_contradiction",
        "functionCanon": {
          "name": "Expose contradiction",
          "slug": "expose_contradiction",
          "status": "active",
          "canonId": "019de52d-171f-776f-887c-73edaff4cf9c",
          "version": 1,
          "description": null
        },
        "density": "overcrowded",
        "densityScore": 75,
        "componentCount": 9,
        "textChars": 1418,
        "nDataPoints": 6,
        "notes": "The slide functions as a short-seller research note exposing alleged fraud.",
        "elementsJson": [
          "bullet_list",
          "paragraph",
          "quote_block",
          "footnote"
        ],
        "confidence": 1,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:44.013+00",
          "seconds": 3.503,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/3",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-3",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "We are highly confident that at least 73.2% of the 54,065 users in the analyzed classes are bots.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d2-0aef173108d5",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.25,
            "w": 0.72,
            "x": 0.14,
            "y": 0.09
          },
          "kind": "list",
          "text": "Based on the near total faking of users, we assume that the fraudulent portion of GSX’s revenue is at least equal to the percentage of fraudulent users... We conclude that GSX is a massive loss-making business... Chairman Chen has pledged at least $318 million of stock.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "List",
              "slug": "list",
              "status": "active",
              "canonId": "019de52c-f94b-779b-a53b-fd4904a5f4d2",
              "version": 1,
              "description": "Bullet or numbered list."
            },
            "tool": null,
            "subkind": {
              "name": "Bullet list",
              "slug": "bullet",
              "status": "active",
              "canonId": "019de52c-fc98-7169-a083-5cab805076ca",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "bullet",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.013+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "9a189623-7d2b-47ee-846c-ed08164859da",
          "parentComponentId": null
        },
        {
          "bbox": null,
          "kind": "metric",
          "text": "bot ratio: 73.2%",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Metric",
              "slug": "metric",
              "status": "active",
              "canonId": "019de52c-f923-73bf-8081-d0b1a8c5264d",
              "version": 1,
              "description": "Big-number or KPI value."
            },
            "tool": {
              "name": "Quantification",
              "slug": "quantification",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-47ab-72ce-a079-aab1f5299e88",
              "version": 1,
              "bodyDocId": null,
              "description": "Translating a claim into numbers, charts, or tables.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": "primary",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d2-11b2dbe5b615",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.11,
            "w": 0.78,
            "x": 0.11,
            "y": 0.67
          },
          "kind": "paragraph",
          "text": "We analyzed 463,217 sign-on records for 54,065 Genshuixue and Gaotu users across more than 200 paid K-12 classes in the first half of 2020. We identified three bot patterns that we are highly confident accounted for 73.2% of the unique users in our study.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.013+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "d4c3979e-995e-4e90-97a2-c409c00bb4c7",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.11,
            "w": 0.78,
            "x": 0.11,
            "y": 0.35
          },
          "kind": "paragraph",
          "text": "We are highly confident that at least 73.2% of the 54,065 users in the analyzed classes are bots. We identified these bots through patterns we call “Precise Joiners”, “GSX IP Joiners”, and “Burst Joiners”.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.013+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "d7e3b54d-4cdc-46c3-a4a9-330e6fa2e3f1",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.08,
            "w": 0.66,
            "x": 0.17,
            "y": 0.51
          },
          "kind": "quote",
          "text": "I think if Muddy Waters analyzes our data seriously, there is a high probability that I think Muddy Waters will not be so stupid. The level and IQ of the people in Muddy Waters is quite high.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Quote",
              "slug": "quote",
              "status": "active",
              "canonId": "019de52c-f8fb-751e-8bc6-d58e2d59562a",
              "version": 1,
              "description": "Pull quote or testimonial."
            },
            "tool": null,
            "subkind": {
              "name": "Pull quote",
              "slug": "pull-quote",
              "status": "active",
              "canonId": "019de52c-fbf9-76fe-97e1-a0b7540445c9",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "pull-quote",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.013+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "dec3af36-7ea3-4511-b223-483f19f33d93",
          "parentComponentId": null
        },
        {
          "bbox": null,
          "kind": "quote",
          "text": "“I think if Muddy Waters analyzes our data seriously, there is a high probability that I think Muddy Waters will not be so stupid. The level and IQ of the people in Muddy Waters is quite high.” — Chairman Chen",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Quote",
              "slug": "quote",
              "status": "active",
              "canonId": "019de52c-f8fb-751e-8bc6-d58e2d59562a",
              "version": 1,
              "description": "Pull quote or testimonial."
            },
            "tool": {
              "name": "Authority citation",
              "slug": "authority-citation",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-49ae-7557-89ad-3fca70469b45",
              "version": 1,
              "bodyDocId": null,
              "description": "Quoting an authority figure, study, or precedent to lend weight.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d2-0d589a787241",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.04,
            "w": 0.78,
            "x": 0.11,
            "y": 0.87
          },
          "kind": "source-note",
          "text": "https://finance.sina.cn/stock/relnews/us/2020-04-10/detail-iircuyvh6962383.d.html?from=wap, “我觉得浑水他是认真的分析我们的数据的，大概率我觉得浑水不会那么愚蠢，浑水那帮人的水平和智商还是蛮高的。”",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Source note",
              "slug": "source-note",
              "status": "active",
              "canonId": "23484952-494b-4a5e-b1ad-550d0d70e948",
              "version": 1,
              "description": "Attribution / source / caveat placed at the slide footer. Numbered footnotes use attrs.numbered."
            },
            "tool": null,
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.013+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "8c2471b9-ddc4-4b34-968a-23bccfe99d9b",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.03,
            "w": 0.35,
            "x": 0.11,
            "y": 0.63
          },
          "kind": "title",
          "text": "Bot Hunting and Identification",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.013+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "7fcdc775-65d1-4cad-94a1-c74a1bc7714f",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [],
      "frameworks": [
        {
          "matchId": "c8936a8b-6f73-4007-8b95-18564abbc8ac",
          "evidence": "The slide systematically details the methodology for identifying bot patterns and links them to financial fraud.",
          "framework": null,
          "confidence": 0.9,
          "extraction": {
            "at": "2026-05-02 20:48:44.013+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "pageNumber": 3,
          "frameworkName": "fraud-exposure"
        }
      ],
      "arcBeats": [
        {
          "to": 4,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 2,
          "name": "Problem (Identify pain)",
          "beatId": "ef65fdda-b53a-47e7-ad02-b40a1fc3e851",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Problem (Identify pain)",
            "slug": "problem-agitate-solution-problem-identify-pain",
            "status": "active",
            "canonId": "019dd9b8-0e78-74bb-b8f6-54348367a131",
            "version": 1,
            "description": null
          },
          "evidence": "The document highlights the issue of bot activity on GSX Techedu's platform",
          "position": 0,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Complication",
            "slug": "complication",
            "status": "active",
            "canonId": "019dd9b8-0275-7709-b2d6-4f77c3fc7579",
            "version": 1,
            "description": "The point in the narrative where the audience should feel discomfort. Required for argumentative arcs."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 4,
      "type": "appendix",
      "title": "The slide serves as a transition or supporting text page, referencing an appendix and introducing a classification of bot behaviors.",
      "function": "diagnose_problem",
      "rawType": "other",
      "block": null,
      "metadata": {
        "slideType": "other",
        "slideTypeCanon": {
          "name": "Other (fallback)",
          "slug": "other",
          "status": "active",
          "canonId": "019de52d-0af5-71ed-83de-d51ae245fc43",
          "version": 1,
          "description": null
        },
        "function": "diagnose_problem",
        "functionCanon": {
          "name": "Diagnose problem",
          "slug": "diagnose_problem",
          "status": "active",
          "canonId": "019de52d-176d-761f-b608-cf52262d2ab2",
          "version": 1,
          "description": null
        },
        "density": "sparse",
        "densityScore": 21,
        "componentCount": 4,
        "textChars": 729,
        "nDataPoints": 0,
        "notes": "The slide serves as a transition or supporting text page, referencing an appendix and introducing a classification of bot behaviors.",
        "elementsJson": [
          "paragraph",
          "footnote"
        ],
        "confidence": 0.9,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:46.599+00",
          "seconds": 5.834,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/4",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-4",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "There are four patterns of user joining that we believe show the user is actually a bot.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d1-f758bd69e96d",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.056,
            "w": 0.764,
            "x": 0.118,
            "y": 0.163
          },
          "kind": "paragraph",
          "text": "There are four patterns of user joining that we believe show the user is actually a bot. A former GSX manager corroborated our observations and provided further detail on how GSX carries out its user fraud. We term these four patterns of bot users: Precise Joiners, Burst Joiners, GSX IP Joiners, and Early Joiners.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.599+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "0638c94a-ce68-4a6c-a270-6a4256312a97",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.042,
            "w": 0.764,
            "x": 0.118,
            "y": 0.094
          },
          "kind": "paragraph",
          "text": "The records are available to any paying student and can be legally accessed through Google Chrome, an iPhone, and a proxy server. We provide detailed instructions on how to access these records in Appendix 1.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.599+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "78776ff8-05f9-4f37-afad-73a6c6f80748",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.028,
            "w": 0.764,
            "x": 0.118,
            "y": 0.881
          },
          "kind": "source-note",
          "text": "The archives are in a zip file. The file format is GZIP-compressed TAR archive (.tar.gz) otherwise known as a tarball.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Source note",
              "slug": "source-note",
              "status": "active",
              "canonId": "23484952-494b-4a5e-b1ad-550d0d70e948",
              "version": 1,
              "description": "Attribution / source / caveat placed at the slide footer. Numbered footnotes use attrs.numbered."
            },
            "tool": null,
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.599+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "3f6e9959-2880-4b40-ab40-426cb8525191",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 4,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 2,
          "name": "Problem (Identify pain)",
          "beatId": "ef65fdda-b53a-47e7-ad02-b40a1fc3e851",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Problem (Identify pain)",
            "slug": "problem-agitate-solution-problem-identify-pain",
            "status": "active",
            "canonId": "019dd9b8-0e78-74bb-b8f6-54348367a131",
            "version": 1,
            "description": null
          },
          "evidence": "The document highlights the issue of bot activity on GSX Techedu's platform",
          "position": 0,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Complication",
            "slug": "complication",
            "status": "active",
            "canonId": "019dd9b8-0275-7709-b2d6-4f77c3fc7579",
            "version": 1,
            "description": "The point in the narrative where the audience should feel discomfort. Required for argumentative arcs."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 5,
      "type": "resolution",
      "title": "The slide defines 'Precise Joiners' as users joining at the exact same second on the same day of different weeks.",
      "function": "analyze_data",
      "rawType": "key_takeaways",
      "block": null,
      "metadata": {
        "slideType": "key_takeaways",
        "slideTypeCanon": {
          "name": "Key takeaways",
          "slug": "key_takeaways",
          "status": "active",
          "canonId": "019de52d-06e7-7674-a891-9f7de3b11b6d",
          "version": 1,
          "description": null
        },
        "function": "analyze_data",
        "functionCanon": {
          "name": "Analyze data",
          "slug": "analyze_data",
          "status": "active",
          "canonId": "019de52d-1590-7413-8c82-cc218cff40b4",
          "version": 1,
          "description": null
        },
        "density": "dense",
        "densityScore": 62,
        "componentCount": 7,
        "textChars": 1611,
        "nDataPoints": 5,
        "notes": "The slide defines 'Precise Joiners' as users joining at the exact same second on the same day of different weeks.",
        "elementsJson": [
          "headline_text",
          "paragraph",
          "pie_chart"
        ],
        "confidence": 1,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:44.603+00",
          "seconds": 3.817,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/5",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-5",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "Over half (52.8%) of the unique users in our sample were identified as bots because they are “Precise Joiners” or are linked to them.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:18+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d1-b3d8f5c5c6bf",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.245,
            "w": 0.436,
            "x": 0.282,
            "y": 0.405
          },
          "kind": "chart",
          "text": "Precise Joiner Bots (% of 54,065 Unique Users)",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Chart",
              "slug": "chart",
              "status": "active",
              "canonId": "019de52c-f9a0-76ef-adc6-0b859109d1f8",
              "version": 1,
              "description": "Quantitative chart."
            },
            "tool": null,
            "subkind": {
              "name": "Pie chart",
              "slug": "pie",
              "status": "active",
              "canonId": "019de52c-ffdb-71bb-a800-5c5ab9f1c373",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "pie",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.603+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "80c634df-b62a-48fc-95c6-e8b1595ccf97",
          "parentComponentId": null
        },
        {
          "bbox": null,
          "kind": "metric",
          "text": "bot percentage: 52.8%",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Metric",
              "slug": "metric",
              "status": "active",
              "canonId": "019de52c-f923-73bf-8081-d0b1a8c5264d",
              "version": 1,
              "description": "Big-number or KPI value."
            },
            "tool": {
              "name": "Quantification",
              "slug": "quantification",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-47ab-72ce-a079-aab1f5299e88",
              "version": 1,
              "bodyDocId": null,
              "description": "Translating a claim into numbers, charts, or tables.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": "primary",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:18+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d1-b52b93998a10",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.165,
            "w": 0.764,
            "x": 0.118,
            "y": 0.135
          },
          "kind": "paragraph",
          "text": "Over half (52.8%) of the unique users in our sample were identified as bots because they are “Precise Joiners” or are linked to them. Precise Joiners are users who join a class at same time – to the second – on the same day of at least two different weeks, and the users linked to them. We contend that the probability of such a precise login happening two or more times for single user in a single course is extremely low. In addition to variability on a (human) user’s side in terms of when he logs in, there are moment-to-moment differences in the way internet traffic and data within GSX’s own network is flowing that make logging in at the precise second one or more weeks apart almost impossible. To us, that is similar to a weekly flight from City A to City B touching down two or more times at exactly the same second.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.603+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "1388a74f-64f4-4bbd-8625-608d47eec931",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.045,
            "w": 0.764,
            "x": 0.118,
            "y": 0.681
          },
          "kind": "paragraph",
          "text": "While most Precise Joiners recorded only one precise join (two different occasions with log-ins at the same second), our data found 1,261 (21.6%) of the unique Precise Joiners performed this feat on two or more occasions, and one Precise Joiner recorded nine Precise Joins.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.603+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "dd0c2911-6612-4a30-ac66-655bbc9be97f",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.055,
            "w": 0.764,
            "x": 0.118,
            "y": 0.303
          },
          "kind": "paragraph",
          "text": "Within the data of the 54,065 unique users analyzed we found 5,742 users (10.6%) whose logins record this precise joining phenomenon. Note also that 100% of these Precise Joiners exhibited at least one of the other bot behaviors we discuss, which resoundingly validates this method of bot hunting.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.603+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "ec376b64-9a8e-4f62-bf25-287f0201884e",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.021,
            "w": 0.165,
            "x": 0.118,
            "y": 0.093
          },
          "kind": "title",
          "text": "Precise Joiners",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.603+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "e48e7458-4478-4e52-bf78-38971304f9a4",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [
        {
          "tool": {
            "name": "Audience Definition",
            "slug": "audience-definition",
            "status": "active",
            "bestFor": null,
            "canonId": "019dd956-7f2a-775d-aeee-ff099bcb7756",
            "version": 1,
            "bodyDocId": null,
            "description": "Six key questions: Who are they? What do they know? What do they believe? What do they care about? What do they fear? What decisions can they make?",
            "familyLabel": null,
            "categoryName": "Block",
            "categorySlug": "block"
          },
          "agent": "Storyteller",
          "layer": "slide",
          "agents": [
            "Storyteller"
          ],
          "matchId": "6d228d94-a329-428c-bf1d-f4e4e4608db1",
          "evidence": "Over half (52.8%) of the unique users in our sample were identified as bots because they are “Precise Joiners” or are linked to them.",
          "pageRefs": null,
          "priority": "Core",
          "whenToUse": null,
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 22:58:45.312153+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "pageNumber": 5,
          "whyItWorks": null,
          "antipattern": null,
          "cardinality": null,
          "narrativePurpose": null
        },
        {
          "tool": {
            "name": "Data Story Arc",
            "slug": "data-story-arc",
            "status": "active",
            "bestFor": null,
            "canonId": "019dd956-9c30-728e-b974-d3fb123dcf5a",
            "version": 1,
            "bodyDocId": null,
            "description": "Context → Conflict → Insight → Implication structure for data narratives",
            "familyLabel": null,
            "categoryName": "Loop",
            "categorySlug": "loop"
          },
          "agent": "Storyteller",
          "layer": "slide",
          "agents": [
            "Storyteller"
          ],
          "matchId": "c5e592e2-c41a-4a42-8395-071893c4a094",
          "evidence": "Over half (52.8%) of the unique users in our sample were identified as bots because they are “Precise Joiners” or are linked to them.",
          "pageRefs": null,
          "priority": "Core",
          "whenToUse": null,
          "confidence": 0.6,
          "extraction": {
            "at": "2026-07-16 22:58:45.353256+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "pageNumber": 5,
          "whyItWorks": null,
          "antipattern": null,
          "cardinality": null,
          "narrativePurpose": null
        }
      ],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 10,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 5,
          "name": "Agitate (Make it worse)",
          "beatId": "bfb25005-744d-4f56-a9bd-94aa58cefabc",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Agitate (Make it worse)",
            "slug": "problem-agitate-solution-agitate-make-it-worse",
            "status": "active",
            "canonId": "019dd9b8-0f5a-71dd-bae7-8fadb0d09456",
            "version": 1,
            "description": null
          },
          "evidence": "The document presents data on the frequency and impact of bot joiners",
          "position": 1,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Development",
            "slug": "development",
            "status": "active",
            "canonId": "019dd9b8-0332-7008-b3aa-11b0840a57b1",
            "version": 1,
            "description": "The middle stretch in arcs that have one. Often where length problems creep in."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 6,
      "type": "analysis",
      "title": "Includes a footnote regarding the definition of 'same moment' and a summary table of linked users.",
      "function": "analyze_data",
      "rawType": "appendix_data",
      "block": null,
      "metadata": {
        "slideType": "appendix_data",
        "slideTypeCanon": {
          "name": "Appendix data",
          "slug": "appendix_data",
          "status": "active",
          "canonId": "019de52d-078a-745b-9ee4-c15f2f539acd",
          "version": 1,
          "description": null
        },
        "function": "analyze_data",
        "functionCanon": {
          "name": "Analyze data",
          "slug": "analyze_data",
          "status": "active",
          "canonId": "019de52d-1590-7413-8c82-cc218cff40b4",
          "version": 1,
          "description": null
        },
        "density": "balanced",
        "densityScore": 48,
        "componentCount": 7,
        "textChars": 700,
        "nDataPoints": 120,
        "notes": "Includes a footnote regarding the definition of 'same moment' and a summary table of linked users.",
        "elementsJson": [
          "data_table",
          "paragraph",
          "footnote"
        ],
        "confidence": 1,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:47.035+00",
          "seconds": 6.235,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/6",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-6",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "After subtracting 10,342 duplicates, this resulted in 28,545 total users (52.8%) that we are highly confident are fake.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d2-29eb8aa70042",
          "parentComponentId": null
        },
        {
          "bbox": null,
          "kind": "metric",
          "text": "fake user percentage: 52.8%",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Metric",
              "slug": "metric",
              "status": "active",
              "canonId": "019de52c-f923-73bf-8081-d0b1a8c5264d",
              "version": 1,
              "description": "Big-number or KPI value."
            },
            "tool": {
              "name": "Quantification",
              "slug": "quantification",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-47ab-72ce-a079-aab1f5299e88",
              "version": 1,
              "bodyDocId": null,
              "description": "Translating a claim into numbers, charts, or tables.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": "primary",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d2-2e5efaf67db6",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.06,
            "w": 0.78,
            "x": 0.11,
            "y": 0.32
          },
          "kind": "paragraph",
          "text": "We then linked these Precise Joiners to 33,145 additional users who share the same distinct IP and users who joined classes at the exact same moment (often as part of large bursts). After subtracting 10,342 duplicates, this resulted in 28,545 total users (52.8%) that we are highly confident are fake.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:47.035+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "4a5d2970-2f98-4929-9ce1-71de9df3c813",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.03,
            "w": 0.78,
            "x": 0.11,
            "y": 0.89
          },
          "kind": "source-note",
          "text": "The same moment in time means at precisely the same second, same day, two or more different weeks.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Source note",
              "slug": "source-note",
              "status": "active",
              "canonId": "23484952-494b-4a5e-b1ad-550d0d70e948",
              "version": 1,
              "description": "Attribution / source / caveat placed at the slide footer. Numbered footnotes use attrs.numbered."
            },
            "tool": null,
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:47.035+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "8cb8d395-826e-4ef0-a3a6-1ba3d6dd3484",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.21,
            "w": 0.78,
            "x": 0.11,
            "y": 0.11
          },
          "kind": "table",
          "text": "Table showing frequency of joins across All Types, Students, and Tutors.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Table",
              "slug": "table",
              "status": "active",
              "canonId": "019de52c-f9c8-7148-8119-eaac9594cd28",
              "version": 1,
              "description": "Tabular data layout."
            },
            "tool": null,
            "subkind": {
              "name": "Data table",
              "slug": "data",
              "status": "active",
              "canonId": "019de52d-02d5-75b8-8abf-88e92bf63569",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "data",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:47.035+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "33bc6215-742e-4e05-a242-fafed3c21d14",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.12,
            "w": 0.78,
            "x": 0.11,
            "y": 0.41
          },
          "kind": "table",
          "text": "Sum of Student/Bot Precise Joiners & Linked Users",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Table",
              "slug": "table",
              "status": "active",
              "canonId": "019de52c-f9c8-7148-8119-eaac9594cd28",
              "version": 1,
              "description": "Tabular data layout."
            },
            "tool": null,
            "subkind": {
              "name": "Data table",
              "slug": "data",
              "status": "active",
              "canonId": "019de52d-02d5-75b8-8abf-88e92bf63569",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "data",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:47.035+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "3552721c-cdd4-4cef-adb8-425b4b74c4d9",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.02,
            "w": 0.4,
            "x": 0.3,
            "y": 0.09
          },
          "kind": "title",
          "text": "Frequency of Precise Joins by User",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:47.035+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "ea5a5be5-4992-44b0-b7cd-19b179a8ac56",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 10,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 5,
          "name": "Agitate (Make it worse)",
          "beatId": "bfb25005-744d-4f56-a9bd-94aa58cefabc",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Agitate (Make it worse)",
            "slug": "problem-agitate-solution-agitate-make-it-worse",
            "status": "active",
            "canonId": "019dd9b8-0f5a-71dd-bae7-8fadb0d09456",
            "version": 1,
            "description": null
          },
          "evidence": "The document presents data on the frequency and impact of bot joiners",
          "position": 1,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Development",
            "slug": "development",
            "status": "active",
            "canonId": "019dd9b8-0332-7008-b3aa-11b0840a57b1",
            "version": 1,
            "description": "The middle stretch in arcs that have one. Often where length problems creep in."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 7,
      "type": "analysis",
      "title": "The slide uses a pie chart to segment bot users and a table to detail the relationship between student users and teacher/tutor IPs.",
      "function": "analyze_data",
      "rawType": "appendix_data",
      "block": null,
      "metadata": {
        "slideType": "appendix_data",
        "slideTypeCanon": {
          "name": "Appendix data",
          "slug": "appendix_data",
          "status": "active",
          "canonId": "019de52d-078a-745b-9ee4-c15f2f539acd",
          "version": 1,
          "description": null
        },
        "function": "analyze_data",
        "functionCanon": {
          "name": "Analyze data",
          "slug": "analyze_data",
          "status": "active",
          "canonId": "019de52d-1590-7413-8c82-cc218cff40b4",
          "version": 1,
          "description": null
        },
        "density": "balanced",
        "densityScore": 44,
        "componentCount": 7,
        "textChars": 585,
        "nDataPoints": 24,
        "notes": "The slide uses a pie chart to segment bot users and a table to detail the relationship between student users and teacher/tutor IPs.",
        "elementsJson": [
          "headline_text",
          "paragraph",
          "pie_chart",
          "data_table",
          "footnote"
        ],
        "confidence": 1,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:44.462+00",
          "seconds": 3.45,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/7",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-7",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "Adding GSX IP Joiners brings the total percentage of High Confidence bot users to 34,534 users, or 63.9%.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d2-462a3348e450",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.25,
            "w": 0.45,
            "x": 0.275,
            "y": 0.348
          },
          "kind": "chart",
          "text": "GSX IP Bots (% of 54,065)",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Chart",
              "slug": "chart",
              "status": "active",
              "canonId": "019de52c-f9a0-76ef-adc6-0b859109d1f8",
              "version": 1,
              "description": "Quantitative chart."
            },
            "tool": null,
            "subkind": {
              "name": "Pie chart",
              "slug": "pie",
              "status": "active",
              "canonId": "019de52c-ffdb-71bb-a800-5c5ab9f1c373",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "pie",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.462+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "ba769d27-06e4-44d2-8fff-978c549abc39",
          "parentComponentId": null
        },
        {
          "bbox": null,
          "kind": "metric",
          "text": "High Confidence bot users: 63.9%",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Metric",
              "slug": "metric",
              "status": "active",
              "canonId": "019de52c-f923-73bf-8081-d0b1a8c5264d",
              "version": 1,
              "description": "Big-number or KPI value."
            },
            "tool": {
              "name": "Quantification",
              "slug": "quantification",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-47ab-72ce-a079-aab1f5299e88",
              "version": 1,
              "bodyDocId": null,
              "description": "Translating a claim into numbers, charts, or tables.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": "primary",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d2-48411143136b",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.075,
            "w": 0.764,
            "x": 0.118,
            "y": 0.128
          },
          "kind": "paragraph",
          "text": "Adding GSX IP Joiners brings the total percentage of High Confidence bot users to 34,534 users, or 63.9%. GSX IP Joiners are unique purported student users that use the same IP address as a teacher or tutor, or are linked to such users.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.462+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "ef3911d0-d326-494e-b153-3b329db9e9fe",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.05,
            "w": 0.764,
            "x": 0.118,
            "y": 0.85
          },
          "kind": "source-note",
          "text": "Some of the GSX IP Joiner bots also logged in from non-teacher / tutor IPs (the average IP to GSX IP Joiner ratio is 2.9:1).",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Source note",
              "slug": "source-note",
              "status": "active",
              "canonId": "23484952-494b-4a5e-b1ad-550d0d70e948",
              "version": 1,
              "description": "Attribution / source / caveat placed at the slide footer. Numbered footnotes use attrs.numbered."
            },
            "tool": null,
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.462+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "844caddb-fa17-4e0b-8925-3e2c0c1182eb",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.085,
            "w": 0.764,
            "x": 0.118,
            "y": 0.625
          },
          "kind": "table",
          "text": "\"Student\" Users Linked to GSX Teacher & Tutor IPs",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Table",
              "slug": "table",
              "status": "active",
              "canonId": "019de52c-f9c8-7148-8119-eaac9594cd28",
              "version": 1,
              "description": "Tabular data layout."
            },
            "tool": null,
            "subkind": {
              "name": "Data table",
              "slug": "data",
              "status": "active",
              "canonId": "019de52d-02d5-75b8-8abf-88e92bf63569",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "data",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.462+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "b427e4ef-8c66-41fd-96ff-b7c37ebb0509",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.018,
            "w": 0.175,
            "x": 0.118,
            "y": 0.093
          },
          "kind": "title",
          "text": "GSX IP Joiners",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.462+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "b4d6a768-c0ea-45aa-ab44-3f6becdcbf6b",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [
        {
          "tool": {
            "name": "Anchoring Bias",
            "slug": "anchoring-bias",
            "status": "active",
            "bestFor": null,
            "canonId": "019dd956-9254-73de-8f1b-c7250f8f4c9c",
            "version": 1,
            "bodyDocId": null,
            "description": "First piece of information becomes reference point for all subsequent judgments",
            "familyLabel": null,
            "categoryName": "Block",
            "categorySlug": "block"
          },
          "agent": "Architect",
          "layer": "slide",
          "agents": [
            "Architect",
            "Storyteller"
          ],
          "matchId": "5733c0a5-deb1-4f26-83d9-025412fe1e1c",
          "evidence": "Adding GSX IP Joiners brings the total percentage of High Confidence bot users to 34,534 users, or 63.9%.",
          "pageRefs": null,
          "priority": null,
          "whenToUse": null,
          "confidence": 0.5,
          "extraction": {
            "at": "2026-07-16 22:58:45.47355+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "pageNumber": 7,
          "whyItWorks": null,
          "antipattern": null,
          "cardinality": null,
          "narrativePurpose": null
        }
      ],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 10,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 5,
          "name": "Agitate (Make it worse)",
          "beatId": "bfb25005-744d-4f56-a9bd-94aa58cefabc",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Agitate (Make it worse)",
            "slug": "problem-agitate-solution-agitate-make-it-worse",
            "status": "active",
            "canonId": "019dd9b8-0f5a-71dd-bae7-8fadb0d09456",
            "version": 1,
            "description": null
          },
          "evidence": "The document presents data on the frequency and impact of bot joiners",
          "position": 1,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Development",
            "slug": "development",
            "status": "active",
            "canonId": "019dd9b8-0332-7008-b3aa-11b0840a57b1",
            "version": 1,
            "description": "The middle stretch in arcs that have one. Often where length problems creep in."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 8,
      "type": "analysis",
      "title": "Includes a scatter plot visualization of user join times relative to class start time, with specific callouts for burst events.",
      "function": "analyze_data",
      "rawType": "appendix_data",
      "block": null,
      "metadata": {
        "slideType": "appendix_data",
        "slideTypeCanon": {
          "name": "Appendix data",
          "slug": "appendix_data",
          "status": "active",
          "canonId": "019de52d-078a-745b-9ee4-c15f2f539acd",
          "version": 1,
          "description": null
        },
        "function": "analyze_data",
        "functionCanon": {
          "name": "Analyze data",
          "slug": "analyze_data",
          "status": "active",
          "canonId": "019de52d-1590-7413-8c82-cc218cff40b4",
          "version": 1,
          "description": null
        },
        "density": "balanced",
        "densityScore": 46,
        "componentCount": 7,
        "textChars": 691,
        "nDataPoints": 9,
        "notes": "Includes a scatter plot visualization of user join times relative to class start time, with specific callouts for burst events.",
        "elementsJson": [
          "data_table",
          "paragraph",
          "screenshot"
        ],
        "confidence": 0.95,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:43.984+00",
          "seconds": 2.931,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/8",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-8",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "This anomaly strikes us as similar to seeing 10 subway trains pass by in an hour, with nine of them completely empty and one completely full. Real life just does not work this way.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d2-9fb5446a6691",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.17,
            "w": 0.764,
            "x": 0.118,
            "y": 0.593
          },
          "kind": "image",
          "text": "Scatter plot showing user join times with numbered burst events",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Image",
              "slug": "image",
              "status": "active",
              "canonId": "019de52c-f978-701f-a720-51d029d769e7",
              "version": 1,
              "description": "Photo, illustration, screenshot or icon."
            },
            "tool": null,
            "subkind": {
              "name": "Infographic",
              "slug": "infographic",
              "status": "active",
              "canonId": "019de52c-fe26-750c-9d7d-9f34e21324e8",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "infographic",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:43.984+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "a061d58b-ebfe-4480-b494-c804a5d5b3f6",
          "parentComponentId": null
        },
        {
          "bbox": null,
          "kind": "metric",
          "text": "High Confidence bot total: 39,550",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Metric",
              "slug": "metric",
              "status": "active",
              "canonId": "019de52c-f923-73bf-8081-d0b1a8c5264d",
              "version": 1,
              "description": "Big-number or KPI value."
            },
            "tool": {
              "name": "Quantification",
              "slug": "quantification",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-47ab-72ce-a079-aab1f5299e88",
              "version": 1,
              "bodyDocId": null,
              "description": "Translating a claim into numbers, charts, or tables.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": "primary",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d2-a3420225556a",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.05,
            "w": 0.764,
            "x": 0.118,
            "y": 0.8
          },
          "kind": "paragraph",
          "text": "In Burst 1, 104 unique users join during a four second period that begins nine minutes 40 seconds before the start of class. There are six Precise Joiners in Burst 1.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:43.984+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "0326a259-b45d-4aef-a8e0-0d644bfa3a3a",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.15,
            "w": 0.764,
            "x": 0.118,
            "y": 0.22
          },
          "kind": "paragraph",
          "text": "We count 5,016 additional bots from Burst Joiners, bringing the High Confidence total to 39,550, which is 73.2%. Burst Joiners are large groups of users who join at the same second...",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:43.984+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "4b63a552-8e79-425f-b411-909f890e23b5",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.05,
            "w": 0.764,
            "x": 0.118,
            "y": 0.092
          },
          "kind": "table",
          "text": "Sum of 'Student' Precise Joiners & Linked Users table",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Table",
              "slug": "table",
              "status": "active",
              "canonId": "019de52c-f9c8-7148-8119-eaac9594cd28",
              "version": 1,
              "description": "Tabular data layout."
            },
            "tool": null,
            "subkind": {
              "name": "Data table",
              "slug": "data",
              "status": "active",
              "canonId": "019de52d-02d5-75b8-8abf-88e92bf63569",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "data",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:43.984+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "c15d378c-b998-4b73-a5f1-f8324d4d4cc7",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.02,
            "w": 0.118,
            "x": 0.118,
            "y": 0.188
          },
          "kind": "title",
          "text": "Burst Joiners",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:43.984+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "89ebadc9-feee-4583-8ca1-b393e07a255c",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [
        {
          "tool": {
            "name": "Chart Selection Guide",
            "slug": "chart-selection-guide",
            "status": "active",
            "bestFor": null,
            "canonId": "019dd956-b1a0-700b-ba17-0e16c4d5bcae",
            "version": 1,
            "bodyDocId": null,
            "description": "Choosing the right chart type for your data and message",
            "familyLabel": null,
            "categoryName": "Slide",
            "categorySlug": "slide"
          },
          "agent": "Designer",
          "layer": "slide",
          "agents": [
            "Designer"
          ],
          "matchId": "4d543548-329e-40cd-a782-6f7a1ca3c100",
          "evidence": "Scatter plot showing user join times with numbered burst events",
          "pageRefs": null,
          "priority": null,
          "whenToUse": null,
          "confidence": 0.6,
          "extraction": {
            "at": "2026-07-16 22:58:45.553973+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "pageNumber": 8,
          "whyItWorks": null,
          "antipattern": null,
          "cardinality": null,
          "narrativePurpose": null
        }
      ],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 10,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 5,
          "name": "Agitate (Make it worse)",
          "beatId": "bfb25005-744d-4f56-a9bd-94aa58cefabc",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Agitate (Make it worse)",
            "slug": "problem-agitate-solution-agitate-make-it-worse",
            "status": "active",
            "canonId": "019dd9b8-0f5a-71dd-bae7-8fadb0d09456",
            "version": 1,
            "description": null
          },
          "evidence": "The document presents data on the frequency and impact of bot joiners",
          "position": 1,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Development",
            "slug": "development",
            "status": "active",
            "canonId": "019dd9b8-0332-7008-b3aa-11b0840a57b1",
            "version": 1,
            "description": "The middle stretch in arcs that have one. Often where length problems creep in."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 9,
      "type": "analysis",
      "title": "The slide discusses methodology for identifying bots based on 'Precise Joiners', 'Burst' patterns, and 'GSX IP' addresses.",
      "function": "analyze_data",
      "rawType": "appendix_data",
      "block": null,
      "metadata": {
        "slideType": "appendix_data",
        "slideTypeCanon": {
          "name": "Appendix data",
          "slug": "appendix_data",
          "status": "active",
          "canonId": "019de52d-078a-745b-9ee4-c15f2f539acd",
          "version": 1,
          "description": null
        },
        "function": "analyze_data",
        "functionCanon": {
          "name": "Analyze data",
          "slug": "analyze_data",
          "status": "active",
          "canonId": "019de52d-1590-7413-8c82-cc218cff40b4",
          "version": 1,
          "description": null
        },
        "density": "balanced",
        "densityScore": 49,
        "componentCount": 7,
        "textChars": 1188,
        "nDataPoints": 0,
        "notes": "The slide discusses methodology for identifying bots based on 'Precise Joiners', 'Burst' patterns, and 'GSX IP' addresses.",
        "elementsJson": [
          "paragraph",
          "headline_text",
          "pie_chart"
        ],
        "confidence": 0.9,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:44.702+00",
          "seconds": 3.616,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/9",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-9",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "There is significant overlap among the various bot use patterns we observed.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:20+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d3-3fbdc604b1c2",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.25,
            "w": 0.46,
            "x": 0.27,
            "y": 0.465
          },
          "kind": "chart",
          "text": "GSX Bot Behavior Mix pie chart",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Chart",
              "slug": "chart",
              "status": "active",
              "canonId": "019de52c-f9a0-76ef-adc6-0b859109d1f8",
              "version": 1,
              "description": "Quantitative chart."
            },
            "tool": null,
            "subkind": {
              "name": "Pie chart",
              "slug": "pie",
              "status": "active",
              "canonId": "019de52c-ffdb-71bb-a800-5c5ab9f1c373",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "pie",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.702+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "ca72a4ff-1c99-4dab-a9b6-46a8458f4260",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.07,
            "w": 0.78,
            "x": 0.11,
            "y": 0.092
          },
          "kind": "paragraph",
          "text": "the same second as a Precise Joiner). In the nine second period starting from five seconds before the start of class to three seconds after class starts, 648 users – including 37 Precise Joiners – joined. We therefore did not count about two-thirds of these logins as bots because they did not join in the same second as Precise Joiners.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.702+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "82b03984-f3a0-4549-b4a7-374531f3693e",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.05,
            "w": 0.78,
            "x": 0.11,
            "y": 0.185
          },
          "kind": "paragraph",
          "text": "Although Burst 3 occurs at four minutes seven seconds after class starts (within the five minute window), we count these joiners as bots because during this three second window, among the 96 stragglers were three Precise Joiners that joined at the same times.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.702+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "a3e22769-47a6-4671-ba4d-06ed60fca752",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.07,
            "w": 0.78,
            "x": 0.11,
            "y": 0.312
          },
          "kind": "paragraph",
          "text": "There is significant overlap among the various bot use patterns we observed. On a standalone basis, we are highly confident that each behavior indicates bots. However, when we see the overlaps between the various behaviors, the patterns are even more solidly established as indicia. One-third of the High Confidence bots exhibited at least two indicia of bot behavior. Approximately one-half of that number exhibited all three indicia.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.702+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "d36061d8-6c4f-444f-bb92-bca7ed0b4580",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.02,
            "w": 0.22,
            "x": 0.39,
            "y": 0.43
          },
          "kind": "title",
          "text": "GSX Bot Behavior Mix",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.702+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "0cfb95d1-6dd6-4b2b-83fc-d9ac7e75e5f0",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.02,
            "w": 0.31,
            "x": 0.11,
            "y": 0.277
          },
          "kind": "title",
          "text": "Overall High Confidence Bot Mix",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Subtitle",
              "slug": "subtitle",
              "status": "active",
              "canonId": "019de52c-fb09-739d-900c-815b0d9ac526",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "subtitle",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.702+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "6df8b1f4-19d5-4de7-ab46-1d72f098295a",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [
        {
          "tool": {
            "name": "Big Idea Formula",
            "slug": "big-idea-formula",
            "status": "active",
            "bestFor": "Any narrative-driven persuasive deck whose job is to move the audience: keynotes, fundraising pitches, capital-allocation board asks, all-hands behaviour-change talks, conference talks meant to shift mental models. Use it before structuring; pair with Pyramid when the deck must also withstand line-by-line scrutiny.",
            "canonId": "019dd956-7dd1-74d7-9866-ffdef19ecfbf",
            "version": 1,
            "bodyDocId": "c30d7484-69e0-4e21-82cf-20fa0966869e",
            "description": "Nancy Duarte's articulation of how to frame a presentation's central message: the speaker's unique point of view plus what's at stake for the audience, expressed as one complete declarative sentence. The narrative-driven counterpart to Minto's analytical governing thought.",
            "familyLabel": null,
            "categoryName": "Block",
            "categorySlug": "block"
          },
          "agent": "Storyteller",
          "layer": "slide",
          "agents": [
            "Storyteller"
          ],
          "matchId": "4eea0852-e830-4bbc-b136-d1e5ecc70fbc",
          "evidence": "There is significant overlap among the various bot use patterns we observed.",
          "pageRefs": null,
          "priority": "Core",
          "whenToUse": "Any narrative-driven persuasive deck whose job is to move the audience: keynotes, fundraising pitches, capital-allocation board asks, all-hands behaviour-change talks, conference talks meant to shift mental models. Use it before structuring; pair with Pyramid when the deck must also withstand line-by-line scrutiny.",
          "confidence": 0.5,
          "extraction": {
            "at": "2026-07-16 22:58:45.637446+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "pageNumber": 9,
          "whyItWorks": "Solves the topic-not-thesis trap and the stake-less recommendation trap simultaneously. A single declarative sentence with a verb forces the speaker's stance into the room; routing the consequence through the word 'you' translates internal urgency into the audience's currency. The result is short enough to be repeated after the meeting — and that repetition is the persuasion mechanism.",
          "antipattern": "A topic dressed as a thesis ('Sustainability Roadmap 2026'), a stake attached to the speaker rather than the audience, two ideas spliced with 'and', abstract verbs (leverage / unlock / empower) that survive deletion, or writing the Big Idea after the deck is already built so the slides don't actually defend it.",
          "cardinality": null,
          "narrativePurpose": "Forces the deck to commit to a single declarative thesis before slide one — a sentence that names the speaker's stance and routes a consequence through the audience's currency. Acts as the filter every slide, anecdote, and chart must ladder up to."
        }
      ],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 10,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 5,
          "name": "Agitate (Make it worse)",
          "beatId": "bfb25005-744d-4f56-a9bd-94aa58cefabc",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Agitate (Make it worse)",
            "slug": "problem-agitate-solution-agitate-make-it-worse",
            "status": "active",
            "canonId": "019dd9b8-0f5a-71dd-bae7-8fadb0d09456",
            "version": 1,
            "description": null
          },
          "evidence": "The document presents data on the frequency and impact of bot joiners",
          "position": 1,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Development",
            "slug": "development",
            "status": "active",
            "canonId": "019dd9b8-0332-7008-b3aa-11b0840a57b1",
            "version": 1,
            "description": "The middle stretch in arcs that have one. Often where length problems creep in."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 10,
      "type": "resolution",
      "title": "The slide uses a pie chart to segment user behavior into bot categories, specifically highlighting the 'Early Joiner' segment.",
      "function": "analyze_data",
      "rawType": "key_takeaways",
      "block": null,
      "metadata": {
        "slideType": "key_takeaways",
        "slideTypeCanon": {
          "name": "Key takeaways",
          "slug": "key_takeaways",
          "status": "active",
          "canonId": "019de52d-06e7-7674-a891-9f7de3b11b6d",
          "version": 1,
          "description": null
        },
        "function": "analyze_data",
        "functionCanon": {
          "name": "Analyze data",
          "slug": "analyze_data",
          "status": "active",
          "canonId": "019de52d-1590-7413-8c82-cc218cff40b4",
          "version": 1,
          "description": null
        },
        "density": "overcrowded",
        "densityScore": 82,
        "componentCount": 11,
        "textChars": 1340,
        "nDataPoints": 8,
        "notes": "The slide uses a pie chart to segment user behavior into bot categories, specifically highlighting the 'Early Joiner' segment.",
        "elementsJson": [
          "headline_text",
          "paragraph",
          "donut_chart"
        ],
        "confidence": 0.95,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:44.659+00",
          "seconds": 3.405,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/10",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-10",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "Totaling up the previous three categories, 73.2% are High Confidence bots. We think it is very likely that another 7.7% (4,143) are also bots, based on their “Early Joiner” behavior pattern.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d2-8052922602d3",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.25,
            "w": 0.5,
            "x": 0.25,
            "y": 0.18
          },
          "kind": "chart",
          "text": "Early Joiners + High Confidence Bots",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Chart",
              "slug": "chart",
              "status": "active",
              "canonId": "019de52c-f9a0-76ef-adc6-0b859109d1f8",
              "version": 1,
              "description": "Quantitative chart."
            },
            "tool": null,
            "subkind": {
              "name": "Pie chart",
              "slug": "pie",
              "status": "active",
              "canonId": "019de52c-ffdb-71bb-a800-5c5ab9f1c373",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "pie",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.659+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "66e5d2d4-92e8-4e86-b748-2a21445ea1db",
          "parentComponentId": null
        },
        {
          "bbox": null,
          "kind": "metric",
          "text": "bot percentage: 80.8%",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Metric",
              "slug": "metric",
              "status": "active",
              "canonId": "019de52c-f923-73bf-8081-d0b1a8c5264d",
              "version": 1,
              "description": "Big-number or KPI value."
            },
            "tool": {
              "name": "Quantification",
              "slug": "quantification",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-47ab-72ce-a079-aab1f5299e88",
              "version": 1,
              "bodyDocId": null,
              "description": "Translating a claim into numbers, charts, or tables.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": "primary",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d2-8b73e08e69f4",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.03,
            "w": 0.78,
            "x": 0.11,
            "y": 0.71
          },
          "kind": "paragraph",
          "text": "Had we decreased the cut-off time to more than 15 minutes before class, it would increase the number of Early Joiners by 1,962 (3.6%).",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.659+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "21deaea0-bb4f-4d73-ac0b-b0cc6205d201",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.1,
            "w": 0.78,
            "x": 0.11,
            "y": 0.78
          },
          "kind": "paragraph",
          "text": "A former GSX manager corroborated our observations about the fake user patters. He displayed detailed knowledge of GSX’s bot operations, which he said began in 2015. He said that GSX uses software nicknamed “Group Control” (群控软件) to control the bot networks.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.659+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "2f992393-6666-4bce-8b48-08e78580d697",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.04,
            "w": 0.78,
            "x": 0.11,
            "y": 0.12
          },
          "kind": "paragraph",
          "text": "Totaling up the previous three categories, 73.2% are High Confidence bots. We think it is very likely that another 7.7% (4,143) are also bots, based on their “Early Joiner” behavior pattern.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.659+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "3d4d941d-4a71-4b9e-9710-348fe9fcc189",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.08,
            "w": 0.78,
            "x": 0.11,
            "y": 0.62
          },
          "kind": "paragraph",
          "text": "The total number of unique Early Joiners in our sample was 7,579 (14.0%), of which 3,676 (48.5%) exhibited at least one of the other assumed bot behaviors...",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.659+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "46d1b593-175b-4a87-b403-b5b9d5bc1fdc",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.15,
            "w": 0.78,
            "x": 0.11,
            "y": 0.47
          },
          "kind": "paragraph",
          "text": "Early Joiners are users who login to online classes implausibly early, and which we therefore believe are likely fake. We set the cut-off time at more than 30 minutes before class start...",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.659+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "8e1294fd-a52e-495c-aae0-c30520e97370",
          "parentComponentId": null
        },
        {
          "bbox": null,
          "kind": "quote",
          "text": "“Group Control” (群控软件) — Corroboration from a Former Manager",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Quote",
              "slug": "quote",
              "status": "active",
              "canonId": "019de52c-f8fb-751e-8bc6-d58e2d59562a",
              "version": 1,
              "description": "Pull quote or testimonial."
            },
            "tool": {
              "name": "Authority citation",
              "slug": "authority-citation",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-49ae-7557-89ad-3fca70469b45",
              "version": 1,
              "bodyDocId": null,
              "description": "Quoting an authority figure, study, or precedent to lend weight.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d2-8792dd71e826",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.02,
            "w": 0.5,
            "x": 0.11,
            "y": 0.75
          },
          "kind": "title",
          "text": "“Group Control” – Corroboration from a Former Manager",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.659+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "5ae80443-a294-49ae-ab01-5d469e0993e3",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.02,
            "w": 0.5,
            "x": 0.11,
            "y": 0.09
          },
          "kind": "title",
          "text": "Including Early Joiners Brings the Bot Total to 80.8%",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.659+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "eba437e4-a034-44b3-82c1-1499c4b96466",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [
        {
          "tool": {
            "name": "Before-After-Bridge",
            "slug": "before-after-bridge",
            "status": "active",
            "bestFor": null,
            "canonId": "019dd956-8604-7188-883f-42370288ad05",
            "version": 1,
            "bodyDocId": null,
            "description": "Narrative structure: Paint the before, show the after, explain the bridge",
            "familyLabel": null,
            "categoryName": "Block",
            "categorySlug": "block"
          },
          "agent": "Storyteller",
          "layer": "slide",
          "agents": [
            "Storyteller"
          ],
          "matchId": "cd522e05-9b82-454f-9a9b-d784d4858339",
          "evidence": "Totaling up the previous three categories, 73.2% are High Confidence bots. We think it is very likely that another 7.7% (4,143) are also bots, based on their “Early Joiner” behavior pattern.",
          "pageRefs": null,
          "priority": null,
          "whenToUse": null,
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 22:58:45.718034+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "pageNumber": 10,
          "whyItWorks": null,
          "antipattern": null,
          "cardinality": null,
          "narrativePurpose": null
        }
      ],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 10,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 5,
          "name": "Agitate (Make it worse)",
          "beatId": "bfb25005-744d-4f56-a9bd-94aa58cefabc",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Agitate (Make it worse)",
            "slug": "problem-agitate-solution-agitate-make-it-worse",
            "status": "active",
            "canonId": "019dd9b8-0f5a-71dd-bae7-8fadb0d09456",
            "version": 1,
            "description": null
          },
          "evidence": "The document presents data on the frequency and impact of bot joiners",
          "position": 1,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Development",
            "slug": "development",
            "status": "active",
            "canonId": "019dd9b8-0332-7008-b3aa-11b0840a57b1",
            "version": 1,
            "description": "The middle stretch in arcs that have one. Often where length problems creep in."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 11,
      "type": "tension",
      "title": "The slide presents a Q&A transcript between an interviewer and a former manager, alleging that GSX has operated a bot farm since 2015 to simulate student activi",
      "function": "expose_contradiction",
      "rawType": "testimonial",
      "block": null,
      "metadata": {
        "slideType": "testimonial",
        "slideTypeCanon": {
          "name": "Testimonial",
          "slug": "testimonial",
          "status": "active",
          "canonId": "019de52d-0a2d-7782-8a48-7e84df92cc97",
          "version": 1,
          "description": null
        },
        "function": "expose_contradiction",
        "functionCanon": {
          "name": "Expose contradiction",
          "slug": "expose_contradiction",
          "status": "active",
          "canonId": "019de52d-171f-776f-887c-73edaff4cf9c",
          "version": 1,
          "description": null
        },
        "density": "sparse",
        "densityScore": 14,
        "componentCount": 3,
        "textChars": 554,
        "nDataPoints": 0,
        "notes": "The slide presents a Q&A transcript between an interviewer and a former manager, alleging that GSX has operated a bot farm since 2015 to simulate student activity.",
        "elementsJson": [
          "paragraph",
          "quote_block"
        ],
        "confidence": 1,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:46.321+00",
          "seconds": 4.988,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/11",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-11",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": {
            "h": 0.25,
            "w": 0.764,
            "x": 0.118,
            "y": 0.58
          },
          "kind": "list",
          "text": "Transcript of Q&A between interviewer and former manager regarding the history and scale of GSX's bot operations.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "List",
              "slug": "list",
              "status": "active",
              "canonId": "019de52c-f94b-779b-a53b-fd4904a5f4d2",
              "version": 1,
              "description": "Bullet or numbered list."
            },
            "tool": null,
            "subkind": {
              "name": "Bullet list",
              "slug": "bullet",
              "status": "active",
              "canonId": "019de52c-fc98-7169-a083-5cab805076ca",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "bullet",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.321+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "cbfc2c58-a3e1-4b8e-8df9-0ea36420856b",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.08,
            "w": 0.764,
            "x": 0.118,
            "y": 0.252
          },
          "kind": "paragraph",
          "text": "GSX also utilizes outside companies that operate bot networks. According to the former manager, these companies are typically compensated through a commission of about 2% to 5% of would-be revenue based on the tasks required.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.321+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "a13254cb-1e37-4695-b95d-40bbea6acd9f",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.15,
            "w": 0.764,
            "x": 0.118,
            "y": 0.46
          },
          "kind": "quote",
          "text": "GSX itself has a room, in this computer room there are over 10,000 machines, we call them the group robots... I can control all of the machines. Then I can imitate the data generated by a real student or real buying.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Quote",
              "slug": "quote",
              "status": "active",
              "canonId": "019de52c-f8fb-751e-8bc6-d58e2d59562a",
              "version": 1,
              "description": "Pull quote or testimonial."
            },
            "tool": null,
            "subkind": {
              "name": "Testimonial",
              "slug": "testimonial",
              "status": "active",
              "canonId": "019de52c-fc21-71b6-9ac3-8266a64945e8",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "testimonial",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.321+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "fa524033-b842-40b4-b64e-da215036a5ba",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 25,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 11,
          "name": "Solution (Provide relief)",
          "beatId": "22b51ee0-c483-4634-ab46-435735227a51",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Solution (Provide relief)",
            "slug": "problem-agitate-solution-solution-provide-relief",
            "status": "active",
            "canonId": "019dd9b8-0fee-73e9-9ae5-799c7f3895cd",
            "version": 1,
            "description": null
          },
          "evidence": "The document proposes a methodology for analyzing and addressing bot activity",
          "position": 2,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Resolution",
            "slug": "resolution",
            "status": "active",
            "canonId": "019dd9b8-045d-703b-8dd7-e92aba3ba91b",
            "version": 1,
            "description": "How the deck ends. Required in 19/20 arcs. The exception (Sparkline) ends with new bliss which is functionally a resolution."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 12,
      "type": "tension",
      "title": "The text describes a 'wash trading' or 'round-tripping' scheme where ad spend is converted into fake revenue via bot accounts.",
      "function": "expose_contradiction",
      "rawType": "expose_contradiction",
      "block": null,
      "metadata": {
        "slideType": "expose_contradiction",
        "slideTypeCanon": {
          "name": "Expose contradiction",
          "slug": "expose_contradiction",
          "status": "active",
          "canonId": "019de52d-124c-75aa-984a-0a3d0d8fc8df",
          "version": 1,
          "description": null
        },
        "function": "expose_contradiction",
        "functionCanon": {
          "name": "Expose contradiction",
          "slug": "expose_contradiction",
          "status": "active",
          "canonId": "019de52d-171f-776f-887c-73edaff4cf9c",
          "version": 1,
          "description": null
        },
        "density": "balanced",
        "densityScore": 33,
        "componentCount": 4,
        "textChars": 1011,
        "nDataPoints": 3,
        "notes": "The text describes a 'wash trading' or 'round-tripping' scheme where ad spend is converted into fake revenue via bot accounts.",
        "elementsJson": [
          "paragraph",
          "footnote"
        ],
        "confidence": 0.95,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:46.138+00",
          "seconds": 4.664,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/12",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-12",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "For example, I am GSX, I will use another company, like [redacted], and I will sign [a contract] with them, I will put Rmb 1,000,000 into ads, and they will promise me, for example, that 2%, that they can keep Rmb 20,000...",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:20+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d3-e8db5620cda0",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.8,
            "w": 0.54,
            "x": 0.23,
            "y": 0.1
          },
          "kind": "paragraph",
          "text": "Transcript of a Q&A session regarding historical business practices (starting 2015) involving bot traffic and revenue manipulation.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.138+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "215e76fb-ab4a-4cd5-aefe-c47d66b3d83e",
          "parentComponentId": null
        },
        {
          "bbox": null,
          "kind": "quote",
          "text": "No, this started in 20... in 2015 it already started. Because then we were doing O2O [online to offline], we helped many institutes attract more traffic. At that time there were few students, but we want the teachers to feel that there were many, especially when we just started, for example just five students might have signed up and the remaining 500 were robots, letting the traffic volume become very big, going online listening to the class, it let them feel that the platform’s volume was huge. Starting from 2015 this was there. — Former Employee",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Quote",
              "slug": "quote",
              "status": "active",
              "canonId": "019de52c-f8fb-751e-8bc6-d58e2d59562a",
              "version": 1,
              "description": "Pull quote or testimonial."
            },
            "tool": {
              "name": "Authority citation",
              "slug": "authority-citation",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-49ae-7557-89ad-3fca70469b45",
              "version": 1,
              "bodyDocId": null,
              "description": "Quoting an authority figure, study, or precedent to lend weight.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:20+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d3-ee47ee7e1cf4",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.03,
            "w": 0.76,
            "x": 0.12,
            "y": 0.91
          },
          "kind": "source-note",
          "text": "Prior to 2017, GSX's focus was on working with schools and teachers. See GSX F-1, pp. 12, 68, 82, F-18.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Source note",
              "slug": "source-note",
              "status": "active",
              "canonId": "23484952-494b-4a5e-b1ad-550d0d70e948",
              "version": 1,
              "description": "Attribution / source / caveat placed at the slide footer. Numbered footnotes use attrs.numbered."
            },
            "tool": null,
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.138+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "4b571c19-2c4c-4f02-bb06-41435f24b705",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [],
      "frameworks": [
        {
          "matchId": "da2c3cc0-3151-44cf-8450-c3a36b163e02",
          "evidence": "The text explicitly describes a mechanism for inflating revenue through fake accounts and ad spend recycling.",
          "framework": null,
          "confidence": 0.9,
          "extraction": {
            "at": "2026-05-02 20:48:46.138+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "pageNumber": 12,
          "frameworkName": "fraud-exposure"
        }
      ],
      "arcBeats": [
        {
          "to": 25,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 11,
          "name": "Solution (Provide relief)",
          "beatId": "22b51ee0-c483-4634-ab46-435735227a51",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Solution (Provide relief)",
            "slug": "problem-agitate-solution-solution-provide-relief",
            "status": "active",
            "canonId": "019dd9b8-0fee-73e9-9ae5-799c7f3895cd",
            "version": 1,
            "description": null
          },
          "evidence": "The document proposes a methodology for analyzing and addressing bot activity",
          "position": 2,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Resolution",
            "slug": "resolution",
            "status": "active",
            "canonId": "019dd9b8-045d-703b-8dd7-e92aba3ba91b",
            "version": 1,
            "description": "How the deck ends. Required in 19/20 arcs. The exception (Sparkline) ends with new bliss which is functionally a resolution."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 13,
      "type": "setup",
      "title": "Includes a description of a 'brushing' model involving round-tripping RMB 1,000,000 for ad placements.",
      "function": "other",
      "rawType": "appendix_methodology",
      "block": null,
      "metadata": {
        "slideType": "appendix_methodology",
        "slideTypeCanon": {
          "name": "Appendix methodology",
          "slug": "appendix_methodology",
          "status": "active",
          "canonId": "019de52d-07d9-726c-8599-167f2d2ffaa7",
          "version": 1,
          "description": null
        },
        "function": "other",
        "functionCanon": {
          "name": "Other (fallback)",
          "slug": "other",
          "status": "active",
          "canonId": "019de52d-15e1-75bc-99dc-07732380e2ce",
          "version": 1,
          "description": null
        },
        "density": "overcrowded",
        "densityScore": 77,
        "componentCount": 9,
        "textChars": 2445,
        "nDataPoints": 0,
        "notes": "Includes a description of a 'brushing' model involving round-tripping RMB 1,000,000 for ad placements.",
        "elementsJson": [
          "paragraph",
          "numbered_list",
          "footnote"
        ],
        "confidence": 1,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:46.043+00",
          "seconds": 4.456,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/13",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-13",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "This way GSX does not lose money. It just takes the RMB 1,000,000 and round trips it; we use ad placements in exchange for this brushing [bots or fake student users].",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d2-b83ad112b7cd",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.08,
            "w": 0.15,
            "x": 0.118,
            "y": 0.775
          },
          "kind": "list",
          "text": "1. User Number\n2. Name\n3. Alternate Name\n4. Avatar",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "List",
              "slug": "list",
              "status": "active",
              "canonId": "019de52c-f94b-779b-a53b-fd4904a5f4d2",
              "version": 1,
              "description": "Bullet or numbered list."
            },
            "tool": null,
            "subkind": {
              "name": "Numbered list",
              "slug": "numbered",
              "status": "active",
              "canonId": "019de52c-fcc0-7718-a284-a4250c805df2",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "numbered",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.043+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "3b91225e-41ce-4e9b-98ae-fb85489329c0",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.191,
            "w": 0.764,
            "x": 0.118,
            "y": 0.533
          },
          "kind": "paragraph",
          "text": "Gaotu100.com is very similar in design and functionality with Genshuixue and shares domain names and resources with Genshuixue. After setting up an account and purchasing classes, it is possible to see some data flowing in the browser much like is the case with Genshuixue. However, Gaotu's data does not immediately show references to the class, so an additional step is required. If using an iPhone, it is necessary to install the Gaotu100.com app on the phone and configure the device to send data through an intercepting HTTP proxy. This method enabled our data analyst to watch the messages between the phone and the GSX servers, see what data was passed back and forth, and determine the path to the class archives. After locating the class archives, the files for each of our purchased classes were downloaded and examined.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.043+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "2f642107-22fe-434a-b2df-e5c8354da429",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.031,
            "w": 0.764,
            "x": 0.118,
            "y": 0.373
          },
          "kind": "paragraph",
          "text": "Analyzing Gaotu100.com and Genshuixue.com required two different approaches. We provide a more detailed description of the steps in Appendix 1.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.043+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "789f38c9-33e9-4c75-a06e-b61ed6616d17",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.095,
            "w": 0.764,
            "x": 0.118,
            "y": 0.421
          },
          "kind": "paragraph",
          "text": "The Genshuixue.com platform has both a website and a desktop application that students can use. Once a user signs up and logs in, the user opens Google Chrome Developer tools, turns on the Network tab, switches to XHR and sees data being passed between the browser and the Genshuixe.com website. Inside of this data there is a wealth of information including archives of every class session purchased, which is what we used to perform our analysis of bot activity on both platforms.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.043+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "e5e4a047-c6e2-4d4d-9150-1ff92f6eaeb3",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.215,
            "w": 0.764,
            "x": 0.118,
            "y": 0.093
          },
          "kind": "paragraph",
          "text": "the teachers... for example, as before I provide RMB 1,000,000, and then contract with them [to exchange] for ads, and you must take that RMB 1,000,000 and return it to me as purchases. Why would they want to do that? It's because you help me do this thing...",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.043+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "e73d519d-cf4f-4c80-808f-33d191d8af24",
          "parentComponentId": null
        },
        {
          "bbox": null,
          "kind": "quote",
          "text": "This way GSX does not lose money. It just takes the RMB 1,000,000 and round trips it; we use ad placements in exchange for this brushing [bots or fake student users]. — Anonymous source/Muddy Waters",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Quote",
              "slug": "quote",
              "status": "active",
              "canonId": "019de52c-f8fb-751e-8bc6-d58e2d59562a",
              "version": 1,
              "description": "Pull quote or testimonial."
            },
            "tool": {
              "name": "Authority citation",
              "slug": "authority-citation",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-49ae-7557-89ad-3fca70469b45",
              "version": 1,
              "bodyDocId": null,
              "description": "Quoting an authority figure, study, or precedent to lend weight.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d2-be570e8d7a9f",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.045,
            "w": 0.764,
            "x": 0.118,
            "y": 0.865
          },
          "kind": "source-note",
          "text": "6 The archives are in a zip file. The file format is GZIP-compressed TAR archive (.tar.gz) otherwise known as a tarball.\n7 The data contained more than just this. This is a partial list of the most useful fields presented for the users.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Source note",
              "slug": "source-note",
              "status": "active",
              "canonId": "23484952-494b-4a5e-b1ad-550d0d70e948",
              "version": 1,
              "description": "Attribution / source / caveat placed at the slide footer. Numbered footnotes use attrs.numbered."
            },
            "tool": null,
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.043+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "6033a05d-8292-43ff-a8c9-00b73b52a97c",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.015,
            "w": 0.764,
            "x": 0.118,
            "y": 0.338
          },
          "kind": "title",
          "text": "Summary Methodology for Accessing the Data and Analyzing Student and Bot Activity",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.043+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "0bd6f7f6-5ac9-4b73-8868-79e26374c056",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [
        {
          "tool": {
            "name": "Analytical method",
            "slug": "analytical-method",
            "status": "active",
            "bestFor": null,
            "canonId": "b42c4911-7946-49b5-951c-5f3d23f4e2bd",
            "version": 1,
            "bodyDocId": null,
            "description": "Diagnostic / structuring methods (5-whys, fishbone, issue tree, hypothesis-driven).",
            "familyLabel": null,
            "categoryName": null,
            "categorySlug": null
          },
          "agent": null,
          "layer": "slide",
          "agents": null,
          "matchId": "aa8947f7-d680-4200-83c7-b4ec0a3f228d",
          "evidence": "Analyzing Gaotu100.com and Genshuixue.com required two different approaches.",
          "pageRefs": null,
          "priority": null,
          "whenToUse": null,
          "confidence": 0.6,
          "extraction": {
            "at": "2026-07-16 22:58:45.880458+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "pageNumber": 13,
          "whyItWorks": null,
          "antipattern": null,
          "cardinality": "common",
          "narrativePurpose": null
        }
      ],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 25,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 11,
          "name": "Solution (Provide relief)",
          "beatId": "22b51ee0-c483-4634-ab46-435735227a51",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Solution (Provide relief)",
            "slug": "problem-agitate-solution-solution-provide-relief",
            "status": "active",
            "canonId": "019dd9b8-0fee-73e9-9ae5-799c7f3895cd",
            "version": 1,
            "description": null
          },
          "evidence": "The document proposes a methodology for analyzing and addressing bot activity",
          "position": 2,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Resolution",
            "slug": "resolution",
            "status": "active",
            "canonId": "019dd9b8-045d-703b-8dd7-e92aba3ba91b",
            "version": 1,
            "description": "How the deck ends. Required in 19/20 arcs. The exception (Sparkline) ends with new bliss which is functionally a resolution."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 14,
      "type": "analysis",
      "title": "Includes footnotes 8-11 and a table summarizing user distribution.",
      "function": "analyze_data",
      "rawType": "appendix_methodology",
      "block": null,
      "metadata": {
        "slideType": "appendix_methodology",
        "slideTypeCanon": {
          "name": "Appendix methodology",
          "slug": "appendix_methodology",
          "status": "active",
          "canonId": "019de52d-07d9-726c-8599-167f2d2ffaa7",
          "version": 1,
          "description": null
        },
        "function": "analyze_data",
        "functionCanon": {
          "name": "Analyze data",
          "slug": "analyze_data",
          "status": "active",
          "canonId": "019de52d-1590-7413-8c82-cc218cff40b4",
          "version": 1,
          "description": null
        },
        "density": "dense",
        "densityScore": 63,
        "componentCount": 8,
        "textChars": 1090,
        "nDataPoints": 12,
        "notes": "Includes footnotes 8-11 and a table summarizing user distribution.",
        "elementsJson": [
          "numbered_list",
          "paragraph",
          "kpi_table",
          "footnote"
        ],
        "confidence": 1,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:44.893+00",
          "seconds": 3.088,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/14",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-14",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "Considering that GSX is a near total fraud, this pledge presents an even greater risk of sudden loss to GSX long holders.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:20+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d3-53ec00388195",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.06,
            "w": 0.5,
            "x": 0.12,
            "y": 0.09
          },
          "kind": "list",
          "text": "5. User Type (0,1,2)\n6. Course ID and/or Class ID (Gaotu only has Class ID's)\n7. Class join and exit times\n8. IP address",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "List",
              "slug": "list",
              "status": "active",
              "canonId": "019de52c-f94b-779b-a53b-fd4904a5f4d2",
              "version": 1,
              "description": "Bullet or numbered list."
            },
            "tool": null,
            "subkind": {
              "name": "Numbered list",
              "slug": "numbered",
              "status": "active",
              "canonId": "019de52c-fcc0-7718-a284-a4250c805df2",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "numbered",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.893+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "d7fad150-12e2-4a69-8366-cb8219b4ffa8",
          "parentComponentId": null
        },
        {
          "bbox": null,
          "kind": "metric",
          "text": "User Type: $319 million",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Metric",
              "slug": "metric",
              "status": "active",
              "canonId": "019de52c-f923-73bf-8081-d0b1a8c5264d",
              "version": 1,
              "description": "Big-number or KPI value."
            },
            "tool": {
              "name": "Quantification",
              "slug": "quantification",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-47ab-72ce-a079-aab1f5299e88",
              "version": 1,
              "bodyDocId": null,
              "description": "Translating a claim into numbers, charts, or tables.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": "primary",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:20+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d3-57b6d1a32a56",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.08,
            "w": 0.76,
            "x": 0.12,
            "y": 0.59
          },
          "kind": "paragraph",
          "text": "Chairman Chen's $319 million Pledge: On March 3, 2020, Chairman Chen pledged 6,000,000 Class B ordinary shares through his entity Ebeter International Group Ltd. These are equivalent to 9,000,0000 ADSs with a market value of $319 million.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.893+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "29dec43d-20cd-4832-bc5f-d1631bf113dd",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.08,
            "w": 0.76,
            "x": 0.12,
            "y": 0.17
          },
          "kind": "paragraph",
          "text": "To conduct the analysis, our samples included over 200 paid K-12 classes purchased between January and March 2020... In total, we analyzed 463,217 logins made by 54,065 unique users.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.893+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "7c4427c7-0e12-47d9-aaab-bcd4a2b2e6f4",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.08,
            "w": 0.76,
            "x": 0.12,
            "y": 0.27
          },
          "kind": "paragraph",
          "text": "Within the class data, we found User Numbers... By cross referencing the class data with data displayed in teacher and tutor pages on genshuixue.com, we found that 100% of the teachers listed on the genshuixue.com were marked Type 1...",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.893+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "aa7981f5-2b5c-43e9-bca8-34a3471cb594",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.08,
            "w": 0.76,
            "x": 0.12,
            "y": 0.81
          },
          "kind": "source-note",
          "text": "Footnotes 8-11 detailing data sources and definitions.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Source note",
              "slug": "source-note",
              "status": "active",
              "canonId": "23484952-494b-4a5e-b1ad-550d0d70e948",
              "version": 1,
              "description": "Attribution / source / caveat placed at the slide footer. Numbered footnotes use attrs.numbered."
            },
            "tool": null,
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.893+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "d56af5a9-bf90-4e30-90b2-f775e8d987dc",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.08,
            "w": 0.64,
            "x": 0.18,
            "y": 0.47
          },
          "kind": "table",
          "text": "Distribution of GSX Users by Type: Teachers (Type 1), Tutors (Type 2), Students (Type 0) with counts and percentages.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Table",
              "slug": "table",
              "status": "active",
              "canonId": "019de52c-f9c8-7148-8119-eaac9594cd28",
              "version": 1,
              "description": "Tabular data layout."
            },
            "tool": null,
            "subkind": {
              "name": "Data table",
              "slug": "data",
              "status": "active",
              "canonId": "019de52d-02d5-75b8-8abf-88e92bf63569",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "data",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.893+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "7d79cf60-8ada-460c-8b74-482061567fad",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [
        {
          "tool": {
            "name": "Data-Ink Ratio",
            "slug": "data-ink-ratio",
            "status": "active",
            "bestFor": null,
            "canonId": "019dd956-afc8-70da-b378-92834d36fde6",
            "version": 1,
            "bodyDocId": null,
            "description": "Maximize data, minimize non-data ink - remove chartjunk and decoration",
            "familyLabel": null,
            "categoryName": "Slide",
            "categorySlug": "slide"
          },
          "agent": "Designer",
          "layer": "slide",
          "agents": [
            "Designer"
          ],
          "matchId": "a8a37cf7-fc03-465c-a3c3-792ef4fcf208",
          "evidence": "Distribution of GSX Users by Type: Teachers (Type 1), Tutors (Type 2), Students (Type 0) with counts and percentages.",
          "pageRefs": null,
          "priority": "Core",
          "whenToUse": null,
          "confidence": 0.5,
          "extraction": {
            "at": "2026-07-16 22:58:45.962994+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "pageNumber": 14,
          "whyItWorks": null,
          "antipattern": null,
          "cardinality": null,
          "narrativePurpose": null
        }
      ],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 25,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 11,
          "name": "Solution (Provide relief)",
          "beatId": "22b51ee0-c483-4634-ab46-435735227a51",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Solution (Provide relief)",
            "slug": "problem-agitate-solution-solution-provide-relief",
            "status": "active",
            "canonId": "019dd9b8-0fee-73e9-9ae5-799c7f3895cd",
            "version": 1,
            "description": null
          },
          "evidence": "The document proposes a methodology for analyzing and addressing bot activity",
          "position": 2,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Resolution",
            "slug": "resolution",
            "status": "active",
            "canonId": "019dd9b8-045d-703b-8dd7-e92aba3ba91b",
            "version": 1,
            "description": "How the deck ends. Required in 19/20 arcs. The exception (Sparkline) ends with new bliss which is functionally a resolution."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 15,
      "type": "appendix",
      "title": "Document appears to be a standard legal disclosure or registration form for a security interest.",
      "function": "appendix",
      "rawType": "appendix_data",
      "block": null,
      "metadata": {
        "slideType": "appendix_data",
        "slideTypeCanon": {
          "name": "Appendix data",
          "slug": "appendix_data",
          "status": "active",
          "canonId": "019de52d-078a-745b-9ee4-c15f2f539acd",
          "version": 1,
          "description": null
        },
        "function": "appendix",
        "functionCanon": {
          "name": "Appendix",
          "slug": "appendix",
          "status": "active",
          "canonId": "019de52d-138d-750b-83c3-49b4bc7a7a38",
          "version": 1,
          "description": null
        },
        "density": "dense",
        "densityScore": 53,
        "componentCount": 8,
        "textChars": 987,
        "nDataPoints": 0,
        "notes": "Document appears to be a standard legal disclosure or registration form for a security interest.",
        "elementsJson": [
          "screenshot",
          "data_table"
        ],
        "confidence": 1,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:49.476+00",
          "seconds": 7.605,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/15",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-15",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "Additional Collateral Shares means the class B ordinary shares in GSX Techedu Inc. (GSX) owned by the Company which are required from time to time to be subject to the Security created by the Deed.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d2-fc799dab26e7",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.1,
            "w": 0.67,
            "x": 0.165,
            "y": 0.46
          },
          "kind": "paragraph",
          "text": "Short description of the liability secured by the charge: As a continuing security for the discharge and/or payment of the Secured Obligations.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:49.476+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "44c73f7c-f7f9-4225-86fd-ee0a63916f80",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.15,
            "w": 0.67,
            "x": 0.165,
            "y": 0.24
          },
          "kind": "paragraph",
          "text": "Description of document or instrument creating the charge or other security interest: An equitable share mortgage dated 30 March 2020...",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:49.476+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "8be5db90-c333-4037-8c83-c541eccac66a",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.05,
            "w": 0.67,
            "x": 0.165,
            "y": 0.4
          },
          "kind": "paragraph",
          "text": "Date on which the charge was created: 30 March 2020",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:49.476+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "d52da7a1-7d22-4689-822b-236e0e8342b2",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.25,
            "w": 0.67,
            "x": 0.165,
            "y": 0.57
          },
          "kind": "paragraph",
          "text": "Short description of the property charged: The Company as legal and beneficial owner mortgaged in favour of the Mortgagee...",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:49.476+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "f399f210-ef87-4787-b5ce-9159d1457013",
          "parentComponentId": null
        },
        {
          "bbox": null,
          "kind": "quote",
          "text": "Additional Collateral Shares means the class B ordinary shares in GSX Techedu Inc. (GSX) owned by the Company which are required from time to time to be subject to the Security created by the Deed pursuant to the terms of the Loan Agreement — Walkers Form R401.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Quote",
              "slug": "quote",
              "status": "active",
              "canonId": "019de52c-f8fb-751e-8bc6-d58e2d59562a",
              "version": 1,
              "description": "Pull quote or testimonial."
            },
            "tool": {
              "name": "Authority citation",
              "slug": "authority-citation",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-49ae-7557-89ad-3fca70469b45",
              "version": 1,
              "bodyDocId": null,
              "description": "Quoting an authority figure, study, or precedent to lend weight.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d3-0039dc333d3d",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.06,
            "w": 0.33,
            "x": 0.51,
            "y": 0.1
          },
          "kind": "table",
          "text": "Company Name: Ebetter International Group Limited; Company No.: 1835287",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Table",
              "slug": "table",
              "status": "active",
              "canonId": "019de52c-f9c8-7148-8119-eaac9594cd28",
              "version": 1,
              "description": "Tabular data layout."
            },
            "tool": null,
            "subkind": {
              "name": "Data table",
              "slug": "data",
              "status": "active",
              "canonId": "019de52d-02d5-75b8-8abf-88e92bf63569",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "data",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:49.476+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "64449815-07ad-4849-ba4e-0251be71bd40",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.03,
            "w": 0.08,
            "x": 0.165,
            "y": 0.195
          },
          "kind": "title",
          "text": "R401",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:49.476+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "b802c6a8-80c7-4bb8-8f03-78d49cd11915",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [
        {
          "tool": {
            "name": "Annotation",
            "slug": "annotation",
            "status": "active",
            "bestFor": null,
            "canonId": "019dd956-b5b9-7668-bf0e-3af99823ec5c",
            "version": 1,
            "bodyDocId": null,
            "description": "Adding explanatory labels to highlight key data points",
            "familyLabel": null,
            "categoryName": "Slide",
            "categorySlug": "slide"
          },
          "agent": "Designer",
          "layer": "slide",
          "agents": [
            "Designer"
          ],
          "matchId": "dfe17089-953a-46fe-a36d-859232ccc49e",
          "evidence": "Additional Collateral Shares means the class B ordinary shares in GSX Techedu Inc. (GSX) owned by the Company which are required from time to time to be subject to the Security created by the Deed pursuant to the",
          "pageRefs": null,
          "priority": null,
          "whenToUse": null,
          "confidence": 0.6,
          "extraction": {
            "at": "2026-07-16 22:58:46.043356+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "pageNumber": 15,
          "whyItWorks": null,
          "antipattern": null,
          "cardinality": null,
          "narrativePurpose": null
        }
      ],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 25,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 11,
          "name": "Solution (Provide relief)",
          "beatId": "22b51ee0-c483-4634-ab46-435735227a51",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Solution (Provide relief)",
            "slug": "problem-agitate-solution-solution-provide-relief",
            "status": "active",
            "canonId": "019dd9b8-0fee-73e9-9ae5-799c7f3895cd",
            "version": 1,
            "description": null
          },
          "evidence": "The document proposes a methodology for analyzing and addressing bot activity",
          "position": 2,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Resolution",
            "slug": "resolution",
            "status": "active",
            "canonId": "019dd9b8-045d-703b-8dd7-e92aba3ba91b",
            "version": 1,
            "description": "How the deck ends. Required in 19/20 arcs. The exception (Sparkline) ends with new bliss which is functionally a resolution."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 16,
      "type": "setup",
      "title": "Document appears to be a page from a legal charge or security agreement prepared by Walkers.",
      "function": "other",
      "rawType": "appendix_disclosure",
      "block": null,
      "metadata": {
        "slideType": "appendix_disclosure",
        "slideTypeCanon": {
          "name": "Appendix disclosure",
          "slug": "appendix_disclosure",
          "status": "active",
          "canonId": "019de52d-07b2-7549-8e8b-932a19f6e616",
          "version": 1,
          "description": null
        },
        "function": "other",
        "functionCanon": {
          "name": "Other (fallback)",
          "slug": "other",
          "status": "active",
          "canonId": "019de52d-15e1-75bc-99dc-07732380e2ce",
          "version": 1,
          "description": null
        },
        "density": "sparse",
        "densityScore": 15,
        "componentCount": 4,
        "textChars": 404,
        "nDataPoints": 0,
        "notes": "Document appears to be a page from a legal charge or security agreement prepared by Walkers.",
        "elementsJson": [
          "screenshot",
          "data_table"
        ],
        "confidence": 1,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:47.176+00",
          "seconds": 4.929,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/16",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-16",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": {
            "h": 0.75,
            "w": 0.72,
            "x": 0.14,
            "y": 0.23
          },
          "kind": "list",
          "text": "Definitions of property charged, Mortgaged Shares, and restrictive covenants.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "List",
              "slug": "list",
              "status": "active",
              "canonId": "019de52c-f94b-779b-a53b-fd4904a5f4d2",
              "version": 1,
              "description": "Bullet or numbered list."
            },
            "tool": null,
            "subkind": {
              "name": "Bullet list",
              "slug": "bullet",
              "status": "active",
              "canonId": "019de52c-fc98-7169-a083-5cab805076ca",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "bullet",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:47.176+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "ee890ca6-ce8a-487e-80fa-cee2f9b26d85",
          "parentComponentId": null
        },
        {
          "bbox": null,
          "kind": "quote",
          "text": "the class B ordinary shares owned by the Company in GSX at the date of the Deed specified in Schedule 1 to the Deed, namely, the 6,000,000 Class B Ordinary Shares owned by the Company in GSX — Walkers Legal Document",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Quote",
              "slug": "quote",
              "status": "active",
              "canonId": "019de52c-f8fb-751e-8bc6-d58e2d59562a",
              "version": 1,
              "description": "Pull quote or testimonial."
            },
            "tool": {
              "name": "Authority citation",
              "slug": "authority-citation",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-49ae-7557-89ad-3fca70469b45",
              "version": 1,
              "bodyDocId": null,
              "description": "Quoting an authority figure, study, or precedent to lend weight.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:20+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d3-15990d0d5bb4",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.06,
            "w": 0.35,
            "x": 0.52,
            "y": 0.105
          },
          "kind": "table",
          "text": "Company Name: Ebetter International Group Limited; Company No.: 1835287",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Table",
              "slug": "table",
              "status": "active",
              "canonId": "019de52c-f9c8-7148-8119-eaac9594cd28",
              "version": 1,
              "description": "Tabular data layout."
            },
            "tool": null,
            "subkind": {
              "name": "Data table",
              "slug": "data",
              "status": "active",
              "canonId": "019de52d-02d5-75b8-8abf-88e92bf63569",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "data",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:47.176+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "783492ce-d97d-492d-ab13-40f6aa98aa6e",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.02,
            "w": 0.35,
            "x": 0.14,
            "y": 0.2
          },
          "kind": "title",
          "text": "Short description of the property charged",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:47.176+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "50bf5406-2a2a-4536-b5c8-b2b85e410896",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [
        {
          "tool": {
            "name": "Annotation",
            "slug": "annotation",
            "status": "active",
            "bestFor": null,
            "canonId": "019dd956-b5b9-7668-bf0e-3af99823ec5c",
            "version": 1,
            "bodyDocId": null,
            "description": "Adding explanatory labels to highlight key data points",
            "familyLabel": null,
            "categoryName": "Slide",
            "categorySlug": "slide"
          },
          "agent": "Designer",
          "layer": "slide",
          "agents": [
            "Designer"
          ],
          "matchId": "8b87f4fe-4add-4e3f-af27-e9856180a6bd",
          "evidence": "Short description of the property charged: The Company as legal and beneficial owner mortgaged in favour of the Mortgagee...",
          "pageRefs": null,
          "priority": null,
          "whenToUse": null,
          "confidence": 0.6,
          "extraction": {
            "at": "2026-07-16 22:58:46.121892+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "pageNumber": 16,
          "whyItWorks": null,
          "antipattern": null,
          "cardinality": null,
          "narrativePurpose": null
        }
      ],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 25,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 11,
          "name": "Solution (Provide relief)",
          "beatId": "22b51ee0-c483-4634-ab46-435735227a51",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Solution (Provide relief)",
            "slug": "problem-agitate-solution-solution-provide-relief",
            "status": "active",
            "canonId": "019dd9b8-0fee-73e9-9ae5-799c7f3895cd",
            "version": 1,
            "description": null
          },
          "evidence": "The document proposes a methodology for analyzing and addressing bot activity",
          "position": 2,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Resolution",
            "slug": "resolution",
            "status": "active",
            "canonId": "019dd9b8-045d-703b-8dd7-e92aba3ba91b",
            "version": 1,
            "description": "How the deck ends. Required in 19/20 arcs. The exception (Sparkline) ends with new bliss which is functionally a resolution."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 17,
      "type": "appendix",
      "title": "The slide provides a step-by-step guide for data extraction from the platform.",
      "function": "appendix",
      "rawType": "appendix_methodology",
      "block": null,
      "metadata": {
        "slideType": "appendix_methodology",
        "slideTypeCanon": {
          "name": "Appendix methodology",
          "slug": "appendix_methodology",
          "status": "active",
          "canonId": "019de52d-07d9-726c-8599-167f2d2ffaa7",
          "version": 1,
          "description": null
        },
        "function": "appendix",
        "functionCanon": {
          "name": "Appendix",
          "slug": "appendix",
          "status": "active",
          "canonId": "019de52d-138d-750b-83c3-49b4bc7a7a38",
          "version": 1,
          "description": null
        },
        "density": "dense",
        "densityScore": 53,
        "componentCount": 7,
        "textChars": 1367,
        "nDataPoints": 0,
        "notes": "The slide provides a step-by-step guide for data extraction from the platform.",
        "elementsJson": [
          "headline_text",
          "paragraph",
          "numbered_list",
          "footnote"
        ],
        "confidence": 1,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:45.653+00",
          "seconds": 3.321,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/17",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-17",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": {
            "h": 0.1,
            "w": 0.78,
            "x": 0.11,
            "y": 0.42
          },
          "kind": "list",
          "text": "1. Login to your account.\n2. Click on any of your courses that have classes that have already concluded.\n3. Click on a class view button (See screenshot below), and then select the playV2 item in the Chrome Developer Network view. Now look for pcURL value for each class in the course. Copy each of them.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "List",
              "slug": "list",
              "status": "active",
              "canonId": "019de52c-f94b-779b-a53b-fd4904a5f4d2",
              "version": 1,
              "description": "Bullet or numbered list."
            },
            "tool": null,
            "subkind": {
              "name": "Numbered list",
              "slug": "numbered",
              "status": "active",
              "canonId": "019de52c-fcc0-7718-a284-a4250c805df2",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "numbered",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:45.653+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "ae876339-0818-4adc-a1ed-121cbe75abab",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.03,
            "w": 0.78,
            "x": 0.11,
            "y": 0.13
          },
          "kind": "paragraph",
          "text": "Analyzing Gaotu100.com and Genshuixe.com required two different approaches, which we explain below.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:45.653+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "5451e8f9-0ab2-42c7-b6c7-8ac71686314e",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.03,
            "w": 0.78,
            "x": 0.11,
            "y": 0.37
          },
          "kind": "paragraph",
          "text": "To discover the archive, the following steps need to be completed from a Google Chrome Browser:",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:45.653+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "5cffd00c-002a-47fb-996f-a721f0650a66",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.15,
            "w": 0.78,
            "x": 0.11,
            "y": 0.21
          },
          "kind": "paragraph",
          "text": "This platform has both a website and a desktop application that students can use. We did not analyze any mobile applications for this platform as it was not required. Once you have signed up with an account and have logged in you can simply open Google Chrome Developer tools, turn on the Network tab, switch to XHR and you can see data being passed between your browser and the Genshuixe.com website. Inside of this data there is a wealth of information including archives of every class session you have purchased which is what we used to perform our analysis of bot activity on both platforms. There were no special tools or techniques required to perform this analysis.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:45.653+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "72547213-2cb2-4ad9-a86a-67d1c67bb57e",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.03,
            "w": 0.78,
            "x": 0.11,
            "y": 0.88
          },
          "kind": "source-note",
          "text": "12 The archives are in a zip file. The file format is GZIP-compressed TAR archive (.tar.gz) otherwise known as a tarball.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Source note",
              "slug": "source-note",
              "status": "active",
              "canonId": "23484952-494b-4a5e-b1ad-550d0d70e948",
              "version": 1,
              "description": "Attribution / source / caveat placed at the slide footer. Numbered footnotes use attrs.numbered."
            },
            "tool": null,
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:45.653+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "332f5b6d-674b-42e8-aeb3-e2f0ef286ee6",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.02,
            "w": 0.56,
            "x": 0.22,
            "y": 0.09
          },
          "kind": "title",
          "text": "Appendix 1: Methodology for Analyzing Student and Bot Activity",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:45.653+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "1cbaebf1-adaa-4ff5-b99b-d5fc00e0f3f9",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.02,
            "w": 0.14,
            "x": 0.11,
            "y": 0.18
          },
          "kind": "title",
          "text": "Genshuixe.com",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Subtitle",
              "slug": "subtitle",
              "status": "active",
              "canonId": "019de52c-fb09-739d-900c-815b0d9ac526",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "subtitle",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:45.653+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "eb0648b9-e0f1-41b1-8f70-8f66d02881a7",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 25,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 11,
          "name": "Solution (Provide relief)",
          "beatId": "22b51ee0-c483-4634-ab46-435735227a51",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Solution (Provide relief)",
            "slug": "problem-agitate-solution-solution-provide-relief",
            "status": "active",
            "canonId": "019dd9b8-0fee-73e9-9ae5-799c7f3895cd",
            "version": 1,
            "description": null
          },
          "evidence": "The document proposes a methodology for analyzing and addressing bot activity",
          "position": 2,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Resolution",
            "slug": "resolution",
            "status": "active",
            "canonId": "019dd9b8-045d-703b-8dd7-e92aba3ba91b",
            "version": 1,
            "description": "How the deck ends. Required in 19/20 arcs. The exception (Sparkline) ends with new bliss which is functionally a resolution."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 18,
      "type": "appendix",
      "title": "The slide uses a screenshot of Chrome DevTools with red annotations to guide the user through a technical process.",
      "function": "plan_implementation",
      "rawType": "other",
      "block": null,
      "metadata": {
        "slideType": "other",
        "slideTypeCanon": {
          "name": "Other (fallback)",
          "slug": "other",
          "status": "active",
          "canonId": "019de52d-0af5-71ed-83de-d51ae245fc43",
          "version": 1,
          "description": null
        },
        "function": "plan_implementation",
        "functionCanon": {
          "name": "Plan implementation",
          "slug": "plan_implementation",
          "status": "active",
          "canonId": "019de52d-14a2-77ea-b210-d6a95eed4823",
          "version": 1,
          "description": null
        },
        "density": "sparse",
        "densityScore": 13,
        "componentCount": 3,
        "textChars": 533,
        "nDataPoints": 0,
        "notes": "The slide uses a screenshot of Chrome DevTools with red annotations to guide the user through a technical process.",
        "elementsJson": [
          "screenshot",
          "numbered_list"
        ],
        "confidence": 0.9,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:44.403+00",
          "seconds": 1.985,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/18",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-18",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "Keeping Google Chrome Developer tools open, paste the first pcURL value that you copied, and browse to it. You will see activity in your Network tab of Google Developer Tools.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:19+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d2-d49a3fcee9e0",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.65,
            "w": 0.66,
            "x": 0.17,
            "y": 0.09
          },
          "kind": "image",
          "text": "Screenshot of Chrome DevTools showing network requests and JSON response data.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Image",
              "slug": "image",
              "status": "active",
              "canonId": "019de52c-f978-701f-a720-51d029d769e7",
              "version": 1,
              "description": "Photo, illustration, screenshot or icon."
            },
            "tool": null,
            "subkind": {
              "name": "Screenshot",
              "slug": "screenshot",
              "status": "active",
              "canonId": "019de52c-fd87-7509-8391-3d79fb339379",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "screenshot",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.403+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "83d5fed6-cfd8-4a10-a930-01e1cad12d9c",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.12,
            "w": 0.66,
            "x": 0.17,
            "y": 0.77
          },
          "kind": "list",
          "text": "4. Keeping Google Chrome Developer tools open, paste the first pcURL value that you copied, and browse to it. You will see activity in your Network tab of Google Developer Tools.\n5. Click on the getPlaybackInfoV2 item in the network view and view the data on the right hand panel.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "List",
              "slug": "list",
              "status": "active",
              "canonId": "019de52c-f94b-779b-a53b-fd4904a5f4d2",
              "version": 1,
              "description": "Bullet or numbered list."
            },
            "tool": null,
            "subkind": {
              "name": "Numbered list",
              "slug": "numbered",
              "status": "active",
              "canonId": "019de52c-fcc0-7718-a284-a4250c805df2",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "numbered",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:44.403+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "953c4969-c6a1-483a-b3b2-00d84704e22d",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 25,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 11,
          "name": "Solution (Provide relief)",
          "beatId": "22b51ee0-c483-4634-ab46-435735227a51",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Solution (Provide relief)",
            "slug": "problem-agitate-solution-solution-provide-relief",
            "status": "active",
            "canonId": "019dd9b8-0fee-73e9-9ae5-799c7f3895cd",
            "version": 1,
            "description": null
          },
          "evidence": "The document proposes a methodology for analyzing and addressing bot activity",
          "position": 2,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Resolution",
            "slug": "resolution",
            "status": "active",
            "canonId": "019dd9b8-045d-703b-8dd7-e92aba3ba91b",
            "version": 1,
            "description": "How the deck ends. Required in 19/20 arcs. The exception (Sparkline) ends with new bliss which is functionally a resolution."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 19,
      "type": "appendix",
      "title": "The slide contains a screenshot of Chrome DevTools and text instructions for reverse engineering video playback data.",
      "function": "analyze_data",
      "rawType": "other",
      "block": null,
      "metadata": {
        "slideType": "other",
        "slideTypeCanon": {
          "name": "Other (fallback)",
          "slug": "other",
          "status": "active",
          "canonId": "019de52d-0af5-71ed-83de-d51ae245fc43",
          "version": 1,
          "description": null
        },
        "function": "analyze_data",
        "functionCanon": {
          "name": "Analyze data",
          "slug": "analyze_data",
          "status": "active",
          "canonId": "019de52d-1590-7413-8c82-cc218cff40b4",
          "version": 1,
          "description": null
        },
        "density": "balanced",
        "densityScore": 27,
        "componentCount": 4,
        "textChars": 943,
        "nDataPoints": 0,
        "notes": "The slide contains a screenshot of Chrome DevTools and text instructions for reverse engineering video playback data.",
        "elementsJson": [
          "screenshot",
          "numbered_list",
          "paragraph"
        ],
        "confidence": 0.9,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:45.637+00",
          "seconds": 2.698,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/19",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-19",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "Note this bjcloudvod for later",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:20+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d3-72bf70f6279e",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.51,
            "w": 0.66,
            "x": 0.17,
            "y": 0.09
          },
          "kind": "image",
          "text": "Chrome DevTools network tab showing playback info request",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Image",
              "slug": "image",
              "status": "active",
              "canonId": "019de52c-f978-701f-a720-51d029d769e7",
              "version": 1,
              "description": "Photo, illustration, screenshot or icon."
            },
            "tool": null,
            "subkind": {
              "name": "Screenshot",
              "slug": "screenshot",
              "status": "active",
              "canonId": "019de52c-fd87-7509-8391-3d79fb339379",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "screenshot",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:45.637+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "cb6751c0-2e2f-4378-822a-6ff9136d664f",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.12,
            "w": 0.78,
            "x": 0.11,
            "y": 0.53
          },
          "kind": "list",
          "text": "6. Continue to look through the data until you see a package_signal entry. This will now contain the URL for the archive file.\n7. You can now download that zip file and use 7-zip on Windows or the native unzipping tools in Mac OSX to view the contents.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "List",
              "slug": "list",
              "status": "active",
              "canonId": "019de52c-f94b-779b-a53b-fd4904a5f4d2",
              "version": 1,
              "description": "Bullet or numbered list."
            },
            "tool": null,
            "subkind": {
              "name": "Numbered list",
              "slug": "numbered",
              "status": "active",
              "canonId": "019de52c-fcc0-7718-a284-a4250c805df2",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "numbered",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:45.637+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "0f5a2e0e-1b94-4f48-afcd-6efeb488550c",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.21,
            "w": 0.78,
            "x": 0.11,
            "y": 0.71
          },
          "kind": "paragraph",
          "text": "Gaotu100.com is very similar in design and functionality of Genshuixue and shares a number of domain names and resources with Genshuixue. Once you have signed up for an account, and purchased classes, you are able to start seeing some of the data flowing in your browser much like on Genshuixue. However, there were no references to the class archives that we had seen on Genshuixue.com so further analysis was required.\n\nWe installed the Gaotu100.com app on an Apple iPhone and configured the iPhone to send data through an intercepting HTTP proxy. This allows us to watch the messages between our phone",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:45.637+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "a6f3faa9-876c-4fb8-b1a9-d23b5915da11",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 25,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 11,
          "name": "Solution (Provide relief)",
          "beatId": "22b51ee0-c483-4634-ab46-435735227a51",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Solution (Provide relief)",
            "slug": "problem-agitate-solution-solution-provide-relief",
            "status": "active",
            "canonId": "019dd9b8-0fee-73e9-9ae5-799c7f3895cd",
            "version": 1,
            "description": null
          },
          "evidence": "The document proposes a methodology for analyzing and addressing bot activity",
          "position": 2,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Resolution",
            "slug": "resolution",
            "status": "active",
            "canonId": "019dd9b8-045d-703b-8dd7-e92aba3ba91b",
            "version": 1,
            "description": "How the deck ends. Required in 19/20 arcs. The exception (Sparkline) ends with new bliss which is functionally a resolution."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 20,
      "type": "appendix",
      "title": "This slide describes a technical investigation process involving data scraping and analysis of JSON files.",
      "function": "analyze_data",
      "rawType": "other",
      "block": null,
      "metadata": {
        "slideType": "other",
        "slideTypeCanon": {
          "name": "Other (fallback)",
          "slug": "other",
          "status": "active",
          "canonId": "019de52d-0af5-71ed-83de-d51ae245fc43",
          "version": 1,
          "description": null
        },
        "function": "analyze_data",
        "functionCanon": {
          "name": "Analyze data",
          "slug": "analyze_data",
          "status": "active",
          "canonId": "019de52d-1590-7413-8c82-cc218cff40b4",
          "version": 1,
          "description": null
        },
        "density": "dense",
        "densityScore": 50,
        "componentCount": 7,
        "textChars": 1216,
        "nDataPoints": 0,
        "notes": "This slide describes a technical investigation process involving data scraping and analysis of JSON files.",
        "elementsJson": [
          "paragraph"
        ],
        "confidence": 0.9,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:50.127+00",
          "seconds": 6.963,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/20",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-20",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "By having IP addresses, timestamps, and user identifiers, we were able to perform data analysis and bot detection across a number of classes on both Genshuixue and Gaotu100.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:20+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d3-a6b1700d9a57",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.018,
            "w": 0.764,
            "x": 0.118,
            "y": 0.306
          },
          "kind": "paragraph",
          "text": "The all.json file is also retrieved by your browser when you view a recorded session.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:50.127+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "02542e15-3f97-41c4-9905-28da143ec7b4",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.035,
            "w": 0.764,
            "x": 0.118,
            "y": 0.094
          },
          "kind": "paragraph",
          "text": "and the GSX servers so we can see what data is being passed back and forth. This analysis yielded the path to the class archives that were the same as Genshuixue.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:50.127+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "33ca8b1b-8a3f-4b0c-8742-6c419d17ceb0",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.035,
            "w": 0.764,
            "x": 0.118,
            "y": 0.341
          },
          "kind": "paragraph",
          "text": "By having IP addresses, timestamps, and user identifiers, we were able to perform data analysis and bot detection across a number of classes on both Genshuixue and Gaotu100.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:50.127+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "3e439013-fc61-4c89-8b96-51d3dd31589d",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.071,
            "w": 0.764,
            "x": 0.118,
            "y": 0.146
          },
          "kind": "paragraph",
          "text": "After discovering the class archives, we then downloaded the archive for each of our purchased classes, opened the file and examined the contents. We were surprised to see that not only were there class materials, but there were files that contained information about the students, when they joined, and other details.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:50.127+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "93743bda-a186-467b-9ffa-8b0b92c16bbc",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.071,
            "w": 0.764,
            "x": 0.118,
            "y": 0.235
          },
          "kind": "paragraph",
          "text": "Opening and inspecting the all.json file, gives us information about every student that joins, their user number, their IP address and a timestamp. There is also other information about when that student exits a class, as well as other information related to actions the instructor is taking.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:50.127+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "9cd791c8-7c2b-4097-b3cc-e72f649e6369",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.018,
            "w": 0.09,
            "x": 0.792,
            "y": 0.956
          },
          "kind": "source-note",
          "text": "Page 20 of 25",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Source note",
              "slug": "source-note",
              "status": "active",
              "canonId": "23484952-494b-4a5e-b1ad-550d0d70e948",
              "version": 1,
              "description": "Attribution / source / caveat placed at the slide footer. Numbered footnotes use attrs.numbered."
            },
            "tool": null,
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:50.127+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "31a48958-211d-41a2-ac67-480f76a9cb83",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 25,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 11,
          "name": "Solution (Provide relief)",
          "beatId": "22b51ee0-c483-4634-ab46-435735227a51",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Solution (Provide relief)",
            "slug": "problem-agitate-solution-solution-provide-relief",
            "status": "active",
            "canonId": "019dd9b8-0fee-73e9-9ae5-799c7f3895cd",
            "version": 1,
            "description": null
          },
          "evidence": "The document proposes a methodology for analyzing and addressing bot activity",
          "position": 2,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Resolution",
            "slug": "resolution",
            "status": "active",
            "canonId": "019dd9b8-045d-703b-8dd7-e92aba3ba91b",
            "version": 1,
            "description": "How the deck ends. Required in 19/20 arcs. The exception (Sparkline) ends with new bliss which is functionally a resolution."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 21,
      "type": "appendix",
      "function": "appendix",
      "rawType": "appendix_methodology",
      "block": null,
      "metadata": {
        "slideType": "appendix_methodology",
        "slideTypeCanon": {
          "name": "Appendix methodology",
          "slug": "appendix_methodology",
          "status": "active",
          "canonId": "019de52d-07d9-726c-8599-167f2d2ffaa7",
          "version": 1,
          "description": null
        },
        "function": "appendix",
        "functionCanon": {
          "name": "Appendix",
          "slug": "appendix",
          "status": "active",
          "canonId": "019de52d-138d-750b-83c3-49b4bc7a7a38",
          "version": 1,
          "description": null
        },
        "density": "balanced",
        "densityScore": 44,
        "componentCount": 7,
        "textChars": 919,
        "nDataPoints": 0,
        "notes": null,
        "elementsJson": [
          "headline_text",
          "paragraph",
          "screenshot"
        ],
        "confidence": 1,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:46.503+00",
          "seconds": 3.122,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/21",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-21",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "Note that the number that is shown in the URL is the teacher's User Number. Each user on genshuixue.com and gaotu100.com have their own unique User Number.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:20+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d3-2aa3a214f121",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.23,
            "w": 0.62,
            "x": 0.19,
            "y": 0.3
          },
          "kind": "image",
          "text": "Screenshot of teacher qualification page on genshuixue.com",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Image",
              "slug": "image",
              "status": "active",
              "canonId": "019de52c-f978-701f-a720-51d029d769e7",
              "version": 1,
              "description": "Photo, illustration, screenshot or icon."
            },
            "tool": null,
            "subkind": {
              "name": "Screenshot",
              "slug": "screenshot",
              "status": "active",
              "canonId": "019de52c-fd87-7509-8391-3d79fb339379",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "screenshot",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.503+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "89ff699b-39d6-4bdc-a0af-945699ee811e",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.06,
            "w": 0.7,
            "x": 0.15,
            "y": 0.23
          },
          "kind": "paragraph",
          "text": "On Genshuixue.com each teacher has their own profile page that you can visit. This differs from gaotu100.com which only has a large image of all of their teachers on their platform. When clicking on a teacher's profile picture you are taken directly to their profile page.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.503+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "22f14d52-5b37-45a6-939d-b41cf183fdf1",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.05,
            "w": 0.7,
            "x": 0.15,
            "y": 0.12
          },
          "kind": "paragraph",
          "text": "When examining the genshuixue.com website there is a listing of teachers and tutors on the following page: https://www.genshuixue.com/npc/teacherQualification",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.503+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "e0eafdb1-f9f2-4890-80c0-737152cc727f",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.04,
            "w": 0.7,
            "x": 0.15,
            "y": 0.55
          },
          "kind": "paragraph",
          "text": "Note that the number that is shown in the URL is the teacher's User Number. Each user on genshuixue.com and gaotu100.com have their own unique User Number.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.503+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "f104c205-31c9-4a67-9e27-fd7344e3c0e7",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.03,
            "w": 0.7,
            "x": 0.15,
            "y": 0.09
          },
          "kind": "title",
          "text": "Appendix 2: Methodology for Differentiating Teachers & Tutors from Student in the Data",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.503+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "4e0f22ec-b1e2-40f3-89c0-bd7b899bac66",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.02,
            "w": 0.3,
            "x": 0.15,
            "y": 0.2
          },
          "kind": "title",
          "text": "Identifying Teachers by User Number",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.503+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "bd4922e8-be11-4b1d-9c86-98b94f540043",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 25,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 11,
          "name": "Solution (Provide relief)",
          "beatId": "22b51ee0-c483-4634-ab46-435735227a51",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Solution (Provide relief)",
            "slug": "problem-agitate-solution-solution-provide-relief",
            "status": "active",
            "canonId": "019dd9b8-0fee-73e9-9ae5-799c7f3895cd",
            "version": 1,
            "description": null
          },
          "evidence": "The document proposes a methodology for analyzing and addressing bot activity",
          "position": 2,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Resolution",
            "slug": "resolution",
            "status": "active",
            "canonId": "019dd9b8-045d-703b-8dd7-e92aba3ba91b",
            "version": 1,
            "description": "How the deck ends. Required in 19/20 arcs. The exception (Sparkline) ends with new bliss which is functionally a resolution."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 22,
      "type": "resolution",
      "title": "The slide provides a technical walkthrough for data scraping/extraction.",
      "function": "plan_implementation",
      "rawType": "appendix_methodology",
      "block": null,
      "metadata": {
        "slideType": "appendix_methodology",
        "slideTypeCanon": {
          "name": "Appendix methodology",
          "slug": "appendix_methodology",
          "status": "active",
          "canonId": "019de52d-07d9-726c-8599-167f2d2ffaa7",
          "version": 1,
          "description": null
        },
        "function": "plan_implementation",
        "functionCanon": {
          "name": "Plan implementation",
          "slug": "plan_implementation",
          "status": "active",
          "canonId": "019de52d-14a2-77ea-b210-d6a95eed4823",
          "version": 1,
          "description": null
        },
        "density": "balanced",
        "densityScore": 26,
        "componentCount": 4,
        "textChars": 905,
        "nDataPoints": 0,
        "notes": "The slide provides a technical walkthrough for data scraping/extraction.",
        "elementsJson": [
          "screenshot",
          "numbered_list",
          "paragraph"
        ],
        "confidence": 1,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:46.18+00",
          "seconds": 2.754,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/22",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-22",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": {
            "h": 0.46,
            "w": 0.604,
            "x": 0.198,
            "y": 0.092
          },
          "kind": "image",
          "text": "Screenshot of a teacher profile page with a URL highlighted",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Image",
              "slug": "image",
              "status": "active",
              "canonId": "019de52c-f978-701f-a720-51d029d769e7",
              "version": 1,
              "description": "Photo, illustration, screenshot or icon."
            },
            "tool": null,
            "subkind": {
              "name": "Screenshot",
              "slug": "screenshot",
              "status": "active",
              "canonId": "019de52c-fd87-7509-8391-3d79fb339379",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "screenshot",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.18+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "14b22d4d-8968-4a8b-aab0-709fb22a6c05",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.165,
            "w": 0.763,
            "x": 0.118,
            "y": 0.563
          },
          "kind": "list",
          "text": "1. Open Google Chrome Developer tools and browse to: https://www.genshuixue.com/npc/teacherQualification\n2. Click the Network tab.\n3. Click the XHR tab (this shows data that your browser is requesting).\n4. Filter on the word “assistant” (in English) and then refresh the page.\n5. You will see a request going out to: https://www.genshuixue.com/sapi/viewLogic/teacher/assistantTeacherList?appType=6&cursor=0&size=30&hasMore=true&subject=5\n6. By examining the data in the Preview pane of the Network response, you can see there is data that provides us with the User Number (it is called Teacher Number in the screenshot below) for a tutor.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "List",
              "slug": "list",
              "status": "active",
              "canonId": "019de52c-f94b-779b-a53b-fd4904a5f4d2",
              "version": 1,
              "description": "Bullet or numbered list."
            },
            "tool": null,
            "subkind": {
              "name": "Numbered list",
              "slug": "numbered",
              "status": "active",
              "canonId": "019de52c-fcc0-7718-a284-a4250c805df2",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "numbered",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.18+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "9a1c25c8-4d00-42bf-9fe0-fcf4cf122ab7",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.035,
            "w": 0.763,
            "x": 0.118,
            "y": 0.514
          },
          "kind": "paragraph",
          "text": "Identifying tutors by their user number is slightly more difficult since tutors do not have their own profile pages. To find a tutor's user number we have to do the following:",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.18+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "3b9fd5a7-d83e-4b37-baed-4b559d133bf3",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.019,
            "w": 0.373,
            "x": 0.118,
            "y": 0.483
          },
          "kind": "title",
          "text": "Identifying Tutors by User Number",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.18+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "6ffa81ff-2436-41ac-8dd7-463af5925d6f",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 25,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 11,
          "name": "Solution (Provide relief)",
          "beatId": "22b51ee0-c483-4634-ab46-435735227a51",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Solution (Provide relief)",
            "slug": "problem-agitate-solution-solution-provide-relief",
            "status": "active",
            "canonId": "019dd9b8-0fee-73e9-9ae5-799c7f3895cd",
            "version": 1,
            "description": null
          },
          "evidence": "The document proposes a methodology for analyzing and addressing bot activity",
          "position": 2,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Resolution",
            "slug": "resolution",
            "status": "active",
            "canonId": "019dd9b8-045d-703b-8dd7-e92aba3ba91b",
            "version": 1,
            "description": "How the deck ends. Required in 19/20 arcs. The exception (Sparkline) ends with new bliss which is functionally a resolution."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 23,
      "type": "analysis",
      "title": "Includes a screenshot of browser developer tools showing a JSON response mapping a teacher's profile to a specific User Number.",
      "function": "analyze_data",
      "rawType": "appendix_methodology",
      "block": null,
      "metadata": {
        "slideType": "appendix_methodology",
        "slideTypeCanon": {
          "name": "Appendix methodology",
          "slug": "appendix_methodology",
          "status": "active",
          "canonId": "019de52d-07d9-726c-8599-167f2d2ffaa7",
          "version": 1,
          "description": null
        },
        "function": "analyze_data",
        "functionCanon": {
          "name": "Analyze data",
          "slug": "analyze_data",
          "status": "active",
          "canonId": "019de52d-1590-7413-8c82-cc218cff40b4",
          "version": 1,
          "description": null
        },
        "density": "dense",
        "densityScore": 53,
        "componentCount": 6,
        "textChars": 1722,
        "nDataPoints": 3,
        "notes": "Includes a screenshot of browser developer tools showing a JSON response mapping a teacher's profile to a specific User Number.",
        "elementsJson": [
          "screenshot",
          "paragraph"
        ],
        "confidence": 1,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:51.346+00",
          "seconds": 7.84,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/23",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-23",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "After examining a number of records manually and matching them up with the User Numbers identified for teachers and tutors, we found that the user type field tells us teachers are identified as “Type=1, tutors as “Type=2” and students as “Type=0.”",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:20+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d3-c92504a6fdcf",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.53,
            "w": 0.66,
            "x": 0.17,
            "y": 0.09
          },
          "kind": "image",
          "text": "Browser developer tools showing network request and JSON response for teacher profile",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Image",
              "slug": "image",
              "status": "active",
              "canonId": "019de52c-f978-701f-a720-51d029d769e7",
              "version": 1,
              "description": "Photo, illustration, screenshot or icon."
            },
            "tool": null,
            "subkind": {
              "name": "Screenshot",
              "slug": "screenshot",
              "status": "active",
              "canonId": "019de52c-fd87-7509-8391-3d79fb339379",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "screenshot",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:51.346+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "e02d2852-7686-4c21-9892-fcd14a46aea0",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.06,
            "w": 0.78,
            "x": 0.11,
            "y": 0.54
          },
          "kind": "paragraph",
          "text": "Here we can see the tutor's User Number (Teacher Number) is 330361798. We can then look up that number in our database class records.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:51.346+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "29c4db60-849e-4375-8618-6e27afed6800",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.18,
            "w": 0.78,
            "x": 0.11,
            "y": 0.72
          },
          "kind": "paragraph",
          "text": "After examining a number of records manually and matching them up with the User Numbers identified for teachers and tutors, we found that the user type field tells us teachers are identified as \"Type=1, tutors as \"Type=2\" and students as \"Type=0.\" In our dataset of 29 teachers and 371 tutors, 100% of the teachers listed on genshuixe.com were marked Type 1 users and 100% of the tutors listed on genshuixe.com were marked Type 2 in our database. All remaining records were Type 0 which we conclude are the student users (non-teacher, non-tutors). Gaotu100.com does not publish an up to date listing of teachers, only a poster-like yearbook style photo of some of their teachers. However, as all fields in our dataset between genshuixe.com and gaotu100.com are identical, we assume that the Type field is identical between both platforms.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:51.346+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "a29b9075-5f57-4cbe-9b3f-daa4d9168b12",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.09,
            "w": 0.78,
            "x": 0.11,
            "y": 0.63
          },
          "kind": "paragraph",
          "text": "Once we have the User Number, we are able to do direct queries in our database of classes, to examine what classes they were involved in, and their join/leave patterns for those classes. When reviewing the teacher and tutor records from the website we noticed that there was a user \"type\" field that was present in both genshuixe.com and gaotu100.com records.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:51.346+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "e34bd5a5-261f-41e6-905c-96fbc1ce6830",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.03,
            "w": 0.55,
            "x": 0.11,
            "y": 0.59
          },
          "kind": "title",
          "text": "Identifying All Teachers, Tutors and Students in Our Dataset",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:51.346+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "0c08c70b-0e46-40b4-8b25-ec68afbcb752",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 25,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 11,
          "name": "Solution (Provide relief)",
          "beatId": "22b51ee0-c483-4634-ab46-435735227a51",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Solution (Provide relief)",
            "slug": "problem-agitate-solution-solution-provide-relief",
            "status": "active",
            "canonId": "019dd9b8-0fee-73e9-9ae5-799c7f3895cd",
            "version": 1,
            "description": null
          },
          "evidence": "The document proposes a methodology for analyzing and addressing bot activity",
          "position": 2,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Resolution",
            "slug": "resolution",
            "status": "active",
            "canonId": "019dd9b8-045d-703b-8dd7-e92aba3ba91b",
            "version": 1,
            "description": "How the deck ends. Required in 19/20 arcs. The exception (Sparkline) ends with new bliss which is functionally a resolution."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 24,
      "type": "analysis",
      "title": "The slide provides evidence of identity verification by cross-referencing user IDs, IP addresses, and avatar URLs against public teacher profiles.",
      "function": "analyze_data",
      "rawType": "appendix_data",
      "block": null,
      "metadata": {
        "slideType": "appendix_data",
        "slideTypeCanon": {
          "name": "Appendix data",
          "slug": "appendix_data",
          "status": "active",
          "canonId": "019de52d-078a-745b-9ee4-c15f2f539acd",
          "version": 1,
          "description": null
        },
        "function": "analyze_data",
        "functionCanon": {
          "name": "Analyze data",
          "slug": "analyze_data",
          "status": "active",
          "canonId": "019de52d-1590-7413-8c82-cc218cff40b4",
          "version": 1,
          "description": null
        },
        "density": "dense",
        "densityScore": 72,
        "componentCount": 8,
        "textChars": 1567,
        "nDataPoints": 24,
        "notes": "The slide provides evidence of identity verification by cross-referencing user IDs, IP addresses, and avatar URLs against public teacher profiles.",
        "elementsJson": [
          "paragraph",
          "data_table"
        ],
        "confidence": 1,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:46.981+00",
          "seconds": 3.359,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/24",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-24",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "We then performed queries for each particular type of user (Type 0, 1 and 2), and then cross checked all users to see which matched up to the same IP addresses used by the Type 1 and Type 2, the known teachers and tutors.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:21+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d4-16ab66d9b0de",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.075,
            "w": 0.764,
            "x": 0.118,
            "y": 0.545
          },
          "kind": "paragraph",
          "text": "For the teacher above, we see their User Number is 813942178 and their name Teacher Zhang (张镇老师) matches that in their teacher account. In our data we also have an Avatar field (cut from above for formatting). This is the profile picture for an account. For the above user the Avatar URL is: https://imgs.genshuixue.com/176512378_yc9r2tpn.png. This matches the face and profile picture of the teacher shown on the Genshuixue.com teacher page.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.981+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "087793e7-ce12-4387-98c7-a27d59699370",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.045,
            "w": 0.764,
            "x": 0.118,
            "y": 0.093
          },
          "kind": "paragraph",
          "text": "We then performed queries for each particular type of user (Type 0, 1 and 2), and then cross checked all users to see which matched up to the same IP addresses used by the Type 1 and Type 2, the known teachers and tutors. Below are examples of query results for a Type 1, Type 2, and Type 0.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.981+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "603d7130-f8fd-46f1-a9b9-3718a2c2e74f",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.075,
            "w": 0.764,
            "x": 0.118,
            "y": 0.785
          },
          "kind": "paragraph",
          "text": "For the tutor 330361798 above, the Type field set to 2. The name is Little Yu Teacher (B 岳雨豪~小雨老师). The “B” appears to be indicative of their assignment to the Beijing office. The Avatar for this user is set to: https://imgs.genshuixue.com/114226777_z0vg9fku.jpeg. This matches the profile picture of the tutor on the Genshuixue.com website.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.981+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "98fb4948-6c6b-49a7-b318-041e446f8002",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.335,
            "w": 0.764,
            "x": 0.118,
            "y": 0.185
          },
          "kind": "table",
          "text": "Table showing User_Number, Type, Group, Name, Actual_Name, IP_Address, and Location for Type 1 teacher.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Table",
              "slug": "table",
              "status": "active",
              "canonId": "019de52c-f9c8-7148-8119-eaac9594cd28",
              "version": 1,
              "description": "Tabular data layout."
            },
            "tool": null,
            "subkind": {
              "name": "Data table",
              "slug": "data",
              "status": "active",
              "canonId": "019de52d-02d5-75b8-8abf-88e92bf63569",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "data",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.981+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "6ca684df-6414-4a1d-adf4-eb6d2be1f835",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.105,
            "w": 0.764,
            "x": 0.118,
            "y": 0.662
          },
          "kind": "table",
          "text": "Table showing User_Number, Type, Group, Name, Actual_Name, IP_Address, and Location for Type 2 tutor.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Table",
              "slug": "table",
              "status": "active",
              "canonId": "019de52c-f9c8-7148-8119-eaac9594cd28",
              "version": 1,
              "description": "Tabular data layout."
            },
            "tool": null,
            "subkind": {
              "name": "Data table",
              "slug": "data",
              "status": "active",
              "canonId": "019de52d-02d5-75b8-8abf-88e92bf63569",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "data",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.981+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "788bf79f-e885-4f42-b490-6cfbdbc8372e",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.015,
            "w": 0.25,
            "x": 0.118,
            "y": 0.158
          },
          "kind": "title",
          "text": "Query results for a Type 1 teacher:",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Subtitle",
              "slug": "subtitle",
              "status": "active",
              "canonId": "019de52c-fb09-739d-900c-815b0d9ac526",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "subtitle",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.981+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "55433f5e-d2a3-436b-b171-6a6a0aaf16a9",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.015,
            "w": 0.25,
            "x": 0.118,
            "y": 0.635
          },
          "kind": "title",
          "text": "Query Results for a Type 2 tutor:",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Subtitle",
              "slug": "subtitle",
              "status": "active",
              "canonId": "019de52c-fb09-739d-900c-815b0d9ac526",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "subtitle",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:46.981+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "795acfe2-ee25-4343-8b6a-359e6a9d4c76",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 25,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 11,
          "name": "Solution (Provide relief)",
          "beatId": "22b51ee0-c483-4634-ab46-435735227a51",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Solution (Provide relief)",
            "slug": "problem-agitate-solution-solution-provide-relief",
            "status": "active",
            "canonId": "019dd9b8-0fee-73e9-9ae5-799c7f3895cd",
            "version": 1,
            "description": null
          },
          "evidence": "The document proposes a methodology for analyzing and addressing bot activity",
          "position": 2,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Resolution",
            "slug": "resolution",
            "status": "active",
            "canonId": "019dd9b8-045d-703b-8dd7-e92aba3ba91b",
            "version": 1,
            "description": "How the deck ends. Required in 19/20 arcs. The exception (Sparkline) ends with new bliss which is functionally a resolution."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    },
    {
      "page": 25,
      "type": "analysis",
      "title": "This slide provides empirical evidence to support the classification of 'Type 0' users as students.",
      "function": "analyze_data",
      "rawType": "appendix_methodology",
      "block": null,
      "metadata": {
        "slideType": "appendix_methodology",
        "slideTypeCanon": {
          "name": "Appendix methodology",
          "slug": "appendix_methodology",
          "status": "active",
          "canonId": "019de52d-07d9-726c-8599-167f2d2ffaa7",
          "version": 1,
          "description": null
        },
        "function": "analyze_data",
        "functionCanon": {
          "name": "Analyze data",
          "slug": "analyze_data",
          "status": "active",
          "canonId": "019de52d-1590-7413-8c82-cc218cff40b4",
          "version": 1,
          "description": null
        },
        "density": "balanced",
        "densityScore": 25,
        "componentCount": 3,
        "textChars": 759,
        "nDataPoints": 5,
        "notes": "This slide provides empirical evidence to support the classification of 'Type 0' users as students.",
        "elementsJson": [
          "paragraph"
        ],
        "confidence": 1,
        "extraction": {
          "model": "google/gemini-3.1-flash-lite-preview-20260303",
          "runId": null,
          "at": "2026-05-02 20:48:47.107+00",
          "seconds": 2.914,
          "promptVersion": "v2-canon-conditioned"
        }
      },
      "links": {
        "slide": "/slides/019dd923-622c-750b-8b97-11abf671ba12/25",
        "deck": "/decks/019dd923-622c-750b-8b97-11abf671ba12",
        "deckAnchor": "/decks/019dd923-622c-750b-8b97-11abf671ba12#slide-25",
        "deckJson": "/decks/019dd923-622c-750b-8b97-11abf671ba12.json"
      },
      "components": [
        {
          "bbox": null,
          "kind": "callout",
          "text": "We therefore are highly confident that a Type 0 user is a student.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Callout",
              "slug": "callout",
              "status": "active",
              "canonId": "019de52c-f8d3-761a-8953-7d37080de5e2",
              "version": 1,
              "description": "Highlighted callout box."
            },
            "tool": {
              "name": "Visual emphasis",
              "slug": "visual-emphasis",
              "status": "active",
              "bestFor": null,
              "canonId": "019dd9e1-474b-736b-a8eb-a794dd88241c",
              "version": 1,
              "bodyDocId": null,
              "description": "Drawing the eye to one element above the rest of the slide.",
              "familyLabel": null
            },
            "subkind": null,
            "framework": null
          },
          "subkind": null,
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-04-22 23:45:20+00",
            "model": "unknown-legacy",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "019dd953-5371-75ed-83d3-97a4fb79e4b3",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.125,
            "w": 0.764,
            "x": 0.118,
            "y": 0.125
          },
          "kind": "paragraph",
          "text": "We could not discover profiles for Students in the same way that Teachers have profiles. Instead, we turned to reviews that we collected from Genshuixue.com to assist in validating that a Type 0 user is a Student. We collected 948,158 reviews, and from those reviews we discovered 5,789 unique users making reviews in our user activity database that had written 29,245 reviews. Of these a total of 5,787 (99.9%) were student (Type 0) unique reviewers, with just 2 (0.03%) coming from teacher (Type 1) accounts. There were no reviews discovered that were written by a tutor (Type 2) account. We therefore are highly confident that a Type 0 user is a student.",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "5f2affc0-941d-4d07-959d-4bfc1930cea4",
              "version": 1,
              "description": "Single prose block in the body of a slide."
            },
            "tool": null,
            "subkind": {
              "name": "Paragraph",
              "slug": "paragraph",
              "status": "active",
              "canonId": "019de52c-fb80-75af-aa5c-a7a4bfac2433",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "paragraph",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:47.107+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "76ef3e60-84cb-42dd-9bc7-972d8de399a8",
          "parentComponentId": null
        },
        {
          "bbox": {
            "h": 0.02,
            "w": 0.31,
            "x": 0.118,
            "y": 0.094
          },
          "kind": "title",
          "text": "Verifying Type 0 users are Students:",
          "attrs": null,
          "canon": {
            "kind": {
              "name": "Title",
              "slug": "title",
              "status": "active",
              "canonId": "019de52c-f7dd-76d9-b848-b1f12bd85cf4",
              "version": 1,
              "description": "Slide title or headline."
            },
            "tool": null,
            "subkind": {
              "name": "Headline",
              "slug": "headline",
              "status": "active",
              "canonId": "019de52c-fae1-7463-9a7c-d60668eced0d",
              "version": 1,
              "description": null
            },
            "framework": null
          },
          "subkind": "headline",
          "groupRole": null,
          "confidence": null,
          "extraction": {
            "at": "2026-05-02 20:48:47.107+00",
            "model": "google/gemini-3.1-flash-lite-preview-20260303",
            "runId": null,
            "seconds": null,
            "promptVersion": null
          },
          "componentId": "0263d979-80f7-4301-90f9-cca4f42766ec",
          "parentComponentId": null
        }
      ],
      "metrics": [],
      "tools": [],
      "frameworks": [],
      "arcBeats": [
        {
          "to": 25,
          "arc": {
            "name": "Problem-Agitate-Solution",
            "slug": "problem-agitate-solution",
            "status": "active",
            "bestFor": "Sales pitches, urgency-driven, competitive displacement",
            "canonId": "019dd956-5ec6-70f9-9fd8-fdbaaff39acf",
            "version": 1,
            "bodyDocId": "019df22a-2356-73eb-8061-d8c81dc0aa49",
            "structure": "Problem (Identify pain) -> Agitate (Make it worse) -> Solution (Provide relief)",
            "description": null,
            "familyLabel": null
          },
          "from": 11,
          "name": "Solution (Provide relief)",
          "beatId": "22b51ee0-c483-4634-ab46-435735227a51",
          "matchId": "c37051c0-5707-4b21-be93-3ea136864679",
          "beatType": {
            "name": "Solution (Provide relief)",
            "slug": "problem-agitate-solution-solution-provide-relief",
            "status": "active",
            "canonId": "019dd9b8-0fee-73e9-9ae5-799c7f3895cd",
            "version": 1,
            "description": null
          },
          "evidence": "The document proposes a methodology for analyzing and addressing bot activity",
          "position": 2,
          "isPrimaryArc": true,
          "parentBeatType": {
            "name": "Resolution",
            "slug": "resolution",
            "status": "active",
            "canonId": "019dd9b8-045d-703b-8dd7-e92aba3ba91b",
            "version": 1,
            "description": "How the deck ends. Required in 19/20 arcs. The exception (Sparkline) ends with new bliss which is functionally a resolution."
          },
          "alignedBlockIds": null,
          "matchConfidence": 0.8
        }
      ],
      "loops": [
        {
          "to": 25,
          "from": 2,
          "loop": {
            "name": "01_logic_chain",
            "slug": "01-logic-chain",
            "status": "active",
            "bestFor": "Skeptical audiences, controversial recommendations, rigorous analysis",
            "canonId": "019dd956-6638-7457-8650-9b0b42e59fb3",
            "version": 1,
            "bodyDocId": "019df22a-2420-77be-bc41-ded96d08cb21",
            "structure": "Premise 1 (Accepted truth) -> Premise 2 (Observed fact) -> Therefore... (Inevitable conclusion)",
            "description": "Build an airtight chain of logic where each premise leads inevitably to the conclusion",
            "familyLabel": null
          },
          "matchId": "d873e137-3595-43d1-825d-9d9b226b165e",
          "evidence": "The document presents a series of logical steps to analyze and address bot activity",
          "position": 0,
          "objective": "To present a logical chain of evidence and analysis to support the conclusion",
          "confidence": 0.7,
          "extraction": {
            "at": "2026-07-16 21:58:28.320505+00",
            "model": "or:meta-llama/llama-4-scout",
            "runId": null,
            "seconds": null,
            "promptVersion": "doc-narrative-v1"
          }
        }
      ],
      "locked": true
    }
  ],
  "arcBeats": [
    {
      "from": 2,
      "to": 4,
      "label": "Problem (Identify pain)",
      "description": "The document highlights the issue of bot activity on GSX Techedu's platform"
    },
    {
      "from": 5,
      "to": 10,
      "label": "Agitate (Make it worse)",
      "description": "The document presents data on the frequency and impact of bot joiners"
    },
    {
      "from": 11,
      "to": 25,
      "label": "Solution (Provide relief)",
      "description": "The document proposes a methodology for analyzing and addressing bot activity"
    }
  ],
  "loops": [
    {
      "from": 2,
      "to": 25,
      "label": "Logic Chain",
      "description": "To present a logical chain of evidence and analysis to support the conclusion"
    }
  ]
}