Learn Dutch: Speak NL — Last updated: October 2, 2026
Welcome to Learn Dutch: Speak NL (the "App", "we", "us" or "our"). This Privacy Policy explains what information the App handles, why, who else processes it, and the rights you have.
The App is private by default: your learning progress lives on your device, there is no account to create, and we do not keep a profile of you on any server.
The App stores its data on your device with React Native AsyncStorage under the keys learn_dutch_progress_v1, learn_dutch_notification_runtime_v1 and speechConsentAt. We never receive a copy. It includes:
Deleting the App, or using Reset journey in the App, removes this data. Reset journey clears lesson progress, phrase strength, streak, coins and today's goal.
When you do a speaking exercise, the App records a short clip with your microphone. The clip is:
OpenAI processes the audio as our sub-processor under its API terms. Audio sent through the API is not used to train OpenAI's models, and OpenAI keeps it only for a limited period for abuse monitoring. See OpenAI's Privacy Policy.
To protect the speech service from abuse, it keeps a request counter per client for one-minute and one-day windows, plus one total daily count for the whole service. The per-client counter is keyed by a one-way SHA-256 hash of the network address the request came from. It holds no audio, no text, no readable IP address and nothing that identifies you.
If you buy a premium subscription, Apple or Google processes the payment and RevenueCat manages the subscription. RevenueCat may process:
We never receive your payment card details. See RevenueCat's Privacy Policy.
The free version shows ads served by Google AdMob. When an ad is requested, Google may process:
The App asks Google for non-personalised ads only, so your interests and activity in other apps are not used to choose the ads you see. Premium subscribers do not see ads. See Google's Privacy Policy and how Google uses data from apps that use its services.
| Category | Collected | Source |
|---|---|---|
| Identifiers (device or advertising ID, anonymous purchase ID) | Yes, by AdMob and RevenueCat | Your device |
| Commercial information (subscription purchases) | Yes, by RevenueCat | App Store or Google Play |
| Internet or network activity (ad interactions) | Yes, by AdMob, free users only | Your device |
| Audio (speaking exercises) | Processed transiently, not stored by us | Your microphone, when you record |
| Approximate location (from IP address) | By AdMob, for ads | Network request |
| Name, email, precise location, financial account details | No | — |
| Purpose | Data used | Legal basis (GDPR) |
|---|---|---|
| Deliver lessons and track your progress | Data on your device | Contract |
| Pronunciation feedback | Audio clip (transient), the Dutch phrase you practised | Contract; consent for microphone access |
| Protect the speech service from abuse | Hashed network address and request count | Legitimate interest |
| Manage premium subscriptions and trials | RevenueCat identifiers and purchase data | Contract |
| Show non-personalised ads to free users | Data processed by Google AdMob | Consent where the law requires it (EEA, UK, Switzerland); otherwise legitimate interest |
| Study reminders | Reminder settings on your device | Consent (notification permission) |
We do not make automated decisions that have legal or similarly significant effects on you.
If you are in the European Economic Area, the UK or Switzerland, we rely on:
What the App sends:
nl), the audio format and the phrase's internal identifierWhat goes to OpenAI: only the audio clip and a neutral instruction ("Dutch speech from a language learner"). The phrase text stays on our server, where it is used to score the transcript.
What comes back: a transcript, a similarity score and normalised text.
What we keep: nothing from the request. The Edge Function processes it in memory. The only record is the anonymous rate-limit counter described in section 2.3.
All traffic to the speech service and to OpenAI uses HTTPS with TLS encryption.
Study reminders are scheduled on your device as local notifications. The App does not register for remote push notifications and sends no device token to us. You can turn reminders off in the App or in your device settings.
During a free trial, study reminders pause. Instead, if notifications are allowed, the App schedules one reminder about a day before the cancellation deadline, which is 24 hours before the trial ends, so you can decide whether to keep the subscription. Study reminders resume after the trial, also if you do not open the App.
No system is completely secure. If you find a security issue, please email us right away.
We do not sell, rent or trade personal information. Data is shared only with:
Depending on where you live, you can ask to access, correct, delete or receive a copy of your personal data, restrict or object to processing, and withdraw consent at any time. Most of your data sits on your device and can be changed or deleted there directly. For data held by RevenueCat or our speech service, email us.
If you are in the EEA, the UK or Switzerland you may also complain to your data protection authority, for example the Dutch Autoriteit Persoonsgegevens or the Bulgarian Commission for Personal Data Protection.
To exercise a right, email bora.nikolai.mindwise@gmail.com with the subject "Privacy Rights Request". We reply within 30 days (up to 45 days for complex requests). Exercising your rights never changes the service you receive.
Step-by-step instructions are in our Data Deletion Guide.
| Service | Purpose | Data | Privacy policy |
|---|---|---|---|
| Supabase | Hosts the speech service | Audio clip and phrase text (transient), hashed address counter | supabase.com/privacy |
| OpenAI | Speech-to-text for pronunciation feedback | Audio clip (transient) | openai.com/policies/privacy-policy |
| RevenueCat | Subscriptions and trials | Anonymous user ID, purchase data | revenuecat.com/privacy |
| Google AdMob | Ads for free users and the consent message | Device identifiers, IP address, ad interactions, device and diagnostic data | policies.google.com/privacy |
| Apple App Store | Distribution and in-app purchases | Purchase records | apple.com/legal/privacy |
| Google Play | Distribution and in-app purchases | Purchase records | policies.google.com/privacy |
The App uses no cookies and no tracking of its own. Advertising works as follows:
The App does not respond to browser Do-Not-Track signals because it is not a website; use the controls above instead.
Residents of California, Virginia, Colorado, Connecticut, Utah and other US states with privacy laws have rights to know, access, correct, delete and port their personal data and to opt out of targeted advertising, sale or profiling. We do not sell personal information and do not share it for cross-context behavioural advertising outside the advertising described in section 14. Email bora.nikolai.mindwise@gmail.com with your state and request; we respond within 45 days. If we deny a request you may appeal by replying with "Privacy Rights Appeal" in the subject, and then contact your state attorney general.
The App is operated from Bulgaria. Supabase, OpenAI, RevenueCat and Google may process data in the United States and other countries. Where GDPR requires it, these transfers rely on the EU-US Data Privacy Framework or Standard Contractual Clauses. Email us for details.
The App is not directed at children under 13 (or under 16 in the EEA). We do not knowingly collect personal information from children. If you believe a child has provided personal information through the App, email us and we will act promptly.
We may update this policy. The "Last updated" date at the top shows the latest version. For material changes we will give notice in the App or on this page.
Email: bora.nikolai.mindwise@gmail.com
Location: Bulgaria
Use the subject "Privacy Request" and tell us which right you want to exercise. We reply within 30 days.