Methodology
This page states the exact rules Cairn follows to compile a fact, what the build's crawler audit does and does not prove, and how a record is reviewed, corrected, and dated. Every rule here is enforced by the build, not just written down: a page that breaks one of them fails "npm run check" and is never published. Show this page to anyone who asks how the index is made — it is the proof, not a pitch.
The exact compilation rules
- A fact is read from the operator's own public website — never an aggregator, a review site, or a directory. Those are used only as a worklist of businesses to research directly, never as a source for a fact that gets published.
- Every fact records the exact page it was read from and the calendar date it was read, in America/Phoenix.
- A fact the operator does not publish is recorded as
"Not published by the operator"— a dated, honest absence — never guessed and never left blank. - A verified record refuses "unknown" anywhere in it — address, hours, a licence, a practitioner's licence, an offering's price — because confirming every one of those with the operator is what verification is.
- Hours and other clock times are America/Phoenix wall-clock times, formatted with string math, never
Datearithmetic — Arizona does not observe daylight saving time, so nothing here shifts in March or November. - A comparison table is ordered by listed price alone. Cairn never ranks, scores, or names a best pick, in any category, ever.
What the crawler audit proves — and does not
Every build runs a check that fetches each page the way an AI crawler does — no browser, no JavaScript — and confirms three things: every required fact is visible in the initial HTML, every fact carries a date a reader can see, and the page's structured data mirrors the visible page exactly, never adding a claim that is not also written out in plain text. A page that hides a fact behind JavaScript, forgets a date, or lets its JSON-LD say something the page itself does not fails the build.
That check proves a fact is published honestly — visible, dated, not invented in structured data. It does not prove the fact is true today. Only two things can make a fact more trustworthy than "compiled from the operator's own site on this date": the editor confirming it directly with the operator (verification), and the date next to it being recent.
The same gate is what a GPTBot fetch sees. After a build, curl -A "GPTBot" against a page must return every required fact in the first HTML response.npm run check is typecheck, a static build, a self-test of those audit rules, and a GPTBot-style fetch of every page. A fact that only exists after JavaScript runs fails the build.
The audit also reads sitemap.xml against the HTML that actually shipped: every public page without a robots noindex tag must be listed, and a noindex page must not be. The machine-readable feed at /data/sedona-index.json is checked the same way — a row cannot carry a phone or a name that is missing from that operator's own record file.
The listing ladder
- sample — a fabricated demonstration listing. The page says so above the fold and stays out of the sitemap.
- unverified — a real business, compiled only from the operator's own public website. Every fact carries the URL it was read from. The page banners "Compiled, not yet confirmed." The record is indexed.
- verified — the editor confirmed every fact with the operator on the date printed on the page. A verified record refuses
"unknown"anywhere. Verification does not depend on payment.
Review cadence
A verified record carries a nextReviewDue date, set when the record is confirmed. Once today's date passes that due date, the page prints an overdue banner — "Review overdue since" the due date — above the fold, visible to a crawler the same way every other banner on this site is. The banner is never written by a script; only a human re-check clears it, by confirming the facts again and moving the due date forward.
How "unknown" is recorded
When an operator's own site does not publish a fact — a price, a street address, a licence number —Cairn records the field as "Not published by the operator", together with the date it looked. The page prints exactly that sentence in place of the fact, instead of leaving a blank row or inventing a plausible-looking number. An unknown fact sorts last in any comparison and is never averaged, estimated, or filled in from a similar business.
How a correction is handled
Anyone can report an error on any page, free, with no account and without needing to own the business. A correction goes to Thomas Karl at thomas@sedonatechsolutions.com and gets an answer within seven days. A correction to a compiled (unverified) record is re-checked against the operator's own site; a correction to a verified record is confirmed with the operator directly before the page changes. Either way the fact's date moves forward to the day it was re-checked — a correction is never applied silently without updating the date next to it.
Change history
Facts live in versioned files in this site's own repository, not in a database with no memory. Every change to a published fact — a corrected phone number, a new operator, a price update — is a commit with an author and a timestamp, so anyone can see exactly what changed, when, and (from the commit message) why. There is no hidden edit history and no silent overwrite.
See also
About Cairn for who publishes this index and why it exists, and the terms page for the licence facts are published under and an operator's rights.
Contact
Thomas Karl, Sedona Tech Solutions LLC — thomas@sedonatechsolutions.com.