Data Sources
Where AIEO.ee's SEO and GEO numbers come from — mock, DataForSEO, Search Console, scraped AI products and official AI APIs with web search.
In demo mode (DEMO_MODE=true, the default outside production) the
platform runs end-to-end with zero external keys. In production the SEO data
provider must be configured — there is no silent mock fallback. This page
maps every number in the product to its source so you always know what you
are looking at.
SEO / SERP data
| Mode | When | What you get |
|---|---|---|
| Mock provider (demo only) | DEMO_MODE=true and no DataForSEO configured | Deterministic weighted SERP data so rank tracking, gaps and competitor discovery all function. Good for evaluation and demos; not real Google positions. |
| DataForSEO | DATAFORSEO_LOGIN + DATAFORSEO_PASSWORD set (env or admin console) | Real keyword metrics (volume, difficulty, CPC, intent), keyword ideas and live SERP snapshots on demand. Domain-level pages are local aggregations of your tracked data; backlinks read the stored profile (no live backlink provider yet). |
Outside demo mode, a rank/research call without DataForSEO configured
fails loudly (DataForSEO is not configured) rather than fabricating
positions. SERP depth is a platform setting (default 100).
Google Search Console
Connect GSC (Settings → Sites) to import your real query/page performance:
- OAuth with a one-time state; you pick the property after authorizing.
- Tokens are stored encrypted; sync pulls site totals by day plus detail by query+day and page+day, re-pulls the last 3 days each run to settle late-arriving data, and advances its cursor only after a fully successful run.
- Powers the Search Analytics page: clicks, impressions, CTR, average position, and query-level trends.
GSC is optional and independent of DataForSEO.
GEO / AI-answer data
AIEO.ee tracks the AI engines below. Every one of them has real retrieval behind it, and every run says how its answer was obtained:
| Engine | How we get the answer | Vendor | Who runs the search |
|---|---|---|---|
| ChatGPT | Real product UI (scraped) | DataForSEO LLM Scraper | ChatGPT |
| Gemini | Real product UI (scraped) | DataForSEO LLM Scraper | Gemini |
| Perplexity | Real product UI (scraped) | Bright Data | Perplexity |
| Qwen | Official API, web search on | Alibaba Bailian | Alibaba Cloud |
| DeepSeek | Official DeepSeek model + official Search API, search loop run by AIEO | DeepSeek | DeepSeek |
| Doubao (coming soon: not yet runnable on a paid account) | Official API, web search on | Volcengine Ark | Volcengine |
- Your prompt is sent as written. There is no system prompt and no instruction to "answer like a search engine".
- Citations come only from the vendor's structured source list, never parsed out of the answer text. ChatGPT, Gemini, Perplexity and Doubao report which sources the answer cited. Qwen and DeepSeek report what their search returned; those pages are shown as retrieved sources and do not count toward the citation rate.
- Scraped answers are what a user of that product sees. API answers are an approximation of the consumer app: the official API with web search on does not reproduce the app's own system prompt or content sources.
- Search queries (fan-out): shown when the vendor exposes them (ChatGPT does; Gemini does not). DeepSeek shows the exact queries its model searched.
- DeepSeek is not DeepSeek's own app answering. AIEO sends your prompt to
the official
deepseek-flashmodel with deep thinking off, the model must search at least once through DeepSeek's official Search API, and it gets at most three rounds and six searches before it answers. - Timing. Scraped engines answer asynchronously, usually within minutes and at most about an hour. DeepSeek runs only between 22:00 and 08:00 Beijing time, when its price is lowest; a run triggered during the day is queued until then.
Runs recorded before October 2026 used an older method (LLM role-play "sampling" for most engines). They are kept, labeled Legacy sampled data, and excluded from current metrics.
The mock provider
With DEMO_MODE=true (the default outside production), deterministic mock
engines answer prompts in each vendor's real response format, so the whole
GEO pipeline — tracking, parsing, share of voice, citations — runs end-to-end
with no keys at all. Mock runs are labeled Demo data. In production the
mock fallback is off: an engine whose vendor is not configured does not run.
AI providers (for the Agent, briefs, analysis)
The Growth Agent, content briefs and analyses call an LLM through a
provider router. Configure any of OpenAI / Anthropic / Gemini / OpenRouter via
environment variables or the platform admin console. These keys are not used
by GEO tracking. Without a configured provider (and
with DEMO_MODE on) these features use the mock provider.
Summary
| Feature | Demo mode, no keys | Needs |
|---|---|---|
| Rank tracking & gaps | mock | DataForSEO |
| Search Analytics | — | Google Search Console |
| GEO: ChatGPT, Gemini | mock | DataForSEO |
| GEO: Perplexity | mock | Bright Data |
| GEO: Qwen | mock | Alibaba Bailian |
| GEO: DeepSeek | mock | DeepSeek API key |
| GEO: Doubao | mock | Volcengine Ark |
| Agent / briefs | mock | an OpenAI-compatible LLM key |
Every run is labeled in-product: real product UI, official API with web search, demo data, or legacy sampled data. The platform never presents fabricated data as a real answer.