AI recommendation visibility methodology
Every census edition published here is run under a numbered version of this method and says which one. This is version 1.1, in force from 23 September 2026. It exists so that two editions can be compared, and so that a reader can tell a method change from a result change.
The four things measured
These are separate quantities. They fail separately and they mean different things, so each edition reports them separately rather than combining them into one visibility score.
| Term | Definition |
|---|---|
| Mention | The organization appears by name in the answer text of a run. |
| Reach | The number of runs, out of the edition's total, in which the organization is mentioned. |
| Question breadth | The number of distinct questions in the pack, out of the pack's total, under which the organization is mentioned at least once. |
| Position 1 | The number of runs in which the organization is the first named organization in the answer. |
Reach and question breadth answer different questions and can disagree sharply. A firm named often under one question and a firm named occasionally under nine are in different positions even at the same reach.
Being cited as a source is a fifth quantity and is not the same as being mentioned. Where an edition can observe it, it is reported under its own name and never folded into reach.
Collection
Each edition runs a frozen prompt pack. The pack is committed to version control and its hash is recorded on every run record, so the strings can be shown not to have changed during or after collection. From version 1.1 onward the pack is committed and pushed on a different day from collection; version 1.0 does not require this, and editions run under 1.0 say so.
Every question is run the same number of times. Runs are logged out, with no conversation history, and each run sends one prompt string exactly as written with no system prompt.
The location parameter available to the instrument is recorded. Where the instrument has no entry below country level, the city is named in the question text instead and the edition says so, because that is a weaker geographic signal than a real local connection.
Where the endpoint does not report a model identifier, the edition states that it measures what that interface returned on that day rather than the behaviour of any named model. Response hashes are recorded and duplicates are reported, which rules out byte-for-byte caching and nothing more.
Extraction
Organization names are extracted from each stored response by a committed script. Every channel the extractor reads is named in the edition, and so is every channel it does not read.
Extraction is audited against a ground truth read by a reader who has not seen the extractor's output. Recall and precision are scored under a rule written and committed before the scorer runs. Ground truth is never produced by the thing being tested; where any part of it was, the measurement is void rather than weakened.
Recall is reported for the entity class the edition is about and for all named organizations, because the two differ substantially and the wider figure is the one that shows what the extractor does with regulators, portals and systems.
Entity resolution
Names as an engine writes them are not identities. An edition resolves each extracted name to an entity in a reference set, and the reference set is a government licence register wherever one exists for the market.
Branches and spelling variants merge onto one identity. Trade names that differ from public brands are bridged by hand, with a reason recorded per entry, and the bridge is published with the edition. Resolution decisions are made after the results arrive, which the edition states, because they cannot be made before the names are known.
Aggregate figures survive imperfect resolution better than individual ones do. An edition reports both the resolved and unresolved version of any aggregate that resolution moves, and treats a single firm's figures as more sensitive to resolution error than the edition median.
Resolution support. A listing card keeps its ORN match only if at least one independent signal beyond the name supports it: its contact number on a broker card at that ORN, current or ended; a website the register or the firm's own site ties to that ORN; or an address the firm's own site lists. A listing card whose signals point away from its matched ORN is re-mapped only when one firm holds at least 75% of the broker cards carrying that number and at least 2 of them; otherwise the card moves to unmatched. A card with no signal either way keeps its name match and is labelled name-only. Website and address signals are recorded by hand. This rule was written on 19 September 2026, after dubai-01 was published; dubai-01's corrections apply it and say so.
Deferred to the next edition. From edition 2, a listing card's contact number may also resolve a firm that no name path reached, under the same threshold: one firm holds at least 75% of the broker cards carrying that number, and at least 2 of them. It is not applied to dubai-01, because it was written after dubai-01's unmatched names had been checked against it (dubai-01 correction 13).
Declared ORN. A declared ORN is an ORN published by the firm on its own site: footer, about, legal or contact page. The label must say ORN, RERA or Office Registration Number. A DED trade licence number is never an ORN. Read the label, never the number alone. A labelled number outside the register's ORN range, or absent from the register, is rejected. Every rejection is hand-decided and recorded.
Tiers. Every resolved firm an edition reports carries one tier, stating what its match rests on.
| Tier | Meaning |
|---|---|
| declared | The firm's own site publishes a labelled ORN, and it is the ORN the edition maps it to. |
| corroborated | Declared, and a second independent signal agrees: its listing's number on a broker card at that ORN, or an address tie. |
| supported | No declaration found, but a signal under the resolution-support rule supports the current mapping. |
| name-only | No declaration and no signal either way. The name match stands and is labelled. |
| disputed | The site declares an ORN that is not the one the edition maps the firm to. |
| unmatched | The mapping was withdrawn under the resolution-support rule and nothing supports a replacement. |
Unresolved. A name is unresolved when it was not matched by any method we could lawfully use. It is never a statement that a firm is unregistered or unlicensed.
Name matching alone gets some licences wrong, and I can measure how often. In dubai-01, name matching resolved 89 firms to a Dubai Land Department licence: 83 by automatic rules, 6 through a brand alias I researched by hand. 5 of the 89 resolved to a licence with no active brokers, all 5 by automatic rules. Of those 5, the listing's own contact number left 2 unsupported, 1 confirmed as the right licence for a firm that has since lapsed, and 2 could not be settled either way. The first error was found by matching a listing's phone number against the register, not by the lapsed-licence check, which came after. That check cannot see the same error where the wrong licence is still active. A sweep of every map listing matched by name found one such case: of 92 listings, 46 were supported by a broker's contact number or the firm's own site, 43 had no evidence either way, and 3 did not hold their match, one of them on an active licence. The register has a website field, but it is unpopulated on all but 16 of its 43,377 broker cards, and those 16 carry an OQOOD-MIGRATION placeholder rather than a URL. So a listing's name and phone number are the only identity evidence the register offers. Name matching also misses some names: a trade-name pass run over dubai-01 after publication, and derived after its names were seen, matched four names the edition had left unmatched or counted apart. It is described in full in dubai-01 correction 14.
Scoring and uncertainty
Answer-set similarity is measured with the Jaccard index over the set of organizations named in each run, reported per question and pooled. Pairs where both runs name nobody are undefined and excluded, and the scorable pair count is stated.
Interval columns give descriptive 95% binomial intervals, calculated as though each run were an independent trial. Runs are clustered within questions and are not independent, so an edition labels these as binomial intervals, says how they were computed, and states that they are not confidence intervals for the engine's general behaviour.
Every rate is published with its numerator and denominator. Every subtraction a reader is asked to accept is closed from figures stated on the page.
What an edition must publish
An edition is not published until all of these exist.
- A measurement stamp: collection date and timing, engine and interface, intermediary, question and run counts, location and language parameters, model identifier or a statement that none was reported, reference set with its date and hash, extraction figures with their scoring provenance, and the pack id, hash and commit.
- A reproducibility bundle at a resolving URL, containing the raw responses as stored, the pack, the extraction and resolution tables, the matcher source, the ground truth, and the scoring rule and script. Its manifest is published outside the archive as plain text so hashes can be checked without downloading anything.
- A limitations section stating the scope limits plainly, including limits that are also strengths.
- A corrections log, permanent, carried forward into every later edition, recording what was wrong, why, what replaced it and how the replacement was produced. Entries for errors caught before publication belong there too.
- A disclosure of the commercial interest behind the work.
Third-party reference data is linked and hashed rather than republished. Where the published file is derived from a source file, both hashes appear with the command that rebuilds one from the other.
Naming organizations
Tables are ordered by a stated quantity for readability, and the ordering is not a ranking. An edition says so, and accepts that no caveat survives being summarized by a third party.
Where a register distinguishes registered from active, the edition defines which it means and does not identify individual firms by status in prose. The published data carries the register's own fields.
Where a client of RealEstateSEO.ph appears in a table, the row is marked. The existence of clients is public, names are publishable, and deal specifics are not.
Version history
| Version | Date | Change |
|---|---|---|
| 1.0 | 18 September 2026 | First published version. In force for census edition dubai-01. |
| 1.1 | 23 September 2026 | Adds the resolution-support rule, the definition of a declared ORN, the six resolution tiers, the definition of unresolved, and the name-matching limitation measured in dubai-01. Records a number-only match as deferred to the next edition, and the trade-name pass applied after publication in dubai-01's correction 14. dubai-01 was run under 1.0; its revision 1.1 applies the resolution-support rule to published work and says so. |
Method changes are versioned and disclosed per edition. An edition run under a later version says which figures the change affects and whether it can still be compared with earlier editions.