| observation_id | string | Stable identifier: <project>-<platform>-<prompt-id>-<YYYYMMDD>-r<run>. Example: chatgpt-perth-chatgpt-p001-20261001-r01. |
| research_project | string | Slug of the research project the observation belongs to (matches the research collection entry). |
| prompt | string | The exact prompt text submitted, unedited. |
| prompt_id | string | Identifier of the prompt within the project's fixed prompt set, so repeated runs of the same prompt can be grouped. |
| query_class | enum | informational, commercial, comparison, recommendation, local, brand, competitor, trust-validation |
| buyer_stage | enum | awareness, consideration, decision, retention, not-applicable |
| industry | string | Industry slug from the observatory list (dentists, lawyers, mortgage-brokers, accountants, plumbers, electricians, builders, solar, real-estate, seo-agencies) or 'general'. |
| location | string | Geographic context named in the prompt or the session, e.g. 'Perth, Western Australia'. |
| platform | enum | chatgpt, google-ai-overviews, google-ai-mode, gemini, perplexity, claude, copilot |
| model_or_surface | string | The model or surface as the platform labelled it at the time, e.g. 'GPT-5 (web, search on)', 'AI Overview on google.com.au'. |
| observation_date | string | |
| observation_time | string | Local time of the run, HH:MM. |
| timezone | string | |
| run_number | integer | Sequence of this repeat within the observation round. Repeated runs are how session variance is measured. |
| session_profile | enum | Which controlled session the run used. Divergence between profiles on the same prompt is itself a measurement. |
| brands_mentioned | array | Every business or brand named anywhere in the response. |
| brands_recommended | array | Brands the response presented as a recommendation or shortlist entry, a subset of brands_mentioned. |
| brand_order | array | brands_recommended in the order the response listed them. |
| citations_present | boolean | |
| cited_urls | array | |
| cited_domains | array | Registrable domains of cited_urls, deduplicated, lower case. |
| source_classes | array | Classification of each cited domain. |
| response_notes | string | Free-text notes on the response: format, hedging, refusals, non-Perth results. |
| region_or_session_notes | string | Anything about location handling, personalisation or logged-in state that could affect the run. |
| source_capture | string | Path or URL of the screenshot or raw capture for this run. |
| methodology_version | string | Methodology version the run was collected under, e.g. '1.0'. |
| evidence_type | string | |