How Citeon AI measures: 21 words, one definition each, from the code
Every number on Citeon AI is one of 30 words, and every word has one definition, taken from the code that computes it. This page prints those definitions as they stand in the method document, with the place in the code where each is computed. The dashboard's tooltips and its Settings > Method page use the same words; the build fails if the lists drift.
- 30 words, one definition each, each with the file or table that computes it.
- A missing measurement is no answer, never a zero; an engine that showed nothing is not shown, never 0.
- A re-read answer can change its verdict, never its text, and every re-read is written to a corrections ledger.
The question and the answer
- Question (prompt)
- A buyer question asked to each AI engine, in its own language, from the workspace's country. Every question is asked every second scan (two halves on alternate days); a new or missed question joins the next scan.Computed in engine/rotation.py, lib/scan-schedule.ts
- Answer
- One engine's reply to one question in one scan. Stored in full with the sources it cites. An attempt that returned nothing is stored as an attempt with its reason, never as an answer.Computed in engine/store_snapshot.py, prompt_results, prompt_attempts
- No answer
- The latest attempt for that question got nothing back from the engine: a timeout, an error, or Google showing no AI Overview for that search. Never counted as absent, never as zero.Computed in prompt_attempts, lib/prompt-stats.ts
The four verdicts on an answer
- Named (product)
- A product's or collection's full title appears in an answer, whole words only; a one word title needs eight letters or more and navigation labels never count. Written when the answer is stored, with the sentence as evidence.Computed in engine/catalog.py hits_for_answer
- Recommended
- Named, and the judge reads the answer as presenting the brand as a pick, not a passing mention. For Google AI Overviews and AI Mode, where no judge runs: named and cited.Computed in engine/audit.py, engine/cutover_v2.py restate_row
- Cited (product)
- An answer links that product's or collection's page (locale prefix and query ignored). Cited pages are stored since 8 October 2026; earlier answers cannot show it.Computed in engine/catalog.py, prompt_results.urls
- Absent
- The engine answered, and the brand is neither named nor cited.Computed in lib/prompt-stats.ts
The rates and the score
- Mention rate
- Answers that name the brand, as a share of all answers in the window. The score tooltip calls it "how often AI engines name you".Computed in engine/audit.py (per scan), engine/rollup.py (rolling)
- Recommendation rate
- Answers that recommend the brand, as a share of all answers in the window.Computed in same
- AI visibility score
- 0 to 100: 60% of the mention rate plus 40% of the recommendation rate, over the scans of the last 28 days, each day in the window weighted equally. Not the GEO score.Computed in engine/audit.py line "score = round(100 * (0.6 * mention_rate + 0.4 * rec_rate))", engine/rollup.py
- Engine score
- The same formula on one engine's answers only. Engines are independent scores, not shares of one total. An engine with no answer shows "not shown" (Google showed nothing) or "no answer", never 0.Computed in engine/rollup.py engine_scores
Against the competitors
- Rank (share of voice)
- The brand's place among the tracked brands by share of voice, 1 = most named. Unknown when nobody was named in the scan; last when rivals were named and the brand was not.Computed in engine/audit.py _share_of_voice
- Position
- Among the tracked competitors named in the same answer, how many are named before the brand, plus one. 1 = named first. Only exists when at least one tracked rival is named in that answer.Computed in engine/matcher.py position
- Rank among every brand named
- The same count over every brand the judge listed in the answer, not only tracked rivals (Peec's documented rule). Shown on the row from ten ranked answers.Computed in lib/prompt-stats.ts rankAmongNamed
Citations
- Citations
- How many times the brand's own pages were cited across the scan's answers. Per engine on the Citations page.Computed in engine/audit.py client_citations
Time, corrections and storage
- Window
- 28 days unless the page says otherwise. The Prompts page offers 7, 14 and 28.Computed in lib/prompt-stats.ts, app/dashboard/[section]/page.tsx
- Restart
- When the workspace's country is set or changed, the days asked from another country leave the average; the chart marks the day.Computed in engine/market.py comparable
- Restatement
- A stored answer re-read with the current method or names; the verdict can change, the answer text never does. Every restatement writes a line to the corrections ledger with the number of answers that changed.Computed in engine/cutover_v2.py, metric_corrections
- Retention
- Answers keep their verdict, their judge quote, their cited pages and domains for good. The answer text is kept for 120 days, then cleared; attempts are deleted after 120 days. An answer without text is never re-read.Computed in engine/store_snapshot.py, engine/cutover_v2.py
The site, not the answers
- GEO score
- The site audit's grade of the site's readiness for AI search (crawlability, structured data, content), on the Reports page. Not the visibility score: that one measures the answers.Computed in engine/geo_audit.py
Also defined
- Catalogue
- The shop's own collections and products, read from the shop each week (Shopify's public listing first). Collections a shopper can reach come first; merchandising and app collections are kept but never shown.Computed in engine/catalog.py, Prompts
- Readiness (product)
- Which of the fields the shopping surfaces need a product page's own markup gives: the OpenAI product feed's required fields and Google's merchant listing fields, required and recommended, with Google's title and description length rules. Read by the monthly site audit for the product pages in its sample; a product not in a sample yet says not checked. The shop's own name meets the feed's seller name.Computed in engine/product_readiness.py
- Cross check (traffic)
- GA4's AI Assistant channel shown beside Citeon's own tracking over GA4's own window, never instead of it. When the two differ by more than a third the page says why: GA4 can be blocked by browsers and extensions, app visits land in GA4's Direct, and GA4 key events are whatever the site defines where Citeon leads are contacts only.Computed in components/dashboard/TrafficPage.tsx
- What AI sends people to
- The pages AI visitors landed on, grouped by kind (products, collections, articles, home, other). A catalogue page shows its title, the stored answers that cite it and the tracked question with the most answers that touches it; a page outside the catalogue shows a dash for those two, not a zero.Computed in lib/landing-kinds.ts, Traffic
- Visited (product)
- An AI session, by the tracking's session rule, landed on that page in the window. A dash when tracking is not installed; a real zero when it is and nobody landed there.Computed in lib/pulse.ts aiLanding
- Asked (product)
- A tracked question shares a word with the item's title (the same rule as the win plan), shown with the share of those questions' answers that name the brand. A dash when no question touches it.Computed in lib/catalog-signals.ts
Why the words are published
A score you cannot reproduce is a score you cannot trust. Every figure in the dashboard, in a free audit report and on the data page is one of these words applied to stored answers, and every answer keeps its verdict, its judge quote and its cited pages so the figure can be opened to the sentence it came from. When a definition changes, the stored answers are re-read and the change is logged with the number of answers it moved; the answer text is never edited.
One word, one definition, one place in the code. Not measured is empty, never zero.
Citeon AI, the method rule
Questions people ask
What is the AI visibility score?
0 to 100: 60% of the mention rate plus 40% of the recommendation rate, over the scans of the last 28 days, each day in the window weighted equally. Not the GEO score.
When does an answer count as naming a business?
A product's or collection's full title appears in an answer, whole words only; a one word title needs eight letters or more and navigation labels never count. Written when the answer is stored, with the sentence as evidence.
What happens when an engine gives no answer?
The latest attempt for that question got nothing back from the engine: a timeout, an error, or Google showing no AI Overview for that search. Never counted as absent, never as zero.
Is share of voice a share of answers?
Of every time an answer named one of the tracked brands (the brand and its tracked competitors), the share that named this brand. Example: the brand named 4 times, rivals 12 times in total, share 25%. It is a share of names, not a share of answers.
Is the GEO score the same as the visibility score?
The site audit's grade of the site's readiness for AI search (crawlability, structured data, content), on the Reports page. Not the visibility score: that one measures the answers.
How long are answers kept?
Answers keep their verdict, their judge quote, their cited pages and domains for good. The answer text is kept for 120 days, then cleared; attempts are deleted after 120 days. An answer without text is never re-read.
Sources
- docs/METHOD.md in the Citeon AI repository. the document this page is built from, checked against the code on 7 October 2026
- Settings > Method in the Citeon AI dashboard. the same words, phrased to the workspace owner; the build fails if the two lists differ
- Citeon AI measurements, 24 August to 7 October 2026. 7,552 answers scored with these definitions