Socrates AI — Privacy Policy (DRAFT)
This is a working draft, not an attorney-reviewed or legally finalized policy. It is written to be technically accurate to the current product as of this revision — every product/technical claim below was verified directly against the current codebase, and, this revision, against each listed service provider's own current public terms (cited inline in §7/§11). This revision changes the scope: Socrates AI is offered to students in Egypt and internationally (see §1–§2), and Egypt's Personal Data Protection Law is now the primary framework. No attorney has reviewed this policy — this is a deliberate, informed decision by the operator to publish on a best-effort basis rather than delay launch for formal legal review. Real compliance risk remains, most materially around guardian consent for minors (§14) and transfers of data out of Egypt (§20) — both are documented as known, unresolved gaps rather than glossed over. Every section that previously carried a [LEGAL REVIEW REQUIRED] marker has been resolved with a real position this revision (either a scoping decision, a directly-sourced provider fact, or an honest statement of an unconfirmed fact) — none of those bracket markers remain in the document. That does not mean this policy is legally certified; it means every open question has a real, stated answer instead of a placeholder, and the operator has accepted the risk of not having those answers reviewed by counsel.
Last technical review: 9 October 2026 (latest). Effective date: not yet published.
⚠ Revision history, most recent first:
- 2026-10-09: Focused technical update for actual vision recipients, temporary chat replay, file timing records and scheduled handwriting-quota retention. Earlier provider-terms reviews retain their original dates; this update is not a new legal review.
- This revision (2026-10-03, later): Handwriting recognition switched off as a beta, and its provider described accurately (On-request handwriting recognition): with today's prices the cost guard sends pages to an OpenRouter-routed model, not Gemini.
- This revision (2026-10-03): Handwritten notes database region confirmed (§11, §20): the Railway database that holds handwritten notes is in Railway's US West region, in the United States.
- This revision (2026-10-02): Handwritten notes (Sketchpad) stored in our Railway database (§8, §11, §20): the strokes and preview image of each handwritten note are stored by our app server in a Railway Postgres database instead of our Supabase database (the note's title, subject and flags stay in Supabase). We also keep up to 30 earlier copies of each note so you can restore one, and when two of your devices change the same note at once, the other device's copy is kept there too. They are deleted with the note or your account and included in "Download all my data".
- This revision (2026-09-30, latest): Gemini API tier confirmed as Google's free (unpaid) tier (§7). The previous revision said the tier was unconfirmed. On the free tier Google may use what we send to Gemini (tutor messages, homework photos and files) to improve its products, and human reviewers may read it. §7 now says so plainly and asks you not to include personal details in photos or messages until we move to billed usage.
- This revision (2026-09-30, later): 13 and over only; guardian email consent removed (§4, §5, §6, §10, §13, §14). New accounts give a year of birth and confirm "I confirm I am over 13 and have authorization from my school or legal guardian to use this platform." Under-13 accounts are blocked and deleted. We no longer collect guardian email addresses, and the ones collected before have been deleted. §13's Google Fonts note corrected: fonts are served from our own servers, so no request goes to Google.
- This revision (2026-09-30): Malware check on uploads (§10, §11): when enabled, we check a file's fingerprint (a SHA-256 hash) against VirusTotal. The file itself is never sent to VirusTotal.
- This revision (2026-09-29, later): Study Binder file storage region confirmed (§11, §20): the Railway bucket is in Railway's US West (California) region.
- This revision (2026-09-29): Season Pass, XP and Laurels (§9, §16): we now keep a record of the rewards you earn and spend and the items you own, built only from study activity we already collect. No new kind of personal data is collected; nothing is shared with parents, teachers or advertisers.
- This revision (2026-09-29): Shared flashcard links now allow visitors to practise cards and signed-in users to copy them into their own accounts. We count link views, completed practice runs and save requests without storing card text in those counts (§10, §13).
- This revision (2026-09-28, later): Study Binder files moved to a Railway storage bucket (§8, §10, §11, §20), replacing the self-hosted storage described before. Railway, which also runs our app server, is now listed as a service provider.
- This revision (2026-10-01, later): §23 now states compliance with Google's API Services User Data Policy (Limited Use), and that assignment text is only sent to the AI for study sets while every AI provider is on no-training terms.
- This revision (2026-10-01): Complete self-service data export (§21, §22): Settings → Privacy → "Download all my data" now gives a full JSON copy of the account, replacing the partial PDF-only export and the email request. §15: the bonus-message cap is 3 times a day (was misstated as once), and the Free-plan notice offering it no longer mentions an ad.
- This revision (2026-09-28): Scope changed from U.S.-only to Egypt and international (§1, §2, §6, §9, §13, §14, §20, §21). Egypt's Personal Data Protection Law (Law No. 151 of 2020) is now the primary framework this policy is written against, alongside COPPA for U.S. children under 13 and GDPR-style rights for users where that law applies; new known gaps are disclosed in §14 and §20. Payments (§10, §11, §12) now describe the real one-time Study Pass flow through Paymob (card), and historical Fawry (cash) records. Fawry is no longer offered for new purchases. The Knowledge Vault was merged into the Study Binder; references are renamed. A separate Return & Refund Policy now exists.
- This revision (2026-09-25, later): Cloudflare Web Analytics added (§13): cookieless page-view and performance measurement, no account identification, not consent-gated.
- This revision (2026-09-25): PostHog product analytics re-added, alongside Google Analytics (§5, §11, §13, §14). It is consent-gated again: nothing loads or is sent for a minor account whose guardian has not consented. Unlike the earlier PostHog integration, session recording is now ON: every typed input is masked, and the student's own study content (tutor conversations, notes, flashcard text) is excluded from recordings. Signed-in accounts are identified to PostHog by account id plus plan, account type and curriculum only (no name, no email). Google Analytics is unchanged and still has no consent gate.
- Prior revision: Mistral's data-use terms, previously flagged unverified after a failed fetch attempt, successfully retrieved and reviewed this revision (§7, §11) — see those sections for the sourced findings. Also corrected §7's stale "free-tier" description of Mistral: the model this app actually calls (
mistral-small-latest) has not shown a free "Experiment" tier on Mistral's public pricing page since an internal 2026-08 engineering audit, and this app's own cost tracking already prices it as paid rather than $0; the account's real billing status still hasn't been directly confirmed (no console.mistral.ai login access), so this remains a "priced conservatively as paid, not confirmed" statement rather than a settled fact. - Prior revision: analytics provider switched — PostHog removed, Google Analytics (GA4) added (§5, §11, §13, §14). This is a real, disclosed step back on privacy protections for analytics specifically: the prior PostHog integration was consent-gated (withheld from a minor account pending guardian consent) and had session-recording disabled/click-text excluded. The current Google Analytics integration is a standard, unmodified
gtag.jsinstall with none of those restrictions — it runs for every visitor regardless of account type or consent status. Stated plainly in §13/§14 rather than left implicit. - Prior revision: resolved the jurisdiction/scope question — Socrates AI is now explicitly scoped as U.S.-only (§1, §2), which resolves the lawful-basis framing (§6), the Google Fonts GDPR-consent question (§13), and the non-US notice-obligations question (§21), and narrows international transfers (§20) down to one remaining unconfirmed fact (physical server region) instead of an open legal question. §14 (Children's Privacy) rewritten to state the real, specific gap plainly: our guardian-consent-by-email-link mechanism has not been confirmed to meet the FTC's COPPA verifiable-parental-consent standard — a known gap the operator has chosen to disclose rather than fix before this revision, not an oversight. §7 and §11 updated with real facts pulled directly from each provider's own current public terms this revision (Google Gemini, Groq, OpenRouter, Supabase, Stripe, PostHog, and Resend — sourced and cited inline); Mistral's terms could not be successfully retrieved this revision and remains explicitly unverified rather than guessed at.
- Prior revision: merged in real fixes found while cross-checking an external privacy-policy-generator draft against this codebase. §4 now discloses Google Sign-In as a real (the only) source of information we receive from a third party — a genuine gap in the prior revision. §17/§18 rewritten: the real 30-day automated account-deletion pipeline (cancel option, 3-day warning email, and — a previously-documented gap now actually fixed — automatic Knowledge Vault object-storage cleanup, always before the account record itself) replaces what used to be a manual, unautomated process. §21 now names the actual categories of rights privacy law commonly grants (access/correct/delete/portability/opt-out/appeal) as informational content, still explicit that jurisdictional applicability is undetermined. Nothing in this pass touched Payments (§12, already correctly names Stripe as the only live processor) or AI Providers (§7, already correctly includes OpenRouter/LM Studio) — an external draft reviewed alongside this one had both wrong, and this document's own already-verified content was kept over it.
- Prior revision: §15's "Rewarded 'watch an ad' bonus" paragraph updated — real Google IMA SDK (Interactive Media Ads) integration code now exists for that button (services/ads/rewardedVideoAd.ts), able to play a genuine rewarded video ad when a real ad tag URL is configured. No ad tag URL is configured on this deployment, so the practical, currently-live behavior of that button is completely unchanged: it still runs the same honest simulated delay described below, not a real video ad. Same "code exists, nothing has actually changed for users yet" situation this section already documents for display AdSense below.
- Prior revision: a full pass re-verifying every technical claim against the current codebase ahead of a Google AdSense application. Two things changed the most: (1) real Google AdSense display-ad code now exists (§15) — a materially different situation from the prior draft's "no advertising infrastructure at all," though as explained in §15 no ad has actually been shown to any user yet; (2) §2 now reflects a deliberate operator decision: Socrates AI is not, and will not be, operated by a registered company — it's an unincorporated project run by a small team, referred to here as "the Socrates AI team," not by name. Also updated this pass: the AI provider list (§7 — Cerebras removed, current roster confirmed), two Egypt-focused payment gateways that exist as inactive scaffolding (§12), push notifications as a data category that wasn't previously documented (§5/§10), a real (if partial) self-service PDF export feature (§22), and a cookie set by our analytics provider that the old "we do not use cookies" framing understated (§13).
- Analytics (PostHog) added, including two follow-up engineering fixes to that integration: click-text exclusion and minor-consent gating. Both are code-level guarantees re-confirmed accurate this revision — see §13/§14.
1. Introduction
Socrates AI is a study application that helps students turn homework, photos, and documents into flashcards, quizzes, and tutoring conversations, and tracks study activity (notes, flashcards, quizzes, streaks, and related study-progress indicators) to help students study more effectively. Socrates AI also publishes a set of free, original study-guide articles that anyone can read without an account (see §15 for why this matters for advertising). This policy explains what information we collect, how it's used, who we share it with, and the choices available to you.
Socrates AI is offered to students in Egypt and internationally. The team is based in Egypt and sells paid plans in Egyptian pounds, so the primary legal framework this policy is written against is Egypt's Personal Data Protection Law (Law No. 151 of 2020, "PDPL"). Because students elsewhere use the app too, we also describe how we handle obligations under the U.S. Children's Online Privacy Protection Act (COPPA) for U.S. children under 13 (§14), and we honor GDPR-style rights (access, correction, deletion, objection and portability) for any user who asks, wherever they live (§21). This scoping decision has not been reviewed by an attorney — see the notice at the top of this document — and the known gaps it creates are disclosed in §14 and §20 rather than glossed over.
2. Who We Are / Data Controller
Socrates AI is an independent, unincorporated project. It is built and operated by a small team of individuals — referred to throughout this policy as "the Socrates AI team," not by the names of any individual — and is not operated by a registered company, corporation, LLC, or any other legal entity in any jurisdiction. There is no separate legal person that owns or controls Socrates AI at this time; the team members operating it are the ones responsible for it. If that changes in the future (e.g. the project is incorporated), this section will be updated to name the entity and its jurisdiction of incorporation.
Contact information for privacy questions: support@socratesai.app. This is our general contact address — there is no separate, privacy-only inbox at this time, so a privacy question sent here reaches the same team that handles general support. You can also reach us through the contact form at /contact on our website — both routes deliver to the same inbox, so use whichever is more convenient.
Where this policy refers to "our website," "this app," or gives a canonical URL, that means https://www.socratesai.app — our permanent domain.
Geographic scope: Socrates AI is intended for students in Egypt and internationally. The website is not geo-blocked. The team is based in Egypt.
3. Information We Collect
We collect information in three ways: information you give us directly, information generated by your use of the study features, and information collected automatically about how you use the app. The sections below break this down by category.
4. Information You Provide
- Account information: email address and password (password is handled by our authentication provider, Supabase — we never see or store your plaintext password). If you choose to sign in with Google instead, Google — a third party — provides your email address to Supabase as part of that sign-in; this is the one real case where we receive account information from a third party rather than directly from you. Our own database only stores the email address from that sign-in, not any other profile data (name, photo, etc.) Google's response may include — we don't copy those fields into our records. Supabase, as the underlying auth provider, may retain more of what Google sends as part of its own authentication records; that's between you, Google, and Supabase's own privacy terms, not something we separately control.
- Age information: a self-reported birth year, collected at signup because Socrates AI is for students aged 13 and over (§14). This is self-reported and not independently verified — we do not use ID verification or any third-party age-assurance service.
- Eligibility confirmation: the date and time you ticked the sign-up statement "I confirm I am over 13 and have authorization from my school or legal guardian to use this platform." We don't collect a parent's or guardian's contact details.
- Study content you create: chat messages you send to the AI tutor, notes, flashcards, quiz answers, saved mind maps, assignments you track, and files you upload to your Study Binder (PDFs, images, videos).
- Purchases: which Study Pass you buy (plan and term). Card details are entered directly with our payment partner and never reach our servers — see §12.
- Support messages: anything you submit through in-app feedback/support.
5. Information Collected Automatically
- Study activity: which subjects you study, how long you study, quiz scores, flashcard review outcomes, and similar usage of the study tools — collected to power the features themselves (progress tracking, spaced repetition, weak-topic detection) and the gamification indicators described in §9.
- AI-usage metadata: which AI model handled a given request, token counts, approximate cost, and response time. This is used for usage-limit enforcement and internal cost tracking — it does not duplicate the content of your messages, which is stored separately (see §7–8).
- Technical/performance data: page-load performance metrics (Core Web Vitals) and client-side error reports. Error reports are deliberately stripped of message/homework content before being logged and are kept only in server logs, not a searchable database, and not sent to any third-party error-monitoring service (we deliberately don't use one) — see §13.
- Push-notification subscription (only if you opt in): if you enable due-card study reminders, your browser generates a push-subscription credential (a delivery endpoint URL and cryptographic keys, per the standard Web Push protocol) that we store to send you that reminder. This identifies a specific browser instance, not you personally, beyond that. Delivering the notification necessarily routes through your browser vendor's own push service (e.g. Google's for Chrome, Mozilla's for Firefox, Apple's for Safari) — that's a function of how Web Push works, not a third party we separately chose, and only the delivery endpoint/keys pass through it, never the reminder's content.
- Product-analytics data: we use PostHog (page views, interaction events, and session recordings with every typed input masked and study content excluded; consent-gated for minors) and Google Analytics (GA4) (page views, session activity; not consent-gated and not restricted by account type). See §13 and §14 for exactly what each collects, including the cookies they set.
6. How We Use Personal Information
We use the information above to:
- Provide the core study features (tutoring chat, flashcard/quiz generation, notes and the Study Binder, progress tracking).
- Authenticate you and secure your account.
- Enforce plan limits, process Study Pass payments, and handle refunds.
- Keep the service limited to students aged 13 and over who have confirmed they have permission from their school or guardian (§14).
- Diagnose technical problems (using de-identified, content-stripped error/performance logs only).
- Send you due-card study reminders, if you opt in to push notifications.
- Communicate with you about your account (e.g. password reset, account-deletion warnings).
Why we're allowed to use it (legal basis):
- To provide the service you signed up for (our contract with you): your account, study content, AI tutoring, plan limits, and Study Pass payments.
- Your consent: push reminders, which you switch on yourself. For students under 18, we also rely on the permission from their school or guardian that they confirm at sign-up (§14).
- Our legitimate interests, balanced against yours: keeping the service secure, preventing abuse, fixing bugs, and understanding how the app is used so we can improve it (§13).
- Legal obligations: keeping payment records we need for refunds, disputes and accounting, and responding to lawful requests.
Egypt's PDPL generally expects consent for processing personal data, with exceptions that include performing a contract with you and complying with the law. We have not had an attorney confirm that each use above fits a PDPL basis; this mapping is the operator's own good-faith reading.
7. AI Tutor and AI Processing
When you send a message to the AI tutor, or upload material for flashcard/quiz/mind-map generation, that content is sent to a third-party AI provider to generate a response. Which provider and model handles a given request depends on your subscription tier and Socrates AI's internal routing logic at the time of the request — this can change as we add, remove, or reprioritize providers, and is not something we commit to keeping fixed.
The providers currently integrated (as of this revision) are:
- Google (Gemini) — a configured vision provider. Photos and PDFs are routed only to compatible models allowed by the student’s plan; Gemini is one possible recipient, not the exclusive recipient.
- Groq — fast, text-only inference.
- Mistral — a text-only fallback. Its public pricing page has not listed a free tier for the specific model we call since an internal 2026-08 audit; we price and track it as a paid model rather than assuming it's free (see §11).
- Z.ai (direct API) — an eligible direct vision route can process homework images with the configured GLM vision model. The router sends only the content needed for the requested educational task. Review Z.ai’s privacy policy for its handling of API content.
- Cloudflare Workers AI — configured text and image-capable models can receive content when eligible for the student’s plan. Its Workers AI data-usage documentation describes its handling of prompts, images and generated answers; Cloudflare states it does not use this content for model training or service improvement without explicit consent.
- OpenRouter — text and vision requests, including eligible homework images and PDFs; itself routes your request to one of several underlying models depending on your plan tier, including models built by Meta, DeepSeek, NVIDIA, Google, Z.ai, Moonshot AI, xAI, Alibaba (Qwen), and OpenAI-authored open-weight models, and NousResearch, accessed through OpenRouter's platform rather than directly.
- A locally-run model (LM Studio), only when a student or operator has explicitly enabled it — this option is off by default, and when it's on, it runs on hardware the operator controls, so nothing leaves that machine for that request.
Cerebras was previously listed as a provider candidate and has since been fully removed from the app — it is not integrated today, and any reference to it elsewhere should be treated as stale.
Provider data-use facts, checked directly against each provider's own current public terms this revision:
- Google (Gemini) — this deployment currently uses Google's free (unpaid) Gemini API tier (confirmed 2026-09-30). Under Google's terms for its unpaid Gemini API services, the prompts and files we send and the responses returned may be used by Google to provide, improve and develop its products, and may be read by human reviewers. In practice that covers tutor messages and homework photos or files when Gemini is the selected provider (see above). Google's paid/billed tier is different: there, prompts and responses are not used to improve Google's products, are logged only briefly for abuse detection and legally required disclosures, and a Data Processing Addendum is offered. We intend to move to billed usage; until this line says so, the free-tier terms apply. Until then, please don't include names, faces, addresses or other personal details in homework photos or messages.
- Groq: Groq's public privacy policy states that customer data processed through its Cloud Services (which includes API usage) is governed by a separate Groq Services Agreement and Data Processing Addendum, available directly from Groq's console — the general privacy policy itself doesn't state a training policy. A DPA is offered.
- OpenRouter: OpenRouter's own terms state OpenRouter itself does not use your inputs/outputs for training. However, it explicitly warns that some of the underlying model providers it routes to may use your data for training — this varies by which model/provider actually handles a given request, and OpenRouter's docs let you select a provider that commits not to train on your data if that matters to you. A DPA is offered.
- Mistral: Per Mistral's own developer documentation (docs.mistral.ai/admin/security-access/privacy, successfully retrieved this revision), API input/output is not used to train Mistral's models by default. The one documented exception is their "Labs" models, which train on data regardless of subscription or opt-out settings — this app never calls a Labs model (it uses
mistral-small-latest), so that exception doesn't apply here. Their docs mention an opt-in "zero data retention" feature but don't state a default retention period on that specific page, and we have not reviewed Mistral's formal Data Processing Addendum (a separate legal document) this revision — flagged as the next real step if a fuller contractual guarantee is needed, not guessed at here. - LM Studio (local, operator-enabled only): not applicable — when enabled, it runs entirely on operator-controlled hardware, so no third party's terms apply to that path at all (see above).
We still do not independently guarantee any provider's practices beyond what's quoted above — provider terms can change, and this is a snapshot as of this revision, not a live-monitored commitment. If you have sensitive concerns about a specific provider, review that provider's own current terms directly.
Do not enter information you would not want processed by a third-party AI system — including anyone else's personal information, or highly sensitive personal details unrelated to your studies.
8. Uploaded Files, Photos, PDFs, and Study Materials
You can upload homework photos, PDFs, and (in some flows) PowerPoint files to generate flashcards, quizzes, or a milestone breakdown, and you can separately save files to your Study Binder for long-term storage and citation.
- One-off generation uploads (turning a photo/PDF into a flashcard set or quiz without saving the file to your Study Binder) are sent to an AI provider for processing and are not stored by us afterward — once the flashcards/quiz are generated and returned to you, the original file is not retained on our servers.
- Handwritten notes (Sketchpad): what you draw or write is kept until you delete the note or your account is deleted. The strokes and a small preview image are stored by our app server in a private database run by Railway (§11); the note's title, subject and pin/favourite flags are in our main database. Up to 30 earlier copies of each note are kept so you can restore one (taken at most every 10 minutes while you edit, and whenever two of your devices change the same note at once). Your device also keeps a copy so the note works offline.
- Study Binder uploads (previously called Knowledge Vault uploads) are different: if you explicitly save a file to your Study Binder, we keep it — the file bytes in a private storage bucket run by our hosting provider, Railway (§11), plus a metadata record in our database (file name, subject, tags, and, for PDFs, extracted text used to let the tutor cite your own material) — until you delete it or your account is deleted. The bucket is private: files are never publicly listed, and when you open one, our server gives your browser a link that only works for 10 minutes.
- Generated results you explicitly save (flashcards, notes, quizzes, mind maps) are stored the same way as any other study content you create — see §5.
- What third-party AI providers do with material after they process it is governed by their own terms, not ours — see §7. We do not claim they discard it or that we can guarantee its deletion on their systems.
- Account deletion: see §18 — Study Binder files are now automatically and permanently deleted as part of the real 30-day account-deletion pipeline.
We recommend avoiding uploads containing anyone else's personal information, or sensitive information beyond what's needed for your studies.
9. Study Activity, Personalization, Gamification, and Recommendations
We calculate and display study-progress indicators — including XP, streaks, levels, mastery/"Brain Power" indicators, and similar — based on your study activity (time studied, quiz accuracy, flashcard review outcomes, and similar signals described in §5). These are computed to show you your own progress and to power in-app recommendations (e.g. which topics to review). These indicators don't affect pricing, eligibility, or any decision outside of what's shown back to you, so they are not automated decisions with legal or similarly significant effects on you (the kind that data-protection laws such as the PDPL and GDPR treat specially). This is the operator's own good-faith reading, not a determination made by an attorney.
Season Pass, XP and Laurels. To run the Season Pass we keep, for your account: a record of each XP or Laurel award or purchase (what it was for, the amount and the date), your XP for the current season, your Laurel balance, the titles and frames you own and which ones you've chosen to show, and whether a recently broken streak can still be repaired. All of it is calculated from the study activity described above (study time, flashcard reviews, quizzes, homework checks, streaks); we don't collect anything new to run it. Whether you get the premium track depends only on your plan. This record is visible only to you, is not included in the study report a parent or teacher can see, is not used for advertising, and is deleted with your account (§18).
10. How We Share Information
We share information only in the following circumstances:
- With third-party AI providers to generate tutoring responses and study material, as described in §7.
- With our payment partner Paymob (and Fawry only for historical purchases) to process Study Pass payments and refunds, as described in §12.
- With our email provider to send account-related emails (password reset, account-deletion warnings, support replies).
- With our database/hosting infrastructure providers, who store the data described in this policy on our behalf, including Railway, which runs our app server and stores Study Binder files and handwritten notes (§8, §11).
- With VirusTotal (malware check), only when it is switched on: we send a SHA-256 fingerprint of an uploaded file, never the file or its contents, to check whether it is already known to be malicious (§11).
- With our product-analytics provider (Google Analytics), as described in §13, for usage analytics — not advertising.
- Via your own browser's push-notification service, if you opt into reminders — see §5.
- If you create a share link for a flashcard deck (an explicit action you take), anyone with that link can view and practise the reviewed flashcards. A signed-in visitor can save a copy of those cards to their own account. Turning off the link stops future access and saves, but does not remove copies already saved by someone else. The link does not expose your account details.
- As required by law, or to protect the rights, safety, or property of Socrates AI, our users, or others.
We do not sell personal information. See §15 for the current, accurate state of advertising — real ad-integration code exists, but as of this revision no advertisement has actually been shown to any user.
11. AI Providers and Other Service Providers
See §7 for AI providers. Non-AI service providers currently integrated, with DPA status checked directly against each provider's own current public terms this revision:
- Railway (Railway Corporation, San Francisco, United States): hosts our app server, the private storage bucket for Study Binder files and the database that holds handwritten notes (§8). The bucket is in Railway's US West (California, United States) region, and the handwritten-notes database is in Railway's US West (United States) region. We have signed Railway's Data Processing Addendum (effective 2 October 2026), which includes the EU Standard Contractual Clauses and the UK International Data Transfer Addendum for transfers to the United States.
- Supabase (authentication/database): offers a Data Processing Addendum; Supabase acts as processor, we act as controller; the DPA incorporates Standard Contractual Clauses for international transfers and commits to deleting data within 30 days of contract termination.
- Paymob (card payments for Study Passes — §12), an Egyptian payment company.
[ENGINEERING VERIFICATION REQUIRED]— whether a data processing agreement is in place with Paymob is not confirmed from the codebase. - Fawry (historical cash Study Pass purchases only — §12), an Egyptian payment network.
[ENGINEERING VERIFICATION REQUIRED]— same as Paymob: data processing terms are not confirmed from the codebase. - Stripe (card subscriptions — §12): integrated in code but switched off; no payment goes through Stripe today. A DPA is automatically incorporated into Stripe's standard services agreement if it is ever used.
- Resend (email delivery): offers a DPA, binding on acceptance of Resend's Terms of Service. Resend's primary processing takes place in the United States; data is deleted within 90 days of account termination (subject to legally-required retention exceptions).
- Google (Google Analytics — §13): a Data Processing Amendment is available for Google Analytics accounts (accepted, not automatic — found under GA4 Admin → Account Settings), incorporating Standard Contractual Clauses for transfers outside the EU/UK once accepted.
[ENGINEERING VERIFICATION REQUIRED]— whether it has actually been accepted on this specific Google Analytics account is not confirmed here. - VirusTotal (malware check on uploads, operated by Google): used only if the operator switches it on. For each uploaded file we send a SHA-256 fingerprint, a short code calculated from the file. We never upload the file itself, because files submitted to VirusTotal's standard service can become visible to other VirusTotal users. A fingerprint cannot be turned back into the file. If VirusTotal already knows the fingerprint as malicious, the upload is refused; in every other case (unknown, clean, or the check is unavailable) the upload goes ahead.
[ENGINEERING VERIFICATION REQUIRED]— whetherVIRUSTOTAL_API_KEYis set on the live deployment is not confirmed from the codebase. - PostHog (product analytics and session recording — §13), U.S. cloud region. PostHog offers a DPA;
[ENGINEERING VERIFICATION REQUIRED]— whether it has been accepted for this project is not confirmed from the codebase.
If you enable push notifications, your browser vendor's own push-delivery infrastructure is also involved, as described in §5 — that's governed by your browser vendor's own terms, not a service we separately contract with.
12. Payments and Subscriptions
Paid plans are sold as one-time Study Passes in Egyptian pounds (see our Terms of Service §5). Whether a payment method is open at a given time is shown at checkout; when it isn't, nothing is charged and nothing below is sent.
What our payment partners receive:
- Paymob (card): your Socrates account email address (filled automatically and verified on our server), the billing name and phone number you enter at checkout, the amount, and our internal purchase ID. You enter your card details in Paymob’s embedded Pixel form at checkout. Your card number, expiry date and CVV never reach our servers. We don't collect or send a shipping address for digital Study Passes. Billing contact details are sent only when you open the secure card form; editing the billing name or phone does not change your Socrates account.
- Historical Fawry purchases only: no new Fawry checkout is offered and no new charge is created. Previously, Fawry received your account email address, the amount, a short description of the pass (e.g. "Socrates AI Plus pass (6 months)"), our internal purchase ID and an internal customer reference. Historical reference codes and payment notifications may still be processed to settle those purchases.
What we store for each purchase: the plan, term and number of days, the amount and currency, which payment partner was used, the partner's payment reference, the purchase status, and when it was paid and when the pass ends. This is payment metadata, not card data. We use it to activate your pass, handle refunds and disputes (Return & Refund Policy), and keep accounting records. It is deleted with your account (§18).
Refunds: if we refund a card payment, Paymob processes it back to your card. If we refund a historical Fawry cash payment, we ask for bank, InstaPay or mobile-wallet details in the name of the account holder or their guardian, and use them only to send that refund.
Stripe: code for Stripe card subscriptions exists but is switched off, and no payment goes through Stripe today. If it's ever turned on, we'll update this section first.
13. Cookies, Analytics, and Similar Technologies
We do not use cookies for authentication. Sign-in is handled via a token stored in your browser's local storage, not a cookie.
We use three analytics tools.
For shared flashcard links, our own database also counts page views, completed practice runs and signed-in save requests. These records contain the internal share ID, event name and time; only a signed-in save includes the visitor's account ID. They contain no card text, IP address or user agent. A signed-in save can also produce a PostHog event under the account's existing analytics consent settings.
Cloudflare Web Analytics measures page views and page-load performance. It is cookieless: it sets no cookies and stores nothing in your browser, and it does not identify you or your account. It runs for every visitor, including minor accounts, since it collects no personal profile.
PostHog (product analytics and session recording, U.S. cloud, us.i.posthog.com) shows us how the app is used so we can improve it. What it does, exactly as the code (services/analytics.ts) configures it:
- Signed-out visitors: anonymous page views and interaction events only; no person profile is created.
- Signed-in accounts: events are linked to your account id, plus your plan, account type and curriculum. We do not send your name, email address, or anything you type.
- Session recording is on. It records page layout, navigation, clicks and scrolling so we can see where the app is confusing. Every text input is masked (recordings show asterisks, not what you typed), and your study content is excluded from recordings and from click data: tutor conversations, notes, and flashcard text are never captured.
- Under-13 accounts: PostHog is never loaded for them and nothing is sent (see §14).
- PostHog stores an identifier in a first-party cookie and
localStorageentry namedph_<project key>_posthog(see our Cookie Policy).
We also use Google Analytics (GA4), a third-party analytics tool — real, standard gtag.js page-view/session tracking. Google Analytics, as currently integrated, has none of the restrictions above: it loads and records activity for every visitor, on every page, regardless of account type — including an under-13 account before it is deleted. This is a known, disclosed limitation of the current integration, not an oversight; we are stating it plainly rather than implying protections that don't exist. Google Analytics sets two first-party-appearing cookies that are actually set by Google (_ga and a property-specific _ga_... cookie, ~2-year duration) to distinguish visitors and persist session state — see our Cookie Policy for the exact names. We do not use any advertising/marketing pixel tool separately from this (no Meta pixel, no attribution/marketing scripts), and error/performance logs (page-performance metrics and error reports) still go only to our own server logs, with message/homework content deliberately excluded from those, from Google Analytics, and from PostHog.
If real display advertising is ever turned on (see §15), Google's advertising infrastructure would set its own cookies or similar technologies on the public study-guide pages specifically — never inside the authenticated study app — subject to a real consent mechanism we have not yet built. As of this revision, no such cookie has ever actually been set, because no ad has ever actually been shown — see §15 for exactly why.
Fonts are served from our own servers. An earlier version of this policy said our sign-up page loaded fonts from Google Fonts; the app now serves its own copies of those fonts, so opening the app sends no request to Google for them.
For the full real inventory of every cookie and browser-storage entry we set, see our Cookie Policy.
14. Children's and Minors' Privacy
Socrates AI is for students aged 13 and over. Two child-privacy rules matter most for our users: Egypt's PDPL, which treats anyone under 18 as a child and generally requires a guardian's consent to process a child's personal data, and the U.S. COPPA, which applies to children under 13. This section says exactly what the app does and names the gap that remains.
How sign-up works:
- Every new account gives a year of birth and must tick this statement before using the app: "I confirm I am over 13 and have authorization from my school or legal guardian to use this platform." We record when it was ticked. Accounts that haven't ticked it (including accounts created before 30 September 2026) are asked once, and the AI features stay off until they do. This is enforced on our server, not only in the app.
- Under 13: if the year of birth shows the student is under 13, the account can't use anything, and it is scheduled for deletion after 30 days (with a warning email 3 days before). The student can also delete it immediately. We don't knowingly keep personal data from children under 13. If you believe a child under 13 has an account, contact support@socratesai.app and we will delete it.
- We don't collect parents' or guardians' contact details. The guardian email addresses collected before 30 September 2026 for the old email-consent step have been deleted.
- Age and permission are self-reported. We don't check ID, and we don't contact the school or guardian to confirm.
- Analytics: PostHog (§13) is never loaded for an under-13 account. Google Analytics is not gated and runs for every visitor (§13).
Known, unresolved gap (students aged 13–17, Egypt): Egypt's PDPL generally requires a guardian's consent for anyone under 18. We rely on the student's confirmation that their school or legal guardian has authorized them. A student ticking a box is not itself proof of a guardian's consent. Where a school provides Socrates AI to its students, obtaining any consent it needs from parents or guardians is the school's responsibility; we have not verified that for any school. Our Terms of Service also ask students under 18 to get a parent's or guardian's permission before buying a Study Pass. A parent or guardian can contact us at any time to review, correct or delete their child's data.
COPPA (U.S.): because Socrates AI does not allow accounts for children under 13, we don't ask for or record parental consent under COPPA. The earlier email-link consent step (which we had disclosed did not meet COPPA's "verifiable parental consent" standard) has been removed, and any account found to belong to a child under 13 is blocked and deleted as described above.
We do not currently show any advertising to any user, including minors — real ad-integration code exists (§15), but as of this revision no ad has actually rendered anywhere, so there is currently no behavioral-advertising exposure for minor accounts to describe. Study-progress/gamification features (§9) apply the same way to minor and standard accounts; no separate data-minimization path exists for minors beyond the consent gate itself.
15. Advertising and Rewarded Ads
This section changed materially this revision. The prior draft said no advertising infrastructure existed at all. That's no longer accurate: real Google AdSense integration code now exists in the app. What hasn't changed is the practical outcome — no advertisement has actually been shown to any user, on any page, as of this revision. Both things are true at once, and the rest of this section explains why.
Display advertising (Google AdSense). We've integrated Google AdSense display-ad code, but it's built with "deny by default" logic so an ad can only ever appear on our public, non-authenticated study-guide content pages (original educational articles anyone can read without an account) — and never anywhere inside the authenticated study app (the tutor, quizzes, flashcards, notes, dashboard, or any other logged-in screen), and never while an active study or focus session is running. Beyond that page restriction, as of this revision:
- The feature that turns on ad display at all is switched off by default in our configuration.
- Even if it were switched on, no part of our code currently sets the additional ad-consent signal the eligibility check also requires — we haven't yet built a consent mechanism for ad personalization (which is a separate thing from the guardian/age consent described in §14).
- As a direct result, no display ad has actually rendered anywhere in the app to date, even though the underlying integration exists.
If and when we do turn on real display ads, they will — per how the code is built — only ever appear on the public study-guide pages, never inside the study app and never during active studying, and we will update this policy with real detail (what Google AdSense collects, what cookies it sets, and what consent choice you'll be given) before that happens, not after.
Rewarded "watch an ad" bonus (Free plan). Separately, the Free plan has a "Watch a Short Ad" button that grants +3 bonus chat messages for the day (up to 3 times a day). On the Free plan a small notice after your 4th and 8th message offers the same bonus; it does not show or claim to show an ad. As with display advertising above, real integration code for this now exists — Google's IMA SDK (Interactive Media Ads), the standard Google product for playing a rewarded video ad in a web page — but as of this revision it is not turned on: no ad tag has been configured for this deployment, so no real video advertisement has ever actually been shown to any user through this button. To describe today's actual behavior accurately: clicking it does not show you a real video advertisement or any third-party ad creative. It runs a short (about 1.2-second), clearly-labeled simulated delay — the button's own tooltip in the app says this is a simulated ad watch with no ad network configured — and then calls our server, which grants the bonus. Only the bonus-granting logic behind it is real (and it is genuinely real — the grant is atomic, server-enforced, and capped, not just cosmetic). If and when a real ad tag is configured, this button will play a genuine IMA SDK rewarded video ad instead, the bonus will only be granted after that real ad's own completion signal fires (never on a skip, close, or error), and we will update this section with real detail (what the IMA SDK/Ad Manager collects, what it sets, and what consent choice you'll be given) before that happens, not after — same commitment §15 already makes for display advertising above.
We do not use behavioral advertising based on a student's study performance or study behavior anywhere in the app today, and — pending legal review — do not intend to for minor accounts if display advertising is ever turned on.
16. Gamification and Student Profiling
See §9. In short: study-progress indicators (XP, streaks, mastery, Season Pass tiers and Laurels, and similar) are calculated from your own study activity to show your own progress, power in-app recommendations and run the Season Pass. They are not used for advertising and do not currently drive any decision beyond what's displayed to you. Laurels can't be bought with money and no reward is random.
17. Data Retention
This changed materially this revision — a real, automated retention schedule now exists. Study content, chat history, and account data are retained for as long as your account exists, plus up to 30 days after you request account deletion (§18) — after that, your data is permanently and automatically deleted, not just deactivated. This is a real, code-enforced schedule (a daily automated job, not a manual promise), not an aspirational statement.
Exceptions we're not going to pretend don't exist: backup retention, and what happens to data already sent to a third-party AI provider before your deletion request (§7-8), are both outside our codebase's direct control — we don't currently make a specific promise about either. Data outside the account-deletion path (e.g. content you choose to keep by simply not deleting your account) is retained indefinitely while your account remains active, since there's no separate expiration on top of that.
18. Data Deletion
This is now a real, automated, self-service process — not the manual one an earlier revision of this policy described. You (or, if you're under 18, your parent or guardian) can request account deletion from Settings. That starts a real 30-day grace period, during which:
- You can cancel the request at any time from Settings — this fully reverses it, with no data lost or affected.
- We'll email you a real warning roughly 3 days before permanent deletion happens, in case you've forgotten or changed your mind.
If the request is never cancelled, an automated job permanently deletes your account 30 days after the request:
- Your Study Binder files are deleted from object storage first (this used to be a documented gap — files were orphaned rather than removed; that's fixed now, and file deletion always happens before the account record itself is removed, in that order, specifically so nothing gets orphaned).
- The underlying authentication record is then deleted, which cascades, at the database level, to your study content, chat history, notes, flashcards, quiz results, purchase records, and everything else tied to your account — automatically and permanently, in one real operation, not a manual per-table cleanup.
What we still don't make a specific promise about: backup retention, and what happens to data already sent to a third-party AI provider before your deletion request (§7-8) — both are outside our codebase's direct control.
To request deletion, use Settings (if you have account access), or contact us at support@socratesai.app or the contact form — see §2.
19. Data Security
We use industry-standard practices including encrypted connections (HTTPS/TLS), database-level access controls that restrict each account to its own data, secure password handling (via our authentication provider, never stored by us in plaintext), server-side-only handling of API keys and secrets, rate-limiting and abuse protections on sensitive endpoints, and restricted administrative access. We do not hold any third-party security certification (e.g. SOC 2, ISO 27001), and we make no claim that any system is unbreachable — no organization can guarantee absolute security, and we do not claim to.
20. International Data Transfers
Your data leaves Egypt. Most of our providers are outside Egypt: our app server and Study Binder file storage (Railway, United States company), our database and authentication (Supabase), email (Resend, mainly in the United States), analytics (Google, PostHog's U.S. region, Cloudflare) and every AI provider in §7 process data abroad, mostly in the United States. Paymob, and our historical payment partner Fawry, are Egyptian.
Known, unresolved gap: Egypt's PDPL restricts transferring personal data outside Egypt and ties it to licensing by Egypt's Personal Data Protection Center. We have not registered with or obtained a licence from the Center. This is disclosed here rather than hidden, and it should be resolved (or confirmed not to apply to a project of this size) with legal advice. For users where GDPR applies, several providers offer their own transfer mechanisms (Standard Contractual Clauses — see §11 for Supabase, Resend and Google); we haven't layered a separate transfer promise on top of theirs.
Where Study Binder files and handwritten notes are stored: the Railway storage bucket that holds Study Binder files (§8) is in Railway's US West region, in California, United States, and the Railway database that holds handwritten notes (§8) is in Railway's US West region, in the United States. Both are outside Egypt, so the transfer gap above applies to them too.
21. Your Privacy Rights
Egypt's PDPL gives you rights over your personal data, and so do other laws depending on where you live (for example GDPR in the EU/UK, or state laws such as California's CCPA/CPRA in the United States). We honor every right below for any user who asks, wherever you live, without first deciding which specific law applies. Today, every one of these is handled manually: you (or, where applicable, a minor's guardian) contact us, and we address the request directly. We aim to respond within 30 days.
Your rights:
- Right to know / access — what personal information we hold about you.
- Right to correct — inaccuracies in that information.
- Right to delete — see §18 for the real, automated deletion mechanism this app now has.
- Right to a copy / data portability — download everything yourself from Settings → Privacy → "Download all my data" (§22).
- Right to object / opt out of certain processing (e.g. targeted advertising, sale/sharing of data) — as described throughout this policy (§10, §15), we do not sell personal information and do not currently run targeted/behavioral advertising, so there is nothing to opt out of on that front today.
- Right to withdraw consent you've previously given, and right to non-discrimination for exercising any of the above.
- Right to appeal if we decline a request — email support@socratesai.app or use the contact form; we'll respond in writing explaining the outcome.
Where applicable, a guardian may exercise these rights on behalf of a minor's account. You can reach us at support@socratesai.app or the contact form with any request, and we will address it — this works the same way regardless of which specific legal right(s) apply to you.
- Right to be told about a breach: if a security breach affects your personal data, we'll tell you (and, where the law requires it, the relevant regulator) without undue delay.
If you're not satisfied with our answer, you can complain to your local data-protection authority — in Egypt, the Personal Data Protection Center.
22. Account/Data Export
You can download a complete copy of your data yourself. In Settings → Privacy, "Download all my data" saves one JSON file with everything we store for your account: your profile and settings, every chat and message, notes, flashcards and review history, ready-made deck progress, quiz results, homework checks, assignments, study time and streak records, Study Binder collections, mind maps, handwritten notes (sketches) with their strokes and saved earlier copies, the list of files in your Binder (name, type, size and dates), shared decks, report sharing with parents or teachers, invites, purchases and receipts, Season Pass progress and rewards, push notification subscriptions, Google Classroom data, and your AI usage records. The file is built by our server from your own account only and sent straight to you. Three things are deliberately left out: password-reset and consent token hashes, the encrypted Google Classroom access token and push notification encryption keys (security secrets, not information about you), and other people's account ids on shared records. The files you uploaded to the Binder are listed but not packed into the JSON file; download them from the Binder. The older "Export PDF Report Portfolio" (a readable PDF summary of study time, streak, notes and flashcards, built in your browser) is still there for sharing with teachers or parents. If anything is missing or you'd rather we send it, contact support@socratesai.app.
23. Google Classroom Integration
Opt-in, student-initiated, read-only. Nothing here happens unless you explicitly click "Connect Google Classroom" and complete Google's own consent screen — we never access your Google account otherwise.
What we request and why:
classroom.courses.readonly— your list of courses, so we can show them alongside your other subjects.classroom.coursework.me.readonly— assignments, due dates, and your own submission status for each, so we can mirror what's missing or due soon.
What we explicitly do not request: any Google Drive scope. When a teacher's assignment or announcement includes an attached file, we show it as an "Open in Classroom" link only — we never fetch the file's contents. This is a deliberate scoping decision (a Drive scope would require Google's separate, heavier third-party security assessment), not an oversight.
Turning an assignment into a study set. If you ask for flashcards or a quiz from a Classroom assignment, that assignment's title and description are sent to our AI provider to write them (§7). We only offer this while every AI provider we use is on terms that don't use what it's sent to train its models; while that isn't confirmed, the option is switched off.
Google API Services User Data Policy. Socrates AI's use and transfer of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements. In particular: we use Classroom data only to show you your own courses and assignments and to build study material you ask for; we don't sell it, use it for advertising, or use it to train general AI or machine-learning models; and no person at Socrates AI reads it except with your permission, for security, or to comply with the law.
What we store: a cache of your courses/assignments (kept current the same way the rest of your study data is), and your Google refresh token — encrypted at rest (AES-256-GCM) — so you don't have to reconnect every session. We never store your Google password; authentication happens entirely on Google's own consent screen.
Retention and deletion: the cached course/assignment data and the encrypted refresh token are deleted when you disconnect Classroom (on the Classroom page), or when your account is deleted (§18). Either way we also ask Google to revoke Socrates AI's access, so it disappears from your Google account's list of connected apps. You can check or remove it yourself at any time at myaccount.google.com/permissions.
Verification status: this integration's Google OAuth consent screen is going through Google's own verification process for these scopes. Until that completes, Google may show new users an "unverified app" warning during connection, and/or limit how many total accounts can connect — this is Google's own safeguard for apps requesting this class of scope, not something specific to Socrates AI's actual data handling described above.
On-request handwriting recognition
Status (3 October 2026): this feature is a beta that is switched off; no page is sent for recognition until it is switched on. Notebooks are not automatically sent to an AI model. If a signed-in student on Plus, Pro or Ultra chooses Read this page, the browser makes a bounded PNG of that page and sends it to our server. The image includes visible strokes and typed text, which may include personal information written on the page. Image/PDF attachments are currently excluded. The recognition prompt does not include the student's email, account ID or notebook title.
The server uses the existing plan-specific vision routing and cost guard. It selects one configured vision provider: the first in the plan's vision list whose highest possible cost for one page is within the $0.05 guard. With today's list prices that excludes Gemini, so the page goes to a model reached through OpenRouter; which one depends on the plan. It does not send the page to all providers. If Gemini is ever selected, the Gemini free-tier data-use warning in section 7 applies to handwriting images as well. Either way, avoid names and personal details on a page you ask the AI to read. An unchanged page uses its stored result instead of another recognition call. The image is processed in memory and is not stored as an additional recognition image on Railway. The notebook itself remains stored under the notebook storage policy.
Railway stores the transcription, mathematical LaTeX, approximate line positions, content hash, model identifier and estimated or reported call cost. Earlier page-version transcriptions are retained until the note or account is deleted; search only returns results matching the current contents. Recognition results and the separate daily quota ledger are included in account export and removed during account deletion. Quota records older than 30 days are deleted by a scheduled daily server job, with startup catch-up; dormant accounts are included without requiring another recognition attempt. AI-call accounting follows the existing logging retention policy.
Searching stored handwriting does not call an AI model. Ask the tutor and Make flashcards send the recognised text through the existing tutor or flashcard pipeline when the student chooses those actions. We identify it as an uncertain transcription, and handwritten-source flashcards need review before scheduled revision. Avoid putting passwords or sensitive information in a page you ask an AI to read.
24. Changes to This Privacy Policy
We may update this policy as the product changes — for example, as we add or change AI providers, turn on real advertising, add a payment method, or implement automated retention/deletion. We will update the "last technical review" note above every time we do. For routine/minor updates, that revision-date change is the notice. For a material change — meaning a change that meaningfully expands how we use or share your data beyond what this version describes — we will additionally: post a visible notice in the app (not just a changed date buried in this document), and, where the change affects a minor account specifically, send a new notice to that account's guardian rather than relying on the guardian noticing the date changed. This is the operator's own commercially-reasonable commitment, not a statutory notice period mandated by a specific law.
Contact Us
support@socratesai.app — see §2. Location: Cairo, Egypt. Socrates AI is operated by the Socrates AI team as an unincorporated project; there is no separate legal entity to name here. This section will be completed with a legal-entity name only if and when one is actually formed.
Operational health and budget records
The server stores aggregate daily response-status counts and latency buckets in the server-only Railway database for up to 31 days. These records contain no student identifiers, page contents, request URLs or handwriting. Writes are buffered briefly; sudden process termination can lose the unflushed counters. AI budget reservations contain a random call identifier, UTC date, reserved/settled amount and settlement state, rather than prompts or student identifiers. They are retained for up to 90 days; uncertain failed calls retain their reservations for the day's cost guard. Provider invoices may differ from these estimates. When account-file cleanup fails, account metadata is retained for the scheduled deletion retry so storage keys are not lost before files are removed.
Reliability records
When a student sends a chat request, Railway temporarily stores the generated answer and numbered stream events so the same request can reconnect without generating or charging for another answer. These records are private to the student, expire from replay after 24 hours and are deleted by scheduled cleanup (within the following day). The replay store holds a request fingerprint, not the raw prompt or uploaded file. Account export and deletion include these records.
File-processing timing records include an account and file identifier, timing values and a character count; they contain no extracted text or image. They are kept on Railway for 30 days, with scheduled daily deletion. Aggregate request and routing measurements contain no raw question or file content. Public study-content jobs contain only the shared generated study set, curriculum-scoped cache key and expiry; private uploaded documents are excluded.
Temporary direct chat uploads
When you attach an image, video or scanned PDF to the tutor, the browser may upload the binary file to our private Railway-compatible object-storage bucket using a five-minute signed upload URL. Chat then sends a file identifier rather than the file's Base64 representation. The server verifies your ownership, file size, checksum and format before sending the file to an eligible vision provider under the routing described above. This does not change which AI providers are eligible to process attachments.
Railway Postgres keeps the file identifier, owner, type, filename, size, checksum and expiry. Access expires after one day. The daily retention job deletes expired objects and their metadata; unsuccessful deletion is retried rather than silently discarding the record. Account deletion also deletes these temporary objects before deleting the account. Account export includes owned file metadata; file bytes are not embedded in the JSON export. Existing Binder files have their separate retention rules.
Operational model reliability measurements
Routing records the requested model and provider, workload category, success or failure category and response timings without prompt contents, file contents or student identifiers. These operational attempt records are retained for 30 days. The owner dashboard reports successful-attempt median/p95 alongside failure, timeout and rate-limit counts. This log cannot be filtered by an individual student's plan because it contains no account identity.
Durable ingestion, optional reranking and local exports
Requested syllabus, YouTube-transcript and administrator distillation jobs are queued in the server-only Railway Postgres database. Job payloads may include the supplied document text or bytes; they do not include the access token or student email. Payloads expire within one day. Jobs check the current account eligibility before running, and account export and deletion include owned jobs. They use the same AI provider disclosures and cost guard as other requested generation.
An optional operator-configured private semantic reranker may receive the question and bounded source excerpts. It is disabled unless its endpoint is configured. The built-in ranking remains available when it is disabled or fails. Configuration must use a controlled endpoint under the applicable source-processing policy.
Python runs in a new browser worker in an isolated frame. The interpreter is downloaded from the Pyodide runtime CDN, which receives ordinary network metadata such as the IP address. Our code runner does not upload the student's program to a server execution service. When you request AI test cases, the code checker sends the problem description to an eligible AI provider without including the program. If you separately paste code into tutor chat, the usual AI chat disclosures apply. Worker termination bounds execution time; it does not guarantee a particular device's memory capacity.
Anki export sends only the selected card IDs, question and answer text, and deck title to our authenticated app server. The server builds a temporary file and removes it after the response; it does not call an AI provider or store a new deck. Export includes text and mathematical notation, not media or the student's revision history.