App Supplement to the Privacy Policy
Privacy Policy – Plot AI
Last updated: July 23, 2026
This policy supplements the general privacy policy at https://optiflowtech.eu/privacy/ with the specific processing activities within the iOS app Plot AI ("the App"). In the event of a conflict, this app-specific policy prevails for use of the App.
1. Controller
The controller responsible for data processing within the meaning of Art. 4 (7) GDPR is:
OptiFlow
2, rue Jean Engling
L-1466 Dommeldange
Luxembourg
Email: [email protected]
Website: https://optiflowtech.eu
2. Overview of Processing Activities
Plot AI is an image editing app that creates a new image from a user photo using generative AI. In doing so, we process the following data:
| Data Category | Purpose | Legal Basis | Recipients |
|---|---|---|---|
| Uploaded photo | AI image generation, display in the gallery | Art. 6 (1)(b) GDPR | Cloudflare (R2, Worker), OpenAI (Images API), Google (Firestore) |
| Generated image | Delivery to the App, display in the gallery | Art. 6 (1)(b) GDPR | Cloudflare (R2), Google (Firestore) |
| Anonymous Firebase user ID (UID) | Associating images/generations with your app instance | Art. 6 (1)(b) GDPR | Google (Firebase Auth, Firestore), Cloudflare |
| RevenueCat app user ID | Quota counting, subscription assignment | Art. 6 (1)(b) GDPR | RevenueCat, Cloudflare |
| Purchase information (App Store transaction) | Processing subscriptions, restoring purchases | Art. 6 (1)(b) GDPR | Apple, RevenueCat |
| Prompt summary, template ID, timestamps | Displaying history, error analysis | Art. 6 (1)(b) GDPR | Google (Firestore) |
| APNs push token | Push notification when a generation is finished, Live Activity updates | Art. 6 (1)(a) GDPR | Apple Push Notification Service |
| Error and server logs (IP address, time, status code) | Operational security, troubleshooting | Art. 6 (1)(f) GDPR | Cloudflare |
We collect no real names, no email addresses, no location data, no contacts and no cross-app advertising IDs. Sign-in to Firebase is fully anonymous (no account, no passwords).
3. Processing of Photos and Generated Images
3.1 Process
- You select a photo from your library or take a new one.
- The photo is transmitted encrypted (HTTPS/TLS) to our backend (Cloudflare Worker) and stored in Cloudflare R2 under a random key bound to your anonymous UID (
users/{your-UID}/sources/{random-ID}.jpg). - For generation, the Worker reads the photo from R2 and sends it together with the text prompt to the OpenAI Images API (model
gpt-image-2). - The result returned by OpenAI is likewise stored in Cloudflare R2 under
users/{your-UID}/results/{generation-id}.{png|jpg}. - In addition, a metadata record is created in Google Firestore (collection
generations): your anonymous Firebase UID, your RevenueCat app user ID, the template ID (if applicable), a truncated prompt summary (max. 80 characters), URLs to the original and result image in R2, timestamps, status and favorite flag. - The App displays the result to you and, if you choose, additionally saves it to your iOS photo library.
3.2 Retention Periods
- Cloudflare R2 (original + result): Images are stored for a maximum of 90 days. After that, they are deleted server-side via an automatic lifecycle rule. If you delete a generation in the App beforehand, the associated R2 objects are removed immediately as well.
- Google Firestore (metadata): The metadata record remains until you delete the generation in the App or request deletion pursuant to Section 10.
- iOS photo library: Managed by you as the user.
- At OpenAI (Images API): see Section 4.
3.3 Deletion by You
- In the App: Via the gallery you can remove individual generations. This deletes both the metadata record in Firestore and the original and result image in Cloudflare R2.
- On request: If you would like all data stored under your anonymous UID deleted in a single operation, please write to us at [email protected], stating your app user ID (see Section 10).
3.4 Face Data
Plot AI does not collect or process face data in the sense of biometric identifiers. The App does not perform facial recognition and does not create facial geometries, faceprints or any other biometric templates. Photos you select may contain faces; they are processed exclusively as image files in accordance with Sections 3.1–3.3 (storage for a maximum of 90 days in Cloudflare R2, transmission to OpenAI solely for image generation, deletion by you at any time) and are never used to identify individuals.
4. Disclosure to OpenAI (Image Generation) and Google (Firebase, Firestore)
4.1 OpenAI (Images API)
The actual image generation is performed by the OpenAI Images API (model gpt-image-2). Provider: OpenAI Ireland Ltd (contracting party for the EEA) or OpenAI, L.L.C. (USA). The photo and text prompt are transmitted — exclusively from our backend, never directly from the App.
- Retention at OpenAI: OpenAI states that it does not use API inputs and outputs for training its models and only retains them temporarily for abuse monitoring (typically up to 30 days). Current details: https://openai.com/enterprise-privacy/.
- Third-country transfer: Data may be transferred to the USA; the EU Standard Contractual Clauses apply (part of the OpenAI Data Processing Addendum).
- Contractual data protection: OpenAI is contractually bound by its Data Processing Addendum (including the EU Standard Contractual Clauses) to provide the same or an equal level of data protection as described in this Privacy Policy and processes the data solely to provide the image generation service.
- OpenAI privacy policy: https://openai.com/policies/privacy-policy/
4.2 Google (Firebase Authentication, Cloud Firestore)
We use services provided by Google Ireland Ltd. and Google LLC:
- Firebase Authentication — assigns an anonymous UID per app installation. No personal login data is transmitted.
- Cloud Firestore (project
plot-ai-6cfb9) — stores the generation metadata described in Section 3.1. - Third-country transfer: Data may be transferred to the USA. Google is certified under the EU-U.S. Data Privacy Framework; in addition, the EU Standard Contractual Clauses apply.
- Google privacy policy: https://policies.google.com/privacy
- Firebase privacy policy: https://firebase.google.com/support/privacy
5. Backend Hosting and Image Storage (Cloudflare)
Our backend runs as a Cloudflare Worker and stores images in Cloudflare R2. Provider: Cloudflare, Inc., 101 Townsend Street, San Francisco, CA 94107, USA.
- Cloudflare necessarily processes IP addresses, timestamps and request metadata for delivery and protection against attacks.
- R2 stores your uploaded and generated images encrypted and in EU regions.
- Legal basis: Art. 6 (1)(b) and (f) GDPR.
- A data processing agreement including the EU Standard Contractual Clauses is in place.
- Cloudflare is certified under the EU-U.S. Data Privacy Framework.
- Privacy policy: https://www.cloudflare.com/privacypolicy/
6. Subscriptions & Purchases (Apple / RevenueCat)
Purchases within the App (e.g. Plot AI Pro Weekly) are processed via the Apple App Store. For cross-platform management, purchase restoration and quota assignment we use RevenueCat (RevenueCat, Inc., USA).
- We transmit to RevenueCat a pseudonymous app user ID, the purchase transaction provided by the App Store (original transaction ID, product ID, purchase date, expiration date) and technical metadata (app version, iOS version, device class).
- Purpose: proof of an active subscription, unlocking the Pro quota (15 generations), restoration after reinstallation.
- Legal basis: Art. 6 (1)(b) GDPR.
- Privacy policy: https://www.revenuecat.com/privacy
- The actual payment process takes place exclusively between you and Apple. We receive neither your payment data nor your real name.
Subscription Details (Transparency Notice for the Paywall)
- Product name: Plot AI Pro Weekly (
plotai_pro_weekly_notrialor a variant with a trial period) - Duration: 1 week, renews automatically unless canceled at least 24 hours before the end of the current period.
- Cancellation: at any time in the Apple ID settings on your device.
- Price / trial period (if any): see the information shown directly on the paywall.
- Any unused portion of a free trial period is forfeited when a subscription is purchased.
7. Push Notifications & Live Activities
If you consent to push notifications, the App sends you:
- A notification as soon as your AI generation is finished.
- Live Activity updates on the Lock Screen and in the Dynamic Island (via the PlotWidgets ActivityKit extension) while a generation is in progress.
For this we use the Apple Push Notification Service (APNs). A pseudonymous push token linked to the progress status of your generation is transmitted. The contents of your photo are not transmitted to APNs.
- Legal basis: Art. 6 (1)(a) GDPR (consent via the iOS system dialog).
- Withdrawal: at any time in the iOS settings under "Notifications → Plot AI".
8. App Permissions
| iOS Permission | Purpose |
|---|---|
| Photos (select/read) | Selecting the source photo for generation |
| Photos (write) | Saving the result to your photo library (optional) |
| Camera | Taking a new photo directly in the App |
| Notifications | Notification when a generation is finished, Live Activity |
All permissions are optional. If a permission is not granted, only the corresponding feature is unavailable.
9. Retention Periods at a Glance
- Uploaded and generated images in Cloudflare R2: maximum of 90 days (automatic deletion via lifecycle rule); earlier as soon as you remove the generation in the App.
- Generation metadata in Firestore: until deleted by you or by us on request.
- Error logs at Cloudflare: per Cloudflare's standard retention (typically a few days).
- Subscription/purchase status at RevenueCat: for the duration of the contractual relationship plus statutory retention periods.
- Temporary retention at OpenAI: see Section 4.
10. Your Rights
Under the GDPR you have the following rights:
- Access (Art. 15), rectification (Art. 16), erasure (Art. 17), restriction of processing (Art. 18), data portability (Art. 20).
- Objection to processing based on legitimate interests (Art. 21).
- Withdrawal of consent with effect for the future (Art. 7 (3)), e.g. by disabling the push permission in iOS.
- Right to lodge a complaint with a supervisory authority (Art. 77), e.g. the Luxembourg Commission nationale pour la protection des données (CNPD), 15, Boulevard du Jazz, L-4370 Belvaux, Luxembourg, https://cnpd.public.lu.
Please direct any requests to: [email protected]
Since we store neither real names nor email addresses, we need your anonymous app user ID to identify your data. You can find it in the App under Settings. Without this ID we are technically unable to identify you as a data subject.
11. Children
Plot AI is not directed at children under the age of 13. We do not knowingly collect personal data from children under 13.
12. Security
All data transfers between the App, the backend, Cloudflare R2, OpenAI and Google are exclusively encrypted (TLS 1.2+). The OpenAI API key and all other credentials (Firebase service account, APNs auth key, RevenueCat secret) are stored exclusively as Cloudflare Worker secrets and never leave the backend. Direct access to R2 objects is only possible via signed backend endpoints bound to your UID.
13. Changes to This Policy
We update this privacy policy whenever processing activities, legal bases or the services we use change. The current version is always available via the link in the App (paywall / settings). We will announce material changes in the App.
Contact: [email protected]
General privacy policy: https://optiflowtech.eu/privacy/