2025 · nextjs · json-ld · claude-api · retrieval
LLM Search Visibility Engine
Getting a live DTC brand cited by ChatGPT, from 0% to 36% on a 53-query benchmark.
Search visibility used to mean ranking. Increasingly it means being the source a model reaches for, which is a different problem.
What it is. A visibility system for a live direct-to-consumer brand, built on Next.js with JSON-LD entity schema, an llms.txt surface, canary-ID retrieval tracking, and a seven-article NIH-referenced content layer.
Why it matters. The brand was invisible to assistant-mediated search. On a 53-query benchmark it was cited 0% of the time. Not ranked low, absent.
Payoff. Citation rate went from 0% to 36% on the same benchmark, and the canary IDs made it possible to prove retrieval rather than infer it from traffic.
What this actually is
The question was simple to state and awkward to answer: when someone asks an assistant about this product category, does this brand come back?
Step one was making that measurable: a fixed 53-query benchmark, run repeatedly, so the answer was a rate and not an anecdote. The starting rate was zero.
The pieces
- JSON-LD entity schema, so the brand is a described entity rather than a page of prose a model has to infer structure from
- An llms.txt surface stating plainly what the brand is and what it can be cited for
- A seven-article content layer with NIH references, because unsourced claims in this category are correctly ignored
- Canary IDs, distinctive retrievable strings, so a citation could be traced back to the exact document that produced it
Why the canary IDs were the interesting part
Everything else in this build is a hypothesis about what makes a source citable. Without a way to attribute a citation to a specific document, you're optimizing on a number that moves for reasons you can't see.
The canaries turned it into something closer to an experiment: change one layer, re-run the benchmark, and know which document the model actually pulled from.