{"openapi":"3.1.0","info":{"title":"LAKA SEO Grammar System API","version":"1.0","summary":"Machine-readable SEO decision rules, and an engine that runs them over candidates, clusters, changes and projects.","description":"Convert SEO from a loose checklist into a formal, measurable, volumetric operating language.\n\nThe corpus holds 144 decision rules across 12 areas, 8 hard publication gates, 5 change levels, 12 volumetric dimension families, 14 SOPs, 12 measurement formulas and 10 source documents.\n\nTwo ideas govern everything here. First, SEO business value is a product of ten factors, so a near-zero factor neutralises the rest — a technically perfect page with no valuable demand is weak, and so is a ranking page that produces no business outcome. Second, volumetric generation is an analysis technique, not a publishing plan: generate broadly, cluster by task, assign exactly one canonical owner, apply all eight hard gates, and publish the smallest set of assets that covers the largest amount of valuable demand.\n\nThe engine does not guess. Where a decision depends on a fact the caller has not supplied, the response names the missing fact instead of assuming a value.\n\nThis is a decision and measurement system, not a ranking guarantee. Priority bands are transparent heuristics, not search-engine scores.","license":{"name":"Original synthesis of the ClickMinded SEO course into a LAKA decision and measurement system. Source course material remains the property of its authors."},"contact":{"name":"Bow Tie Kreative","url":"https://bowtiekreative.com"}},"servers":[{"url":"https://seosystem.bowtiekreative.com","description":"Production"}],"tags":[{"name":"Meta","description":"Index, health and specification."},{"name":"Model","description":"The grammar: sentence, equation, objects, levels, dimensions and formats."},{"name":"Gates","description":"The hard publication gates."},{"name":"Rules","description":"The 144 decision rules."},{"name":"Corpus","description":"SOPs, templates, phases, commands, measurement, documents and source files."},{"name":"Engine","description":"Running the grammar over candidates, clusters, changes and projects."}],"paths":{"/v1":{"get":{"tags":["Meta"],"summary":"API index","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/health":{"get":{"tags":["Meta"],"summary":"Liveness and corpus counts","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/openapi.json":{"get":{"tags":["Meta"],"summary":"This document","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/manifest":{"get":{"tags":["Meta"],"summary":"Corpus manifest and inventory","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/grammar":{"get":{"tags":["Model"],"summary":"The governing sentence and the governing equation","description":"The sentence every SEO action must be expressible in, and the ten multiplied factors that determine business value. Because the factors multiply, a near-zero factor neutralises the rest of the system.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/laka":{"get":{"tags":["Model"],"summary":"The LAKA change model","description":"The 5 change levels, 10 internal variables and 14 change variables.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["Engine"],"summary":"Generate the five-level change matrix for an object","description":"Proposes changes at every level, cheapest and most reversible first, so escalation is deliberate rather than accidental.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["object"],"properties":{"object":{"type":"string","description":"The SEO object being changed."},"goal":{"type":"string","description":"The outcome the change is meant to move."}}},"example":{"object":"/services/web-design","goal":"qualified organic conversions"}}}},"responses":{"200":{"description":"Engine result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The request named a value the engine will not guess","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/operators":{"get":{"tags":["Model"],"summary":"Boolean logic, precedence and the hard-gate pattern","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/objects":{"get":{"tags":["Model"],"summary":"The six primitive object classes","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/objects/{id}":{"get":{"tags":["Model"],"summary":"One object class and its primitives","parameters":[{"name":"id","in":"path","required":true,"description":"Class id: business-objects, audience-objects, semantic-objects, document-objects, graph-objects, retrieval-states.","schema":{"type":"string"}}],"responses":{"200":{"description":"The class","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"No such record","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/formats":{"get":{"tags":["Model"],"summary":"Task-native format selection","description":"The task the searcher must complete selects the format. Appearance does not.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/dimensions":{"get":{"tags":["Model"],"summary":"The 12 volumetric opportunity dimension families","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/dimensions/{id}":{"get":{"tags":["Model"],"summary":"One dimension family and its values","parameters":[{"name":"id","in":"path","required":true,"description":"Family id, e.g. `business`.","schema":{"type":"string"}}],"responses":{"200":{"description":"The family","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"No such record","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/gates":{"get":{"tags":["Gates"],"summary":"The 8 hard publication gates","description":"All eight must pass. A candidate that fails any one routes to research, consolidation, repair, deferral or rejection — never to publication. The cluster gates, which decide whether two candidates share one page, are returned alongside them and are a different thing.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/gates/{field}":{"get":{"tags":["Gates"],"summary":"One gate, with the rules that govern it","parameters":[{"name":"field","in":"path","required":true,"description":"Gate field: demand, distinct_task, business_value, information_advantage, technical_feasibility, maintainability, measurement, compliance.","schema":{"type":"string"}}],"responses":{"200":{"description":"The gate","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"No such record","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/rules":{"get":{"tags":["Rules"],"summary":"Search and filter the 144 decision rules","parameters":[{"name":"q","in":"query","required":false,"description":"Free-text match against id, title, branches, metric, guardrails and rationale.","schema":{"type":"string"}},{"name":"area","in":"query","required":false,"description":"Comma-separated areas, by name or slug: business-value, audience-and-journey, semantic-demand, clustering-and-canonical-ownership, content-format-and-evidence, on-page-and-search-appearance, internal-graph-and-architecture, external-authority-and-earned-evidence, technical-eligibility, conversion-and-experience, measurement-and-experimentation, generative-search-scale-and-governance.","schema":{"type":"string"}},{"name":"level","in":"query","required":false,"description":"Comma-separated LAKA levels: Baseline, Minor, Major, Structural, Paradigm.","schema":{"type":"string"}},{"name":"operator","in":"query","required":false,"description":"Comma-separated operators: ELSE, IF, THEN, OR, AND, NOT, BEFORE, EXACTLY_ONE, UNTIL, XOR, AT_LEAST.","schema":{"type":"string"}},{"name":"prefix","in":"query","required":false,"description":"Comma-separated id prefixes: BIZ, AUD, SEM, CLU, CON, ONP, GRF, AUT, TEC, CVR, EXP, GOV.","schema":{"type":"string"}},{"name":"metric","in":"query","required":false,"description":"Substring match against the primary metric.","schema":{"type":"string"}},{"name":"id","in":"query","required":false,"description":"Comma-separated rule ids.","schema":{"type":"string"}},{"name":"expand","in":"query","required":false,"description":"Return full rule records with area detail and neighbours.","schema":{"type":"boolean"}},{"name":"limit","in":"query","required":false,"description":"Page size, 1–500.","schema":{"type":"integer","default":50,"minimum":1,"maximum":500}},{"name":"offset","in":"query","required":false,"description":"Rows to skip.","schema":{"type":"integer","default":0,"minimum":0}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/rules/{id}":{"get":{"tags":["Rules"],"summary":"One rule, expanded","parameters":[{"name":"id","in":"path","required":true,"description":"Rule id, e.g. `BIZ-001`.","schema":{"type":"string"}}],"responses":{"200":{"description":"The rule with its area, levels, governed gates and neighbours","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"No such record","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/areas":{"get":{"tags":["Rules"],"summary":"Rule counts by area","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/areas/{slug}":{"get":{"tags":["Rules"],"summary":"One area and all twelve of its rules","parameters":[{"name":"slug","in":"path","required":true,"description":"Area slug, e.g. `business-value`.","schema":{"type":"string"}}],"responses":{"200":{"description":"The area","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"No such record","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/levels":{"get":{"tags":["Rules"],"summary":"The five LAKA change levels and the escalation rule","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/sops":{"get":{"tags":["Corpus"],"summary":"The 14 audit and execution SOPs","parameters":[{"name":"limit","in":"query","required":false,"description":"Page size, 1–500.","schema":{"type":"integer","default":50,"minimum":1,"maximum":500}},{"name":"offset","in":"query","required":false,"description":"Rows to skip.","schema":{"type":"integer","default":0,"minimum":0}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/sops/{id}":{"get":{"tags":["Corpus"],"summary":"One SOP","parameters":[{"name":"id","in":"path","required":true,"description":"SOP id, e.g. `SOP-01`.","schema":{"type":"string"}}],"responses":{"200":{"description":"The record","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"No such record","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/templates":{"get":{"tags":["Corpus"],"summary":"Page and cluster templates","parameters":[{"name":"limit","in":"query","required":false,"description":"Page size, 1–500.","schema":{"type":"integer","default":50,"minimum":1,"maximum":500}},{"name":"offset","in":"query","required":false,"description":"Rows to skip.","schema":{"type":"integer","default":0,"minimum":0}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/templates/{id}":{"get":{"tags":["Corpus"],"summary":"One template","parameters":[{"name":"id","in":"path","required":true,"description":"Template id, e.g. `TPL-G`.","schema":{"type":"string"}}],"responses":{"200":{"description":"The record","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"No such record","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/phases":{"get":{"tags":["Corpus"],"summary":"The 11 implementation phases","parameters":[{"name":"limit","in":"query","required":false,"description":"Page size, 1–500.","schema":{"type":"integer","default":50,"minimum":1,"maximum":500}},{"name":"offset","in":"query","required":false,"description":"Rows to skip.","schema":{"type":"integer","default":0,"minimum":0}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/phases/{id}":{"get":{"tags":["Corpus"],"summary":"One phase","parameters":[{"name":"id","in":"path","required":true,"description":"Phase id, e.g. `PHASE-3`.","schema":{"type":"string"}}],"responses":{"200":{"description":"The record","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"No such record","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/commands":{"get":{"tags":["Corpus"],"summary":"The 10 pseudo-commands","parameters":[{"name":"limit","in":"query","required":false,"description":"Page size, 1–500.","schema":{"type":"integer","default":50,"minimum":1,"maximum":500}},{"name":"offset","in":"query","required":false,"description":"Rows to skip.","schema":{"type":"integer","default":0,"minimum":0}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/commands/{id}":{"get":{"tags":["Corpus"],"summary":"One pseudo-command","parameters":[{"name":"id","in":"path","required":true,"description":"Command name without the slash, e.g. `gate`.","schema":{"type":"string"}}],"responses":{"200":{"description":"The record","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"No such record","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/glossary":{"get":{"tags":["Corpus"],"summary":"Glossary terms","parameters":[{"name":"limit","in":"query","required":false,"description":"Page size, 1–500.","schema":{"type":"integer","default":50,"minimum":1,"maximum":500}},{"name":"offset","in":"query","required":false,"description":"Rows to skip.","schema":{"type":"integer","default":0,"minimum":0}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/glossary/{id}":{"get":{"tags":["Corpus"],"summary":"One term","parameters":[{"name":"id","in":"path","required":true,"description":"Term slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"The record","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"No such record","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/measurement":{"get":{"tags":["Corpus"],"summary":"Outcome hierarchy, KPIs and the twelve formulas","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/experiments":{"get":{"tags":["Corpus"],"summary":"Hypothesis grammar, experiment cards and decision outcomes","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/backlog":{"get":{"tags":["Corpus"],"summary":"The staged rollout and its exit gates","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/crosswalk":{"get":{"tags":["Corpus"],"summary":"Course translation, terminology corrections and primary sources","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/agent-prompt":{"get":{"tags":["Corpus"],"summary":"The operating prompt for an SEO agent","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/schema":{"get":{"tags":["Corpus"],"summary":"JSON Schema for a LAKA SEO project","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/examples":{"get":{"tags":["Corpus"],"summary":"Worked examples: a project, a candidate and a dimension set","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/documents":{"get":{"tags":["Corpus"],"summary":"The 10 source documents","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/documents/{slug}":{"get":{"tags":["Corpus"],"summary":"One document with its full section tree","parameters":[{"name":"slug","in":"path","required":true,"description":"Document slug or two-digit number, e.g. `seo-laka-grammar` or `01`.","schema":{"type":"string"}}],"responses":{"200":{"description":"The document","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"No such record","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/source":{"get":{"tags":["Corpus"],"summary":"The authored source package, byte for byte","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/source/{slug}":{"get":{"tags":["Corpus"],"summary":"One source file, verbatim","parameters":[{"name":"slug","in":"path","required":true,"description":"File slug, e.g. `quick-reference` or `seo-laka`.","schema":{"type":"string"}}],"responses":{"200":{"description":"The file","content":{"text/plain":{"schema":{"type":"string"}}}},"404":{"description":"No such record","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/search":{"get":{"tags":["Corpus"],"summary":"Search the whole corpus","parameters":[{"name":"q","in":"query","required":false,"description":"Query string. All terms must match.","schema":{"type":"string"}},{"name":"type","in":"query","required":false,"description":"Comma-separated types: command, dimension, document, formula, gate, level, phase, rule, section, sop, template, term.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Maximum results.","schema":{"type":"integer","default":25,"maximum":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/graph":{"get":{"tags":["Corpus"],"summary":"The corpus as nodes and edges","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/backlinks/{id}":{"get":{"tags":["Corpus"],"summary":"What a rule, gate or area connects to","parameters":[{"name":"id","in":"path","required":true,"description":"A rule id, gate field or area slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Backlinks","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"No such record","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/engine/spec":{"get":{"tags":["Engine"],"summary":"What each engine endpoint requires and refuses to guess","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/evaluate":{"post":{"tags":["Engine"],"summary":"Run a candidate through the hard gates and the priority score","description":"Applies the eight hard publication gates, then scores value against cost.\n\nEvery gate must be an explicit boolean — a missing or partial gate is a 400, never an implied pass. Value factors (demand_confidence, business_fit, task_value, information_advantage, conversion_value, attainability, existing_signal, reuse_potential, learning_value) and cost factors (production_effort, technical_risk, maintenance_burden, time_to_learning, opportunity_cost) are rated 0–5; costs are floored at 0.2 so an unrated cost cannot make the score infinite. Both indices are geometric means, so one near-zero factor pulls the whole index down.\n\nPriority bands are transparent heuristics, not search-engine scores or guaranteed forecasts. This is a port of `tools/laka_seo_engine.py` and scores identically to it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["gates","scores","costs"],"properties":{"id":{"type":"string"},"gates":{"type":"object","description":"All eight required, each an explicit boolean.","required":["demand","distinct_task","business_value","information_advantage","technical_feasibility","maintainability","measurement","compliance"],"properties":{"demand":{"type":"boolean"},"distinct_task":{"type":"boolean"},"business_value":{"type":"boolean"},"information_advantage":{"type":"boolean"},"technical_feasibility":{"type":"boolean"},"maintainability":{"type":"boolean"},"measurement":{"type":"boolean"},"compliance":{"type":"boolean"}}},"scores":{"type":"object","properties":{"demand_confidence":{"type":"number","minimum":0,"maximum":5},"business_fit":{"type":"number","minimum":0,"maximum":5},"task_value":{"type":"number","minimum":0,"maximum":5},"information_advantage":{"type":"number","minimum":0,"maximum":5},"conversion_value":{"type":"number","minimum":0,"maximum":5},"attainability":{"type":"number","minimum":0,"maximum":5},"existing_signal":{"type":"number","minimum":0,"maximum":5},"reuse_potential":{"type":"number","minimum":0,"maximum":5},"learning_value":{"type":"number","minimum":0,"maximum":5}}},"costs":{"type":"object","properties":{"production_effort":{"type":"number","minimum":0,"maximum":5},"technical_risk":{"type":"number","minimum":0,"maximum":5},"maintenance_burden":{"type":"number","minimum":0,"maximum":5},"time_to_learning":{"type":"number","minimum":0,"maximum":5},"opportunity_cost":{"type":"number","minimum":0,"maximum":5}}},"confidence":{"type":"object","properties":{"evidence":{"type":"number","minimum":0,"maximum":1},"measurement":{"type":"number","minimum":0,"maximum":1}}}}},"example":{"id":"YYC-COST-001","gates":{"demand":true,"distinct_task":true,"business_value":true,"information_advantage":true,"technical_feasibility":true,"maintainability":true,"measurement":true,"compliance":true},"scores":{"demand_confidence":4,"business_fit":5,"task_value":5,"information_advantage":4,"conversion_value":4,"attainability":3,"existing_signal":2,"reuse_potential":4,"learning_value":5},"costs":{"production_effort":4,"technical_risk":2,"maintenance_burden":3,"time_to_learning":3,"opportunity_cost":2},"confidence":{"evidence":0.8,"measurement":0.85}}}}},"responses":{"200":{"description":"Engine result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The request named a value the engine will not guess","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/volume":{"post":{"tags":["Engine"],"summary":"Size a volumetric space, and optionally sample it safely","description":"Computes the theoretical volume in closed form without enumerating the space, and returns a bounded, deterministic sample only when `sample` is given. The sample is capped at 10,000 rows. Theoretical volume is an analysis space, never a publishing target.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dimensions":{"type":"object","additionalProperties":{"type":"array","items":{}},"description":"Dimension name → non-empty array of values."},"use_published_dimensions":{"type":"boolean","description":"Ignore `dimensions` and use the 12 published families instead."},"sample":{"type":"integer","minimum":0,"maximum":10000},"seed":{"type":"integer","default":42}}},"example":{"dimensions":{"audience":["business owner","marketing manager"],"task":["compare","calculate","hire"],"service":["web design","website redesign","accessibility audit"],"format":["guide","comparison","calculator"],"journey":["evaluation","decision"],"next_action":["assessment","brief download"]},"sample":10}}}},"responses":{"200":{"description":"Engine result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The request named a value the engine will not guess","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/cluster":{"post":{"tags":["Engine"],"summary":"Same page or separate pages","description":"The one-page rule as a decision. Facts are tri-state: `true` matches, `false` differs, absent is unknown. An unknown fact routes to TEST — one provisional cluster and an observation — never to a second page. Facts: same_sense, same_task, compatible_answer_structure, compatible_result_class, compatible_next_action. Hard splits: local_inventory_differs, legal_context_differs.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","description":"A label for the first candidate."},"b":{"type":"string","description":"A label for the second candidate."},"facts":{"type":"object","properties":{"same_sense":{"type":"boolean","description":"Do both queries refer to the same sense of the concept?"},"same_task":{"type":"boolean","description":"Is the user trying to complete the same task?"},"compatible_answer_structure":{"type":"boolean","description":"Can one answer structure serve both without padding?"},"compatible_result_class":{"type":"boolean","description":"Do the search results return the same class of page?"},"compatible_next_action":{"type":"boolean","description":"Does the same next action follow for both?"},"local_inventory_differs":{"type":"boolean","description":"Real local or product inventory differs, so the answers cannot be the same page."},"legal_context_differs":{"type":"boolean","description":"The legal or regulatory context differs, so one page would be wrong for one audience."}}},"separate_page_value":{"type":"string","description":"How much a separate page would be worth. Anything but \"low\" forces a deliberate split decision."}}},"example":{"a":"web design cost calgary","b":"how much does a website cost","facts":{"same_sense":true,"same_task":true,"compatible_answer_structure":true,"compatible_result_class":false,"compatible_next_action":true}}}}},"responses":{"200":{"description":"Engine result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The request named a value the engine will not guess","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/equation":{"post":{"tags":["Engine"],"summary":"Score the governing equation and find the weakest link","description":"Ten factors, each a 0–1 proportion of achievable value: valuable_demand, technical_eligibility, intent_fit, information_advantage, discoverability, prominence, search_result_response, conversion_efficiency, contribution_margin, learning_velocity. They multiply, so the response names the weakest link and what the grammar says to do about it. An unsupplied factor is reported as unknown, not assumed to be 1.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["factors"],"properties":{"factors":{"type":"object","properties":{"valuable_demand":{"type":"number","minimum":0,"maximum":1,"description":"Valuable demand"},"technical_eligibility":{"type":"number","minimum":0,"maximum":1,"description":"Technical eligibility"},"intent_fit":{"type":"number","minimum":0,"maximum":1,"description":"Intent fit"},"information_advantage":{"type":"number","minimum":0,"maximum":1,"description":"Information advantage"},"discoverability":{"type":"number","minimum":0,"maximum":1,"description":"Discoverability"},"prominence":{"type":"number","minimum":0,"maximum":1,"description":"Prominence"},"search_result_response":{"type":"number","minimum":0,"maximum":1,"description":"Search-result response"},"conversion_efficiency":{"type":"number","minimum":0,"maximum":1,"description":"Conversion efficiency"},"contribution_margin":{"type":"number","minimum":0,"maximum":1,"description":"Contribution margin"},"learning_velocity":{"type":"number","minimum":0,"maximum":1,"description":"Learning velocity"}}}}},"example":{"factors":{"valuable_demand":0.8,"technical_eligibility":1,"intent_fit":0.7,"information_advantage":0.3,"discoverability":0.6,"prominence":0.4,"search_result_response":0.6,"conversion_efficiency":0.5,"contribution_margin":0.7,"learning_velocity":0.4}}}}},"responses":{"200":{"description":"Engine result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The request named a value the engine will not guess","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/resolve":{"post":{"tags":["Engine"],"summary":"Which rules govern a context, before you act","description":"Filters the rule set and orders it by the published precedence, so what binds hardest appears first.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"area":{"type":"string","description":"Comma-separated area names or slugs."},"level":{"type":"string","description":"Comma-separated LAKA levels: Baseline, Minor, Major, Structural, Paradigm."},"operator":{"type":"string"},"q":{"type":"string"}}},"example":{"area":"technical-eligibility","level":"Structural"}}}},"responses":{"200":{"description":"Engine result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The request named a value the engine will not guess","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/experiment":{"post":{"tags":["Engine"],"summary":"Turn a proposed change into a decidable experiment card","description":"Builds the hypothesis sentence and reports what is still missing. A change with no baseline, no minimum exposure and no decision rule is not measurable, and the response says so rather than pretending otherwise.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["object","intervention","primary_metric","mechanism"],"properties":{"change_id":{"type":"string"},"object":{"type":"string"},"laka_level":{"type":"string","enum":["Baseline","Minor","Major","Structural","Paradigm"]},"intervention":{"type":"string"},"conditions":{"type":"string"},"primary_metric":{"type":"string"},"direction":{"type":"string","default":"increases"},"mechanism":{"type":"string"},"guardrails":{"type":"array","items":{"type":"string"}},"baseline":{"type":"string"},"minimum_exposure":{"type":"string"},"decision_rule":{"type":"string"},"rollback":{"type":"string"}}},"example":{"change_id":"CHG-014","object":"/services/web-design","laka_level":"Minor","intervention":"a title and snippet rewrite naming the price range","conditions":"non-brand queries in positions 4–10","primary_metric":"value-weighted non-brand clicks","mechanism":"the snippet answers the cost question that the query implies","guardrails":["qualified conversion rate","average position"],"baseline":"28 days pre-change","minimum_exposure":"28 days and 1,000 impressions","decision_rule":"continue if clicks rise and conversion rate holds; reverse if conversion rate falls more than 10%"}}}},"responses":{"200":{"description":"Engine result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The request named a value the engine will not guess","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/validate":{"post":{"tags":["Engine"],"summary":"Validate a project document","description":"Checks a project against the published JSON Schema, then reports the completeness advisories the grammar cares about — canonical conflicts, a missing measurement block, assets with no primary metric. A document can be schema-valid and still fail the measurement gate.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://example.org/schemas/seo-laka-project.schema.json","title":"LAKA SEO Project","description":"Machine-readable representation of a LAKA SEO strategy, cluster, asset, change, and measurement plan.","type":"object","required":["project_id","version","business","audiences","clusters","changes","measurement"],"properties":{"project_id":{"type":"string","minLength":1},"version":{"type":"string","pattern":"^[0-9]+\\.[0-9]+(?:\\.[0-9]+)?$"},"created_at":{"type":"string","format":"date-time"},"source_review_date":{"type":"string","format":"date"},"business":{"type":"object","required":["name","goals","offers","value_events"],"properties":{"name":{"type":"string"},"model":{"type":"string"},"geographies":{"type":"array","items":{"type":"string"},"uniqueItems":true},"constraints":{"type":"array","items":{"$ref":"#/$defs/constraint"}},"goals":{"type":"array","minItems":1,"items":{"$ref":"#/$defs/goal"}},"offers":{"type":"array","minItems":1,"items":{"$ref":"#/$defs/offer"}},"value_events":{"type":"array","minItems":1,"items":{"$ref":"#/$defs/valueEvent"}}},"additionalProperties":false},"audiences":{"type":"array","minItems":1,"items":{"$ref":"#/$defs/audience"}},"semantic_nodes":{"type":"array","items":{"$ref":"#/$defs/semanticNode"}},"semantic_relations":{"type":"array","items":{"$ref":"#/$defs/semanticRelation"}},"clusters":{"type":"array","minItems":1,"items":{"$ref":"#/$defs/cluster"}},"assets":{"type":"array","items":{"$ref":"#/$defs/asset"}},"graph_edges":{"type":"array","items":{"$ref":"#/$defs/graphEdge"}},"changes":{"type":"array","items":{"$ref":"#/$defs/change"}},"measurement":{"$ref":"#/$defs/measurement"},"governance":{"$ref":"#/$defs/governance"}},"$defs":{"goal":{"type":"object","required":["id","statement","primary_metric"],"properties":{"id":{"type":"string"},"statement":{"type":"string"},"primary_metric":{"type":"string"},"baseline":{"type":["number","string","null"]},"target":{"type":["number","string","null"]},"horizon":{"type":["string","null"]}},"additionalProperties":false},"offer":{"type":"object","required":["id","name","audience_ids"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"audience_ids":{"type":"array","items":{"type":"string"}},"price":{"type":["number","null"],"minimum":0},"currency":{"type":["string","null"]},"contribution_margin":{"type":["number","null"]},"capacity_per_period":{"type":["number","null"],"minimum":0}},"additionalProperties":false},"valueEvent":{"type":"object","required":["id","name","qualification_rule"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"qualification_rule":{"type":"string"},"estimated_value":{"type":["number","null"]},"currency":{"type":["string","null"]},"source_system":{"type":["string","null"]}},"additionalProperties":false},"constraint":{"type":"object","required":["type","statement"],"properties":{"type":{"enum":["business","technical","legal","policy","privacy","ethical","capacity","brand","accessibility"]},"statement":{"type":"string"},"severity":{"enum":["hard","soft"]}},"additionalProperties":false},"audience":{"type":"object","required":["id","name","tasks"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"role":{"type":["string","null"]},"industry":{"type":["string","null"]},"experience":{"type":["string","null"]},"awareness":{"$ref":"#/$defs/journeyState"},"urgency":{"type":["string","null"]},"budget":{"type":["string","null"]},"geography":{"type":["string","null"]},"language":{"type":["string","null"]},"device_context":{"type":["string","null"]},"accessibility_conditions":{"type":"array","items":{"type":"string"}},"tasks":{"type":"array","items":{"$ref":"#/$defs/task"}}},"additionalProperties":false},"task":{"type":"object","required":["verb","object","completion_condition","intent"],"properties":{"verb":{"enum":["define","learn","discover","diagnose","compare","calculate","locate","verify","plan","implement","troubleshoot","buy","use","maintain","renew","refer"]},"object":{"type":"string"},"completion_condition":{"type":"string"},"intent":{"$ref":"#/$defs/intent"}},"additionalProperties":false},"intent":{"enum":["informational","comparative","commercial_investigation","transactional","navigational","local","support","retention","reputation"]},"journeyState":{"enum":["unaware","problem_aware","solution_aware","option_evaluation","decision","implementation","use","retention","advocacy"]},"semanticNode":{"type":"object","required":["id","type","label"],"properties":{"id":{"type":"string"},"type":{"enum":["concept","entity","parent","subtype","synonym","variant","attribute","attribute_value","problem","cause","consequence","solution","alternative","objection","risk","question","evidence","exclusion"]},"label":{"type":"string"},"sense_id":{"type":["string","null"]},"properties":{"type":"object","additionalProperties":true}},"additionalProperties":false},"semanticRelation":{"type":"object","required":["source","relation","target"],"properties":{"source":{"type":"string"},"relation":{"enum":["IS_A","PART_OF","HAS_ATTRIBUTE","HAS_VALUE","LOCATED_IN","USED_BY","REQUIRES","CAUSES","PREVENTS","SOLVES","PRODUCES","MEASURED_BY","COMPARED_WITH","ALTERNATIVE_TO","COMPATIBLE_WITH","INCOMPATIBLE_WITH","EVIDENCED_BY","AUTHORED_BY","OFFERED_BY","PRECEDES","FOLLOWS","LINKS_TO","SUPPORTS","CANONICALIZES_TO","CONVERTS_TO","RETAINS","EXCLUDES"]},"target":{"type":"string"},"confidence":{"type":"number","minimum":0,"maximum":1}},"additionalProperties":false},"cluster":{"type":"object","required":["id","name","audience_ids","task","representative_query","queries","canonical_owner","status"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"audience_ids":{"type":"array","items":{"type":"string"}},"task":{"$ref":"#/$defs/task"},"journey_state":{"$ref":"#/$defs/journeyState"},"representative_query":{"type":"string"},"queries":{"type":"array","minItems":1,"items":{"type":"string"},"uniqueItems":true},"exclusions":{"type":"array","items":{"type":"string"}},"adjacent_cluster_ids":{"type":"array","items":{"type":"string"}},"demand_evidence":{"type":"array","items":{"$ref":"#/$defs/evidenceObservation"}},"canonical_owner":{"type":"string","format":"uri-reference"},"existing_urls":{"type":"array","items":{"type":"string","format":"uri-reference"}},"status":{"enum":["research","provisional","approved","implemented","monitor","merge","retire","rejected"]},"confidence":{"type":"number","minimum":0,"maximum":1},"opportunity_score":{"type":["number","null"],"minimum":0}},"additionalProperties":false},"evidenceObservation":{"type":"object","required":["type","description"],"properties":{"type":{"enum":["search_console","analytics","crm","customer_language","sales","support","serp","competitor","market_data","paid_search","firsthand","primary_source","inference"]},"description":{"type":"string"},"value":{"type":["number","string","null"]},"observed_at":{"type":["string","null"],"format":"date-time"},"confidence":{"type":"number","minimum":0,"maximum":1}},"additionalProperties":false},"asset":{"type":"object","required":["id","cluster_id","url","page_type","format","information_advantage","next_action","technical_state"],"properties":{"id":{"type":"string"},"cluster_id":{"type":"string"},"url":{"type":"string","format":"uri-reference"},"page_type":{"enum":["service_page","product_page","category","guide","comparison","calculator","diagnostic","template","checklist","directory","location_page","case_study","dataset","benchmark","glossary","faq","video","interactive","api"]},"format":{"type":"array","minItems":1,"items":{"enum":["text","table","image","video","audio","map","form","calculator","decision_tree","dataset","download","interactive"]}},"direct_answer":{"type":["string","null"]},"information_advantage":{"type":"array","minItems":1,"items":{"type":"string"}},"evidence":{"type":"array","items":{"type":"string"}},"next_action":{"type":"string"},"technical_state":{"$ref":"#/$defs/technicalState"},"owner":{"type":["string","null"]},"refresh_trigger":{"type":["string","null"]}},"additionalProperties":false},"technicalState":{"type":"object","required":["intended_index_state"],"properties":{"intended_index_state":{"enum":["index","noindex","private","retired"]},"accessible":{"type":["boolean","null"]},"status_code":{"type":["integer","null"],"minimum":100,"maximum":599},"rendered":{"type":["boolean","null"]},"declared_canonical":{"type":["string","null"],"format":"uri-reference"},"selected_canonical":{"type":["string","null"],"format":"uri-reference"},"indexed":{"type":["boolean","null"]},"sitemap":{"type":["boolean","null"]},"structured_data_state":{"type":["string","null"]},"field_lcp_ms":{"type":["number","null"],"minimum":0},"field_inp_ms":{"type":["number","null"],"minimum":0},"field_cls":{"type":["number","null"],"minimum":0}},"additionalProperties":false},"graphEdge":{"type":"object","required":["source","target","edge_type","crawlable","user_reason"],"properties":{"source":{"type":"string","format":"uri-reference"},"target":{"type":"string","format":"uri-reference"},"edge_type":{"enum":["definition_of","prerequisite_of","example_of","evidence_for","comparison_to","alternative_to","step_before","step_after","supports","converts_to","location_variant_of","service_variant_of"]},"anchor":{"type":["string","null"]},"crawlable":{"type":"boolean"},"user_reason":{"type":"string"}},"additionalProperties":false},"change":{"type":"object","required":["id","object","laka_level","internal_variables","signature","hypothesis","primary_metric","decision_rule"],"properties":{"id":{"type":"string"},"object":{"type":"string"},"laka_level":{"enum":["Baseline","Minor Change","Major Change","Structural Change","Paradigm Change"]},"internal_variables":{"$ref":"#/$defs/internalVariables"},"signature":{"$ref":"#/$defs/changeSignature"},"hypothesis":{"type":"string"},"mechanism":{"type":["string","null"]},"primary_metric":{"type":"string"},"guardrails":{"type":"array","items":{"type":"string"}},"baseline":{"type":["string","number","null"]},"minimum_exposure":{"type":["string","null"]},"decision_rule":{"type":"string"},"rollback":{"type":["string","null"]},"status":{"enum":["planned","active","observing","won","lost","revised","reversed","expanded","retired","uncertain"]}},"additionalProperties":false},"internalVariables":{"type":"object","required":["object","conditions","actions","tools","resources","outcomes","feedback","constraints","value","failure_mode"],"properties":{"object":{"type":"string"},"conditions":{"type":"array","items":{"type":"string"}},"actions":{"type":"array","items":{"type":"string"}},"tools":{"type":"array","items":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"}},"outcomes":{"type":"array","items":{"type":"string"}},"feedback":{"type":"array","items":{"type":"string"}},"constraints":{"type":"array","items":{"type":"string"}},"value":{"type":"string"},"failure_mode":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"changeSignature":{"type":"object","required":["magnitude","rate","direction","scope","depth","duration","frequency","acceleration","variability","detectability","reversibility","propagation","amplification","accumulation"],"properties":{"magnitude":{"enum":["negligible","small","medium","large","transformational"]},"rate":{"enum":["immediate","fast","gradual","slow","unknown"]},"direction":{"enum":["positive","negative","mixed","neutral"]},"scope":{"enum":["element","page","cluster","template","site","market"]},"depth":{"enum":["copy","behavior","document","architecture","business_model"]},"duration":{"enum":["transient","campaign","persistent","permanent"]},"frequency":{"enum":["once","periodic","event_driven","continuous"]},"acceleration":{"enum":["decaying","linear","compounding","volatile"]},"variability":{"enum":["low","moderate","high","unknown"]},"detectability":{"enum":["direct","proxy","modeled","latent"]},"reversibility":{"enum":["easy","moderate","difficult","irreversible"]},"propagation":{"enum":["isolated","linked","template_wide","site_wide","ecosystem"]},"amplification":{"enum":["none","internal_graph","external_citations","brand","network"]},"accumulation":{"enum":["none","episodic","stock_building","compounding"]}},"additionalProperties":false},"measurement":{"type":"object","required":["primary_business_metric","event_dictionary","dimensions","change_ledger"],"properties":{"primary_business_metric":{"type":"string"},"executive_metrics":{"type":"array","maxItems":5,"items":{"type":"string"}},"event_dictionary":{"type":"array","items":{"type":"object","required":["name","definition"],"properties":{"name":{"type":"string"},"definition":{"type":"string"},"properties":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}},"dimensions":{"type":"array","items":{"type":"string"}},"data_sources":{"type":"array","items":{"type":"string"}},"change_ledger":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"governance":{"type":"object","properties":{"hard_gates":{"type":"array","items":{"type":"string"}},"privacy_rules":{"type":"array","items":{"type":"string"}},"policy_rules":{"type":"array","items":{"type":"string"}},"quality_owner":{"type":["string","null"]},"maintenance_capacity":{"type":["number","null"],"minimum":0},"review_cadence":{"type":["string","null"]}},"additionalProperties":false}},"additionalProperties":false},"example":{"project_id":"webdevcalgary-laka-example","version":"1.0","created_at":"2026-09-02T12:00:00Z","source_review_date":"2026-09-02","business":{"name":"WebDevCalgary.com","model":"professional services","geographies":["Calgary, Alberta, Canada"],"constraints":[{"type":"capacity","statement":"Qualified lead volume must remain within sales and delivery capacity.","severity":"hard"},{"type":"brand","statement":"All cost and performance claims must be supportable.","severity":"hard"}],"goals":[{"id":"goal-qualified-margin","statement":"Increase qualified organic project value.","primary_metric":"incremental organic contribution margin","baseline":null,"target":null,"horizon":null}],"offers":[{"id":"offer-web-project","name":"Website strategy, design, and development","audience_ids":["aud-local-business"],"price":null,"currency":"CAD","contribution_margin":null,"capacity_per_period":null}],"value_events":[{"id":"qualified-assessment","name":"Qualified project assessment","qualification_rule":"Service, geography, scope, and budget fit are confirmed.","estimated_value":null,"currency":"CAD","source_system":"CRM"}]},"audiences":[{"id":"aud-local-business","name":"Calgary business seeking a website project","role":"owner or marketing lead","industry":null,"experience":"mixed","awareness":"option_evaluation","urgency":"mixed","budget":null,"geography":"Calgary, Alberta","language":"English","device_context":"responsive web","accessibility_conditions":[],"tasks":[{"verb":"calculate","object":"website project cost","completion_condition":"receives a useful scoped estimate and understands assumptions","intent":"commercial_investigation"}]}],"semantic_nodes":[{"id":"concept-web-design","type":"concept","label":"web design","sense_id":"professional-service","properties":{}},{"id":"entity-calgary","type":"entity","label":"Calgary","sense_id":"city-alberta","properties":{"country":"Canada"}},{"id":"attribute-price","type":"attribute","label":"price","sense_id":null,"properties":{}}],"semantic_relations":[{"source":"concept-web-design","relation":"LOCATED_IN","target":"entity-calgary","confidence":1},{"source":"concept-web-design","relation":"HAS_ATTRIBUTE","target":"attribute-price","confidence":1}],"clusters":[{"id":"YYC-COST-001","name":"Website cost in Calgary","audience_ids":["aud-local-business"],"task":{"verb":"calculate","object":"website project cost","completion_condition":"receives a useful scoped estimate and understands assumptions","intent":"commercial_investigation"},"journey_state":"option_evaluation","representative_query":"website cost Calgary","queries":["website cost Calgary","Calgary website pricing","how much does a website cost in Calgary"],"exclusions":["website developer salary","web design jobs"],"adjacent_cluster_ids":[],"demand_evidence":[{"type":"inference","description":"Illustrative cluster; live evidence must be collected before approval.","value":null,"observed_at":null,"confidence":0.2}],"canonical_owner":"/website-cost-calgary/","existing_urls":[],"status":"provisional","confidence":0.2,"opportunity_score":null}],"assets":[{"id":"asset-cost-estimator","cluster_id":"YYC-COST-001","url":"/website-cost-calgary/","page_type":"calculator","format":["text","table","calculator","form"],"direct_answer":"A useful estimate depends on scope, platform, content, integrations, accessibility, and support.","information_advantage":["transparent local assumptions","interactive scope estimator","visible methodology"],"evidence":["methodology","anonymized project patterns where permitted","limitations"],"next_action":"qualified project assessment","technical_state":{"intended_index_state":"index","accessible":null,"status_code":null,"rendered":null,"declared_canonical":"/website-cost-calgary/","selected_canonical":null,"indexed":null,"sitemap":null,"structured_data_state":null,"field_lcp_ms":null,"field_inp_ms":null,"field_cls":null},"owner":null,"refresh_trigger":"pricing model, delivery process, or market assumptions change"}],"graph_edges":[{"source":"/website-cost-calgary/","target":"/calgary-web-design/","edge_type":"converts_to","anchor":"Calgary web design assessment","crawlable":true,"user_reason":"The service assessment is the next logical action after estimating scope and cost."}],"changes":[{"id":"EXP-YYC-COST-001","object":"Website cost in Calgary asset","laka_level":"Paradigm Change","internal_variables":{"object":"Static cost content becomes an interactive estimator.","conditions":["local commercial investigation","mobile and desktop use"],"actions":["build calculator","publish methodology","instrument task events"],"tools":["CMS","calculator","analytics","CRM"],"resources":["development","project data","copy","QA"],"outcomes":["task completion","qualified assessments","original evidence asset"],"feedback":["estimator completion","qualification","close rate","estimate error"],"constraints":["privacy","accuracy","capacity","accessibility"],"value":"Better decisions for users and better qualification for the business.","failure_mode":["misleading estimates","low adoption","unqualified volume"]},"signature":{"magnitude":"large","rate":"gradual","direction":"positive","scope":"cluster","depth":"business_model","duration":"persistent","frequency":"continuous","acceleration":"compounding","variability":"moderate","detectability":"direct","reversibility":"moderate","propagation":"linked","amplification":"external_citations","accumulation":"compounding"},"hypothesis":"An interactive transparent estimator will complete the cost task better than generic prose and increase qualified project assessments.","mechanism":"Higher task utility, trust, and message continuity.","primary_metric":"incremental qualified assessment contribution margin","guardrails":["estimate accuracy","unqualified lead rate","performance","accessibility"],"baseline":null,"minimum_exposure":"predefined impressions, estimator completions, and sales cycle","decision_rule":"Expand if incremental value is positive and guardrails pass; revise or reverse otherwise.","rollback":"Return to noninteractive guide while preserving useful evidence.","status":"planned"}],"measurement":{"primary_business_metric":"incremental organic contribution margin","executive_metrics":["incremental organic contribution margin","qualified organic assessments","value-weighted non-brand clicks","value-weighted target-cluster visibility","eligible canonical coverage"],"event_dictionary":[{"name":"estimator_complete","definition":"A valid website-cost estimate is produced.","properties":["cluster_id","result_band"]},{"name":"qualified_assessment","definition":"The assessment meets the documented qualification rule.","properties":["offer_id","qualification_status"]}],"dimensions":["date","cluster_id","query","canonical_url","country","device","search_appearance","brand_class","change_id"],"data_sources":["Search Console","analytics","CRM"],"change_ledger":["EXP-YYC-COST-001"]},"governance":{"hard_gates":["demand","distinct task","business value","information advantage","technical feasibility","maintainability","measurement","policy compliance"],"privacy_rules":["collect only inputs needed for a useful estimate"],"policy_rules":["do not invent price evidence or local claims"],"quality_owner":null,"maintenance_capacity":null,"review_cadence":"monthly"}}}}},"responses":{"200":{"description":"Engine result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"The request named a value the engine will not guess","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}