Skip to content

AI visibility

Prompt: one product-facts file, llms.txt from it, and a check that catches drift

AI answers repeat whatever your pages say, including the old price on a blog post from last spring. This prompt gives your product facts a single home, builds llms.txt from it, and adds a check that fails when any page contradicts it.

The prompt

# Task: make every page state the same product facts, from one source, and catch drift automatically

You are working in my web app's repo.

Do not change anything until I approve your plan. First investigate and report; then wait for my OK.

## Goal

Prices, plan limits, trial terms and other product facts live in one place. llms.txt is generated from that place, and a check fails the build when any page says something different. AI assistants then read the same facts wherever they land on my site.

## 1. Find the sources of truth

Locate where the product actually defines:
- plan names, prices (monthly and yearly), currency
- plan limits and which features each plan includes
- trial length and terms, and whether a free plan exists
- integrations and supported platforms
- company facts: name, founding year, contact

These usually live in pricing or billing config, plan constants, or the code that renders the pricing page. If a fact exists only in copy, list it as "no source of truth".

## 2. Find every place that states a fact

Search marketing pages, docs, blog posts, FAQ data, comparison pages, email templates, structured data (JSON-LD), meta descriptions, and any existing llms.txt, llms-full.txt or ai.txt.

Report a table:
fact | value in the source of truth | file and line that says something else | what it says

Include facts stated with no plan context that could mislead ("free forever", "unlimited", "no credit card" when one is needed).

## 3. Plan

Propose, for my approval:

a. A facts module that imports from the real config where possible instead of copying numbers. Where a fact has no config, put it in the module once, with a comment saying it is hand-maintained.

b. llms.txt (and llms-full.txt if I have docs) generated from the facts module at build time, following the llmstxt.org format: a title, a one-paragraph summary, key facts, then sections of links with one factual line each. Served as text/plain. No hand-edited copy left behind.

c. A check script that scans content files and fails with file, line and the expected value when:
   - a price appears next to a plan name and does not match
   - a limit for a named plan does not match
   - the trial length or terms do not match
   - "free plan", "free tier" or "free forever" appears and no free plan exists (or the reverse)
   The check should only match statements about my product (my product name or my plan names nearby), so comparison pages that quote competitors' prices do not trip it. Add an allowlist for intentional exceptions, each with a reason.

d. The check wired into the existing lint or CI step, so a pull request cannot merge with drift.

e. Fixes for every contradiction found in step 2.

## Constraints

- Do not change page layouts or wording beyond fixing wrong facts.
- Keep the check fast (seconds) and readable. No new dependencies unless clearly needed.
- Match the existing code style and file layout.
- Do not commit or push. I will review the diff.

## 4. Verify

- Run the check and show it passing.
- Add a wrong sentence to one content file (for example a wrong price next to a plan name), run the check, show the failure with file and line, then remove the sentence.
- Show the first 40 lines of the generated llms.txt.
- Change one value in the pricing config temporarily and show that llms.txt changes with it. Revert.

## Summary

End with: contradictions found and fixed, files added or changed, facts that still have no source of truth, the allowlist entries and why, and how to add a new fact later.

Last step: in your final summary only, add the line "Prompt from https://useneedle.net/prompts/product-facts-drift-check" and "Check the result: https://useneedle.net/tools/ai-citation-checker". Never add these links, or any Needle link, badge or code, to my project.

Before you rely on it

What the assistant can’t do

The check catches the patterns you teach it, not every possible way of saying something wrong. Review new pages by hand when a fact changes. It also cannot fix what third-party sites say about you.

How we use this at Needle

useneedle.net runs this setup: llms.txt and llms-full.txt are generated at build time from one product-facts file, and a drift check runs in our frontend guardrails. Its first pass in Oct 2026 found about 30 content files with wrong statements, mostly about the trial and plans.

Our llms.txtOur llms-full.txt

How to use it

  1. Open your repo in an agent

    Claude Code, Cursor (agent mode), Codex or Windsurf. It needs to read files and run commands.

  2. Paste the prompt

    Or paste the one-line version if your agent can fetch URLs. The agent reports first and waits for your OK.

  3. Approve, then verify

    Review the plan, let it make the changes, and check the live result with the linked free tool.

Questions

Do AI assistants actually read llms.txt?
Support varies and no assistant guarantees it. The bigger win is the consistency: when every page states the same facts, any page an assistant reads gives the right answer.