There is no account, so there is no profile to build. This page says exactly what leaves your phone, who processes it, what is kept and for how long.
You never give us a name, an email address or a password. When you buy the app, Apple issues a signed receipt. Our server reads the transaction identifier from that receipt and stores only a shortened one-way hash of it — the identifier itself is not written to our records or our logs. We do not receive your Apple ID, your email address, or your name.
That hash exists for one reason: to count what your copy of the app has used this month, so the monthly allowance works.
When your phone cannot recognise a page on its own, the photograph is sent to our server and forwarded to OpenAI, which recognises the text and translates it. We do not store the photograph. It lives in memory for the length of the request and is gone when the answer is returned. It is never written to our storage and never attached to your identifier.
OpenAI processes the image under its own API terms as a data processor for us.
Two things are cached so that reading the same page twice does not cost you twice:
| What | Where | Keyed by | Kept |
|---|---|---|---|
| Recognised and translated text | Cloudflare KV | A hash of the text and the target language | 30 days |
| Synthesised speech (audio files) | Cloudflare R2 | A hash of the text, voice and speed | Until we clear it |
Both are addressed by a hash of the content, not by you. Nothing in either store says which person asked for it, and neither can be searched by identifier.
Against your hashed identifier we keep counts only: lessons today, pages this month, characters of speech this month, and whether a pack has been credited. No text, no images, no audio, no history of what you read.
Payments are handled entirely by Apple; we never see your card or billing details. Apple sends our server a signed notice when a purchase is refunded, so that the service can be switched off for that purchase. That notice contains the transaction, not your identity.
Every request writes one line: a random request identifier, the hashed user identifier, which endpoint was called, how many characters or bytes were sent, the status, the outcome and how long it took. No page content, no photographs, no translations and no audio appear in our logs.
| Service | What it receives |
|---|---|
| OpenAI | The photograph or text of a page, for recognition and translation |
| Microsoft Azure Speech | The translated text, to synthesise speech |
| Modal (Kokoro speech model) | The translated text, to synthesise speech |
| Cloudflare | Hosting, caching and storage of the above |
| Apple | The purchase itself, and notices about it |
OutloudReader is not directed at children and does not knowingly collect anything from them. There is nothing to collect: no account, no profile, no contact details.
Because there is no account, there is no login to delete. If you want the counters tied to your purchase removed, write to support@outloudreader.app from the device, and say so — we will clear them. Cached text and audio are not tied to you and expire on the schedule above.
If this page changes, the date at the top changes with it. Material changes will be described in the app's release notes rather than buried here.