What the engines did to you. Which pages were read, by which engine, how often, how quickly after publication, and how many of those citations sent an actual human being. Diagnosis.
The instrument behind the method. It counts the times an answer engine actually came and read your page — and then tells you whether the change you made did anything, or whether the platform simply moved.
Citation Ledger is a desktop application that reads your raw server access logs and counts AI citations as events. Not sampled. Not simulated. Not estimated from a prompt list. Every citation in the ledger is a request that a verified answer engine actually made to your server, with a timestamp, from an IP address that engine actually operates.
It runs entirely on your own machine. Your logs are never uploaded, never transmitted, and never seen by anyone but you. There is no account, no cloud, no tracker on your pages, and no code to install on your site.
What the engines did to you. Which pages were read, by which engine, how often, how quickly after publication, and how many of those citations sent an actual human being. Diagnosis.
What happens when you do something back. Register a question before you ask it; the log tells you what the engine actually did. Register a page change before you make it; the log tells you whether it worked. Causation.
A model that already knows something does not go looking for it. Live retrieval fires when the model's internal knowledge comes up short — so the presence or absence of a fetch, in a window you control, around a question you wrote, is a direct readout of what the engine does and does not carry.
| it mentioned you | it did not | |
|---|---|---|
| it fetched your page | EARNED it looked, and used you |
READ AND REJECTED it looked, and used somebody else |
| no fetch | PARAMETRIC it did not need to look you up |
INVISIBLE no fetch, no mention |
READ AND REJECTED is the only actionable failure in AI visibility, and no other instrument reports it. Every product in this category can tell you that you are not being cited. None of them can tell you that the engine came, took your page, and used a competitor's instead. Those are different problems. Only one of them is a content problem, and only one of them can be fixed.
PARAMETRIC is the number the rest of the field charges thousands of dollars a year to estimate. It falls out of a log line that isn't there.
This is the question the entire optimisation field answers badly, and the reason so much of its published advice is folklore.
Citations rise after you change a page. Was it the change — or did the platform shift that week? A before-and-after study cannot separate those two things. Not with more data, not with a longer window, not ever. The confound is structural, and almost every case study in this field has it.
Citation Ledger measures the page you changed against the pages you did not, over the same days, and subtracts:
lift = (treated after − treated before) − (control after − control before)
If your other pages moved too, it was the platform, and the instrument says so. Two cases with an identical page-level result — worked examples, chosen because they show why the page-level number alone is worthless:
| property | changed page | control arm | difference | verdict |
|---|---|---|---|---|
| Property A | +2.00/day | +0.00/day | +2.00/day | WORKED |
| Property B | +2.00/day | +2.00/day | +0.00/day | PLATFORM |
Both pages gained exactly two citations a day. One change worked. The other did nothing at all — the platform lifted everything, including pages nobody touched. A before-and-after study calls the second one a win and publishes it.
The two rows above are worked examples illustrating the arithmetic, not results from a deployment. Trial results from the live nodes will be published in the Field Notes as they complete, with the registration date stated before the outcome.
The figures below are live totals from the three IEO Engine deployment nodes as of 14 July 2026. They are counted events, not estimates. Property names are withheld; the numbers are not.
| node | verified citations | log lines read | largest single source |
|---|---|---|---|
| Local service vertical | 630 | 45,756 | conversational assistant — 519 |
| Methodology node | 211 | 22,010 | conversational assistant — 159 |
| Consumer application node | 94 | 26,112 | answer surface — 90 |
| Total | 959 | 93,878 |
Two findings worth stating plainly, because neither is what an optimisation vendor would predict:
The three nodes do not resemble each other. On one, a single conversational assistant accounts for 82% of all citations. On another, one answer surface accounts for 96% — 90 of 94. A tool that reports a single blended "AI visibility score" would flatten that distinction into noise, and the distinction is the entire story: these sites are being read by different engines, for different reasons, at different rates.
Across the three nodes, 1,660 pages have been crawled by an AI system and never once retrieved into an answer. They were eaten and not used. No prompt-sampling product can see that number, because nothing was ever asked about those pages — and it is the largest single category in the entire measurement.
Anyone can grep a log for an answer-engine user agent. That count will be wrong in three specific ways, and Citation Ledger corrects all three.
A meaningful share of traffic claiming to be an answer engine is not one. It is scanners and scrapers using an AI user agent as camouflage, arriving from address ranges the engine does not operate, frequently while probing for exposed credentials and configuration backups. Citation Ledger verifies every claimed citation against the engine's published infrastructure and reports the verification rate on screen. A raw count includes every impostor.
When a person pastes your URL into a chat, the engine fetches it using the identical agent, from the identical verified address range, as a genuine citation. In the request itself the two are indistinguishable. That is why no count derived from the request alone can be trusted, and why raw log counts systematically overstate.
The request cannot separate them. Citation Ledger can. It identifies forced citations, names the reason on screen, and subtracts them from the count. Your own team testing your own site is the most common source of inflated AI citation numbers in existence.
Answer engines read far more than they send. The ledger reports both, per engine, and the ratio between them — including the engines that read you hundreds of times and sent nobody at all. Those appear as ∞ : 1, because a zero there would read as "no gap," which is the opposite of the truth.
Most products in this category work by prompt sampling: they run a list of questions against AI platforms and record how often your brand appears. This produces a rate across a question list that somebody chose. It is a survey, and it is subject to two errors — one you can calculate, and one you cannot.
The calculable one is large. A tool tracking 15 prompts, reporting a brand that appears in roughly 20% of answers, carries a 95% sampling interval of approximately ±20 percentage points. The reported figure of 20% is consistent with anything between 0% and 40%. At 50 prompts the interval is about ±11 points. At 100 prompts, about ±8. This is binomial arithmetic and it applies to every product priced by prompt count.
The incalculable one is worse. The question list is chosen. There is no true population underneath it, so there is no fact of the matter to be wrong about. You cannot state a margin of error against a truth that does not exist. Language models are also non-deterministic — the same prompt, asked twice, does not reliably produce the same answer. This is why products built on prompt sampling generally advise reading trends rather than any single measurement, which is reasonable advice and also an admission that the individual readings are noisy.
Citation Ledger has a different error profile, and it runs in a known direction:
| source of error | effect |
|---|---|
| Impostor requests | removed and reported |
| Forced citations (a human handed over the URL) | removed and reported |
| Engines whose infrastructure cannot be verified | excluded — counted nowhere |
| A stranger pasting a link they never visited | not detectable, and not claimed to be |
| Mentions produced from the model's memory with no fetch | invisible to any log — see the Lab |
Citation Ledger produces a verified floor. A prompt-sampling tool produces an unbounded estimate. The floor means: at least this many times, on these dates, an answer engine came and read this page. That sentence is true or false, and it is checkable against a line in a file you already own.
Citation Ledger will be sold as a perpetual licence — one payment, no subscription. The instrument runs on your machine; there is no server to rent, so there is no rent to charge.
| approach | typical working tier | three-year cost |
|---|---|---|
| Citation Ledger (planned) | $999 once | $999 |
| General-purpose desktop log analyser | $209 once | $209 |
| Entry-tier prompt monitoring | $29–$189 / month | $1,000 – $6,800 |
| Mid-market visibility platform | $189–$400 / month | $6,800 – $14,400 |
| SEO suite add-on module | $358–$654 / month | $12,900 – $23,500 |
| Enterprise visibility contract | $2,000–$25,000 / month | $72,000 – $900,000 |
A general-purpose log analyser is included above because it is the honest price anchor: it is a desktop tool, it is offline, it is one-time, and it costs a fifth of this. It will show you every request an AI user agent made to your server. It will not tell you which of them were impostors, which were caused by your own team pasting URLs into a chat, which were index crawls rather than citations, which pages were read and passed over, or whether anything you changed made a difference. Those are the five questions this instrument was built to answer.
Figures above are public list prices across the category as of mid-2026, converted and banded for comparison. Licence tiers for Citation Ledger scale by number of properties: 1, 5, 10, 20, 50, and unlimited.
Every measurement instrument has a boundary. A product that will not tell you where its boundary lies is not reporting a measurement; it is reporting a mood. Here is this one's.
• Count citations as verified, timestamped events
• Reject impostors using an AI user agent as camouflage
• Separate citations you earned from ones a human handed over
• Tell you which pages were fetched and then passed over
• Time the gap between publishing and first citation
• Show pages crawled by AI and never retrieved
• Report citations-per-visit, per engine, including engines that sent nobody
• Establish whether a change you made caused anything, against a control arm
• Run entirely offline, on your machine, with nothing installed on your site
• See a mention that involved no fetch. If a model answers from
memory and never requests your page, no log line exists. This is a real blind spot and
it may be most of a large brand's exposure.
• Tell you what the visitor did next. It reports that they
arrived, not whether they converted.
• Catch a stranger pasting a link they never visited. Forced-citation
detection catches the common case — your own team, your client, a colleague — not every
case.
• Verify every engine. Some engines retrieve from ordinary
residential addresses and cannot be verified against published infrastructure. Those
citations are excluded and counted nowhere, which means the total understates.
• Turn one run into a finding. Language models are non-deterministic.
A single result is one roll of the dice, and the instrument labels it as such.
The error runs in a known direction: this instrument undercounts. Impostors are removed, forced citations are subtracted, unverifiable engines are excluded. What it reports is a floor, and a floor is the only kind of number worth defending.
Does a crawler visit mean I was cited?
No, and this is the single most common error in AI visibility measurement. Answer engines send two different classes of request. An index crawler builds a catalogue; it visits whether or not anyone asked anything. A live retrieval agent fires because a person asked a question right now. Only the second is a citation. Counting the first inflates your numbers by an order of magnitude. Citation Ledger separates them and only counts the second.
My server logs show an AI crawler visiting daily. Am I being cited?
Probably not, and the daily visit is not evidence that you are. That is an index crawler doing its rounds. Across the three live deployment nodes measured here, 1,660 pages have been crawled by AI systems and never once retrieved into an answer — eaten and never used. Crawl frequency is a precondition for citation, not a proxy for it, and treating it as one is how teams end up reporting visibility they do not have.
Can I just grep my logs, or use a log file analyser?
You can, and general-purpose log analysers are inexpensive and good at what they do. What they will give you is a raw count of requests carrying an AI user agent. That number is wrong in three specific ways: it counts scanners using an AI user agent as camouflage; it counts pages your own team caused an engine to fetch by pasting URLs into a chat; and it counts index crawls alongside genuine citations. It also cannot tell you which pages were fetched and then passed over in favour of a competitor, or whether a change you made caused anything. Citation Ledger is not a log viewer. It is an instrument built for one measurement.
Why does an engine cite me one day and not the next?
Because language models are non-deterministic — the same question, asked twice, does not reliably produce the same answer. This is why a single reading is worthless and why every honest vendor in this category tells you to trust trends rather than snapshots. Citation Ledger groups repeated runs of the same question into a series and reports the rate with a confidence interval, and it labels anything under ten runs for what it is: an anecdote.
Do AI citations show up in Google Analytics?
Almost none of them. A citation happens when the engine reads your page to build an answer — the reader may never visit your site at all. Analytics can only see the small minority who clicked. Across the nodes measured here, the engines read far more than they send, and some engines read hundreds of times and sent nobody at all.
What is the difference between the various AI user agents?
Broadly, three classes. Training crawlers collect content for future model training. Index crawlers build a search catalogue. Live retrieval agents fetch a page because a user asked a question this second. Only the third is a citation. The first two are traffic. Any measurement that adds them together is measuring the wrong thing, and most raw log counts do exactly that.
How do I know a citation is real and not a spoof?
Verify the request against the engine's published infrastructure. A meaningful share of traffic claiming to be an answer engine is not one — it is scanners using the user agent as cover, frequently while probing for exposed credentials and configuration backups. Citation Ledger verifies every claimed citation and reports the verification rate on screen. A raw grep counts every impostor as a citation.
Can I see whether an engine read my page and used a competitor instead?
Yes, and no other measurement product reports this. If the engine fetched your page inside the window of a question you asked, and then did not mention you, it came, took your content, and cited somebody else. That is a fixable content problem, and it is completely different from never being fetched at all. Citation Ledger calls it read and rejected.
How do I prove a change I made actually worked?
Measure the page you changed against the pages you did not, over the same days, and subtract. Citations rising after a change proves nothing on its own — the platform may have shifted that week and lifted everything. A before-and-after study cannot separate those two things, which is why so much published optimisation advice is folklore. Citation Ledger runs the control arm automatically and reports worked, backfired, nothing, or the platform moved.
Do I have to install anything on my website?
No. Citation Ledger reads log files your host already writes. No tracking script, no tag, no plugin, no change to your site of any kind. If a product requires a snippet on your pages, it can only see the visitors who arrived — which is the small minority.
Does my data leave my computer?
No. It is a desktop application. Logs are read locally, the ledger is stored locally, and nothing is transmitted anywhere. Server logs contain IP addresses, which are personal data in most jurisdictions; a product that ingests them into a cloud has taken on a problem this one does not have.
What is the biggest thing it cannot see?
A mention that involved no fetch. When a model answers from its own trained knowledge without requesting your page, no log entry exists, and no log-based instrument can see it. That is a real limitation and it is stated here rather than buried. The Lab addresses it indirectly: a model that already knows something does not go looking for it, so the absence of a fetch beside a correct answer is itself the evidence.
Is it available now?
Not yet. It is in development and running daily against three live deployments, where it has counted 959 verified citations across 93,878 log lines as of 14 July 2026. Availability will be announced here first.
Tell me when it is ready
Citation Ledger is not for sale yet. Leave an address and you will hear once, when it is. One message. No newsletter, no sequence, no call.
Your address is written to a file on this server and used to send you one message. It is not sold, shared, added to any list, or given to any third party.