← ghost · imagined-reply disclosure

imagined.

effective: 2026-04-28 · version 1.0 · for the public, and for app review

this page exists for two readers: a user who wants to understand how the "imagined reply" feature works, and an apple app reviewer evaluating whether the app complies with guidelines 1.1, 1.1.6, 4.0, 5.1.1, and 5.6. it is written to be useful to both.

summary for app review:

imagined reply is an opt-in feature, off by default. when on, it generates clearly-labeled fictional bubbles using a local word-bank engine (ReplyEngine.swift + Templates.swift + WordBanks.swift). it never queries an external api. it never contacts the real-world person whose name the user assigned to a thread. every imagined bubble carries a visible "imagined" tag in the ui (MessageBubble.isImagined), and the persisted message model has a Bool field of the same name so the label cannot be lost across sessions. the feature is positioned and worded as fiction, not as a re-creation of any specific person.

01what the user experiences

when the user taps the "imagined reply" checkbox while creating a ghost — and only then — the app will, after the user sends a message, render a small number of fictional bubbles on the recipient side of the chat. each bubble:

the checkbox itself is described in copy as: "fictional. words assembled on your phone, never theirs, never sent. each bubble is labeled 'imagined'. off by default."

02how the engine works (technical)

the imagined reply system is a deterministic-where-possible, slot-based template engine. it has three parts:

the engine is plain swift. it imports only Foundation. there is no URLSession call anywhere in the codebase. there is no model file (no .mlmodel, no .gguf, no .bin). there is no on-device large language model. there is no integration with apple intelligence, openai, anthropic, google, or any other ai provider.

03what the engine cannot do

the engine has no memory of who the user is writing to beyond the generic tone bucket selected from the platform context. it cannot:

04why we provide it at all

some users — particularly those processing the silence after a relationship ends — find that an empty chat surface intensifies rumination. having a fictional, clearly-labeled completion of the "what would they say" loop, generated by the user's own phone from generic word banks, helps close the open thread mentally without involving the real person. the visible "imagined" tag on every reply preserves the boundary between fiction and reality.

05what we do not claim

ghost does not claim:

06safeguards

07relevant source files

08contact for app review

if you are reviewing this app and need any clarification, or want a build with imagined reply pre-enabled and pre-seeded for screenshot review, please contact hello@ghost.app and we will respond within 24 hours.