{
 "published_before_scoring": "2026-10-24",
 "purpose": "Rules fixed before any product was scored. They define the cohorts and their applicability masks, what each dimension means, what a score of 0 to 5 requires, when a cell is n/e or n/a, which cells count, how availability, evidence grade and verification status are recorded, and how the Ground Quotient summarises them without a league table.",
 "selection_rules": {
  "universe": "A reasoned market sample assembled by the vendor-universe sweep (workstream U) from the brief's named seeds plus vendors discovered while researching workstreams A to J. Not a census. Audience currencies and measurement bodies (Geopath, Route, COMMB) go to the DOOH currency table; operating-system and large-platform location features go to the platform table; government and public-sector data buyers are context only; none of these is scored. Vendors that surfaced only as names without an opened source are listed in the universe, not scored.",
  "scored_set": "A named product enters the matrix when it sells, to a buyer, visit measurement or visit-lift attribution (cohort A), location-derived audiences or geofenced delivery (cohort B), foot-traffic and visit analytics (cohort C1) or raw movement data (cohort C2) or location APIs and SDKs for developers (cohort D), and it has at least inclusion_min_scored counted numeric cells. n/a, n/e and unverified cells do not count. data/product-register.json lists every scored, listed and historical product with its inclusion reason. A company can have rows in several cohorts; evidence is not inherited between rows.",
  "deep_profiles": "Six to eight companies, chosen by market weight and depth of public evidence after the universe sweep: Foursquare, Placer.ai, GroundTruth, InMarket, Blis, Azira or Unacast, Vistar Media, and one developer-platform company (Radar). Each profile states why it was chosen."
 },
 "scale": {
  "0": "a source documents that the capability is absent or has failed the criterion",
  "1": "adjacent or incidental",
  "2": "partial or indirect, for example only through a partner, with the integration documented",
  "3": "real but thinly evidenced, narrow in scope, or beta",
  "4": "documented and specific, but from vendor documentation only; or independently observed but narrow",
  "5": "documented in operational detail by an official document, filing or independent observation"
 },
 "cell_rules": {
  "scale": "0 to 5 integer, evidence-bounded, not absolute; every value is defined in \"scale\" above, and every applicable dimension carries its own anchors for at least 5, 3, 1 and 0 (per cohort where the cohorts differ). Dimension anchors take precedence over the generic scale; the evidence cap is applied after scoring against the anchors.",
  "zero": "0 is used only when a source documents absence or failure (a vendor statement that the feature is not offered, an independent finding of failure, or, for privacy, a regulator order, court finding or documented breach within the window the anchor states). Missing evidence is never scored 0.",
  "ne": "n/e (no evidence) when the opened record gives no basis to score either way. Distinct from 0. A partner's name alone is n/e; only documented, integrated functionality counts.",
  "na": "n/a comes only from the cohort's applicability mask (cohorts[].applicable), never vendor by vendor. n/a never enters k, a group mean, the coverage numerator or any imputation. A documented observed-only output is recorded as not applicable in the projection module, which is outside the quotient.",
  "availability": "Every scored cell carries one label: live (generally available at the cutoff), beta (limited access or beta), announced (not yet observable), retired, unconfirmed (claimed but no observable evidence).",
  "evidence_grade": "A = filing, official transaction document, regulator, court, accreditor or standards-body record; B = independent measurement or documentation by a party without financial interest; C = vendor technical documentation, developer documentation or help centre; D = vendor marketing, press release or case study; E = none. A third party paid by the vendor is not independent; if funding is unknown, independence is unknown. For the assurance dimension, an assessor operating under verified independent scheme governance gives independent assurance even though the assessed company pays normal fees (see the assurance definition).",
  "date": "The date of the most recent source the cell rests on (YYYY-MM or YYYY-MM-DD).",
  "verification_status": "Every scored cell carries one: verified (a verifier re-checked the cell's sources), qualified (re-checked; scored against the qualified claim) or unverified. Only verified and qualified cells count; an unverified cell is shown but treated as n/e for admission, k, the quotient and band eligibility.",
  "product": "The scoring unit is a named product that serves the cohort's buying task, one row per product, each mapped to one record in data/product-register.json. Evidence is not inherited between rows, a parent group never pools its subsidiaries' capabilities, and an alias or bundle never creates a second row.",
  "same_standard": "The same evidentiary standard applies to every vendor. Documentation volume is not product quality: a large help centre earns grade C, not a higher score. Styling, placement or a marketing adjective is not a capability.",
  "grade_caps": "Vendor documentation (grade C) caps a score at 4 and vendor marketing (grade D) at 3; a grade can cap a score but never raise it. scripts/check.mjs enforces the caps in grade_caps.",
  "maturity": "Live and beta products may be scored under the caps; announced and retired products are listed in the product register, not scored (check.mjs fails a scored announced or retired cell).",
  "us_first": "The US availability dimension scores documented US availability and coverage only. International breadth is recorded as an attribute and earns no points.",
  "numbers": "A projected visit is never scored as an observed one, whatever the vendor calls it; the cell rationale records the measurement basis (observed, projected, declared, inferred). Panel sizes are compared only on the same definition; bidstream reach is never a panel. 'Lift' over a matched control is recorded as a matched comparison, with the vendor's own term alongside."
 },
 "grade_caps": {
  "C": 4,
  "D": 3
 },
 "inclusion_min_scored": 4,
 "dimensions": [
  {
   "key": "source_transparency",
   "label": "Source transparency",
   "short": "Sources",
   "definition": "The documented sources of the product's location observations (SDK or panel supply, bidstream-derived location, IP geolocation, first-party or point-of-sale, telco or carrier, Wi-Fi or beacon, user-declared), with the proportion each contributes and the precision class of each. 'Opt-in', 'proprietary' or 'first-party' without a description of how observations are collected is not a source description. A regulator or court record that describes the product's sources counts as an official record.",
   "anchors": {
    "0": "a regulator, court or independent record finds that the product's documented source or consent claims were false or materially incomplete",
    "1": "'proprietary', 'opt-in' or 'first-party' data asserted with no description of how observations are collected",
    "2": "one source type named (for example 'SDK data') with no statement about other sources, proportions or precision",
    "3": "the source types used are named, without proportions or per-source precision class",
    "4": "source types named with proportions or counts, and the precision class of each, from vendor documentation only",
    "5": "source types, proportions and per-source precision class documented by an official record (filing, regulator record) or independent observation"
   }
  },
  {
   "key": "visit_definition",
   "label": "Location fix and visit definition",
   "short": "Definition",
   "definition": "How a location fix is accepted (horizontal accuracy threshold, freshness) and how the product turns fixes into its unit: for cohorts A and C, a visit (polygon or radius geofence, dwell rule, de-duplication, accuracy filter); for cohort B, segment qualification (polygon or radius, dwell, recency and frequency rules); for cohort D, geofence or place detection (detection method, accuracy filter, dwell, on-device or server). The precision class the product sells is recorded here. Validation of the resulting numbers is scored under ground-truth validation.",
   "anchors": {
    "0": "see anchors_by_cohort",
    "1": "see anchors_by_cohort",
    "3": "see anchors_by_cohort",
    "5": "see anchors_by_cohort"
   },
   "anchors_by_cohort": {
    "measurement": {
     "0": "an independent record finds that the product's visits do not follow its own stated rules, or the vendor documents that no dwell or accuracy rule is applied",
     "1": "'precise', 'real-time' or 'store visits' asserted, with no definition of a visit",
     "2": "polygon or radius type documented, without a dwell rule, accuracy threshold or precision class",
     "3": "polygon or radius type and dwell rule documented, without accuracy threshold, de-duplication rule or detection error",
     "4": "polygon or radius type, dwell rule, accuracy threshold and precision class documented, without a published detection error statistic",
     "5": "all of polygon or radius type, dwell rule, accuracy threshold, de-duplication rule and precision class documented, with a published detection error statistic"
    },
    "intelligence": {
     "0": "an independent record finds that the product's visits do not follow its own stated rules, or the vendor documents that no dwell or accuracy rule is applied",
     "1": "'foot traffic' or 'visits' asserted, with no definition of a visit",
     "2": "polygon or radius type documented, without a dwell rule, accuracy threshold or precision class",
     "3": "polygon or radius type and dwell rule documented, without accuracy threshold, de-duplication rule or detection error",
     "4": "polygon or radius type, dwell rule, accuracy threshold and precision class documented, without a published detection error statistic",
     "5": "all of polygon or radius type, dwell rule, accuracy threshold, de-duplication rule and precision class documented, with a published detection error statistic"
    },
    "targeting": {
     "0": "an independent record finds that segment qualification does not follow the product's stated rules, or the vendor documents that no dwell, recency or accuracy rule is applied",
     "1": "'precise', 'real-time' or 'location audiences' asserted, with no definition of how a device qualifies",
     "2": "polygon or radius type documented, without dwell, recency or precision class",
     "3": "polygon or radius type and either a dwell or a recency rule documented, without accuracy threshold or precision class",
     "4": "polygon or radius type, dwell, recency and frequency rules, accuracy threshold and precision class documented, without a published error statistic for qualification",
     "5": "all of polygon or radius type, dwell, recency and frequency rules, accuracy threshold and precision class documented, with a published error statistic for qualification"
    },
    "developer": {
     "0": "an independent record finds that detection does not follow the product's stated rules",
     "1": "'accurate geofencing' asserted, with no description of the detection method",
     "2": "detection method named (for example OS geofencing, continuous tracking, significant-change) without accuracy filter, dwell or on-device versus server statement",
     "3": "detection method, accuracy filter and dwell documented, without a detection error statistic",
     "4": "detection method, accuracy filter, dwell, on-device versus server processing and configurable thresholds documented, without a published detection error statistic",
     "5": "all of those documented, with a published detection error statistic (false-positive and false-negative rates or equivalent) on stated test conditions"
    },
    "movement": {
     "0": "an independent record finds the product's fixes do not follow its stated acceptance rules",
     "1": "\"precise\" or \"high quality\" asserted with no fix-acceptance rule",
     "2": "one of horizontal-accuracy threshold, freshness rule or de-duplication rule documented",
     "3": "two of horizontal-accuracy threshold, freshness rule and de-duplication rule documented",
     "4": "all three documented, with the precision class of each source, without a published error statistic",
     "5": "all three documented with the precision class of each source and a published error statistic for fix accuracy"
    }
   }
  },
  {
   "key": "ground_truth",
   "label": "Ground-truth validation",
   "short": "Validation",
   "definition": "Agreement of the product's numbers with independent references. Cohorts A and C: door counts, transactions, loyalty data or official visitor statistics for the same places and period. Cohort B: independent on-target or accuracy validation of segments (a device in a 'visited X' segment did visit X). Cohort D: independent detection-accuracy benchmarks. Independent means produced by a party with no financial interest; unknown funding is not independent. Replicated means at least two comparisons on different datasets, at least one of them independent. The data vintage of each validation is recorded in the cell.",
   "anchors": {
    "0": "see anchors_by_cohort",
    "1": "see anchors_by_cohort",
    "3": "see anchors_by_cohort",
    "5": "see anchors_by_cohort"
   },
   "anchors_by_cohort": {
    "measurement": {
     "0": "an independent comparison with a published method finds the product's numbers deviate systematically from the reference beyond the vendor's stated error, or finds systematic bias where no error is stated, with no rebuttal of equal design",
     "1": "accuracy claims only ('highly accurate', 'validated') with no comparison described",
     "2": "a vendor comparison with sample and reference stated but no method or error statistic",
     "3": "a vendor comparison with a published method (places, period, reference, statistic) and no held-out design",
     "4": "an independent comparison on one dataset with error statistics, or a vendor comparison with a held-out design and a published method",
     "5": "independent, out-of-sample comparisons with error statistics, replicated on different datasets"
    },
    "intelligence": {
     "0": "an independent comparison with a published method finds the product's numbers deviate systematically from the reference beyond the vendor's stated error, or finds systematic bias where no error is stated, with no rebuttal of equal design",
     "1": "accuracy claims only ('highly accurate', 'validated') with no comparison described",
     "2": "a vendor comparison with sample and reference stated but no method or error statistic",
     "3": "a vendor comparison with a published method (places, period, reference, statistic) and no held-out design",
     "4": "an independent comparison on one dataset with error statistics, or a vendor comparison with a held-out design and a published method",
     "5": "independent, out-of-sample comparisons with error statistics, replicated on different datasets"
    },
    "targeting": {
     "0": "an independent validation finds the product's segments do not match their definition beyond the vendor's stated error, or finds systematic error where none is stated, with no rebuttal of equal design",
     "1": "accuracy claims only ('precise', 'verified audiences') with no validation described",
     "2": "a vendor on-target or accuracy figure with sample stated but no method or reference",
     "3": "a vendor validation with a published method (reference, sample, period, statistic) and no held-out design",
     "4": "an independent validation on one dataset with error statistics, or a vendor validation with a held-out design and published method",
     "5": "independent, out-of-sample validations of segment accuracy with error statistics, replicated"
    },
    "developer": {
     "0": "an independent benchmark finds detection accuracy below the vendor's stated figures, with no rebuttal of equal design",
     "1": "accuracy claims only ('industry-leading accuracy') with no benchmark described",
     "2": "a vendor accuracy figure with test conditions stated but no method",
     "3": "a vendor benchmark with a published method (devices, conditions, reference, statistic) and no independent reproduction",
     "4": "an independent benchmark on one test set with error statistics, or a vendor benchmark reproduced by a named third party with the method published",
     "5": "independent benchmarks with error statistics on stated conditions, replicated"
    },
    "movement": {
     "0": "an independent comparison with a published method finds the panel unrepresentative beyond any stated error, with no rebuttal of equal design",
     "1": "representativeness or accuracy asserted with no comparison described",
     "2": "a vendor comparison against census or another reference with sample stated but no method",
     "3": "a vendor comparison against census or another reference with a published method and no held-out design",
     "4": "an independent comparison against census or another reference on one dataset, with error statistics",
     "5": "independent comparisons against census or other references with error statistics, replicated on different datasets and periods"
    }
   }
  },
  {
   "key": "causal_design",
   "label": "Causal design",
   "short": "Causal",
   "definition": "Cohort A only. Causal capability for assessing media effects: the documented default control design of the product's visit or visit-lift reporting (randomised or holdout, including PSA holdouts, ghost ads and geographic holdouts or geo-experiments; matched or synthetic control; or none), with minimum samples, significance rule and uncertainty. A design documented only as available, not as the default, is recorded and scores as anchor 4 describes. An unknown design is n/e, never 1. A truthful exposed-only metric is scored 1 and labelled descriptive: it supplies no causal comparison and implies no false claim.",
   "anchors": {
    "0": "a source documents that lift the product reported as causal rested on no control, or an independent record finds its control design does not support the causal claim it made",
    "1": "documented exposed-only default: visitation after exposure with no causal comparison (descriptive; not a mislabelled claim unless a source shows the claim)",
    "2": "a matched or synthetic control asserted, without the matching method, variables or limits documented",
    "3": "a matched or synthetic control by default, with the matching method, variables and limits documented",
    "4": "a randomised or holdout design available and documented but not shown as the default, with the default's limits stated; or a holdout by default without documented minimum samples, significance rule or uncertainty",
    "5": "a randomised or holdout control by default, with minimum samples, significance rule and uncertainty documented"
   }
  },
  {
   "key": "coverage",
   "label": "Coverage",
   "short": "Coverage",
   "definition": "Where the product works, scored per cohort. Cohorts A and C: US places with documented visit measurement (polygons or geofences), counted as places, not chains, from a dated statement with a definition. Cohort B: channels in which segments activate live (mobile in-app, web, CTV, DOOH, audio, social, direct mail), each counted once. Cohort D: platforms with documented SDKs or APIs (iOS, Android, web, cross-platform frameworks such as React Native, Flutter or Capacitor, server-side APIs), each counted once. Live means available as a product at the cutoff, not a one-off study. Thresholds are inclusive. The place and device thresholds are author-set breadth categories, not demonstrated thresholds of accuracy or buyer suitability. Where a vendor states places with reportable observations, that count is used; otherwise the mapped place base, and the cell says which. Cohort C2 (raw movement data): US geographic observation coverage.",
   "anchors": {
    "0": "see anchors_by_cohort",
    "1": "see anchors_by_cohort",
    "3": "see anchors_by_cohort",
    "5": "see anchors_by_cohort"
   },
   "anchors_by_cohort": {
    "measurement": {
     "0": "a source documents that the product measures no US places",
     "1": "bespoke or campaign-specific places only, no documented place base",
     "2": "10,000 or more US places, or chain-level coverage only",
     "3": "100,000 or more US places with polygons or geofences documented",
     "4": "1,000,000 or more US places with polygons or geofences documented",
     "5": "5,000,000 or more US places with polygons documented, with the place-base definition and date stated"
    },
    "intelligence": {
     "0": "a source documents that the product covers no US places",
     "1": "bespoke places only, no documented place base",
     "2": "10,000 or more US places, or chain-level coverage only",
     "3": "100,000 or more US places with polygons or geofences documented",
     "4": "1,000,000 or more US places with polygons or geofences documented",
     "5": "5,000,000 or more US places with polygons documented, with the place-base definition and date stated"
    },
    "targeting": {
     "0": "a source documents that the product has no live activation channel",
     "1": "one channel live",
     "2": "one channel live and at least one more in beta",
     "3": "two to four channels live",
     "4": "five or more channels documented, of which four are live and the rest beta",
     "5": "five or more of the seven channels live"
    },
    "developer": {
     "0": "a source documents that the product has no live platform",
     "1": "one platform live",
     "2": "one platform live and at least one more in beta",
     "3": "two to four platforms live",
     "4": "five or more platforms documented, of which four are live and the rest beta",
     "5": "five or more platforms live, each with published documentation"
    },
    "movement": {
     "0": "a source documents that the product has no US observations",
     "1": "US coverage asserted with no breakdown",
     "2": "US coverage documented at national level only, with a device or event count",
     "3": "US coverage documented by state, or for a stated share of US counties or census block groups",
     "4": "US coverage documented at county or census block group level with a stated observation period",
     "5": "US coverage documented at census block group level with per-area observation density and a stated observation period"
    }
   }
  },
  {
   "key": "data_access",
   "label": "Data access and integrations",
   "short": "Access",
   "definition": "Named, documented routes by which a buyer gets or activates the product's output. Cohort A: MMPs, ad servers, clean rooms, a documented API, log-level or raw export. Cohort B: DSPs, SSPs and curation platforms, data marketplaces, clean rooms, a documented API. Cohort C: data marketplaces (for example Snowflake Marketplace, AWS Data Exchange, Databricks Marketplace, Datarade), clean rooms, a documented API, bulk or raw delivery. Cohort D: documented SDKs and APIs, integrations with analytics, CRM or messaging platforms. Each named route counts once; an API counts only when developer documentation or an API reference is published; a platform owned by the product's parent counts as one route. Missing public documentation of access is n/e, not 0. Cohort C2: data marketplaces, cloud delivery, a documented API, bulk or raw delivery.",
   "anchors": {
    "0": "an opened source explicitly establishes that the buyer receives no usable output",
    "1": "the buyer can access a dashboard or human-readable report, including a static report file, but no structured-data export or external activation route is documented",
    "2": "one named route in beta, or available only through a partner with the integration documented",
    "3": "one or two named routes, documented and live",
    "4": "three or more named routes documented, at least one of them only in beta",
    "5": "three or more named routes, documented and live"
   }
  },
  {
   "key": "scale",
   "label": "Documented production volume",
   "short": "Volume",
   "definition": "Documented production volume in a stated observation period and geography, by unit route. Cohorts A, B, C1 and C2: US monthly unique devices observed through SDK or first-party supply with location permission; cohort A may instead be scored on measured campaigns in a stated 12-month period. Cohort D: monthly devices running the SDK, or monthly API requests. Thresholds are inclusive. A daily unique-device figure establishes monthly uniques of at least that number only on the same population, geography and de-duplication basis; the cell scores the highest tier it proves and is labelled lower-bound, never measured monthly uniques, and a low daily figure sets no upper bound. Daily API requests may be summed over a documented month, or a documented daily mean over every day of the month multiplied by its days; a peak, typical-day or unspecified per-day run-rate is an attribute. No generic annualisation: an annualised partial-period run-rate and a cumulative total divided by elapsed years are attributes, not scored volume. An observation period ending before 2024 caps the cell at 2 (the age cap applies to the observation period, not the page date). Bidstream devices seen or reach is never a panel: by author policy it caps the cell at 2 and is recorded as an attribute.",
   "anchors": {
    "0": "see anchors_by_cohort",
    "1": "see anchors_by_cohort",
    "3": "see anchors_by_cohort",
    "5": "see anchors_by_cohort"
   },
   "anchors_by_cohort": {
    "measurement": {
     "0": "a source documents that the product is not in production",
     "1": "a stated panel below 1,000,000 US monthly devices or fewer than 20 campaigns a year, or a figure with no period or definition",
     "2": "1,000,000 or more US monthly devices, or 20 or more campaigns a year; or any bidstream-only figure; or any observation period ending before 2024",
     "3": "5,000,000 or more US monthly devices, or 100 or more campaigns a year",
     "4": "20,000,000 or more US monthly devices, or 1,000 or more campaigns a year",
     "5": "50,000,000 or more US monthly devices observed through SDK or first-party supply, or 10,000 or more campaigns a year, with definition and period stated"
    },
    "targeting": {
     "0": "a source documents that the product is not in production",
     "1": "a stated panel below 1,000,000 US monthly devices, or a figure with no period or definition",
     "2": "1,000,000 or more US monthly devices; or any bidstream-only figure; or any observation period ending before 2024",
     "3": "5,000,000 or more US monthly devices",
     "4": "20,000,000 or more US monthly devices",
     "5": "50,000,000 or more US monthly devices observed through SDK or first-party supply, with definition and period stated"
    },
    "intelligence": {
     "0": "a source documents that the product is not in production",
     "1": "a stated panel below 1,000,000 US monthly devices, or a figure with no period or definition",
     "2": "1,000,000 or more US monthly devices; or any bidstream-only figure; or any observation period ending before 2024",
     "3": "5,000,000 or more US monthly devices",
     "4": "20,000,000 or more US monthly devices",
     "5": "50,000,000 or more US monthly devices observed through SDK or first-party supply, with definition and period stated"
    },
    "developer": {
     "0": "a source documents that the product is not in production",
     "1": "a stated figure below 1,000,000 monthly devices or 10,000,000 monthly API requests, or a figure with no period or definition",
     "2": "1,000,000 or more monthly devices or 10,000,000 or more monthly API requests; or any observation period ending before 2024",
     "3": "5,000,000 or more monthly devices or 100,000,000 or more monthly API requests",
     "4": "25,000,000 or more monthly devices or 1,000,000,000 or more monthly API requests",
     "5": "100,000,000 or more monthly devices or 10,000,000,000 or more monthly API requests, with definition and period stated"
    },
    "movement": {
     "0": "a source documents that the product is not in production",
     "1": "a stated panel below 1,000,000 US monthly devices, or a figure with no period or definition",
     "2": "1,000,000 or more US monthly devices; or any bidstream-only figure; or any observation period ending before 2024",
     "3": "5,000,000 or more US monthly devices",
     "4": "20,000,000 or more US monthly devices",
     "5": "50,000,000 or more US monthly devices observed through SDK or first-party supply, with definition and period stated"
    }
   }
  },
  {
   "key": "us_availability",
   "label": "US availability and coverage",
   "short": "US",
   "definition": "Documented US availability and US-specific coverage only: sold in the US, built on US observations (US panel or US places), and used in US production (named US clients or US campaigns). International breadth is an attribute and earns no points.",
   "anchors": {
    "0": "a source documents that the product is not available in the US",
    "1": "US mentioned incidentally (for example a single US study), no documented US availability",
    "2": "available in the US only through a partner or reseller, with the arrangement documented",
    "3": "available in the US, with neither US observations nor US production use documented; or US availability in beta",
    "4": "generally available in the US, with either US observations (panel or places) or US production use documented, not both",
    "5": "generally available in the US, with US observations and US production use both documented"
   }
  },
  {
   "key": "assurance",
   "label": "Independent assurance",
   "short": "Assurance",
   "definition": "Completed independent or commissioned assessment scoped to product, metric, environment and standard, read from the assessor's own record. Independence comes from verified scheme governance, impartiality and conflict controls, published criteria, a competent assessor and a public scope and result; payment of normal assessment fees does not disqualify it (the same test for MRC and for any certification body, whose accreditation is checked with its accreditation body). An assessment a vendor commissions outside such a scheme is commissioned. Scores 2 to 5 need a public scope, date, result and tested version. An audit in progress, even when the assessor confirms it, is a status flag, not a score. Withdrawal, lapse or revocation after withdrawal is a history flag, not 0. Security-only certifications (SOC 2, ISO 27001) belong to privacy.",
   "anchors": {
    "0": "see anchors_by_cohort",
    "1": "see anchors_by_cohort",
    "3": "see anchors_by_cohort",
    "5": "see anchors_by_cohort"
   },
   "anchors_by_cohort": {
    "measurement": {
     "0": "MRC or another accreditor denied, failed or withdrew for cause the accreditation of the product's visit or lift metrics, current at the cutoff",
     "1": "self-attested: the vendor states conformance with MRC's location-based advertising guidelines or another standard, with no accreditor record",
     "2": "MRC accreditation of input metrics the visit metric is built on (for example served or viewable impressions), for the same product, with no visit-metric accreditation",
     "3": "a completed third-party assessment of the product's visit or lift metrics by a non-accreditor, with a public scope and result",
     "4": "MRC accreditation, current at the cutoff, covering the product's visit or lift metrics in at least one but not every environment in which it sells them",
     "5": "MRC accreditation, current at the cutoff, covering every visit and lift metric the product sells, in every environment in which it sells them"
    },
    "targeting": {
     "0": "a published, current failure of the criterion for the assessed product or metric (denied, failed or withdrawn by the assessor for cause), still applicable to the current version",
     "1": "self-attestation only (for example \"validated\" or \"built to MRC guidelines\"), with no assessor record",
     "2": "a completed commissioned assessment of part of the product's metrics, with a named assessor and a public scope and result",
     "3": "a completed commissioned assessment of all relevant metrics, or a completed independent assessment of part of them, with a public scope and result (the two are not comparable and the cell says which)",
     "4": "a completed independent assessment of all relevant metrics in at least one sold environment, with the other sold environments explicitly excluded",
     "5": "a completed independent assessment covering all relevant metrics in every sold environment"
    },
    "intelligence": {
     "0": "a published, current failure of the criterion for the assessed product or metric (denied, failed or withdrawn by the assessor for cause), still applicable to the current version",
     "1": "self-attestation only (for example \"validated\" or \"built to MRC guidelines\"), with no assessor record",
     "2": "a completed commissioned assessment of part of the product's metrics, with a named assessor and a public scope and result",
     "3": "a completed commissioned assessment of all relevant metrics, or a completed independent assessment of part of them, with a public scope and result (the two are not comparable and the cell says which)",
     "4": "a completed independent assessment of all relevant metrics in at least one sold environment, with the other sold environments explicitly excluded",
     "5": "a completed independent assessment covering all relevant metrics in every sold environment"
    },
    "movement": {
     "0": "a published, current failure of the criterion for the assessed product or metric (denied, failed or withdrawn by the assessor for cause), still applicable to the current version",
     "1": "self-attestation only (for example \"validated\" or \"built to MRC guidelines\"), with no assessor record",
     "2": "a completed commissioned assessment of part of the product's metrics, with a named assessor and a public scope and result",
     "3": "a completed commissioned assessment of all relevant metrics, or a completed independent assessment of part of them, with a public scope and result (the two are not comparable and the cell says which)",
     "4": "a completed independent assessment of all relevant metrics in at least one sold environment, with the other sold environments explicitly excluded",
     "5": "a completed independent assessment covering all relevant metrics in every sold environment"
    },
    "developer": {
     "0": "a published, current failure of the criterion for the assessed product or metric (denied, failed or withdrawn by the assessor for cause), still applicable to the current version",
     "1": "self-attestation only (for example \"validated\" or \"built to MRC guidelines\"), with no assessor record",
     "2": "a completed commissioned assessment of part of the product's metrics, with a named assessor and a public scope and result",
     "3": "a completed commissioned assessment of all relevant metrics, or a completed independent assessment of part of them, with a public scope and result (the two are not comparable and the cell says which)",
     "4": "a completed independent assessment of all relevant metrics in at least one sold environment, with the other sold environments explicitly excluded",
     "5": "a completed independent assessment covering all relevant metrics in every sold environment"
    }
   }
  },
  {
   "key": "method_disclosure",
   "label": "Method disclosure",
   "short": "Disclosure",
   "definition": "Completeness of the public methodology, counted over seven elements: (1) sources of location observations; (2) fix and visit, segment or detection definition; (3) panel size and consent route (or, for cohort D, how end-user permission is obtained); (4) projection or segment-building method (for cohort D, the detection algorithm or configuration model); (5) validation statistics; (6) control design for lift products, or segment-accuracy method, or detection-accuracy method; (7) update cadence and uncertainty reporting. 'With data' means underlying data, code or a replicable dataset is available to buyers or researchers.",
   "anchors": {
    "0": "a source documents that the method is not disclosed to buyers",
    "1": "a marketing description only (none or one element)",
    "2": "two or three of the seven elements published",
    "3": "four to six of the seven elements published (a summary method)",
    "4": "all seven elements published, without data",
    "5": "all seven elements published, with data"
   }
  },
  {
   "key": "privacy",
   "label": "Privacy and consent posture",
   "short": "Privacy",
   "definition": "The consent route for SDK or first-party supply, sensitive-place suppression, handling of precise location under US state law, data-broker registration where required, and the regulatory record. Each cell records current_controls_score (anchors 1 to 5, from current evidence), an event flag (type, scope, responsible entity, event date, remediation) and, separately, active legal obligations such as a 20-year FTC order. The value that enters the Ground Quotient is the author-defined risk-adjusted score: min(current_controls_score, 1) while a regulator order, entered judgment, court finding or confirmed breach involving the product's location data is dated within the three years before the cutoff (24 October 2023 to 24 October 2026), otherwise current_controls_score. The paper shows both scores and reports the cap's effect on the quotient. Orders are dated from the final order or entered judgment, breaches from confirmed discovery; a repeated press release does not reset the clock. If current controls cannot be assessed the cell is n/e and the cap is never imputed as 1.",
   "anchors": {
    "0": "a positively documented current failure: a dated primary regulator or court finding, or a company or regulator incident update, expressly identifies an ongoing material prohibited practice, uncontained access, or an overdue remedial act affecting this product in the current period (a final order imposing future duties, a pending allegation or absent compliance material does not meet this test)",
    "1": "a generic company privacy policy only; or the risk cap applies (a qualifying event inside the three-year window)",
    "2": "a company-level policy that names location data, its sources and the purposes it is used for",
    "3": "one of the product-specific consent route or sensitive-place suppression documented by the vendor",
    "4": "product-specific consent route and sensitive-place suppression both documented by the vendor, with named legal frameworks addressed for the product (specific state laws, the applicable FTC order definitions, or the NAI precise-location standards)",
    "5": "both documented, and compliance documented by an independent record scoped to the product's location data handling"
   }
  }
 ],
 "peer_groups": [
  {
   "key": "specialist",
   "label": "Specialists: location data, measurement and intelligence specialists",
   "definition": "Companies whose primary business is location data, visit measurement or location intelligence (for example Foursquare, Placer.ai, InMarket, Azira, Unacast, SafeGraph, Veraset, Advan)."
  },
  {
   "key": "adtech",
   "label": "Ad tech: buying and selling platforms and networks with a location product",
   "definition": "DSPs, SSPs, ad networks and managed-service sellers whose location product is one line of a media business (for example GroundTruth, Blis, Simpli.fi, Vistar Media, Locala, Adsmovil)."
  },
  {
   "key": "enterprise",
   "label": "Enterprise data: broad data and software companies with a location line",
   "definition": "Data, mapping, insurance or software companies for which location data is one product among many (for example Precisely, Mobilewalla, Arity, HERE, Mapbox, Esri)."
  },
  {
   "key": "developer",
   "label": "Developer platforms: location APIs and SDKs",
   "definition": "Companies selling geofencing, place detection and location infrastructure to developers (for example Radar, Bluedot, Infillion's Gimbal)."
  }
 ],
 "cohorts": [
  {
   "key": "measurement",
   "label": "A · Visit measurement and attribution",
   "definition": "Measuring store or place visits and visit lift from media exposure in any channel, sold to advertisers, agencies or media sellers.",
   "applicable": [
    "source_transparency",
    "visit_definition",
    "ground_truth",
    "causal_design",
    "coverage",
    "data_access",
    "scale",
    "us_availability",
    "assurance",
    "method_disclosure",
    "privacy"
   ],
   "banded": true
  },
  {
   "key": "targeting",
   "label": "B · Location audiences and targeting",
   "definition": "Location-derived audience segments, geofenced or geo-conquesting delivery and DOOH audience selection built on mobility data, sold for activation.",
   "applicable": [
    "source_transparency",
    "visit_definition",
    "ground_truth",
    "coverage",
    "data_access",
    "scale",
    "us_availability",
    "assurance",
    "method_disclosure",
    "privacy"
   ],
   "banded": true
  },
  {
   "key": "intelligence",
   "label": "C1 · Foot-traffic and visit analytics",
   "definition": "Foot-traffic analytics and visit or place-visit datasets sold to analysts and data buyers inside or outside media. Place-only POI and polygon datasets are listed, not scored.",
   "applicable": [
    "source_transparency",
    "visit_definition",
    "ground_truth",
    "coverage",
    "data_access",
    "scale",
    "us_availability",
    "assurance",
    "method_disclosure",
    "privacy"
   ],
   "banded": true
  },
  {
   "key": "movement",
   "label": "C2 · Raw movement data",
   "definition": "Raw or device-level location observations (movement feeds and panels) sold to data buyers. Visit definition and ground truth are read at the fix level; shown without bands if fewer than six rows are band-eligible.",
   "applicable": [
    "source_transparency",
    "visit_definition",
    "ground_truth",
    "coverage",
    "data_access",
    "scale",
    "us_availability",
    "assurance",
    "method_disclosure",
    "privacy"
   ],
   "banded": true
  },
  {
   "key": "developer",
   "label": "D · Geofencing and visit-detection SDKs and APIs",
   "definition": "Geofencing, place detection and trip or visit detection sold to developers: a selected specialist sample. Places and maps APIs are listed, not scored, whoever owns them. Shown without bands by design.",
   "applicable": [
    "source_transparency",
    "visit_definition",
    "ground_truth",
    "coverage",
    "data_access",
    "scale",
    "us_availability",
    "assurance",
    "method_disclosure",
    "privacy"
   ],
   "banded": false
  }
 ],
 "cohorts_note": "Each cohort lists its applicable dimensions (the mask). Cohort A carries eleven (projection is a separate module outside the quotient). Cohorts B, C1, C2 and D carry ten: causal design applies only to A. Every banded cohort keeps at least one applicable dimension in each group. A cohort that carries bands needs at least six band-eligible rows before any band is shown. Rows are never compared across cohorts.",
 "row_order": [],
 "matrix_title": "The capability matrix",
 "matrix_note": "Each cell scores one documented capability from 0 to 5 against fixed anchors; n/e means no evidence, n/a means the dimension does not apply to the cohort. Click a cell for its rationale, availability, evidence grade, date, sources and verification status. Rows are compared only within their cohort; cohort D is shown without bands by design. Projection method is a separate module shown beside the matrix; privacy shows the risk-adjusted value with current controls alongside.",
 "matrix_foot": "",
 "composite_index": {
  "used": true,
  "name": "Ground Quotient (GQ)",
  "added": "2026-10-24, with these rules and before any product was scored, as the quotient of the shared method (shared research rules v3) first used for the attention, audio and gaming papers.",
  "groups": {
   "Depth": {
    "label": "Depth",
    "meaning": "What the data and the number are: where the observations come from, how a fix becomes a visit or a segment, agreement with ground truth, and (cohort A) whether lift rests on a control.",
    "dims": [
     "source_transparency",
     "visit_definition",
     "ground_truth",
     "causal_design"
    ]
   },
   "Reach": {
    "label": "Reach",
    "meaning": "Where it works: places, channels or platforms covered, data routes, production scale and US coverage.",
    "dims": [
     "coverage",
     "data_access",
     "scale",
     "us_availability"
    ]
   },
   "Standing": {
    "label": "Standing",
    "meaning": "Whether a buyer can trust and trade it: independent assurance, method disclosure and privacy posture.",
    "dims": [
     "assurance",
     "method_disclosure",
     "privacy"
    ]
   }
  },
  "weights": {
   "Depth": 0.45,
   "Reach": 0.25,
   "Standing": 0.3
  },
  "field_mean_method": "raw_mean",
  "prior_strength": 4,
  "shrink_alternatives": [
   0,
   2,
   8
  ],
  "missing_scenario_values": [
   1,
   4
  ],
  "missing_envelope_values": [
   0,
   5
  ],
  "bands": [
   [
    "Most documented",
    12
   ],
   [
    "Well documented",
    1
   ],
   [
    "Partly documented",
    -8
   ],
   [
    "Least documented",
    -1000
   ]
  ],
  "thin_record_min": 6,
  "cohort_min_banded": 6,
  "method": "Within each cohort, over its admitted rows (thin rows included; listed and historical products never count): each group score is the mean of the row's counted numeric cells in the group (n/e, n/a and unverified cells skipped, never zero). Raw = 0.45 Depth + 0.25 Reach + 0.30 Standing, renormalised over the groups present. F = the arithmetic mean of the cohort's Raw scores (field_mean_method raw_mean). Shrunk = (k x Raw + K x F) / (k + K), k = the row's counted numeric cells, K = prior strength 4. Quotient = 100 x Shrunk / 5 at full precision; only the displayed value is rounded, halves up. An empty cohort has no quotient. This field mean differs from the Contextual and Native Quotients, which pooled group scores.",
  "reweightings": [
   {
    "name": "Equal thirds",
    "weights": {
     "Depth": 0.3333333333333333,
     "Reach": 0.3333333333333333,
     "Standing": 0.3333333333333333
    }
   },
   {
    "name": "Depth-led",
    "weights": {
     "Depth": 0.6,
     "Reach": 0.2,
     "Standing": 0.2
    }
   },
   {
    "name": "Reach-led",
    "weights": {
     "Depth": 0.3,
     "Reach": 0.45,
     "Standing": 0.25
    }
   },
   {
    "name": "Standing-led",
    "weights": {
     "Depth": 0.3,
     "Reach": 0.2,
     "Standing": 0.5
    }
   }
  ],
  "why_not_a_sum": "A sum counts an unscored dimension as zero and so penalises a thin public record rather than a weak product; a plain average of scored cells rewards missing evidence. Group means plus shrinkage limit both effects but do not remove the reward for omission: a row that leaves a documented weakness unrecorded can score higher than one that discloses it. The deletion test and the missing-evidence scenarios report that effect row by row. The quotient is conditional on the evidence observed.",
  "limits": "The index summarises publicly documented capability within a cohort, not product performance, data accuracy or business quality, and inherits the scoring limitation: one initial AI scoring pass, with a blind second AI pass only on the rows nearest a band line. Bands are reported because exact positions depend on the weights. Some anchors reward documentation as well as capability: source disclosure counts under source transparency and under method disclosure (element 1), and validation evidence under ground truth and method disclosure (element 5). The overlap is disclosed, not corrected; no performance thresholds were set because no evidence base exists to set them.",
  "bands_rule": "Bands come from the unrounded offset 20 x (Shrunk - F): Most documented at +12 or more, Well documented at +1 or more, Partly documented at -8 or more, Least documented below; equal values share a band. These are the Contextual Quotient's offsets under the names the attention paper gave them, which say what the bands measure: how much capability is documented in public.",
  "thin_rule": "A row is band-eligible with k >= thin_record_min and at least one counted cell in every group that applies under the cohort's mask; a row missing a whole applicable group is shown with that group named and no band. Count the eligible rows first: a cohort with fewer than cohort_min_banded of them shows quotients and coverage without bands.",
  "shrink_rationale": "Prior strength K = 4 is an author-defined heuristic, not a statistical estimator: the dimensions are different capabilities, not repeated measurements of one quantity. The build reruns the index with K = 0 (Raw), 2 and 8 and reports how far positions and bands move.",
  "missing_rule": "Missing evidence is not neutral. Deletion: each counted cell turned into n/e in turn, recomputing the row's k and eligibility; quotient change, admission loss and eligibility loss are reported separately. Scenarios (not bounds): row by row, with F and every other row frozen, all of the row's applicable n/e cells filled with missing_scenario_values[0], then [1]; a banded row whose band changes under either is flagged band sensitive to missing evidence. Fills of missing_envelope_values are reported separately as a hypothetical full-scale envelope, never used for the flag. Imputed cells never create admission or band eligibility: the row keeps its observed k and eligibility.",
  "reweighting_rule": "Each reweighting recomputes Raw and F across the fixed cohort."
 },
 "scorer": {
  "independent_second_scorer": false,
  "disclosure": "One initial scoring pass by the author's research process, applied after the verifier records were read, then an AI consistency audit. The rows nearest a band line are re-scored blind by a separate AI scorer (data/second-pass.json); every other row is scored once. No human second scorer is used."
 },
 "amended": [
  {
   "date": "2026-10-24",
   "before_scoring": true,
   "reason": "External review rounds 2 and 2b (OpenAI), each item checked against primary sources; dispositions in data/corrections-ledger.json (kind scoring-rules). Changes: projection moved out of the quotient into a separate module; cohort C split into C1 (foot-traffic and visit analytics) and C2 (raw movement data); causal design reworded as causal capability; scale renamed documented production volume with unit rules; assurance ladders made monotone with one independence test; privacy reports current controls with an author-defined risk cap (author decision); data access 0/1 overlap removed; quotient text corrected on the omission reward."
  }
 ],
 "modules": {
  "projection": {
   "key": "projection",
   "label": "Projection method (separate module)",
   "short": "Projection",
   "definition": "Cohorts A and C only (n/a for B and D). How observed panel visits are scaled to a population: weighting variables (demographics, geography, device share), normalisation for panel size and churn, treatment of places with thin panel counts, and the uncertainty reported per estimate. A product that reports observed counts only and documents that it does not project is scored against the 'documented as observed-only' note in the cell and the dimension is scored on what is documented about that choice.",
   "anchors": {
    "0": "an independent study with a published method finds the product's projections biased beyond their stated uncertainty, with no rebuttal of equal design",
    "1": "'estimated', 'extrapolated' or 'normalised' asserted with no description of the method",
    "2": "the method type named (for example 'weighted to census') with no variables, churn handling or uncertainty",
    "3": "method and weighting variables summarised, without churn handling, thin-count treatment or per-estimate uncertainty",
    "4": "method, weighting variables, churn handling and thin-count treatment documented, with uncertainty reported per estimate or a validation of the projection, not both",
    "5": "method, weighting variables, churn handling and thin-count treatment documented, with per-estimate uncertainty and a validation of the projection against a reference"
   },
   "module_rule": "Not part of the Ground Quotient. Shown beside the matrix for products in cohorts A and C1 that make population claims (estimated, extrapolated, normalised or total visits). A product claiming estimates or totals whose method is undisclosed is n/e in the module. A documented observed-only output that makes no population inference is recorded as not_applicable_to_output, with source and reason. Moved out of the quotient on 2026-10-24 after external review showed that n/e or a row-specific exemption would reward omission or compare unlike tasks."
  }
 }
}
