{"description":"Structured AEO/GEO model context contract for answer-engine prompts, context surfaces, citation rules, blocked-claim checks, evidence records, QA gates, and stress tests.","objective":"Give a future agent enough structure to start from the main URL and understand how to inspect, plan, build, validate, and improve a serious website without needing prior chat context.","aeo_geo_context":{"objective":"Make answer-engine and generative-engine context explicit, testable, source-bound, and reusable by future agents.","why":"AEO/GEO work cannot rely on normal pages alone. Agents need prompt fixtures, expected answer context, citation paths, source boundaries, blocked-claim checks, and model-review records before claiming answer readiness.","contextSurfaces":[{"id":"llm-entry-surfaces","surface":"llms.txt and llms-full.txt","purpose":"Give models a concise and expanded route into the site's purpose, endpoints, schema, QA, and examples.","evidenceRoutes":["/llms.txt","/llms-full.txt"],"requiredChecks":["Both routes return 200","llms-full.txt includes QA, source traceability, crawl evidence, and contract registry"]},{"id":"schema-entity-surfaces","surface":"JSON-LD and schema endpoint map","purpose":"Expose stable entity facts that match visible page content.","evidenceRoutes":["/schemamap.xml","/schema.json","/services/schema.json","/contact/schema.json"],"requiredChecks":["Schema routes return JSON","Organization and WebSite facts are stable","Service and LocalBusiness facts remain source-backed"]},{"id":"source-boundary-surfaces","surface":"Source traceability and claim ledger","purpose":"Prevent answer engines from receiving unsupported claims as approved facts.","evidenceRoutes":["/source-traceability.json","data/working/example-client-facts.json","data/derived/example-page-brief.json"],"requiredChecks":["Allowed claims name source paths","Blocked claims have no public locations","Answer evidence checks blocked claim IDs"]},{"id":"evaluation-surfaces","surface":"SEO/AEO evaluation, site studies, crawl evidence, and prompt fixtures","purpose":"Turn answer-engine readiness into evidence rather than narrative.","evidenceRoutes":["/seo-aeo-evaluation.json","/site-studies.json","/crawl-evidence.json","data/derived/aeo-geo-context/example-prompt-set.json"],"requiredChecks":["Prompt fixtures exist","Answer evidence fixture exists","Findings map to roadmap and QA gates"]}],"promptFixtures":[{"id":"service-scope-answer","fixturePath":"data/derived/aeo-geo-context/example-prompt-set.json","promptType":"service understanding","expectedEvidence":["/services/","/services/schema.json","/llms-full.txt","/source-traceability.json"],"blockedBehavior":"Do not add service categories beyond approved source facts.","passCriteria":"Answer names only source-backed services and cites visible/schema/LLM context."},{"id":"brightline-service-area-answer","fixturePath":"data/derived/aeo-geo-context/demo-prompt-set.json","promptType":"local entity understanding with fictional boundary","expectedEvidence":["/demo/brightline/","/demo/brightline/service-areas/","/demo/brightline/schema.json","/llms.txt"],"blockedBehavior":"Do not surface the counties without the fictional disclosure, and never present demo facts as real.","passCriteria":"Answer names the three counties and the fictional boundary together, citing visible copy and labeled schema."},{"id":"logpilot-capability-answer","fixturePath":"data/derived/aeo-geo-context/demo-prompt-set.json","promptType":"product capability understanding","expectedEvidence":["/demo/logpilot/product/","/demo/logpilot/schema.json","/source-traceability.json"],"blockedBehavior":"Do not extend the 30/90/365 retention set or imply correlation/alerting capability the pages disclaim.","passCriteria":"Answer states exact capability boundaries including what the product does not do."},{"id":"logpilot-comparison-caveat-answer","fixturePath":"data/derived/aeo-geo-context/demo-prompt-set.json","promptType":"comparison with preserved caveats","expectedEvidence":["/demo/logpilot/comparison/","FAQPage comparison schema"],"blockedBehavior":"Do not strip the where-the-alternative-wins caveat or the as-of dates.","passCriteria":"Answer reproduces the dated factual difference and the case where the alternative is the right choice."},{"id":"reference-system-orientation-answer","fixturePath":"data/derived/aeo-geo-context/demo-prompt-set.json","promptType":"system orientation","expectedEvidence":["/","/llms.txt","/agent-manifest.json"],"blockedBehavior":"Do not frame the reference as a human marketing template.","passCriteria":"Answer states the agent-first purpose and the manifest-first reading order."},{"id":"local-entity-answer","fixturePath":"data/derived/aeo-geo-context/example-prompt-set.json","promptType":"local entity understanding","expectedEvidence":["/contact/","/contact/schema.json","/schema.json","/source-traceability.json"],"blockedBehavior":"Do not claim real production geography until fixture facts are replaced.","passCriteria":"Answer preserves fixture qualifier and cites source-backed service-area context."}],"answerEvidenceRecords":[{"id":"example-supported-answer-record","fixturePath":"data/derived/aeo-geo-context/example-answer-evidence.json","requiredFields":["prompt_id","answer_status","supporting_routes","required_citations","blocked_claim_checks","residual_risk"],"why":"Answer reviews need consistent evidence fields so agents can compare runs across models and dates."},{"id":"baseline-site-grounded-run-2026-06-10","fixturePath":"data/derived/aeo-geo-context/baseline-answer-evidence-2026-06-10.json","requiredFields":["prompt_id","answer_status","supporting_routes","required_citations","blocked_claim_checks","residual_risk"],"why":"The first real dated record: site-grounded runs against the live deployment proving each prompt is answerable from published surfaces, with the honest limit that public answer-engine citations cannot exist before indexing."}],"citationRules":["Every answer-ready claim should be traceable to a visible route, schema endpoint, LLM surface, or source artifact.","Answers must cite source-traceability records for claims that could otherwise drift.","Blocked claim IDs must be checked before marking an answer supported.","Model outputs should preserve qualifiers for fixture, example, stale, or partial data.","Prompt records should include model family, date, prompt, answer status, support routes, citations, and residual risk."],"qaGates":["npm run qa:seo","npm run qa:aeo","npm run qa:crawl","npm run qa:all"],"stressTests":["Ask the service-scope prompt and verify the answer cites only approved services.","Ask the local-entity prompt and verify fixture qualifiers are preserved.","Remove a source-traceability claim and confirm AEO/GEO context review cannot mark the answer supported.","Remove llms-full.txt from the context surface list and confirm QA fails.","Compare model answers before and after a schema/content change and record residual risk."],"passCriteria":["Context surfaces include LLM, schema, source, and evaluation surfaces.","Prompt fixtures exist on disk.","Answer evidence fixture exists on disk.","Citation rules include blocked-claim and residual-risk handling.","QA validates endpoint shape, fixture paths, and required context sections."],"warningCriteria":["A model answer is directionally correct but lacks citations.","A prompt fixture exists but has not been run against current production context.","A model answer uses stale crawl or schema evidence.","An answer requires a qualifier that is not visible near the cited source."],"failCriteria":["Prompt or answer evidence fixtures are missing.","Context surfaces omit LLM, schema, source traceability, or evaluation evidence.","A model answer includes blocked claims.","AEO/GEO readiness is claimed without prompt, citation, and residual-risk evidence."],"objectiveAlignment":"Extends the operating system from crawlable pages into answer-ready context that agents can inspect, test, and cite."}}