# 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.

- Source: https://useneedle.net/prompts/product-facts-drift-check
- Run in: Coding agent (Claude Code, Cursor or Codex, with your repo open)
- Last reviewed: 2026-11-06

## Prompt

````text
# 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.
````

## What you get

- A table of every place your site contradicts your real pricing and plans
- One facts module that reads from your real config
- llms.txt generated from it at build time
- A CI check that fails on contradictions, with the file and line

## Limits

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.

## Check your result

Check whether your site is ready to be cited in AI answers, including llms.txt. https://useneedle.net/tools/ai-citation-checker

---

From the Needle prompt library: https://useneedle.net/prompts. Free to use and share.
