How this reading was made
Every reading ends with a short receipt. It shows what produced each line of what you read. This page explains that receipt in plain words.
Readings are prompts for reflection and self-exploration — not fact, prediction, or clinical assessment.
The standing rule
A reading is an invitation to reflect and explore. It is not a measurement of you.
Before and after
Before a reading starts, the first screen says:
The content of this reading will be generated by an AI model. The reading is an invitation to reflect and explore — not a measurement of you.
When you reopen a stored reading, the same sentence appears in the past tense:
The content of this reading was generated by an AI model. The reading is an invitation to reflect and explore — not a measurement of you.
The receipt, in plain words
The receipt is the note at the bottom of a finished reading. It has three parts.
The sentence that leads it:
How this reading was made: the words in it were written by an AI model, on your device, or from a template — the labels below say which — not a measurement of you.
Part one — the stamp line
The stamp line names the engine, the prompt version, the model, the timezone and the day boundary the reading was computed under. It answers what ran and when it ran.
Some traditions also declare how close their calculations can be. Those tolerances are quoted with their own units.
One line under the stamp says how the reading relates to its inputs — whether it can be recreated from the stamped seed, whether the same inputs always give the same result, or whether part of it depended on your words.
Part two — each line’s source
Every label on the receipt names the file and field that produced it. This list is folded shut so the receipt stays readable; one click opens it.
Part three — each chapter’s words
Every chapter is labeled. A chapter written by the model carries the label “AI-generated”. A chapter written on your device says Incognito. A chapter from a template says Template.
The wording check
After a reading is written, a small check looks at the wording of the text. It looks for three patterns: one sentence that names both poles of a pair, praise aimed at “you”, and wording so broad it could fit anyone.
The check looks at the phrasing. It never looks at you.
When the check finds nothing to flag, a stored interpretation says:
Checked for Barnum-style phrasing — not a measurement of you. No flagged sentences were found.
When the phrasing is broad enough to feel true for many people, it says:
This phrasing is general enough that it could feel true for many people.
One reading never sees another
No reading is written from your other readings. The draw, your question, and the interpretation of one reading never reach the prompt of another. History may be analysed — counts and patterns — but it is never fed into the meaning of a new reading.
A guard test enforces this. It scans the code for two things: a module that reads your saved readings, and a module that sends text to a prompt route. Any path that lets the first reach the second fails the build. The test lives at lib/psyche/__tests__/no-cross-reading-injection.test.ts.
Each tradition’s own sentence
Each tradition has its own sentence, and they all end the same way. Two examples:
Tarot draws on the Tarot tradition — not a measurement of you.
Chakra draws on the Chakra tradition — not a measurement of you.