Privacy Policy
In short: Recipe Savr has no account and no sign-in. Your recipes, ingredients, steps and photos are stored only on your device — we never receive them or store them on a server. Data leaves your device only when you actively import a recipe, and only for as long as it takes to turn what you imported into a recipe. There is no advertising, no analytics and no tracking of any kind.
1. Who we are
Recipe Savr is published by Niklas Abrahamsson, an individual sole trader based in Sweden ("we", "us", or "our"). For the purposes of the EU General Data Protection Regulation (GDPR), we are the data controller for the limited data described below.
You can contact us about privacy, or about anything in this policy, at niklas.abrahamsson@me.com. Our full postal address is available on request by email.
2. Data stored on your device (never uploaded)
Everything that makes up your recipe collection stays on your device and is never sent to us or to anyone else:
- Recipes, ingredients, and steps you write, paste, photograph, or import.
- Recipe photos.
This content lives in a local database and in the app's own file storage on your device. We have no access to it. Deleting the app deletes all of it, and it cannot be recovered. Because it never leaves your device, we cannot restore it for you. If you want a backup, keep your own copies of anything important.
3. The install identifier
When you first launch the app, it generates a random identifier (a UUID) and stores it securely in the iOS Keychain. We call this your install id. It is used to enforce the free monthly allowance, to keep track of any credits or subscription you have bought, and to help us assist you if you contact support.
Two things about this identifier are worth knowing:
- It survives deleting and reinstalling the app on the same device. This is deliberate: it stops the free monthly allowance from being reset over and over by reinstalling.
- It is not synced to iCloud Keychain, so a new or different device gets a brand-new install id. This is why purchased credits do not automatically move to a new device (see the Terms of Use).
The install id is not linked to your name, email address, phone number, or Apple ID. On its own
it does not identify you as a person. Inside the app it is shown to you as a short support code —
the first eight characters, for example 3F9A-2C1B — which you can quote when you email us so we
can find your records.
4. What leaves your device, and only when you import a recipe
Data is sent off your device only when you choose to import a recipe. Depending on how you import it, that means one of:
- A photo or screenshot you selected (automatically downscaled to at most 2400 px and re-encoded as JPEG before sending);
- Text you pasted;
- A web link (URL) you shared or pasted.
Your install id is sent alongside the import (as a request header) so that the import can be counted against the correct allowance or credit balance. Manual recipe entry, viewing recipes you already saved, and imports from sites that publish structured recipe data never send your content anywhere and are not counted.
5. Where imported data goes
When you import a recipe, the data above is sent over an encrypted (HTTPS) connection to our own backend — a Cloudflare Worker — which then passes it to the services needed to read the recipe:
- OpenAI. The image(s) or text are sent to the OpenAI API so an AI model can turn them into a structured recipe. No user identifier is sent to OpenAI — the request carries only the content being read, not your install id.
- Fetching a link. If you import from a URL, our backend also fetches that URL (for example a TikTok oEmbed endpoint, or the web page itself) in order to read the recipe from it.
The imported images, pasted text, fetched pages and the extracted recipe pass through our backend in memory only, for the length of the request. They are never written to our database or to any storage. Our backend has no object storage. Once the recipe has been returned to your device, the imported content is gone from our side.
6. What our server actually stores
Our backend keeps a small set of records, all keyed to your install id, so that allowances and purchases work and so we can support you. This is the complete list:
| Record | What it contains |
|---|---|
| Account | Install id, when it was created, current credit balance, your most recent subscription product, and subscription expiry. |
| Usage | Per install id, per calendar month, a count of how many image and text/link imports you have made (used to apply the free allowance). |
| Purchases | Records of credit grants: an event id, the install id, the number of credits, the source (a purchase or a manual support grant), and an optional note. |
| Subscription events | Purchase/renewal/expiry events from our payments provider: event id, type, product id, expiry, and timestamp. |
| Import log | One row per import attempt: install id, the kind of import, which allowance or credit paid for it, the outcome, the number of AI tokens used, a short truncated error detail (up to 300 characters) if it failed, and a timestamp. |
Again: the images, text, fetched pages and recipes themselves are not in any of these records.
7. Third parties we rely on
We use a small number of service providers ("processors"). We do not sell or share your data with anyone for advertising, and none of these providers is given data for their own marketing:
| Provider | Role | What they receive |
|---|---|---|
| Cloudflare | Hosts our backend and database. | Handles every import request. As the platform, Cloudflare has standard infrastructure logging enabled, which includes technical details such as IP address. Our own application code does not log or store IP addresses or user agents. |
| OpenAI | Reads the recipe from your image or text. | Only the content being imported. No install id or other identifier. |
| RevenueCat | Validates App Store / Google Play purchase receipts and tells our backend about purchases and expiry. | Your install id (used as the purchase account id) and purchase / receipt data. |
| Apple / Google | Process all payments. | Your payment details, which they handle directly. The app never sees your card or payment information. |
8. International transfers
OpenAI, Cloudflare and RevenueCat are based in the United States, so importing a recipe involves transferring data outside the EU/EEA. Where that happens, the transfer is protected by appropriate safeguards under GDPR — such as the European Commission's Standard Contractual Clauses and/or the EU–U.S. Data Privacy Framework where the provider is certified. Note that the only data tied to your install id that reaches these providers is what is described above; your recipe content sent to OpenAI is not linked to an identifier.
9. Legal bases for processing (GDPR)
- Performing the service you ask for — carrying out an import and returning a recipe, and recording your purchases — relies on performance of a contract (Article 6(1)(b)).
- Preventing abuse and enforcing the free allowance using the reinstall-resistant install id relies on our legitimate interests (Article 6(1)(f)) in keeping the service sustainable and fair.
- Keeping purchase records for accounting and tax relies on our legal obligations (Article 6(1)(c)).
10. How long we keep it
- On your device: your recipes and photos stay until you delete them or delete the app.
- Purchase and subscription records: kept for as long as required by applicable accounting and tax law (in Sweden, generally seven years).
- Import logs and usage counts: kept for up to 12 months to operate allowances, investigate abuse and support you, after which they are deleted or anonymised.
- Account records (install id, balance, subscription status) are kept while the identifier is in use so that your credits and subscription continue to work; you can ask us to delete them (see below).
11. Your rights
Under the GDPR you have the right to access, correct, delete, restrict or object to our processing of data relating to you, and to data portability. Because we hold no name, email or other contact details, we identify your records only by the install id / support code you quote, and we may be unable to act on a request without it.
To exercise any right, email niklas.abrahamsson@me.com and include your support code. You also have the right to lodge a complaint with your data protection authority; in Sweden this is the Swedish Authority for Privacy Protection (Integritetsskyddsmyndigheten, IMY, imy.se).
12. Deleting your data
- On your device: deleting the app removes all recipes, photos and local data.
- On our server: deleting the app does not remove the server records described in section 6, because your install id remains in the device Keychain. To have those records deleted, email niklas.abrahamsson@me.com from your device with your support code and ask us to delete them. Note that we may need to retain purchase records for the accounting period required by law, even after a deletion request.
13. Device permissions
The app asks for these permissions only to carry out an import you have started:
- Camera — to photograph a cookbook page or a handwritten recipe card so it can be imported.
- Photo library (read) — to pick screenshots or photos of a recipe to turn into a saved recipe.
- Photo library (add) — to save recipe photos back to your library.
- Share extension — to receive links and images shared to the app from other apps.
14. Tracking, analytics and advertising
There is none. The app contains no analytics SDK, no advertising SDK, no attribution or crash-reporting SDK, no advertising identifier (IDFA), and it does not show the App Tracking Transparency prompt because it does not track you. Nothing is sold or shared with third parties for advertising, and there is no profiling or automated decision-making that produces legal or similarly significant effects on you.
15. Children
Recipe Savr is a general-audience app and is not directed at children. It is not intended for use by children under 13 (or under the minimum age of digital consent in your country, which is 16 in some EU member states), and we do not knowingly collect data from children.
16. Security
Data sent during an import travels over encrypted HTTPS connections. The install id is held in the iOS Keychain. Our backend holds only the limited records listed above. No method of transmission or storage is perfectly secure, but we keep the amount of data we hold deliberately small.
17. Changes to this policy
We may update this policy from time to time. Material changes will be posted on this page with a new "last updated" date. Continued use of the app after a change means you accept the updated policy.
18. Contact
Questions or requests: niklas.abrahamsson@me.com (please include your support code).