AI engines

Which AI surfaces Geonimo measures, why they are scraped from the real consumer UI, and how the calibration panel works.

Geonimo measures the AI surfaces your buyers actually use, by capturing what those surfaces really show — not by asking an API to approximate them.

The engines

EngineSurfaceCollected daily
chatgpt_uiChatGPTYes
google_aioGoogle AI OverviewsYes
perplexity_uiPerplexityYes
google_ai_modeGoogle AI ModeYes
gemini_uiGeminiDeferred

Every prompt is sent to three engines a day. Google AI Overviews is targetable to city level; the assistant surfaces are country-level, which is as fine as they route.

Two classes, never mixed

Engines fall into two classes, and the distinction is load-bearing:

Scraped UI (scraped_ui) — the real consumer interface, captured as a user would see it. This is ground truth: personalization, routing, ads, shopping carousels and all. It is the daily collection path and the source of every number on your dashboard.

Grounded API (api_grounded) — provider APIs called with web search enabled, run as a small calibration panel of a few hundred calls a week. Its job is to quantify the gap between what an API returns and what the real UI shows, and to act as a backstop if a scraper breaks.

The two never blend into one metric. Engine is part of the primary key on the daily metrics table, so an API reading can never be silently averaged into a UI number.

Why scrape the UI instead of calling the API

This is the methodological centre of the product, and it is the question every serious buyer asks.

An API answer is not what a user sees. The consumer surfaces route between models, personalize, inject ads and shopping units, and format answers differently — none of which the API reproduces. Measuring the API tells you what a model would say if asked in a laboratory. Measuring the UI tells you what your buyer read this morning.

There is a cost argument too — scraped results run roughly five to ten times cheaper per result than grounded API calls — but fidelity is the reason. The cost is what makes running every prompt daily affordable.

The collection vendor sits behind an adapter seam, so it is replaceable without touching anything downstream, and the calibration panel is the always-available fallback.

What a captured answer contains

Every engine adapter normalizes into one shape, so nothing downstream knows which surface produced it:

  • Answer text, plus markdown where the engine provides it (AI Overviews does not)
  • Citations, each with its rank and whether it was quoted inline against a claim or merely listed in a sources panel
  • Fan-out queries — the sub-searches the engine ran, where it exposes them
  • The answering model, where the surface reports it
  • Grounded — whether the answer actually surfaced sources
  • Surface metadata — AI Overview presence, displayed tabs, ads and shopping units
  • Parse status — whether the capture parsed cleanly, so a broken capture is visible rather than counted as an absence

Inline versus listed citations

Worth stating on its own, because most tools collapse the two.

A source quoted inline is the engine attributing a sentence to you. A source listed in the panel is the engine saying it read you. Measured across captured AI Overviews, the two barely overlap — on the order of 9 panel URLs against 134 inline references in the same corpus. Collapsing them throws away most of the signal, so Geonimo keeps both counts and shows them separately in Sources.

Per-engine differences you will notice

  • Fan-out visibility — ChatGPT exposes the searches it ran; other surfaces expose fewer or none. An empty fan-out list is a property of the engine, not of your prompt.
  • Citation shape — AI Overviews carries a source panel and inline references; Perplexity cites natively; ChatGPT's differ again.
  • Answer format — some engines return markdown, some return plain text.
  • Volatility — the same prompt run twice can name different brands. This is inherent, and it is why every metric ships with a confidence interval. See Metrics.

Location

Every prompt carries the country it is tracked in, and engines localize aggressively — the brands recommended in Germany differ from those recommended in the United States. If you sell into several markets, track them deliberately rather than assuming one measurement generalizes.

Adding engines

Engines are one entry in a configuration file plus an adapter. Adding one does not disturb existing history, because metrics are stored per engine — new surfaces start their own series rather than rewriting yours.