Privacy Policy
Last updated: 6 October 2026
This Privacy Policy explains what personal information we collect when you use the StreamSpanish mobile app (the App) or the website at streamspanish.com (the Website, together the Service), how we use it, and the rights you have over it. We have written it in plain English; if anything is unclear, email support@streamspanish.com and we will explain.
1. Who we are
Luchian Software Consulting, Inc.8141 Campeau Drive Suite 1019
Kanata, ON K2T 1B7
Canada
We are the data controller for personal information processed through the Service. For privacy questions, contact support@streamspanish.com.
2. Summary of what we collect
The Service is designed to collect as little personal information as it needs to work. In particular:
- Using the App requires signing in with Apple or with Google. We receive and store the email address that the sign-in provides, so that we can hold your account and your subscription. We do not ask you to create a separate username or password.
- We do not sell or rent personal information to anyone.
- We do not use advertising SDKs, ad networks, or cross-app tracking.
- We do not ask for access to your contacts, photos, microphone, camera, or location.
- The App stores your reading progress and quiz history only on your device; it is never uploaded to us.
3. Information we collect through the App
3.1 Your account and the per-install identifier
The first time you open the App, it generates a random identifier (a UUID) and stores it on your device. We use this identifier to (a) attribute usage events to a single install for product analytics, and (b) prevent the same install from submitting the same article difficulty rating or content report more than once. It is not linked to your name, phone number, or device hardware identifiers, and it is reset if you uninstall the App or clear its data.
Reading articles requires an account, which you create by signing in with Apple or with Google. We store an account record containing an account identifier we generate, the subject identifier the provider gives us, the email address the provider releases to us, and the date you started a free trial. Before you sign in, the per-install identifier is the only handle we have on your activity; after you sign in, your account identifier is. When you sign out or delete your account, the App generates a new per-install identifier, so a later anonymous session on the same device is not joined back to your account.
3.2 Product analytics
We use PostHog (PostHog Inc., United States) to understand how the App is used. The events we record are limited to in-app behaviour, for example: which articles are opened, which CEFR proficiency level is selected, how far you scroll, quiz scores, and difficulty ratings. Events are keyed to the per-install identifier described in section 3.1 before you sign in, and to your account identifier afterwards. PostHog also automatically records app lifecycle signals (install, update, open, backgrounded) and basic device context (operating system, app version). We do not send your name, email address, or free-text input to PostHog.
3.3 Crash and error reports
If the App crashes or hits an unexpected error, we record a diagnostic
report (stack trace, error message, app state breadcrumbs, OS and device
model) so we can fix the bug. These reports are sent to a server we
operate ourselves at errors.streamspanish.com, running open-
source error-tracking software (Bugsink). They are not
sent to a third-party error-tracking SaaS. We have configured the SDK to
not include default personally identifying fields (IP address, OS
username) in the report.
3.4 Article difficulty ratings
If you rate an article as too easy or too hard, we record the rating, the article ID, the CEFR level, and the per-install identifier on our backend. We use this to tune the simplification model. We do not retain the IP address of the request in our application database; rate-limit logs use only a truncated IP prefix and a hashed prefix of the identifier.
3.5 Subscription purchases
Full access to the App requires a subscription. Every new account can also take a one-time free 24-hour pass, which needs no payment and involves no store purchase; the yearly plan may also start with a 3-day free trial offered through the store. Purchases are processed by Apple on iOS (via the App Store and StoreKit) and by Google on Android (via Google Play Billing). Payment card and billing-address information are collected and stored by Apple and Google under their own privacy policies; we never see your payment card or billing address. From Apple and Google we receive only what is needed to confirm and validate your subscription: a transaction or purchase token, the product identifier, the purchase and expiration dates, and the subscription status. We may store these values on our backend, against your account identifier described in section 3.1, in order to unlock paid features in the App, restore purchases on a new device, and resolve refund or family-sharing questions. We do not use this information for advertising.
Purchase validation and entitlement management are brokered for us by RevenueCat, Inc., listed in section 7. Before you sign in, the App is known to RevenueCat by an anonymous identifier RevenueCat generates; once you sign in, the App identifies you to RevenueCat by your account identifier described in section 3.1. RevenueCat also receives the purchase token issued by Apple or Google, and tells the App whether your subscription is active. It does not receive your payment card or billing address either.
3.6 Information about articles
The App downloads news articles, simplified versions, and quizzes from our backend. The original article content comes from third-party publishers via news aggregators (currently GNews; optionally EventRegistry). These aggregator queries are server-to-server and do not include any information about you.
4. Information we collect through the Website
The Website is a static informational site. It does not set cookies, run analytics, or use a contact form: the contact and waitlist pages link to support@streamspanish.com. The Website loads typefaces from Google Fonts (Google LLC, United States); when your browser fetches the font files, Google receives your IP address and User-Agent. We do not receive this information.
5. AI-powered features
The App's core feature is to simplify Spanish-language news articles to your chosen CEFR proficiency level (A2, B1, B2, or C1) and to generate vocabulary glosses, English summaries, and short comprehension quizzes. To do this, our backend sends the text of news articles to OpenRouter (OpenRouter, Inc., United States), which forwards the request to a large language model provider (for example Google, Anthropic, or OpenAI). OpenRouter is a routing service; the underlying model providers are subprocessors.
Only article text and our system prompt are sent. We do not send your per-install identifier, your reading history, or any free-text you have typed. Per OpenRouter's policy, prompt content is not retained by default.
You are interacting with an automated AI system when you read a simplified article, a vocabulary gloss, an English summary, or a quiz. These outputs are machine-generated and may contain errors.
6. Why we process this information (legal bases under GDPR)
- To provide the Service — creating and authenticating your account, fetching articles, simplifying them, generating quizzes, and validating and unlocking your subscription (Article 6(1)(b) GDPR, performance of the contract under our Terms of Service).
- Product analytics, crash reporting, anti-abuse rate limiting, and de-duplication of ratings — our legitimate interest in operating, securing, and improving the Service (Article 6(1)(f) GDPR).
- Compliance with legal obligations — for example responding to lawful requests (Article 6(1)(c) GDPR).
Where we rely on legitimate interests, you have the right to object — see section 10.
7. Who we share information with
We share personal information only with the service providers that help us run the Service. We do not sell personal information. The current list of subprocessors is:
- PostHog Inc. (United States) — product analytics.
- OpenRouter, Inc. (United States) — LLM routing for article simplification, summaries, and quiz generation. OpenRouter forwards requests to underlying model providers (which may include Google LLC, Anthropic PBC, OpenAI OpCo, LLC, or others) acting as further subprocessors.
- RevenueCat, Inc. (United States) — subscription entitlement management. Receives an anonymous app-user identifier before you sign in and your account identifier afterwards, together with the store purchase tokens issued by Apple and Google, in order to validate purchases and report subscription status back to the App. Transfers are covered by the Standard Contractual Clauses described in section 8.
- Hostinger International Ltd. (Lithuania, European Union) — virtual private server hosting our backend, database, and self-hosted error-tracking server.
- Apple Inc. (United States) — App Store distribution, In-App Purchase processing for iOS subscriptions, and any crash data sent through Apple's developer tools.
- Google LLC (United States) — Google Play distribution, Google Play Billing for Android subscriptions, any crash data sent through Android Vitals, and Google Fonts on the Website.
We may also disclose information if required by a valid legal process, to protect our rights, or to investigate fraud or abuse.
8. International data transfers
We are based in Canada, which the European Commission has recognised as providing an adequate level of protection for personal data. Our hosting provider, Hostinger International Ltd., is established in Lithuania, in the European Union, so the clauses described below do not apply to it.
Some of the other subprocessors listed in section 7 are located in the United States. For PostHog Inc., OpenRouter, Inc., and RevenueCat, Inc., we rely on the European Commission's Standard Contractual Clauses (Decision (EU) 2021/914) included in our data processing agreements with those subprocessors. A copy of the relevant clauses is available on request.
Apple Inc. and Google LLC are different: they process App Store and Google Play distribution, and the in-app purchases made through them, under their own terms and their own transfer mechanisms. We do not hold Standard Contractual Clauses with Apple or Google covering those transfers.
9. How long we keep information
- Your account record — kept while the account is open. When you delete your account in the App, we immediately disconnect it from your Apple or Google sign-in, mark it as closed, and ask RevenueCat to delete your subscriber record; you can no longer sign back into it. The closed account row itself, including the email address and the free-trial date, is retained rather than erased, so that the subscription and tax records described below stay reconcilable. If you want the underlying data erased as well, email support@streamspanish.com and we will do it by hand.
- Articles and simplified content on our backend — deleted 7 days after creation.
- Article difficulty ratings — retained for up to 13 months from submission, then deleted or anonymised.
- Content reports — kept for as long as the report is useful for reviewing the quality of our AI-generated output. We do not currently run an automatic purge of them; ask us and we will delete yours.
- Daily request-quota counters — a per-account counter used to enforce the daily request cap; rows older than 7 days are deleted automatically each night.
- Subscription purchase records — retained for the life of the subscription and for up to 7 years after it ends, to comply with Canadian tax-record retention requirements.
- Server pipeline logs — retained for up to 90 days.
- Crash reports (Bugsink) — retained for up to 90 days.
- Product analytics events (PostHog) — retained for up to 12 months from collection.
- On-device data (reading progress, quiz history, locally cached articles) — stored on your device and deleted when you uninstall the App or clear its data. The App's article cache also expires automatically (default 7 days; you can change this in Settings).
10. Your rights
Depending on where you live, you have some or all of the following rights:
- Access — ask us what personal information we hold about you.
- Rectification — ask us to correct inaccurate information.
- Erasure / deletion — ask us to delete your information.
- Restriction — ask us to pause processing while a query is resolved.
- Portability — ask us to provide your information in a structured, machine-readable format.
- Objection — object to processing based on legitimate interests, including analytics.
- Withdraw consent — where processing is based on consent, withdraw it at any time without affecting prior lawful processing.
- Deindexation (Quebec residents, under Law 25) — ask us to cease disseminating personal information or to deindex it.
- Lodge a complaint with a supervisory authority — see section 12.
Your account is the handle we have on your data. If you want to exercise a right, please email support@streamspanish.com from the email address you signed in with, or tell us what that address is, so we can locate the relevant records. You can also delete your account directly in the App's settings; see section 9 for what that does. We aim to respond within 30 days (45 days for California residents under the CCPA, where we may extend by a further 45 days with notice).
11. Children
The Service is intended for users aged 13 and over. We do not knowingly collect personal information from children under 13. If you believe a child under 13 has provided personal information to us, contact support@streamspanish.com and we will delete it. We do not direct the Service to children under 13, and we comply with the Children's Online Privacy Protection Act (COPPA).
12. Region-specific information
12.1 European Union and European Economic Area
You may lodge a complaint with the data-protection supervisory authority in the EU/EEA member state where you live, where you work, or where the alleged infringement took place. A list is available at edpb.europa.eu.
12.2 United Kingdom
You may lodge a complaint with the Information Commissioner's Office (ico.org.uk).
12.3 Canada (PIPEDA)
You may lodge a complaint with the Office of the Privacy Commissioner of Canada (priv.gc.ca). Our designated person responsible for personal information is the contact at support@streamspanish.com.
12.4 Quebec (Law 25)
Quebec residents have the additional rights set out in section 10 (in particular portability and deindexation). The contact at support@streamspanish.com is also our person in charge of the protection of personal information for the purposes of Quebec Law 25. You may lodge a complaint with the Commission d'accès à l'information du Québec (cai.gouv.qc.ca).
12.5 California (CCPA / CPRA)
We do not currently meet the thresholds at which the California Consumer Privacy Act applies to a business, but we extend the following rights to California residents on a voluntary basis: the right to know what categories of personal information we collect, the right to delete it, the right to correct it, and the right to opt out of "sale" or "sharing" — we do not sell or share personal information for cross-context behavioural advertising.
13. Security
We protect data in transit with TLS, restrict access to our servers, and keep our software up to date. No system is perfectly secure, and we cannot guarantee absolute security; if we become aware of a breach affecting your personal information we will notify you and the relevant regulators as required by law.
14. Changes to this Policy
If we make material changes, we will update the "Last updated" date at the top of this page and, where appropriate, surface a notice in the App. Continued use of the Service after a change becomes effective means you accept the updated Policy.
15. Contact
Luchian Software Consulting, Inc.
8141 Campeau Drive Suite 1019, Kanata, ON K2T 1B7, Canada
support@streamspanish.com