Storytelling Privacy Policy
Storytelling is used by parents, for children, so the rule is: collect what a story needs, say exactly where it goes, and never sell any of it or use it for advertising. A real name is never required. This version of the policy covers Storytelling 1.4, which adds personalised stories made on a server — so, unlike earlier versions, some data now leaves the device, and this page lists every place it goes.
最后更新于 2026年10月22日
- 01Who we are
- 02Who the app is for
- 03Your anonymous ID
- 04What stays on your device
- 05What goes to the server, and why
- 06How a personalised story is made
- 07Usage analytics
- 08Purchases
- 09Advertising and tracking
- 10Children’s privacy
- 11Why we are allowed to do this
- 12Data sharing
- 13Data retention
- 14Withdrawing consent, and deleting data
- 15Security
- 16International transfers
- 17Your rights
- 18Changes to this policy
- 19Contact
01Who we are
Storytelling is built and published by Andrii Kolisnyk, an independent developer based in Ukraine. Under the EU and UK General Data Protection Regulation I am the data controller for the information described on this page.
Questions — including a parent asking for a child's data to be deleted — go to kolisnyk7@gmail.com and reach me directly. There is no support desk in between.
02Who the app is for
The parent or guardian is the user: they set the app up, enter anything about the child, and make any purchase. A child listens, often in kids’ mode, which locks the way out behind a PIN and offers no story forms and no purchase screens. The app is not in the App Store’s Kids category for that reason.
03Your anonymous ID
On first launch the app silently creates an anonymous ID with Firebase Authentication, part of Google’s Firebase. There is no sign-in, no account, no email address and no password. The ID is a random string kept in the device’s Keychain, so it survives relaunches and reinstalls that keep the Keychain. It is what lets your personalised stories and your subscription find their way back to you, and it is the only identifier the server, the analytics service and the billing service share.
04What stays on your device
- Child’s name or nickname
- WhyTo greet the child and prefill a story. A real name is not required — a nickname works exactly as well.
- Where it goesOn the device, in app settings.
- Settings
- WhyLanguage, sleep timer length, the kids’ mode PIN, and whether onboarding is finished.
- Where it goesOn the device.
- Listening progress and favourites
- WhyWhich stories have been played, finished or favourited, and where playback stopped, so a story resumes where it left off.
- Where it goesOn the device.
- Cached stories
- WhyThe text and narration of library stories you have played, so they play offline next time.
- Where it goesOn the device, excluded from iCloud backup.
- An unfinished personalised story
- WhyThe choices on the form, so going back or closing the app does not lose them.
- Where it goesOn the device.
05What goes to the server, and why
Storytelling’s server runs on Google Firebase and Google Cloud. These are the only things the app sends it:
- A personalised story request
- WhyOnly when you create one: the child’s age, up to three interests, the kind of story, the mood, the narrator you picked, and the hero’s name if you give one — it is optional. This is what the story is written from.
- Where it goesFirebase, under your anonymous ID, readable only by that ID.
- The finished story
- WhyIts text, cover picture and narration, so you can play it. The audio is delivered through a private link that expires after an hour.
- Where it goesFirebase, under your anonymous ID, readable only by that ID.
- A story request (“Request a story”)
- WhyOnly when you send one: a title, and any name, age, interests or description you choose to add, so I can consider it for the library.
- Where it goesFirebase, with your anonymous ID.
- Likes
- WhyWhich library stories you liked, and the story’s title, to count likes per story.
- Where it goesFirebase, with your anonymous ID.
- A notification token
- WhyOnly if you allow notifications when you start a personalised story: a token from Apple, passed through Firebase Cloud Messaging, so the server can tell you the story is ready.
- Where it goesFirebase.
- A Live Activity token
- WhyWhile a personalised story is being made: a token from Apple for the progress shown on the Lock Screen and in the Dynamic Island, so the server can update it while the app is closed. It is used for that one story only, and nothing is sent if Live Activities are turned off.
- Where it goesFirebase.
- A device check
- WhyFirebase App Check asks Apple to confirm requests come from the genuine app on a real device (App Attest, or DeviceCheck), so nobody can run up story costs with a script. It carries no personal information.
- Where it goesApple and Firebase.
Library stories, covers and narration are downloaded from Firebase too. Downloading them sends nothing about you beyond what any network request carries.
06How a personalised story is made
The story is written, illustrated and narrated by Google’s AI models on Google Cloud (Vertex AI and Cloud Text-to-Speech), called from my server — never from the app. To write the story, the model receives the age, interests, kind of story, mood and, if you gave one, the name. The cover is drawn from a description of a scene, and a scene that names the child is rejected before a picture is made. The narration is made from the finished text.
Google processes this as a service provider on my behalf, under the Google Cloud Data Processing Addendum. My server logs record that a story was made and how long it took, never the name, the interests or the story itself.
07Usage analytics
Storytelling uses PostHog, hosted in the EU, to show me how the app is used and where it goes wrong. It is on in every released version of the app. This is what it receives:
- Events and screens
- WhyActions such as opening the app, steps of onboarding, opening and finishing a story, favouriting, opening the paywall or completing a purchase, and which screen is showing.
- Where it goesPostHog, EU.
- Your anonymous ID
- WhySo the events from one install hang together. It is the same anonymous ID the server uses.
- Where it goesPostHog, EU.
- Session recordings
- WhyA recording of what is on the screen while the app is used, with request timings, so I can see where something broke. Every text field is masked, so what you type — a child’s name in a form, the PIN — is never recorded.
- Where it goesPostHog, EU.
- Device and app details
- WhyDevice model, iOS version, app version and language, and the IP address the request comes from, from which PostHog derives an approximate location.
- Where it goesPostHog, EU.
Event properties never contain the child’s name, age or interests, or the title of a personalised story. PostHog also decides which version of the paywall screen you see, for a design test. See the PostHog Privacy Policy.
08Purchases
Personalised stories are an optional subscription. I never see your payment details. Everything is billed by Apple, which holds the card and issues refunds.
- Apple — takes the payment and confirms the transaction. Governed by the Apple Privacy Policy.
- RevenueCat — keeps track of whether your subscription is active. It receives your anonymous ID, the transaction details Apple returns, your storefront country, and the device and app version. My server checks with RevenueCat before making a story. It never receives anything about your child. See the RevenueCat Privacy Policy.
09Advertising and tracking
Storytelling shows no advertising and contains no ad network.
Storytelling does not track you and does not ask to: this version shows no App Tracking Transparency request. The app contains Meta’s (Facebook’s) SDK, for measuring which of my own ads bring families to the app, but it is switched off: it is not started and sends nothing to Meta. If it is switched on in a future version, this policy will say so first, iOS will ask your permission to track, and it will then send only app installs, finishing onboarding and subscription events, tied to your anonymous ID — never the child’s name, age, interests or a story — and the advertising identifier only if you allowed tracking.
10Children’s privacy
Storytelling is made for families and is rated 4+. It is meant to be set up and used by a parent or guardian, who decides what, if anything, to enter about a child. We do not knowingly collect personal information from children beyond what a parent enters to personalise a story, and a real name is never needed for that.
No child’s data is used for advertising, sold, or shared with anyone other than the service providers named on this page, and only for the purpose given for each.
A parent or guardian may ask for anything relating to their child to be deleted, at any time, by emailing kolisnyk7@gmail.com. If you believe a child has provided personal data, contact me and I will delete it.
11Why we are allowed to do this
For readers in the EEA and the UK, the legal bases are these:
- Making a personalised story, and your subscription — necessary to provide what you asked for (Article 6(1)(b)).
- Story requests and likes — your consent, given by sending them.
- Notifications — your consent, given in the iOS prompt and withdrawn in Settings.
- Lock Screen progress — necessary to show the progress of a story you asked for (Article 6(1)(b)); turn it off in Settings.
- Usage analytics and device checks — my legitimate interest in keeping the app working and protecting it from abuse (Article 6(1)(f)). You may object — email me.
- Answering your email — my legitimate interest in replying to you.
12Data sharing
We do not sell or rent personal data. It goes only to the service providers that make the app work, each acting on my instructions:
- Google (Firebase and Google Cloud) — the server, storage, anonymous ID, notifications and AI story generation. Firebase privacy information.
- PostHog — usage analytics and session recordings, EU hosting.
- RevenueCat — subscription status.
- Apple — App Store distribution, payments, notifications and device checks.
13Data retention
- On the device — until you clear it or delete the app.
- Personalised stories, story requests and likes — kept on the server until you ask me to delete them. Removing a request in the app marks it withdrawn but does not erase it; deleting the app does not remove server data.
- Analytics — kept by PostHog under my project’s retention settings.
- Subscription records — kept by Apple and RevenueCat under their own policies.
- Email — as long as needed to deal with what you wrote about.
14Withdrawing consent, and deleting data
- Notifications — Settings → Notifications → Storytelling. iOS revokes the permission immediately.
- Lock Screen progress — Settings → Storytelling → Live Activities.
- The child’s name — clear or change it in the app’s settings at any time.
- Everything on the device — delete the app.
- Everything on the server, and analytics — email kolisnyk7@gmail.com. There is no in-app button for this yet. Telling me the titles and rough dates of your stories or requests helps me find them, because the app knows you only by an anonymous ID.
See Privacy Choices for what is where, step by step.
15Security
Data on the device is protected by iOS file protection. Everything sent to the server travels over TLS. A personalised story can be read only with the anonymous ID that created it, server functions refuse requests that fail the device check, and the AI models are reached only from the server. We use reasonable safeguards, but no system is completely secure and no service can promise otherwise.
16International transfers
Analytics go to PostHog’s EU hosting. The server functions run in Google’s europe-west1 (Belgium) region; the AI models are called through Google’s global endpoint, so a request may be processed outside the EU. Google, RevenueCat and Apple may process data in the United States under the standard contractual clauses and equivalent safeguards those companies publish.
17Your rights
Depending on where you live, you may have the right to access the data held about you, to have it corrected or deleted, to restrict or object to its processing, to withdraw a consent you gave, and to receive your data in a portable format. Parents may exercise these on behalf of a child.
To make a request, email kolisnyk7@gmail.com and I will answer within 30 days. You also have the right to complain to your local data protection authority.
18Changes to this policy
This policy will be updated as the app changes. Updates are posted on this page with a new date at the top, and anything material — a new recipient, a new kind of data, Meta being switched on — is announced in the App Store release notes as well.
19Contact
Andrii Kolisnyk — independent iOS and macOS developer, Ukraine.
App support and privacy contact — kolisnyk7@gmail.com. Use it for anything about this document, a privacy request, a deletion request, or a problem with the app. I read and answer these myself; there is no support desk in between.
Freelance and hiring enquiries go somewhere else — kolisnyk9@gmail.com, or the contact panel on the portfolio. The two inboxes are deliberately separate, so app support is never sitting behind a pile of work enquiries.