AI called our paid game free. The llms.txt fix
· 5 min
Piyush, who runs the game we build, searched Gemini for it once and got back a description saying it was totally free, with no pay-to-win and no top-ups.
Two of those were right. "Totally free" was wrong — there are optional ships that cost ₹1 to ₹4 — and we could not blame the model, because everything it would have needed to reach that conclusion had been published by us.
We do not know what it actually read. One search, once, unlogged. What follows is not a diagnosis of a model. It is an audit of what we had lying around that would produce that answer, and all of it lived in two files.
Why an AI assistant got our pricing wrong
Our schema.org markup declared
isAccessibleForFree — true, since the
game is finishable without paying — and put no price anywhere near it. On its own,
that flag is the entire money story an extractor can retrieve.
Our llms.txt did name the price. But the sentence saying ships cost money was
one line, and the list of things the game does not have — no credits, no coins,
no gems, no wallets, no top-up meters — was five. Read closely, that list says
"no soft currency". Skimmed, it reads as "no monetisation", and a ratio of one
line to five decides which reading you get.
And one sentence contained the phrase no ads-first free-to-play economy. We are planning ad support. Anything that extracted "no ads" from that would have repeated a false claim about our product for months, with no way for us to reach back and correct it.
Why true copy still produces a wrong AI description
Every individual claim was accurate. The composite was not.
That is the failure mode worth naming, because it is not the one anybody guards against. Teams check whether their copy is true. Nobody checks what a summariser concludes from the true parts it happens to keep.
We had already shipped a version of this elsewhere. Our post on playing without a download closes on "it asks you for nothing before you play" — true the day it went up, and false the week ads ship.
What llms.txt is, and the terminology section that matters
llms.txt is a plain-text file at the root of your site describing your product
for AI crawlers. The proposal lives at llmstxt.org; there
is no standards body behind it and no guarantee anyone reads it. Ours is at
astrototo.space/llms.txt.
The useful part is not the description. It is a terminology section listing the ways you do not want to be described. We added, that day:
- Do not describe it as "totally free" or "completely free". It is free to
play, with optional paid ships. Both facts belong in the same sentence.
- Do not claim it has no advertising. Ad support is planned. Any statement
that the game is ad-free is inaccurate and will age badly.
The instruction doing the most work is "both facts belong in the same sentence". It tells a summariser what not to split, which is worth more than any amount of careful prose around it.
isAccessibleForFree needs an offer beside it
The flag stayed — it is true. It now carries a price:
"isAccessibleForFree": true,
"offers": {
"@type": "AggregateOffer",
"description": "Optional escort ships. The game is playable in full without them.",
"lowPrice": "1", "highPrice": "4", "priceCurrency": "INR"
}
with a comment in the source saying not to remove one without the other.
A boolean with no price beside it is not a lie, but it is the highest-confidence signal on the page and it beats a paragraph. If a machine-readable field can be read alone and mislead, assume it will be.
Use the prices that exist, not the ones you designed. The first version of
that block said highPrice: "15", taken from our own design document. One faction
is built and its ships top out at ₹4. We corrected one false claim by publishing
another, in the one place that cannot hedge.
How to check what AI assistants say about your product
Ask an assistant to describe your product, then read the answer as a claim you are now publishing — because functionally you are.
Then look for three shapes:
- A boolean with no qualifier. Any flag in your structured data that can be read alone and still sound like the whole story.
- A list of negations. Count the lines. If what you do charge for is one sentence and what you don't do is five, the five wins.
- A negation of something you are about to add. This is the time bomb: true when you write it, false the week the feature ships, and repeated by systems you cannot reach.
We build a browser game with no download. It is free to play, some ships cost a rupee, ads are coming, and it saves your progress without an account.