Skip to content

Privacy Policy

Last updated: October 13, 2026

This notice describes how Leitner Learner ("we", "the service") collects and uses information when you use leitnerlearner.app, our Chrome extension, and related applications.

Who is responsible for your data

Stackfully B.V. operates Leitner Learner and is the controller of the personal data described in this notice. Contact us at info@leitnerlearner.app for privacy enquiries.

Data we collect

  • Account data: email address, display name, password hash (we never store plain-text passwords), and profile preferences you choose.
  • Learning data: decks, cards, review history, box positions, XP, streaks, and other progress metadata needed to run the Leitner engine.
  • Payment metadata: if you subscribe to Pro, Paddle processes payment. We store subscription status, Paddle customer/subscription identifiers, and billing period dates — not full card numbers.
  • Technical data: standard server and application logs (errors, request metadata). Product analytics, when enabled, records event names and primitive metrics only — not card text, prompts, or selected webpage content.
  • Account activity: successful sign-ins, deck and card changes, study activity, AI usage and service errors are recorded for support and administration. Authorized administrators can review these records. Activity events do not include passwords, access tokens, full card text or browsing history.

Chrome extension

Our Chrome extension lets you select words or short phrases on webpages, view a translation, and save vocabulary to your Leitner Learner decks.

The extension runs on normal HTTP and HTTPS webpages only so it can detect text you deliberately select and place the Leitner Learner trigger beside it.

The extension does not:

  • scan or collect the full webpage
  • collect browsing history
  • collect page URLs for vocabulary capture
  • send selected text merely because you highlighted it

When you explicitly open capture (for example by clicking the Leitner trigger), the extension may send a short sentence-sized snippet of surrounding page text — up to 300 characters — to help disambiguate words with multiple meanings. This context is not stored in extension storage and is not sent on selection alone.

When you select text, a short-lived recent-selection snapshot may be held in memory in the content script for approximately 5 seconds so you can select a word and immediately click the browser-toolbar extension icon. This snapshot stays in memory only, is not written to storage, and is not sent to our backend just because text was selected.

Selected vocabulary enters the Leitner Learner backend flow only after explicit user action, such as:

  • clicking the Leitner Learner trigger on the page
  • opening the toolbar extension with a selection
  • choosing "Add to Leitner Learner" from the right-click context menu

Extension storage

The extension may store data locally on your device, including:

  • authentication and session data needed to keep you signed in
  • lightweight preferences such as your last-used deck
  • a temporary login email draft in short-lived browser session storage while you sign in

The extension does not store your password. Temporary login email drafts are cleared after successful sign-in or sign-out according to the app flow.

Translations and AI (Free and Pro)

Free users: when you capture vocabulary through the extension or the web app, you may receive translations already available from our shared cache. Requesting a new translation or other AI content may send the vocabulary or material you submit to an AI service provider. These requests share the limited allowance described on the Pricing page. Cached translation lookups do not use that allowance.

Existing Pro users: selected vocabulary may be sent through Leitner Learner's backend to an AI service provider to generate a translation or flashcard content when required.

AI processing is tied to explicit user actions such as saving vocabulary or requesting a translation. The extension does not continuously analyze webpages.

Memory aids during study

When you choose "I don’t know" during study, an existing memory aid is shown without another AI request. If none exists and AI access is available, the card's word, definition and translation are sent through our backend to OpenRouter to create a memory aid. The result is saved on your card for reuse. Changing the card's input text clears the previous aid. New generation uses your shared AI allowance; you can continue studying while it is being created or if generation is unavailable.

How we use data

  • Provide and secure your account and study progress.
  • Enforce subscription access for paid features.
  • Respond to support requests and abuse reports.
  • Improve reliability and fix bugs.

Data sale and advertising

We do not sell personal data. Text you select on webpages is not used for advertising. Extension data is used only to provide Leitner Learner functionality, security, support, and service reliability.

Processors

We use trusted service providers to run the service:

  • Supabase — authentication, database, and backend services for accounts and learning data. Google sign-in, when used, is handled through Supabase Auth / Google OAuth.
  • Paddle — payment processing for Pro subscriptions.
  • AI provider — for AI features on Free and existing Pro accounts, selected vocabulary you submit may be processed to generate translations or flashcard content.

Each provider's privacy policy applies to data they process on our behalf.

Retention and deletion

We keep data while your account is active. You may request account deletion by email. Billing records may be retained as required for tax and reconciliation.

Your rights

Depending on where you live, you may have rights to access, correct, or delete personal data. Contact us to exercise these rights.

Children

The service is not directed at children under 13. We do not knowingly collect their data.

Contact

Privacy enquiries: info@leitnerlearner.app. See our Contact page.