Korpora

Methodology

Korpora measures cross-channel agent mindshare. The full methodology is below, prioritising mechanical verifiability over editorial judgment. Every number in any report we ship is defined here and challengeable by the reader's engineering team.

Six things Korpora measures that AEO platforms don't

  • Organic vs evaluation-stage split. Subject-blind queries (where the model hasn't been told your company exists) reported separately from subject-named queries. The spread is the cold-start diagnostic. No competitor publishes this split.
  • Multi-round variance. 3 rounds per cell, 108 cells in the consumer panel (144 when a developer vertical adds a fourth model). Wilson 95% confidence intervals on every per-cell share. Competitors report daily snapshots as definitive; Korpora reports the variance band.
  • Subject-blind query construction. Queries are generated from category vocabulary, not from the subject company. Competitors let customers pick the prompts they get measured on, which produces measurable selection bias.
  • Cross-channel upstream framing. The AI-answer surface is downstream of the foundation channels (HN, Reddit, X, GitHub, arXiv) on a 6 to 12 month lag. Korpora measures both layers and ties them together. Competitors measure the surface only.
  • Measures, then hands you the fix. Every finding ships with a ranked, paste-ready engineer fix for the exact gap it found, aimed at the surface or channel the measurement says you are losing. The score comes with the move that changes it.
  • Both AI layers, East and West, in-language. The same battery runs across the Western models (ChatGPT, Claude, Gemini) and the Chinese frontier models (Qwen, DeepSeek), in English and in Mandarin, plus the Chinese-web corpus. A company can lead one layer and be invisible in the other; the gap is the lever. The in-language work is founder-led (a degree in Chinese language and literature), not machine-translated. No AEO platform measures the Eastern layer at all.

External validation: a pre-registered field study by Geoff Gibbins (2026) finds citation rate and AI selection rate correlate only about r = +0.26. Being cited is nearly unrelated to being chosen, which is the empirical case for measuring selection, not mention.

We measure how a company surfaces in AI assistant recommendations against its real competitors, then triangulate that against the traditional buyer channels every intelligence tool currently tracks. The output is a live operator dashboard: the AI-mindshare findings, a per-rival capability map, and a set of ranked action cards, each carrying a paste-ready engineer prompt and a brand-risk callout. What is measured live today versus still being built is laid out directly below. A machine-readable JSON sidecar ships alongside for any agent or analytics pipeline that wants the same numbers.

What's live today, and what's still being built

Live, in every report

  • Organic AI mindshare: unprompted recall on subject-blind queries, the output metric every report leads with.
  • The organic vs evaluation-stage split, with the cold-start spread diagnostic.
  • Both AI layers, East and West, in-language: the Western models and the Chinese models (Qwen, DeepSeek), English and Mandarin.
  • Wilson 95% confidence intervals and multi-round variance on every share.
  • The per-rival capability map and the ranked action cards.

Being built (design-partner phase)

  • Foundation-channel velocity as a calibrated leading indicator (one cycle in, not yet backtested).
  • Ecosystem health and agent-readiness as continuous cross-customer metrics (GitHub presence is the interim proxy).
  • The compounding flywheel from mindshare to traffic (the thesis; magnitudes validate over the pilot).
  • First-party Chinese-model access and deeper Mandarin-corpus reads.

Today Korpora delivers the output metric, organic AI mindshare, rigorously and across both AI layers. The three input metrics and the velocity-to-flywheel coupling are being built out with design partners. We mark which is which rather than imply the whole system already ships.

How AI builds an answer (and where it pulls from)

The four metrics below are the measurement substrate. This section is the model they measure against: how an AI assistant actually constructs a recommendation, validated against the largest public datasets in the field (Profound's 4B+ citations, NP Digital's 4,300-prompt study, McKinsey, Wynter) and our own runs.

prompt ─▶ fan-out ─▶ retrieve from corpus ─▶ triangulate ─▶ name a few
          (3-9 sub-     (Reddit, Wikipedia,    (~6 sources,    (the shortlist
           queries)      YouTube, niche subs,   cited together   a buyer sees)
                         reviews, editorial)    in packs)

It searches early, then stops. Only ~18% of ChatGPT conversations trigger a live web search, and the opening question drives most citations (they decay sharply after turn 1). You win the first research question, not the follow-up.

The corpus is third-party, not your own domain. Across every engine the most-cited sources are conversational and reference UGC, not brand sites. Ranked by citation share (Profound, aggregated across ChatGPT, Perplexity, and Google AI):

Reddit       ███████████  #1 most-cited domain across all engines
Wikipedia    ████████     the default "what" layer (~1 in 6 cited convos)
YouTube      ██████       85% of its citations are specific videos, not channels
niche subs   █████        treated as subject-matter experts; 3-5 chosen per topic
reviews/G2   ████         the verification layer buyers bounce to
LinkedIn     ███          B2B; people + posts (~25% each), not company pages
X / Twitter  ▏            a CITATION DEAD ZONE, barely registers

The X collapse matters for this methodology. X has been API-locked since 2023, so it barely feeds new training corpora, and Profound's live-citation data confirms the models almost never surface it. We now read X as attention-footprint, not a corpus channel, the same bucket as Meta and TikTok.

Three separate scoreboards. Google rank, ad spend, and AI recall are not the same number. ChatGPT's sources overlap Google's top results only ~39% (Profound). Ranking #1 on Google is about a 31% chance of landing in the AI answer, and 75% of AI citations come from outside Google's top 10 (NP Digital). The gap between what a company spends or ranks for and what AI actually says is the diagnostic this whole instrument exists to measure. One caveat: you must be in Google's index to appear in AI at all, so indexing is the floor, ranking #1 is not the goal.

Whether the AI can even read you (the supply side). Two technical realities decide if a page is eligible. AI crawlers do not execute JavaScript, so content must be server-rendered into the initial HTML, client-only sites are invisible to them. And engines retrieve passages, not whole pages, so each section has to stand alone as an answer. Backends differ per model too: Claude mirrors Brave (~87% overlap), ChatGPT uses Bing but re-ranks heavily, so per-model strategy is real.

Why it is worth measuring. McKinsey projects $750B of consumer spend through AI search by 2028, with 71% of buyers starting the purchase journey there. 84% of CMOs now use LLMs for vendor discovery, up 4x in a year (Wynter). The channel is already deciding shortlists.

The headline figures above are third-party (Profound, NP Digital, McKinsey, Wynter). The battery below is how Korpora applies this model to one specific company.

The four core metrics

Every Korpora report is organized around four core metrics. One strategic output, three inputs that drive it. Findings come from the deltas between metrics; no single number in isolation is the headline.

                         OUTPUT
            ┌──────────────────────────────┐
            │  Organic AI mindshare        │  ← unprompted AI recall
            │  (the metric that matters)   │     quarters · training cycles
            └──────────────────────────────┘
                         ↑
                         │  findings = deltas between
                         │      inputs and output
                         │
                      INPUTS
  ┌──────────────────────┴──────────────────────┐
  │                      │                      │
  ▼                      ▼                      ▼
┌───────────────┐  ┌────────────────┐  ┌──────────────────┐
│ Human channel │  │ Ecosystem      │  │ Agent-readiness  │
│ velocity      │  │ health         │  │ (product side)   │
└───────────────┘  └────────────────┘  └──────────────────┘
HN / Reddit / X    deps · users ·       task success · docs
weeks              integrations         · MCP · llms.txt
                   weeks                weeks

Organic AI mindshare (output). What AI assistants recommend unprompted, when a buyer types a category-shaped query like “best on-demand staffing platform” without naming any company. The honest measure of agent-channel position. Slowest to respond to intervention (bounded by training-corpus cycles, roughly 6-12 months past the latest model cutoff), but the metric that ultimately matters.

Human channel velocity (input 1). Publication rate and post-cutoff acceleration on the channels that feed training corpora: Hacker News, Reddit, X, Substack, technical blogs, podcasts. Korpora moves this directly through content drafts, methodology pieces, and channel-specific recommendations. Observable weekly. Our hypothesized leading indicator for next-cycle organic mindshare lift; the predictive link is not yet backtested (Korpora is one measurement cycle old).

Ecosystem health (input 2). Breadth and depth of who depends on, integrates with, or actively uses the product. Three sub-signals: builder / developer ecosystem (GitHub dependents, package downloads, community projects for software subjects; app-store ratings and deployed-customer count for consumer and operator subjects); integration partners (other companies that embed or distribute the product); and end-user / customer base (active accounts, sessions, retention, engagement). For MCP-equipped products, agent sessions are a distinct user type that belongs in this metric. Ecosystem is a hypothesized leading indicator of mindshare; an ecosystem-vs-mindshare gap usually signals that the attachment (whether developer, integration, or user) is invisible to indexed surfaces, and the work is making it visible. Full measurement (dependents API, downloads, integration inventory, customer-supplied user counts) is being expanded during the current design-partner phase; GitHub presence is the interim proxy.

Agent-readiness (input 3). Product quality from an agent's perspective. Task-completion pass rate on a representative task battery (for a software subject: real API calls; for a consumer or operator subject: can an agent complete a real purchase, booking, or shift-fill against your surface), documentation freshness against the current API surface, MCP server quality where one exists, /llms.txt presence, error message quality, schema completeness. Low agent-readiness with high organic mindshare is the most dangerous configuration: agents recommend the product, users try it, hit walls, and the reputation erodes by the next training cycle. Generalized measurement (across customers, not just per-customer task batteries) is being expanded during the current design-partner phase.

Aggregate mindshare is intentionally not on this list. It mixes subject-blind and subject-named query types, conflating true buyer-discovery interest with model compliance when the company name is supplied in the prompt. Aggregate is kept in the JSON sidecar for backward comparison but is not rendered on the report, so it can never be mistaken for the headline. See the organic-vs-evaluation section below.

Findings come from the deltas. A report's executive summary, per-rival capability map, and engineering-actionable fix list are organized around the largest gap between an input metric and the output metric, or between two input metrics. Single numbers tell you a value; deltas tell you what to do about it. Concrete patterns (not exhaustive):

  • High organic + low agent-readiness → reputation exceeds reality; users hit walls; mindshare will erode in 1-2 cycles unless the product is fixed.
  • Low organic + high agent-readiness → under-marketed, not under-built; focus on human channels and ecosystem visibility.
  • High ecosystem + low organic → developers depend on the product but agents do not recommend it; integration footprint is invisible to indexed surfaces.
  • High human channel velocity + low organic → publishing the wrong content, or in channels with weak corpus weight, or simply too early in the cycle.
  • Low ecosystem + high agent-readiness → the product works for agents but nobody is building on it; ecosystem is a leading indicator of mindshare and this gap will become a mindshare gap.

East and West: both AI layers, in-language

There is not one AI layer; there are two, trained on different corpora and reading different webs. Korpora runs the same battery across both: the Western frontier models (ChatGPT, Claude, Gemini) and the Chinese ones (Qwen, DeepSeek), and it asks the questions in the language a buyer would actually use, English and Mandarin. Alongside the model layer we read the Chinese-web corpus the Eastern models train on (Baidu, and considered-answer surfaces such as Zhihu and Baidu Baike), the same way we read the Western one.

This matters because the same company routinely reads two completely different ways depending on the language of the question. A company can dominate the English AI layer and be invisible in Chinese, or the reverse, recommended by the Chinese models while it has never thought to look. That gap is not noise; it is often the most actionable finding in the measurement, and almost no company knows it about itself, because nobody else measures the Eastern models or measures in-language.

The in-language work, query design, company-name extraction, and reading the Chinese corpus, is founder-led: Korpora's founder holds a degree in Chinese language and literature. The Chinese layer is read natively, not machine-translated, which is the difference between a measurement a China-exposed buyer trusts and the tourist-level fluency they spot in the first line.

Honest scope. Chinese-model coverage today is Qwen and DeepSeek (via an aggregator, not yet first-party), and the Chinese-web corpus read is a directional SERP pull, not a census. First-party Chinese-model access including Ernie, native-platform corpus depth (Zhihu, Baidu Baike, WeChat), and larger Mandarin batteries are on the roadmap. The capability is live; the depth is still being built.

The flywheel: why this compounds

The four metrics are the measurement substrate. The reason to invest in them is the flywheel they sit inside: organic AI mindshare is becoming the universal upstream layer for both agent traffic and human traffic in the AI-mediated discovery era.

        ┌─→ Product ────→ Agent-readiness ─────┐
        │                                       │
        │                                       ▼
[Spend] ┤                                Organic AI mindshare ──→ Agent traffic
        │                                       ▲                + Human traffic
        │                                       │                  │
        └─→ Growth ────→ Human channel ────────┤                  │
                         velocity               │                  │
                       + Ecosystem health ──────┘                  │
                                                                   │
        ▲                                                          │
        │                                                          │
        └────── revenue + usage signals ◄─────────────────────────┘
                  fund the next investment cycle

Agent traffic is obviously routed through AI mindshare. When Claude, ChatGPT, Cursor or Codex recommends a product's MCP, an agent shows up at that product's endpoint. Pure causation. As MCP-equipped agents proliferate, agent traffic is AI mindshare made manifest.

Human traffic is increasingly routed through AI mindshare too. When a person asks ChatGPT “what on-demand staffing platform should I use for hourly workers” and clicks through to a recommended company, that human visit was created by that company having organic AI mindshare in the category. The fraction of human discovery that goes through AI assistants is rising on every cohort measurement, and the trend is monotonic. In the next two to three model generations it is plausible that AI-mediated discovery is the dominant top-of-funnel for any company whose buyer uses an AI assistant for research.

The loop closes. Traffic generates revenue (Growth fuel) and usage signals (Product fuel). Both fund the next round of investment into the three input metrics, which drive more organic AI mindshare, which drives more traffic. This is a real compounding loop, not a measurement endpoint. The bet a customer makes when they sign with Korpora is that investing in AI mindshare now compounds into traffic on the next two to three training cycles.

Honest pushback on the flywheel. The shape is directionally correct; the magnitudes are uncertain. We do not yet have cross-customer evidence of how much agent traffic actually translates to revenue, how strong the human-traffic-through-AI link is for any specific category, or how predictable the compounding is cycle-over-cycle. The flywheel is the thesis Korpora is investing in; the pilot data over the next 12 to 18 months is what validates the magnitudes. Methodology refinement (see “Continuous methodology refinement” in customer agreements) is part of the work.

Why Product and Growth both belong on this flywheel. Product investments move agent-readiness; Growth investments move human channel velocity and the user side of ecosystem health. Different teams, different levers, same upstream layer (organic AI mindshare), same downstream payoff (traffic that fuels the next investment cycle). The four-metric framework gives both teams a measurement they can move week-to-week and a coupling claim to the strategic outcome they share.

Continuous re-measurement

Every company we report on is re-measured on every major model release (Claude, GPT, Perplexity). Training cutoffs shift, agent rankings shift, velocity shifts; a one-shot report goes stale within months of the next model generation.

Korpora treats measurement as an ongoing series rather than a single-point snapshot. Every run is added to the Korpus: Korpora's own accumulating body of measurements, distinct from a model's training corpus. Reports surface deltas between the most recent snapshot and the prior one so the reader sees what moved when a new model shipped, and a deeper Korpus is what lets lift estimates get calibrated over time.

Foundation channels

The instrument maintains a library of buyer-signal channels, shown in full below. A measurement does not render all of them: it draws the subset where that category's buyers actually discover and compare, indexed to the vertical rather than presented as one fixed co-equal set.

Channel        Source                                   Record type
─────────────  ───────────────────────────────────────  ───────────────
AI search      DataForSEO AI search-volume + mentions    demand / citation
Google         Google Keyword Planner volume data        monthly_volume
Reddit         Reddit public JSON (ScraperAPI fallback)   post / comment
X (Twitter)    Xquik API                                 tweet
Instagram      Apify graph capture                        post engagement
TikTok         Apify graph capture                        video engagement
Meta ads       Meta Ad Library                            active creative
Hacker News    Algolia search API                        story / comment
GitHub         Octokit search API                        repo
arXiv          arXiv Atom XML API                         paper
G2 / app store Public review + listing pages             review / rating

The library splits in two. The corpus-feeding subset (Reddit, Hacker News, GitHub, arXiv) is what the velocity model below reads, because those surfaces are scraped into the next training cycle and a rising publication rate there is a leading indicator of next-cycle mindshare. Meta ad inventory, Instagram, TikTok, and now X are attention-footprint context: they show where spend and attention land today, but they no longer meaningfully enter what the models learn or cite (X has been API-locked since 2023 and barely registers in AI citations per Profound), so they are read as footprint rather than corpus velocity. Which corpus-feeding channels actually carry signal is itself vertical-indexed: a consumer sleep-tech subject reads Reddit, a developer-tools subject reads GitHub and Hacker News, an academic-adjacent subject reads arXiv.

Channel weighting is per-vertical, set to where buyer-discovery actually surfaces for that category. A DTC or ecommerce subject weights AI-search demand + Instagram + TikTok + Meta ad inventory heavily; an on-demand or marketplace subject weights Reddit + app-store rating + X; a developer-tools or AI-infrastructure subject weights GitHub + Hacker News + Reddit; a B2B SaaS subject weights G2 + Reddit + X; an academic-adjacent subject weights arXiv + GitHub. Review and listing signals are included only when the competitive set has measurable presence. Channels where no competitor has a footprint are skipped rather than reported as 0-vs-0 ties, because that result tells the reader nothing about positioning.

Agent-layer measurement

Per measurement we run a battery of buyer-decision queries across three always-on frontier models and three rounds: 108 cells for the default consumer panel (12 × 3 × 3). The panel is matched to the vertical, so developer and AI-infrastructure subjects add a fourth model (144 cells). Larger subjects scale up to 576 cells.

Battery shape per measurement (default consumer panel)

  queries per round (12)
  ┌──────────────────────────────────────────┐
  │ direct-comp ×3 | use-case ×3 |           │
  │ discovery   ×3 | differentiation ×3      │
  └──────────────────────────────────────────┘
                    ×
  always-on models (3)      rounds (3)
  Claude Sonnet 4.6         round 1
  Claude Haiku 4.5          round 2
  GPT-5.5                   round 3
                    =
  12 × 3 × 3 = 108 cells (consumer default)

  + vertical-matched 4th model = 144 cells
      developer / AI-infra : GPT-5.3-Codex (live)

  East/West: a parallel Mandarin battery runs the same
  four framings through the Chinese models for
  China-exposed subjects:
      Qwen + DeepSeek × Mandarin queries × 3 rounds
      (Pictet, Airwallex each add a 72-cell cn battery)

The fourth model slot is matched to the vertical, so the panel reflects the assistants that category's buyers actually use. Developer and AI-infrastructure subjects use GPT-5.3-Codex (the panel behind the early published batteries), which keeps those measurements at 144 cells. Consumer and operator subjects dropped Codex as inappropriate and currently run the three always-on models (108 cells); the vertical-matched fourth model for those panels is added once the assistant that category's buyers actually reach for is validated, which restores 144 cells. Retrieval-augmented models that search at answer time are read for live recommendation behavior and excluded from the static training-cutoff velocity model described below.

Each query runs against each model under a fixed instruction that presents the buyer-decision question and requires the model to return a short, ranked set of specific named products. The prompt wording is held constant across every cell in a measurement so the cells stay comparable.

Raw responses captured verbatim. Company-name extraction via case-insensitive regex with per-company override matchers for tricky cases (multi-word names, company names that collide with common English words).

Organic vs evaluation-stage mindshare (methodology v2)

Two of the four standard query framings name-check the subject in the prompt itself, which forces every model response to engage with the company regardless of whether the model has real corpus knowledge of it. Counting those cells as “mindshare” conflates real buyer-evaluation interest with model compliance and hallucination. Methodology v2 splits the aggregate into two metrics that measure different things.

Framing                  Subject named   Counts toward
                         in prompt?      ─────────────────
discovery                no              organic mindshare
use-case                 no              organic mindshare
direct-comparison        yes             evaluation-stage mindshare
differentiation          yes             evaluation-stage mindshare

Organic mindshare is the subject-blind framings only: discovery(“what are the leading platforms in X?”) and use-case(“what tool should I use to do Y?”). A hit here means the model surfaced the company unprompted while a buyer was researching the category. This is the honest measure of mindshare and the number every report leads with.

organic_share = Σ subject hits in (discovery + use-case cells)
                ──────────────────────────────────────────────────
                total cells in (discovery + use-case framings)

Evaluation-stage mindshare is the subject-named framings: direct-comparison (“X vs Y”) and differentiation(“what makes X different from Y?”). For companies the model genuinely knows, this reflects real buyer evaluation. For companies the model has no knowledge of, it reflects compliance + hallucination, because the prompt structure forces a substantive answer. It is reported separately, never folded into the headline.

evaluation_share = Σ subject hits in (direct-comparison + differentiation)
                   ────────────────────────────────────────────────────────
                   total cells in (direct-comparison + differentiation)

The spread between the two numbers is itself a diagnostic. Small spread means the model has consistent knowledge of the company across query types. Large spread means the evaluation-stage number is mostly compliance, not real signal.

Spread |evaluation - organic| (pp)   Classification   Reading
───────────────────────────────────  ──────────────   ─────────────────────
narrow                               ALIGNED          Model has real knowledge
                                                      of the company. Both
                                                      numbers reflect buyer
                                                      signal.

moderate                             MODERATE GAP     Model knows the company
                                                      when named, fails to
                                                      surface unprompted.
                                                      Evaluation partly diluted
                                                      by compliance.

wide                                 COLD START       Company is effectively
                                                      unknown to the model.
                                                      Evaluation number is
                                                      mostly compliance and
                                                      hallucination, treat
                                                      organic as the truth.

Worked example from Korpora-on-Korpora (a company with no public web presence yet): organic AI mindshare 0.0% (0/72 subject-blind cells, Wilson 95% CI 0.0–5.1%), evaluation-stage share 93.1% (67/72 subject-named cells, CI 84.8–97.0%). Spread 93pp, classification cold-start. The honest reading is 0% mindshare; the evaluation-stage number is models being polite about a company they have never heard of. See the v2 entry in the changelog for the discovery story.

Thresholds are calibrated estimates and will move as we observe more companies across the well-known / niche / cold-start spectrum. When they move, we re-classify retrospectively on every prior report and note the change in the changelog.

The agent layer as universal aggregator

LLM training corpora are sourced from open foundation channels: Reddit, Hacker News, GitHub READMEs and source, academic papers, public blogs, X. The agent layer is therefore not a separate universe from the foundation channels we measure; it is a weighted aggregation of them.

  Foundation channels                Agent layer
  ──────────────────                  ───────────
  Reddit             ┐
  GitHub             │
  arXiv              │   train next       ┌────────────┐
  HN                 ├───────────────────▶│ Claude/GPT │
  X                  │   model cohort     │  + Cursor  │
  Public blogs       │                    └────────────┘
  Google Search Vol  ┘

  Weights vary per model: Claude weights X less than GPT does;
  Codex weights GitHub heaviest of all.

Two implications follow. First, optimising for AI mindshare is upstream of, not in competition with, foundation-channel work; the same investments serve both. Second, only the indexable subset of foundation channels feeds the aggregation; gated, login-walled, and video-without-transcript content does not propagate.

Training cutoffs and the content deadline

Every model has a training data cutoff documented in the provider's model card. The current battery's cutoffs:

Model              Training cutoff
─────────────────  ────────────────
Claude Sonnet 4.6  Aug 2025
Claude Opus 4.5    Aug 2025
Claude Sonnet 4.5  Jul 2025
Claude Haiku 4.5   Jul 2025
GPT-5.5            Dec 1 2025
GPT-5.3-Codex      Aug 31 2025
Qwen (aggregator)  provider-stated; see note
DeepSeek (aggr.)   provider-stated; see note

Western-panel aggregate cutoff: Dec 1 2025 (latest of the Western models)
Eastern panel (Qwen, DeepSeek): via aggregator, not first-party. Providers
publish cutoffs less precisely than the Western labs, so the Mandarin battery
is read for live recommendation behaviour and held out of the cutoff-deadline
velocity math until first-party access firms the dates.

Three things follow:

  • Corpus measurement lags by 6-12 months. Foundation activity in the months after cutoff isn't yet in any measured corpus, so anything we read from current mindshare reflects content shipped well before today.
  • The lag is a deadline, not a drag. Content shipped today is what trains the next model generation (expected late 2026 / early 2027). Companies waiting until next-gen models ship will be 12-18 months behind, because the content needed to influence those models had to enter the corpus before its cutoff.
  • We measure the durable training-corpus layer. Direct API calls, no web search enabled. Matches API integrations and the recommendation-shaped questions buyers ask on Claude.ai, ChatGPT.com, and Perplexity that typically do not auto-trigger search.

Customer-side measurement: no data egress

When a company wants its own agent-facing surface measured (an API, an app or site, or an MCP server if it ships one), that measurement runs entirely on the customer side. The company computes aggregates inside its own infrastructure and shares only rolled-up numbers; no per-event data ever reaches Korpora.

  Customer's agent surface                   Korpora
  ────────────────────────                   ───────

  ┌─────────────────────┐
  │ wrap(handler)       │
  │   ↓                 │   no network
  │ increment counter   │ ◀────×────▶   (no endpoint exists
  │   ↓                 │    blocked     to receive this data)
  │ in-memory aggregate │
  └─────────────────────┘
       ↓
  customer's own dashboard / analytics

Key properties:

  • No per-event, per-session, per-user, or per-query data captured
  • No network calls; the recipe is zero-dep
  • ~50 lines of pattern code, auditable in a single sitting
  • No vendor lock-in, no supply-chain risk, no update risk
  • Reference implementation at packages/layer1/ for code review (not a recommended dependency)

Customers who want to share these aggregates with us can do so via whatever explicit out-of-band mechanism they choose. There is no protocol or auth path that lets a customer push data to our servers.

Three timing layers of agent effect

The relationship between a company's actions and agent-layer outcomes runs through three layers, each with different timing. This holds for any company; software companies that ship a Model Context Protocol server simply get one extra channel in the first layer.

Layer 1  inference-time (immediate, in-session)
         ──────────────────────────────────────
         What the model surfaces from what it already holds in
         the session. For most companies this is training-memory
         recall. Software companies that ship an MCP get an extra
         channel here: an installed MCP loads tool descriptions
         fresh into every session for that user.

Layer 2  web-search-enabled (live, varies by surface)
         ───────────────────────────────────────────
         On surfaces where search auto-triggers, a query about
         the company surfaces live pages, listings, reviews, and
         recent discussion, even content never in the training
         corpus.

Layer 3  training-corpus (delayed, 6-12 mo)
         ──────────────────────────────────
         Owned pages, press and announcements, forum and social
         discussion, third-party write-ups, catalog and listing
         cross-references. Propagates to the next training cycle.

         ── This is what Korpora's current methodology measures.

We systematically under-credit companies whose relevant content shipped after the current model training cutoffs, because Layer 3 has not caught up yet. A future variant could measure Layer 1 and Layer 2 explicitly (for example, re-running the battery with a software company's MCP installed, or with search enabled, and taking the delta against the baseline), a metric that does not exist anywhere else in the landscape.

Foundation velocity (next-cycle leading indicator)

Every channel connector captures the original-content timestamp on every record. We use these to compute a per-brand per-channel velocity ratio.

velocity(brand, channel) =
    monthly_rate(brand, channel, cutoff < t ≤ now) /
    monthly_rate(brand, channel, 6 mo before cutoff ≤ t ≤ cutoff)

What the number means:

  • velocity > 1.0: company is accelerating into the next training cycle
  • velocity < 1.0: company is decelerating
  • Suppressed when n_pre < 10 (shown as "insufficient pre-cutoff data")
  • 95% CI via log-normal approximation for ratios of two Poisson rates. CIs straddling 1.0 mean direction is uncertain at current sample size.
Example: per-channel velocity for one subject

Reddit             ███████████   3.1×   ↑↑↑  highest corpus-weight channel
GitHub             █████          1.7×   ↑
Hacker News        ███            1.4×   ↑
arXiv              ██             0.8×   →
Google Trends      █              0.6×   ↓
(X read as footprint only now, not a corpus channel)

Companies with velocity > 1.0 on the highest corpus-weight channels are
the ones to bet on for next-cycle mindshare gains.

Currently-measured model cutoffs

Sourced from official provider documentation. Rendered from MODEL_CUTOFFS_MS in code, so this list is always in sync with the assembler.

Cutoff (UTC)Model
2025-12-01gpt-5.5 (and 2 aliases)
2025-08-31codex (and 5 aliases)
2025-07-31haiku (and 2 aliases)

Per-channel corpus weights

Each channel's per-record corpus contribution relative to a 1.0 reference baseline: above means a record on that channel feeds the training corpus more heavily, below means less. These are calibrated estimates anchored on public corpus composition, not measured constants. They parameterise a composite cross-channel measure that is still being validated and is not yet surfaced as a headline number in reports. Rendered from CHANNEL_WEIGHTS in code.

ChannelWeightRationale
hackernews4.0×Highest-weighted corpus channel in the library.
reddit1.5×Strong corpus contributor; weighted above baseline.
twitter0.5×Below-baseline per-record corpus weight.
g20.3×Market-perception signal; low per-record corpus weight.
google-trends0.0×Trend data rather than publishable content; not corpus-feeding (weight 0).

Contested-channel-only principle

Channels where no competitor in the set has measurable presence are excluded rather than reported as 0-vs-0 ties. A G2 review tie at zero tells the reader the channel isn't a buyer-discovery surface for this category, not that positioning is tied.

We surface the exclusion explicitly in the methodology section of each report so the reader knows what was probed and dropped.

Per-framing analysis

A company's headline mention share averages across query types that may favor or disfavor that company independently. Splitting by framing reveals where the company is genuinely competitive vs where its overall share is artifact.

Example: per-framing breakdown for one subject (out of 36 cells each)

Direct-comparison    ████████████████████   100%  (36/36)
Differentiation      ████████████████████   100%  (36/36)
Use-case             ███████████████         75%  (27/36)
Discovery            ░░░░░░░░░░░░░░░░░░       0%  ( 0/36)  ← the signal

Strong recall when prompted by name. No salience unprompted.
The discovery deficit is what surfaces hidden category gaps.

Wilson 95% confidence intervals

Every per-query and aggregate share carries a Wilson 95% CI. Point estimates at n=4 per query are directional; CIs make the uncertainty explicit.

  • Aggregate mindshare (n≈48 obs): CI width typically ±10-15pp
  • Per-query mindshare (n=4 obs): CI width up to ±50pp

The CI structure makes any number in the report defensibly challengeable by the reader's engineering team.

Per-rival deep dives

For each meaningful rival in the agent layer (top 2-3 by mention share), the report includes a capability map: what they claim publicly, what they ship, named customer logos, public outcome metrics, and what content surfaces they're investing in. Each rival compared against the subject on the same dimensions.

Engineering-actionable fix list

6-8 prioritised fixes with target metrics, not generic advice.

Each fix carries:

  [H|M|L]   impact tier
  title     concrete action ("Submit 1 technical arXiv paper")
  detail    specific subreddit / publication / framing / ship event
  metric    expected impact ("discovery share 41% → ≥65% in 12 mo")
  effort    rough sizing (XS / S / M / L)
  ttl       time-to-implement with your agent

Output is ranked by impact ÷ effort.

JSON sidecar schema

Every measurement ships artifact.json alongside the dashboard. Same data, machine-readable shape, designed for your agent or analytics pipeline to consume directly. Schema (abbreviated):

{
  "subject": "Vercel",
  "subject_brand_aliases": ["vercel.com", "Vercel"],
  "report_run": {
    "id": "vercel-2026-Q2",
    "generated_at": "2026-05-25T11:00:00Z",
    "battery_cutoff_iso": "2025-12-01T00:00:00Z",
    "models": ["sonnet-4.6", "haiku-4.5", "gpt-5.5", "codex"],
    "rounds": 3,
    "cells_total": 144
  },
  "agent_layer": {
    "mindshare_pp": 68.8,
    "ci_wilson_95": { "lower": 60.8, "upper": 75.8 },
    "cells_hit": 99,
    "cells_total": 144,
    "by_model": {
      "sonnet-4.6":  { "mindshare_pp": 75, "n": 36 },
      "haiku-4.5":   { "mindshare_pp": 72, "n": 36 },
      "gpt-5.5":     { "mindshare_pp": 60, "n": 36 },
      "codex":       { "mindshare_pp": 67, "n": 36 }
    },
    "by_framing": {
      "direct-comparison": { "mindshare_pp": 100, "n": 36 },
      "use-case":          { "mindshare_pp": 75,  "n": 36 },
      "discovery":         { "mindshare_pp": 0,   "n": 36 },
      "differentiation":   { "mindshare_pp": 100, "n": 36 }
    }
  },
  "foundation_channels": [
    {
      "source": "reddit",
      "n_total": 1095,
      "n_pre_cutoff": 824,
      "n_post_cutoff": 271,
      "velocity_ratio": 2.3,
      "velocity_ci_poisson_95": { "lower": 1.9, "upper": 2.8 }
    }
    // ...one per channel (reddit, x, github, arxiv, hn, google-trends, g2)
  ],
  "competitors": [
    {
      "name": "Netlify",
      "agent_layer_mindshare_pp": 47.9,
      "by_model": { /* per-model breakdown */ },
      "foundation_channels": [ /* per-channel breakdown */ ]
    }
    // ...one per competitor
  ],
  "fix_list": [
    {
      "id": "fix-1",
      "impact": "H",
      "effort": "L",
      "title": "Submit 1 technical arXiv paper",
      "detail": "Cite 10+ prior papers to enter co-citation clusters.",
      "target_metric": "discovery-framing mindshare 0% -> ≥25%",
      "time_to_implement_with_agent": "~3 days"
    }
    // ...6-10 fixes
  ],
  "deliberately_excluded": {
    "channels": ["g2"],
    "reason": "No competitor in set has measurable G2 presence."
  }
}

The sidecar is the contract. The dashboard is a human-friendly render of the same numbers. If a customer disagrees with anything on the dashboard, the dispute is settled by interrogating the sidecar.

Company-name collision protocol

Company names sometimes collide with existing technical terms or libraries. When the case-insensitive regex matcher hits the colliding term, the report can attribute mindshare to a company that didn't earn it.

Pre-flight check we run before every battery:

  • Grep the subject and every competitor name against a registry of high-risk collision categories: programming languages, ML/AI libraries, biology/chemistry terms, common English words, common product names in adjacent categories
  • For any flagged name, tighten the matcher: require an alias that disambiguates (e.g., korpora.ai instead of bare Korpora)
  • Manual review of a sample of raw responses on the first round to confirm matched mentions are actually about the subject company

When we ran Korpora-on-Korpora as our own first measurement, the v1 battery returned 46.5% mindshare. Inspection of raw responses revealed every match was referring to ko-nlp/Korpora (a Korean NLP library), not our product. We tightened the matcher to require korpora.ai or KorporaAI as exact alias and re-ran as v2, the true baseline. Both runs are public; see the changelog.

What we deliberately do not measure

  • Editorial quality. Too subjective and gameable.
  • Self-reported usage. Vendor claims without independent verification are noise.
  • Sentiment polarity inside AI recommendation text. We measure mention share, not whether the model said nice things. Inspection of every report's verbatim quotes confirms framing in context, but headline numbers do not weight by sentiment.

Disputes

Found a methodology gap or want to challenge a signal definition? Methodology is meant to be argued with. Raise it in the chat on korpora.ai and we'll document the change.