LEARNSTACK Back to LearnStack

Privacy Policy

We want you to understand how we use your information and the choices you have. This policy explains what we collect, why we use it, who helps us process it, and how you can manage it.

Last updated:

1. Overview

In this policy, "LearnStack," "we," "us" and "our" refer to the Florida, United States-based operator of LearnStack at learnstack.co. This policy covers Learn lessons, Practice, assessment and review tools, Pro and Teacher features, billing, and support. You can contact us using the details at the end of this policy.

Your browser saves learning progress.
Learning progress stays mainly on the browser you use. Signing in does not turn on synchronization. You can voluntarily download a private study file and restore supported learning records in a browser without existing study work. This manual transfer happens on your device without uploading the file to LearnStack. Files may contain answers, notes and other saved learning content; keep them private. Sign-in credentials and payment access are excluded. Bounded recovery copies are also kept in your browser: at most four versions, within a 4 MB storage limit, removed when you delete saved progress.
Some features send information off your device.
AI requests, secure medical assessments, payments, and teacher share codes use server services. Browser-only storage does not mean all activity stays on your device.
No sale or targeted advertising.
LearnStack does not sell personal information or share it for targeted advertising. The application does not include advertising pixels or third-party marketing analytics scripts.

LearnStack is an educational tool. Do not enter real patient details, confidential student records, payment credentials, or other sensitive information into lessons, notes, questions, rubrics, shared tests, or feedback.

2. Information collected

Profile and preferences

For a verified account, you provide an email address, password, optional display name, confirmation that you are at least 13, Terms acceptance and Privacy Policy acknowledgment. We send signup and sign-in credentials to our authentication provider, Supabase, through our server functions. Supabase stores the password hash, account metadata, and session information. We do not put the password or session tokens in browser storage or send them to AI or billing endpoints. A browser-only legacy profile is not a verified account. Guest use does not require a real email address.

We also save your age-13-or-older confirmation, Terms acceptance, Privacy Policy acknowledgment and versions, theme, sound-effects preference, and other settings. We do not request a full birth date.

Lessons, practice, and assessments

  • Topics, chosen exams, selected experience level, units, learning goals, difficulty, question settings, class notes, and instructions you provide.
  • Generated lessons and questions, answer choices, explanations, references, your answers and written reasoning, check results, feedback, scores, and missed questions.
  • Lesson notes, completed tests, saved lesson state, review schedules, learning progress, and inferred strengths, gaps, and misconceptions used to tailor learning.
  • For secure medical assessments: a generated session identifier, exam and objective identifiers, questions, selected answers, confidence ratings, response times, submission time, and grading results.

Medical-exam study content is not a medical record, but anything personal you include in a prompt or note becomes part of that content. Saved lesson notes may be included in later Practice generation requests.

Rubrics and shared tests

You may provide a course rubric or a previous test as pasted text, one PDF or UTF-8 text file, or up to three PNG, JPG, or WebP photos. Each file may be up to 5 MB, with 6 MB total per upload and no more than 10 PDF pages. We process the file content, type and size to extract rubric criteria or a practice blueprint. The browser may display the file name. LearnStack does not retain original uploads in its own storage; extracted material may remain with your browser's practice settings or learning records. Review reading errors and remove names, grades and personal information before submission.

If the limited course-material preview is enabled, it allows one sample question and two file-reading attempts per signed-in account per 90 days. Each reading attempt counts even when a file is unclear. Requesting a question sends up to 6,000 characters you reviewed to our AI provider. Account-hashed reading and question allowances, a request-content hash and the generated question are stored in Cloudflare D1 for the allowance period; the preview table does not store uploaded files or original source text. Do not include personal information. A grading challenge sends your original question, answer and optional objection to the AI provider for a second AI check, not human review. The original result and review history remain in your browser; applying a second judgment is your choice.

Teacher sharing uses a temporary code, creation and expiry times, and a copy of the test subject, questions, answer choices, correct answers, explanations, topics, and question types. Edits to a teacher's shared-test draft are saved locally. A student's shared-test answers and completion record are saved in that student's browser; this flow does not automatically send a student score report to the teacher.

Students may separately download and share an assignment-report file. It contains an exact-test fingerprint, random submission receipt, completion flag and per-question correctness, not names or answer text. These reports are self-reported, not authenticated assessments. Teachers import them locally; LearnStack does not upload them or automatically diagnose misconceptions. Exact-version teacher-review attestations remain in the teacher's browser and are not independent certification.

Payments

Stripe collects payment details through its hosted checkout and billing portal. LearnStack sends the selected plan and your profile email when available, and receives the identifiers and status needed to manage access: checkout session, customer, subscription and invoice references, customer email when returned, payment status, plan, renewal period, and cancellation status. LearnStack does not receive full card numbers, card security codes, or bank account numbers.

Support and technical data

Interactive activity ratings

When you submit a usefulness rating, we store the activity, your 1–5 star score, the submission or update time, and a hashed random receipt specific to that activity. The receipt is saved in this browser only when you submit feedback and lets you update or remove your rating without creating an account. We do not attach your account, email, answers or lesson progress. Public previews show only the average score and number of ratings, not individual receipts. Ratings are voluntary feedback, separate from optional analytics, and work when analytics is declined. Clearing browser storage removes your receipt, not the server rating. Ratings expire after approximately 180 days from their last update and are removed at daily cleanup. You can remove a rating using its original browser before then. Hosting and anti-abuse processing still apply.

Private feedback

Send feedback lets you submit a message directly on LearnStack without an account or email address. We store the message you choose to send, its type (general feedback, problem or suggestion), a broad site area (such as Learn or Practice), the server submission time, a random message receipt and its review status. If you choose Plans and pricing feedback, the plan and reason you select are included in your message. We use this information to understand problems and improve LearnStack. Only the LearnStack owner can access the feedback inbox; messages are not shown to other users.

We do not automatically attach your account name, email, account ID, lesson content, answers, full page URL, campaign parameters or device details. The feedback request omits account cookies. Please do not include personal records, passwords, patient details or unnecessary personal information in your message. Opening or typing in the form does not submit it. Feedback is separate from optional analytics and works when analytics is declined. Hosting and anti-abuse request processing still apply as described below.

If you contact LearnStack separately by email, we receive your sender address, message and any details or attachments you include.

Cloudflare processes requests to deliver and protect the site, including IP addresses, request paths, relevant headers, timestamps, and response status. LearnStack uses hashed request identifiers for rate limits. Operational logs may include error details and medical-assessment events such as session and exam identifiers, objective identifiers, question counts, and correct-answer counts.

Separately, our service counters increment daily totals for a fixed set of page and API categories, request method, broad HTTP outcome (including rate limits), and response-time range. We do not keep individual request records in this counter store. The counters contain no IP address or IP hash, account or session ID, cookie value, exact event timestamp, raw URL or query string, referrer, campaign code, location, device information, learning content or answer. They are not linked to accounts, billing records, security logs or optional analytics.

3. How information is used

  • Build units and lessons, evaluate checks and answers, adapt explanations to learning evidence, and generate relevant practice and review.
  • Save the progress supported by each feature and schedule retrieval of missed or fragile knowledge.
  • Provide calculator-question generation, rubric-guided exams and grading, similar problems, and Teacher sharing and editing.
  • Process subscriptions, verify paid access, prevent duplicate checkout, and open billing management.
  • Respond to feedback and privacy requests, diagnose failures, prevent abuse, and protect the service.
  • Record account acknowledgments, meet applicable legal obligations, and resolve billing or other disputes.

Automated learning assessments personalize educational content. They are not official examination results, professional certification, or medical advice.

Our basis for processing

Where applicable law requires a lawful basis, we use information as necessary to provide services you request, meet legal obligations, and pursue legitimate interests in operating a secure, reliable service, subject to your rights and the required balancing assessment. Our service counters use aggregate totals rather than identifiable visitor records. Optional account-linked product measurement relies on your separate permission. A first-party system or acknowledgment of this policy is not, by itself, permission for tracking or other processing.

4. Who receives information

OpenAI: AI generation and analysis

LearnStack's server functions send relevant learning content to OpenAI when you request AI-generated units, lessons, checks, practice, explanations, course review, grading, similar problems, or course-material analysis. Depending on the feature, this includes your topic or exam, level, learning goals, selected units, notes, questions, answers, reasoning, prior check results, and rubric or previous-test material. Uploaded photos are sent as image content, PDFs as file content, and text files as text for extraction. We request that PDF processing responses not be stored as retrievable provider responses; this does not override the provider's applicable processing and security-retention terms.

OpenAI's published API policy says API data is not used to train its models by default unless the API customer opts in. Its default abuse-monitoring logs may retain prompts and responses for up to 30 days, with legal and safety exceptions; some features have additional retention. LearnStack does not promise zero retention. See OpenAI's API data controls for details.

Stripe: payments and billing management

Stripe receives checkout and billing information and returns verified payment and subscription status to LearnStack. Your card information is entered on Stripe's pages, not in LearnStack lesson or feedback fields. Stripe's own collection, fraud prevention, and retention practices are described in the Stripe Privacy Policy.

Supabase: verified accounts

Optional cloud study saving is initially disabled. If enabled and you explicitly choose it, we store a supported study snapshot, including your saved lessons, answers, notes and review records, under your verified account in Supabase. A revision number prevents silent replacement by another device. The cloud copy remains until you delete it using study-transfer controls, delete your account with our assistance, or an applicable retention requirement changes. Turning off optional analytics does not prevent this separately requested saving service. Deleting browser data alone does not delete a previously uploaded cloud copy.

When account sign-in is enabled, Supabase processes email addresses, password hashes, display names, confirmation and recovery requests, signup acknowledgments, and session data. It sends account emails through the configured delivery provider. Learning progress remains in the browser unless a feature explicitly says otherwise. See the Supabase Privacy Policy.

Cloudflare: hosting, security, and server storage

Cloudflare hosts the site and API functions and processes requests and security data. Its KV storage holds temporary teacher shares, rate-limit records, secure medical-assessment sessions, and billing lifecycle records. Its D1 storage temporarily holds lesson-preparation requests, check context, drafts, repair diagnostics, and completed lessons so interrupted preparation can resume. A separate D1 table stores voluntarily submitted feedback, not linked to analytics or account records. Feedback is not sent to an AI service. See the Cloudflare Privacy Policy.

People who receive a share code

Anyone with an active teacher code can retrieve its shared test content, including answer choices, correct answers, and explanations. A code is not a private student account or a confidential exam-delivery system. Recipients can copy the content; expiry or revocation cannot erase copies they already obtained.

Support, optional host integration, and legal requests

Email you send to LearnStack is handled through the email providers used to send and receive it. External references you open are governed by those websites' policies.

The application also contains an optional CREAO host integration. If launched with a valid host authentication token, it can send learning profiles, sessions, review records, and performance data to host data-store routes. Ordinary public local sign-in does not create this token or enable that synchronization.

We may disclose information where required by law or necessary to address fraud, security incidents, or threats to users' rights and safety.

5. Storage and retention

Browser learning data and settings
Saved local profiles, lessons, answers, notes, test history, review schedules, rubric text, and preferences have no fixed time-based expiry. They remain until replaced, removed through a relevant control, or cleared by you or your browser. Some history lists have size limits and discard older entries. Browser storage is not a guaranteed backup, including after private browsing, device cleanup, or storage eviction.
Temporary lesson preparation
Server preparation records have a 24-hour recovery window from creation. Background collection can finish a requested lesson, including its bounded automatic repair, while the browser is closed. Expired records cannot be resumed and are removed by scheduled cleanup or subsequent preparation requests; provider backups and operational logs have separate retention. The preparation identifier saved in your browser is required to recover the result. Clearing browser data removes that identifier but does not immediately cancel generation or delete the temporary server record. This is recovery, not cross-device lesson-history synchronization.
Verified account data
Supabase retains the account and authentication records until the account is deleted or retention rules require removal. Sign-out removes this browser's session; it does not delete the remote account. Contact LearnStack for account deletion or export assistance. LearnStack does not offer an automatic permanent account-delete button.
Payment references on your device
The browser keeps checkout and entitlement references to verify access and manage billing. A billing-management reference may remain after paid access ends. Clearing it does not cancel a subscription and can make billing recovery harder.
Teacher share codes
Quick share codes expire after 15 minutes by default. Closing their share panel requests early revocation, which requires a successful network request; if that request fails, the code can remain usable until expiry. Teachers can explicitly choose a 24-hour or 7-day server share instead; these remain available after the panel closes unless revoked early or expired. Early revocation also requires a successful network request. Local preview codes use temporary browser-session storage. Expiry or revocation stops new code access but does not delete copies already opened or saved by recipients, the teacher's original test, or a recipient's saved completion record.
Secure medical-assessment sessions
The session can be used for two hours from creation. Its server record contains questions and, after submission, answers, confidence, timing, and grading. KV records have a two-hour expiry from their most recent save; submitting answers can therefore retain the stored record beyond the original session-access deadline. Browser results and operational logs have separate retention.
Rate-limit records
Server counters expire at twice the endpoint's rate-limit window, generally about two minutes. They use hashed identifiers rather than a plain-text IP address as the record key.
Rubric images
LearnStack validates and forwards images for analysis without deliberately saving the original image to its own persistent server storage. Extracted rubric content may remain in browser settings or test records. OpenAI's separate retention practices still apply.
Billing records
Stripe retains payment records under its own policy and legal obligations. LearnStack's billing-event deduplication records expire after seven days. Its subscription, checkout, customer, and invoice-status records do not currently have an automatic expiry; contact us about records that can be deleted, subject to billing, fraud-prevention, and legal needs.
Support messages and operational logs
Support correspondence and hosting logs are separate from browser storage. Their retention depends on email or hosting settings and what is needed to resolve a request, investigate an incident, or meet legal obligations. We do not promise a fixed deletion deadline for these records; contact us for help with a specific request.
In-site feedback
Feedback messages and review status are kept for approximately 180 days from submission and removed at the next daily cleanup. They are not used to build a visitor profile or measure individual learning. If you contact us about a particular message, include its receipt so we can locate it; do not send passwords or unnecessary personal details. Email correspondence and provider logs have separate retention.
Aggregate service counters
Daily operational totals are kept for approximately 90 days and removed at the next daily cleanup. A non-personal first-observed date remains to show when measurement began. These totals cannot be located or deleted for a particular visitor because no visitor identifier or individual request record is stored. We do not attempt to re-identify or join these totals to personal records.

Providers may process information outside your country, including in the United States and other locations where they operate. LearnStack does not promise that all data stays in your country. Contact us for information about the arrangements that apply to your data.

6. Cookies and browser storage

LearnStack primarily uses localStorage and sessionStorage for profile data, lessons, history, preferences, billing references, and temporary interface state. These are browser storage technologies, even when they are not cookies. A compatible host may also store an authentication token.

Verified accounts use Secure, HttpOnly, SameSite=Strict access and refresh cookies on LearnStack. The refresh cookie has a maximum age of 30 days. Authorized owner access uses a separate secure, HttpOnly session cookie with a maximum age of 90 days. Cloudflare security checks and Stripe's hosted pages may use their own functional or fraud-prevention cookies. The absence of advertising cookies does not mean the entire service is cookie-free.

You can clear site data using your browser's privacy settings. Blocking storage can prevent saved progress, preferences, or payment recovery from working. Sound effects are synthesized on your device; the sound feature does not record audio or request microphone access.

Service operations without visitor tracking

We count server requests, broad response outcomes and response-time ranges to monitor service availability, capacity and technical failures. This happens on our server during requests already needed to deliver the service: no new browser beacon, device access, analytics cookie, fingerprint or persistent visitor identifier is used. We do not ask for optional analytics permission for these identifier-free operational totals. They continue when optional analytics is declined, including when Global Privacy Control or Do Not Track keeps optional analytics off. They are not used to reconstruct visits, advertising attribution, individual progress, conversion funnels or retention.

Request counts include refreshes, retries, automated traffic and lesson-preparation polls. They are not unique visitors, successful payments, completed activities or counts of people. The server-response timer does not measure a background job's full generation time. Underlying hosting and security processing is described separately above. You may contact us about the basis for processing or exercise a right to object where applicable; we do not create an identifier just to locate a visitor in aggregate totals.

Optional first-party analytics

We show a privacy notice before other first-visit prompts and distinguish essential storage from optional analytics. You can read this policy without accepting analytics. Optional product analytics is off unless you separately allow it and confirm you are at least 13. Accepting our Terms or acknowledging this policy does not enable analytics. Use Privacy choices at the bottom of the site or in Account Settings to allow, decline, or withdraw permission. Learning and paid features work without optional analytics. Global Privacy Control and Do Not Track signals keep it off.

When enabled, LearnStack measures first-party sessions, registration confirmation, feature starts and completions, and limited technical error categories. A random first-party session cookie expires after 30 minutes of inactivity, with a maximum session length of 24 hours. Your choice is remembered for up to 180 days. We do not use a persistent visitor identifier, fingerprinting, cross-site profiling, advertising cookies, or advertising pixels. Session counts are not counts of unique people.

After permission, we may capture short campaign codes in UTM source, medium, campaign, content and term parameters. Do not include personal or student information in these codes. We do not capture click IDs, full referrer URLs, or arbitrary query strings. For a verified account, we use a keyed pseudonymous identifier derived from the account ID, not an email address, to measure activation and return learning across signed-in devices where analytics is allowed. A pending signup attribution record can preserve campaign codes through email confirmation for up to seven days, then is removed at cleanup. Registration attribution is kept with that measured cohort. Pseudonymous data is not necessarily anonymous.

Optional purchase measurement includes plan views, intentional upgrade selections, checkout creation, confirmed paid subscription checkouts, successful paid rubric extraction, and durably stored Teacher shares. This requires explicitly accepting the updated Privacy choices; an earlier optional learning-analytics permission does not include purchase measurement. Earlier learning permission remains valid without requiring you to accept the new scope. We keep only fixed plan and feature categories, not your payment details, email, share code, rubric, image or other learning content. A keyed checkout reference links a signed payment-provider confirmation to the consented session only until that measurement window expires (at most 30 minutes after its last renewal before checkout). The raw checkout identifier is not stored in analytics. We do not reconstruct earlier activity or measure recurring renewals or cancellations under this permission. Withdrawing permission removes the current session's checkout links; if that request cannot reach our server, a previously authorized link may remain usable until its short expiry. Browser privacy-signal changes cannot be observed on a separate payment-provider webhook. Expired checkout links are removed at daily cleanup.

Analytics properties do not contain names, emails, passwords, answers, scores, lesson content, subjects, exam objectives, raw IP addresses, user agents, or raw error messages. Hosting and security processing described elsewhere is separate. Cloudflare D1 stores raw analytics events and sessions for approximately 90 days and pseudonymous registration/activation records for approximately 365 days; records are removed at the next daily cleanup after those periods. Analytics is not sent to a third-party advertising platform.

Withdrawing permission stops optional collection, clears measurement cookies and pending events, and requests removal of the current session's events and pending signup attribution. A minimal session-revocation record may remain until cleanup to prevent late requests from restoring data. Account-linked registration and activation records remain until their retention limit or a verified deletion request. In Privacy choices, signed-in users can request deletion of their account-linked analytics. Older unlinked guest sessions cannot necessarily be identified after their cookies expire without introducing the persistent tracking we avoid. A non-identifying preference cookie mirrors your on/off choice, and opaque activity identifiers may be saved with local lessons to prevent duplicate completions. Provider backups may have separate retention. You may contact us for help. Clearing browser storage is not the same as deleting all server records.

7. Your choices and deletion

  • Choose what to submit. You can browse without generating AI content. Avoid AI generation or rubric upload when you do not want that content sent for processing. Guest use still involves server processing for the features described above.
  • Delete saved progress. In Account Settings, this removes saved test history, missed-question review data, review schedules, rubric summaries, exam settings, and similar-problem state. It keeps your local account, consent, and billing references. It does not currently clear every Learn lesson, note, or standardized-learning record.
  • Clear browser data. The "Clear data from this browser" setting attempts to revoke tracked shares and clear this site's local and session storage, browser databases, caches, cached account information, and accessible cookies. It signs out this browser, but does not permanently delete a server-backed account or cancel a subscription. Browser restrictions or failed network requests can limit cleanup. Use your browser's clear-site-data controls if needed. Data on other browsers and devices is separate.
  • Manage billing before clearing data. Use Manage subscription in the payment or account controls, or contact LearnStack for billing help. Deleting local data does not cancel a Stripe subscription or erase provider-held payment records.
  • Request server-side deletion. Email djoseb2007@gmail.com for records LearnStack can identify and control. Local deletion does not automatically erase billing records, unexpired assessment sessions, support emails, provider logs, or copies held by other users.

On a shared device, signing out alone is not a promise that learning history has been erased. Use a separate browser profile, or clear LearnStack site data when finished.

8. Privacy requests and rights

Depending on your location and applicable law, you may have rights to access, correct, delete, or obtain a copy of your personal information, restrict processing, withdraw consent where processing relies on it, or complain to a data-protection authority.

You may also have the right to object to certain processing. Contact us to exercise a right or ask how it applies. Withdrawing consent does not undo processing that was lawful before withdrawal.

Please describe your request and provide enough context to find the relevant record, such as the email used for billing and an approximate date. We may need to verify your identity or authority before disclosing or deleting information. Do not send passwords, full card details, or access tokens. We will respond within the period required by applicable law and explain any limitation, including where data exists only in a browser we cannot access.

This policy does not limit rights available to you under applicable law.

9. Security

LearnStack uses HTTPS, request validation, upload checks, server-side payment verification, signed owner sessions, and rate limits. No website, browser store, or transmission can be guaranteed secure. Local learning data is not separately encrypted by LearnStack and may be accessible to someone using your device or browser profile.

Do not treat LearnStack as storage for confidential medical, school, employer, or financial records. Use fictional or appropriately de-identified examples and only submit content you are authorized to share.

10. Students and children

LearnStack is not directed to children under 13. Account creation asks users to confirm they are at least 13; this is an attestation, not verified age checking. Guest access is not age-verified. Optional analytics separately requires a 13+ confirmation and is not enabled by default. We do not offer an under-13 account or parental-consent flow. If you believe a child under 13 has supplied personal information, contact us so we can investigate and address records we control.

Teachers and schools should assess the service before requiring student use, including any school authorization, parental permission, and privacy requirements that apply. Teacher Mode is a sharing feature, not a claim that LearnStack meets every school's student-record obligations. Do not include student rosters or identifiable student records in shared tests or AI prompts.

11. Policy changes

We may update this policy as the service changes. The date above identifies this version. For material changes, we will provide additional notice or obtain consent where required by applicable law. A policy update does not automatically rewrite the acknowledgment recorded when an existing local account was created.

12. Third-party data sharing

We do not sell your personal information or share it for targeted advertising.

We may share personal information with service providers that process data on our behalf, as necessary to operate, secure, maintain, and improve LearnStack. These services include hosting, data storage, communications, authentication, payment processing, operational analytics where used, and artificial intelligence. The specific providers and data flows are described in Who receives information.

When processing information on our behalf, service providers may process it only for the purposes for which it is provided and subject to their applicable contractual and legal obligations. A provider's separate processing for its own legal, security, or other independent purposes is governed by its applicable privacy policy and law, as described above.

We may also disclose information when required by law, to protect our rights or the rights, safety, or security of others, or in connection with a business transaction such as a merger, acquisition, financing, reorganization, or sale of assets, subject to applicable law and any required notice or consent.

13. Contact LearnStack

For privacy questions, data requests, or billing-data assistance, email djoseb2007@gmail.com. Use the subject line "LearnStack privacy request" and avoid including sensitive information that is not needed to understand the request.