PILOT · W30real engine answers · small pilot wave · wide intervals by designSynthetic probes · not real user sessions · this wave 100% L3 · answers L1 elicited

Veliu Research Lab · methodology luce-live-v0

How the board is built

The rules below are enforced in code at the database, the API envelope and the render layer. A page that breaks one does not build.

Dated methodology changelog. Grammar changes, statistical thresholds and the methodology identities used for citations.

01What the board measures

Luce publishes the probe-design mention rate: how often a brand appears in an engine's answers when probed with the Luce grammar. The exact estimand is stamped on every response and printed next to every table. The board reads engine output: which brands the answers put forward, and how often.

How a brand is detected. A mention is resolved against a closed roster: each brand carries a canonical name and an explicit alias list, and an answer counts as mentioning that brand only when it matches one of them. The roster is deliberately narrow, so a common word that is also a brand name is not counted on the strength of the word alone. This buys precision at the cost of recall: a rate published here is a floor, and a brand whose name is an ordinary word may be undercounted. The roster and its aliases ship with the wave.

02The provenance ladder

Every stored row carries a provenance tier. Worst tier wins on any aggregate, and observed rows never pool with synthetic rows.

tierwordmeaningpublication
L0observedcaptured in situ from a real engine surfacepublishable
L1eliciteda real engine answer collected by direct elicitationpublishable
L2derivedcomputed from real rows by transformationdiagnostics only
L3syntheticgrammar-generated probes; every prompt in this wave uses synthetic grammarpublishable with the mandatory synthetic label
L4 ·templatesynthetic scaffoldingnever published

03The fidelity firewall

A published cell holds exactly one engine surface at exactly one provenance tier. Two surfaces never fuse into one number, ChatGPT web app and ChatGPT API included. Research-only surfaces (RAG reconstruction, raw crawl) never reach a public page. The same predicate gates the database schema, the API handlers, and every render function on this site; each layer re-checks it rather than trusting the layer upstream.

04Counting before collapsing

Estimators pool the raw 0/1 trials from every repetition of every prompt. Collapsing repetitions into a per-prompt majority vote before counting is biased; the stats package carries the proof. The prompt is the independent unit, so confidence intervals come from a cluster bootstrap over prompts. A normal approximation on the pooled trials would report a tighter interval than the data supports.

05Rank ranges and leagues

A rank is published as a range from the joint bootstrap, together with the league it chains into. A single fixed position would hide the rank uncertainty the resampling actually reports. Brands whose intervals chain together share a league. A brand measured too imprecisely to rank is listed as unranked and says so.

06Movement

An arrow fires only when a change-point clears the false-discovery gate and beats its minimum detectable effect at the cell's realized precision. Every other state renders as itself: stable, drift watch (provisional), insufficient waves, or no movement claim at all when the latest wave is too imprecise.

07Sample sizing

Cells are sized by relative precision: the interval half-width must come in under a quarter of the observed rate, so rarely-mentioned brands need more probes rather than fewer. An under-powered cell still publishes, flagged, with its uncertainty exposed.

08The probe log

Every row in the probe log leads with its server-stamped provenance chip and is dropped without one. Synthetic prompts render as muted slot templates so a generated probe can never read like a fluent user session. The pinned band above the log states the wave's synthetic share and cannot be removed. The log for this wave is below.

SYNTHETIC PROBES · not real user sessions · this wave 100% L3
  1. L1 elicited2026-07-15 19:49:02 UTCchatgpt-apiopenai_nativeen-UScategory running-shoesASICS · Brooks · HOKA · New Balanceorder not scored
  2. L1 elicited2026-07-15 19:49:02 UTCchatgpt-apiopenai_nativeen-UScategory wireless-earbudsSoundcore · Jabra · Sonyorder not scored
  3. L1 elicited2026-07-15 19:49:02 UTCgeminigemini_nativeen-UScategory running-shoesAdidas · ASICS · Brooks · HOKA · New Balance · Nike · On Running · Sauconyorder not scored
  4. L1 elicited2026-07-15 19:49:02 UTCgeminigemini_nativeen-UScategory wireless-earbudsSoundcore · AirPods · Bose · Jabra · Sonyorder not scored
  5. L1 elicited2026-07-15 19:49:02 UTCperplexityperplexity_sonaren-UScategory running-shoesAdidas · ASICS · Brooks · HOKA · New Balance · Nike · Sauconyorder not scored
  6. L1 elicited2026-07-15 19:49:02 UTCperplexityperplexity_sonaren-UScategory wireless-earbudsAirPodsorder not scored
  7. L1 elicited2026-07-15 19:49:02 UTCchatgpt-apiopenai_nativeen-UScategory running-shoesASICS · Brooks · HOKA · New Balance · Nikeorder not scored
  8. L1 elicited2026-07-15 19:49:02 UTCchatgpt-apiopenai_nativeen-UScategory wireless-earbudsAirPods · Bose · Sonyorder not scored

09Governance

Published by Veliu Research Lab. Veliu sells services to brands measured here. That disclosure appears on every page. Ranked cells carry no purchase prompt and no superiority badge. The board is brand-agnostic: no brand is baked in as a benchmark or reference.

10Reproducibility bundles

Every published cell ships a JSON bundle at /bundle/{waveId}/{cellId}.json, linked from that cell's claim page. It carries the same numbers the page shows, each with its 95% interval, its sample and its provenance tier, together with the prompt ids and the captured answers the cell was computed from, the estimator behind the intervals, the precision gate the cell was held to, and the governance disclosure.

A wave's numbers are final when the wave closes. Until then an adaptive run can publish the same wave more than once, so its sample can still grow. A corrected read closes under a new wave id, and every figure is pinned to the wave id it names.

Every closed wave keeps its address: /claim/{waveId}/{cellId} and /bundle/{waveId}/{cellId}.json resolve for every wave this board has closed. One exception: a snapshot build published without the database behind it carries the current wave and the one before it, and drops older claims. This board publishes its serving mode at /api/health, where pg is the database-backed board and wave is the snapshot build.

/claim/{cellId} is an alias that follows the newest wave which measures the cell, falling back to the last wave that published it. It redirects temporarily because it is built to keep moving.

A bundle carries the results and what is needed to audit them: which prompts, which captured answers, which estimator, which gate, and every figure with its interval and its sample. It does not carry the per-prompt observation vectors, the bootstrap seed or the replicate count, so the resampling cannot be re-run from the file alone. That is an audit trail with the identifiers to follow, and the raw observation layer is a separate publication.

In a bundle, measuring is true exactly when the cell is below the precision gate. The gate result is also carried in gate.passed.

Bundles declare schemaVersion: luce-claim-bundle-2. The field-by-field schema is published at /bundle-schema.

11This pilot wave

Everything on this build is a live pilot wave (luce-live-w30) at tier L1 elicited, over real brands, probed with the Luce synthetic grammar at tier L3. It is a small wave: intervals are wide, and the coverage table below states exactly how many cells clear the precision gate. The board renders the cells that fall short with their wide intervals shown rather than hiding them. A larger wave swaps in behind the same store interface without changing a single template.

This wave records no engine cost. A wave that records one publishes the figure here.

estimand: probe and precision coverage counts over Luce grammar luce-live-v0; diagnostic only; not demand-weighted

180API calls · en-US boardsynthetic grammar probes · per-market split on coverage
0 of 6cells past the precision gate · engine APIsthe wave is small on purpose, so the intervals stay wide and we say so
L1 elicited 100%provenance mixcounts per tier · inventory only
engine surfaceAPI callscaptured answersprompt clusterscells passing precision gatecategories
chatgpt-api openai_native60not applicable600 / 2Running shoes, Wireless earbuds
gemini gemini_native60not applicable600 / 2Running shoes, Wireless earbuds
perplexity perplexity_sonar60not applicable600 / 2Running shoes, Wireless earbuds
chatgpt-web consumer_uinot applicable7878below the gateRunning shoes, Wireless earbuds, Coffee machines, Robot vacuums, Air fryers