Skip to main content
Large frosted glass numeral zero glowing white on a dark reflective floor, framed by a clear panel with tick marks down each side.

Justin Bartak · AI Org · · 10 min read

I Built the Scoreboard. It Says Zero.

Originally published on Orbyt Labs

TL;DR

This is not a study. There is no holdout cohort, the sample is one site, and the reading is zero citations across every run. The useful part is not the number. It is that my instrument lied to me twice before it could report anything, and both lies took the shape of a confident green report.

I built an instrument to measure whether AI engines cite my work. It has been running for months. Here is the complete result.

Zero. Out of 25 queries. Every run.

Before you decide whether that is interesting, three disclosures, because this post is worth nothing without them.

This is not a study. There is no holdout cohort, because I optimized every page on the site, which means I have no control group and never will unless I deliberately stop optimizing something. The sample is one site, one vertical, one author. And the instrument measures one model's behavior on my queries, which is a much smaller claim than "what gets cited."

It is an observation. I am titling and framing it as one, because calling it a study would be the exact dishonesty the post is about.

The hypothesis, stated before the data

I want this on the record in the order it happened.

My bet was that a site with genuinely first-party data, answer-shaped paragraphs, and a clean entity graph would get cited in AI answers, and that I would be able to watch it happen. I put real work behind that bet: a statistics page rendering from a single source of truth, a deposited dataset with a DOI, structured author identity, markdown twins of every article.

Then I built the probe so the bet could be wrong in public.

What is the probe, precisely?

A fixed set of 25 questions, run on a schedule, asking a model things where my site, justinbartak.ai, should plausibly be the primary source. Not "what is AI-native," which the whole internet has opinions about. Questions where I am the origin of the fact.

Each run records whether the domain appears in the answer, and the result is appended to a history file so a trend can exist.

Here is the entire history.

RunModeCitedTotal2026-07-12Standard0252026-07-31Standard0252026-08-01Standard0252026-08-06Retrieval08

That is the whole dataset. Four rows.

The instrument lied to me twice

This is the part I would keep if you only read one section, because it generalizes far past search.

The probe ran green for weeks while producing nothing.

The workflow commits nothing to the repository on purpose, because a bot push three times a week burns three production builds a week against a cost rule I care about. So it uploaded its result to a run artifact and walked away.

The consequence nobody had traced: the history file, whose entire purpose is to accumulate a trend line, could never hold more than two entries. Every run checked out the repository copy frozen at its original baseline of one entry, appended today, uploaded two, and discarded them. The next run started from the same frozen one.

Roughly eight runs measured the metric I care most about and threw the reading away.

Meanwhile the department reading the repository reported the metric as stale and unrerun. That report was correct about what it could see and wrong about the cause, and there was no way for it to be right, because the evidence lived in a run artifact nobody was pointed at.

A metric that is measured and then discarded is indistinguishable from a metric that was never measured.

Then the second lie. I fixed that by having each run inherit the previous run's artifact. The fix had never once worked.

The restore step called the GitHub CLI in a workflow with no explicit permissions block. The default token is read-only, so the query returned 403. The step discarded stderr. The fallback converted the failure into an empty result, which is exactly what a legitimate first run produces.

So the workflow concluded "no previous run" every single time, and reported success.

Two separate failures. Both silent. Both shaped like a green check mark. I had to fix the instrument twice before it could tell me anything at all, and if I had not gone looking, I would today be reporting a trend line built from two entries and calling it data.

Before you trust any number about your AI visibility, prove your instrument can fail.

This is the same wall I hit trying to make a self-improving system grade itself. A loop that generates its own evidence will hand you a clean report forever. The only fix is an oracle standing outside it.

The one place external measurement did work

I want to be fair to instrumentation, because the story so far makes it sound futile. It is not. It is just that the useful signal came from somewhere I was not looking.

Search console query data, from a completely different engine, told me something no amount of internal checking could. It showed that of 61 job titles people actually searched for, 50 had no page on the site at all, while thousands of pages existed for titles nobody searches. Every internal guard reported the system healthy, because the page generator and the sitemap agreed with each other perfectly.

That is the same lesson as the probe, arriving from the opposite direction. Internal consistency is not evidence. Two of your own systems agreeing proves only that they share an assumption.

But that data carries a bias I have to name, and it is the most important methodological point in this post.

A page that returns 404 cannot earn an impression. So demand data gathered through a gap is censored: it can only ever tell you about queries that partially worked. It reads as a floor on what you lost, never an estimate of it.

That is why the fix was a hand-curated list rather than a list derived from the observed data. Deriving it from what I measured would have locked in exactly the blind spot the measurement was censored by. When your instrument can only see through the hole, do not use its output to decide the shape of the hole.

The same trap sits inside my citation probe, and I have not solved it. Twenty-five questions I chose, about topics I decided I should be the source for. If the real answer is that nobody asks questions in that shape, my probe cannot tell me. It can only report that I am not cited for the questions I already believed mattered.

What this cannot show

Stated plainly, because the value of the post is in this section.

No control group. Every page was optimized. Without a holdout cohort I cannot separate the effect of the work from the effect of time, of the domain aging, or of the engines changing. If the number moves next quarter, I will not know why.

No causal claim, ever, in this design. Even a rising citation count would be correlational at best. I would be one site watching one number.

Template effects are inseparable. A programmatic corpus shares structure across thousands of pages. Any page-level conclusion is confounded by that structure, and I cannot decompose the two.

Single everything. One vertical, one site, one author, one model sampled at one point in time. Answer engines differ enormously in how they retrieve, and one model's behavior generalizes to the others roughly as well as one browser's rendering generalizes to all browsers.

n = 25. That is a small enough query set that a single well-placed page could move the rate by four points and mean nothing.

What do I actually believe, and on whose evidence?

I trust other people's numbers here more than my own, because theirs rest on samples mine cannot approach.

Off-site brand mentions correlate with AI visibility far more strongly than backlinks do, by roughly three to one in an Ahrefs study across tens of thousands of brands. That finding has changed what I do more than anything on my own site, because it says the lever is outside your domain.

Self-contained answer capsules under question headings appear in the large majority of cited pages in published audits, and capsules without links inside them do better. Original statistics lift generative-engine visibility measurably in the academic work. AI-cited URLs skew fresher than the organic top ten.

And the finding that cost me the most to accept: llms.txt appears to be essentially unread. A twelve-week server-log study found single-digit fetches from major AI crawlers against thousands of robots.txt requests. I keep mine as cheap insurance and I no longer count it as work. Nothing lives there that is not also on an indexed page.

I have written the practical version of all of this in the GEO and AEO playbook. What is new here is that my own instrument does not yet confirm any of it.

The practical position

Instrument first. Then invest only in what survives a ranking change.

That second clause is the whole strategy. Every engine-specific tactic has a shelf life measured in months, because the engines are changing faster than anyone's playbook. So the test I apply before doing any of this work is simple: if the retrieval landscape reshuffles completely next quarter, is this still worth having done?

First-party data you own passes. A dataset with a DOI passes. Clear answers to real questions pass. Honest freshness passes. Being mentioned by other people passes.

Schema micro-optimization does not pass. Chasing a specific crawler's token does not pass. Stuffing a file nobody fetches does not pass.

What to do Next

Build the probe before you build the strategy. A fixed query set, a schedule, a recorded result. It will take an afternoon and it will be the only thing standing between you and a year of confident, unfalsifiable work.

Then try to make it report a failure. Break it on purpose and confirm it says so. If it cannot tell you the difference between "zero citations" and "the check did not run," you have a decoration.

Then pick a baseline date and write down your hypothesis before you look. In public if you can stand it.

I would rather publish a zero with a documented method than a rising number with no baseline. One of those is evidence and the other is a story, and the difference only shows up when someone asks you how you know.

The scoreboard says zero. That is a worse number and a better position than not having a scoreboard.

Related reading:


Originally published on orbytlabs.ai on Oct 15, 2026.

Frequently asked questions

How do you measure whether AI engines cite your site?

You cannot measure it directly, because no answer engine publishes a citation ledger. The closest available instrument is a probe: a fixed query set run on a schedule against a model, recording whether your domain appears in the answer. That measures one model's behavior on your queries, which is not the same as market visibility.

Does llms.txt improve AI citations?

There is no evidence it does. A twelve-week server-log study found single-digit fetches of llms.txt from major AI crawlers against thousands of robots.txt requests. Keep it as cheap insurance, but never put content there that is not also on an indexed HTML page, because the rendered page is the surface that actually gets read.

What actually drives AI citations according to the evidence?

The strongest published signals are off-site brand mentions, which correlate with AI visibility roughly three times more strongly than backlinks, self-contained answer capsules under a question heading, original statistics, and freshness. Those are other researchers' findings on large samples, not mine, and I cite them as borrowed rather than confirmed.

Why publish a zero result?

Because the alternative is publishing nothing until the number flatters me, which is how a measurement becomes marketing. A zero with a documented method is evidence. A rising number with no baseline and no holdout is a story. I would rather be the person with the instrument than the person with the anecdote.

Share this article

XLinkedIn
Justin Bartak, Chief AI Officer and AI-native product leader

Justin Bartak

4x founder and Chief AI Officer. $383M+ in enterprise value delivered across regulated fintech, tax, proptech, and CRM platforms. Recognized by Apple. Built Orbyt solo in 32 days with Claude Code. Founder of Purecraft.