LEGAL
Privacy Policy
Last updated: September 20, 2026
This document is based on inspection of the CrystalSAT GitHub repository and describes the application’s current implementation as reflected in that code. It is not legal advice. Before publishing, the CrystalSAT team should confirm provider-level practices, retention periods, operational details, and any legal requirements that apply to the organization and its users.
A. DATA INVENTORY
Current application data map
| Data Category | Exact Data Collected | Source | Required / Optional | Why We Collect It | Where Stored | Who Can Access It | Retention |
|---|---|---|---|---|---|---|---|
| Account | Email; account/authentication identifier; account role | Registration/authentication | Required for account | Account creation, login, authentication | Base44 auth/account system | Account holder and authorized platform/admin systems | Exact period not specified |
| Profile | Photo/avatar URL; presence status; Google Meet URL; notification preferences; push subscriptions; survey-completed flag | User/account system | Mostly optional | Profile, communication, notifications, team functionality | Base44 User record | Depends on field and application permissions | Exact period not specified |
| Mastery / educational progress | Diagnostic score/answers; study-plan answers/progress; test answers/scores; topic/skill stats; missed/covered questions; stage; attempts; completion date | Mastery features | Generated by use | Personalized study progression and performance tracking | Base44 MasteryPath | Owning user under row-level access | Exact period not specified |
| Practice progress | Question status: not-started/completed/incorrect | Practice activity | Generated by use | Progress tracking | Base44 SiteUserProgress for logged-in users; localStorage for anonymous users | User-specific; anonymous copy remains on device | Exact period not specified |
| Question flags | Flagged/favorited state per question | Practice UI | Optional | Personal organization | Base44 SiteUserProgress or localStorage | User-specific | Exact period not specified |
| Onboarding survey | Referral source; SAT goal; test timing; study-plan interest | Onboarding survey | Optional | Understand how students use/discover CrystalSAT | OnboardingSurveyResponse | Admin-only read access | Exact period not specified |
| Analytics | Page path; page-view/custom events; session ID; user ID when logged in; timezone; OS; device; browser; referrer; custom properties | Analytics tracker | Automatically generated | Usage understanding, improvement, troubleshooting | Base44 analytics + SiteAnalyticsEvent | Analytics/admin systems | Exact retention not specified |
| Referral tracking | Referral code; platform; link owner; random visitor fingerprint; signup conversion user ID; questions completed; funnel status | Referral links only on referral visits | Generated by use | Measure outreach and signup attribution | Base44 referral entities + localStorage | Authorized referral/admin systems | Exact period not specified |
| Contact | Name; email; message | Contact form | Optional | Respond to inquiries | mailto: email flow; not stored in CrystalSAT DB by current code | Email recipient/provider | Provider-dependent |
| Chat | Message body; channel; thread relationship; member/channel metadata | Team chat | Team use | Internal communication | Base44 chat entities | Current entity rules restrict reads to admins | Exact period not specified |
| Chat attachments | Original filename; MIME type; size; R2 object key; message/channel IDs | Team chat upload | Optional | Attach files to internal messages | Base44 metadata + Cloudflare R2 | Authorized team/admin systems | Exact period not specified |
| Question reports | Question ID/reference; free-text report; status; assignee; reviewer notes | Question reporting | Optional | Report errors/problems | Base44 ReportedIssue | Creation open; reads admin-only in entity definition | Exact period not specified |
| Browser storage | Theme; anonymous progress/flags; referral code/fingerprint; analytics session identifier | Browser | Feature-dependent | Preferences, resume anonymous activity, referral attribution, analytics session grouping | localStorage/sessionStorage | Anyone with access to that browser profile | Browser-dependent; no app expiration defined |
| Push notifications | Push endpoint and p256dh/auth keys | Notification subscription | Optional | Web push notifications | Base44 User record | Authorized notification systems | Exact period not specified |
| Volunteer applications | Full name; account email; grade; graduation year; country; selected volunteer subjects and interests; SAT participation and self-reported section scores; uploaded SAT score report; experience; motivation; optional sample question review; application status; admin notes and review metadata | Volunteer application | Optional | Review volunteer applications, verify score eligibility, and administer the volunteer program | Base44 VolunteerApplication + uploaded file storage | Authorized Crystal SAT administrators; applicant can view application status | No fixed retention period currently specified |
B. PRIVACY POLICY
1. Introduction
CrystalSAT ("CrystalSAT," "we," "us," or "our") is a student-run educational project that provides free SAT preparation resources, practice questions, study tools, and related features.
This Privacy Policy explains what information CrystalSAT collects, how we use it, where it is stored, and the choices available to you.
This policy describes the application as currently implemented. It is not legal advice and should be reviewed by a qualified privacy attorney before publication.
2. Information We Collect
We collect information that you provide directly, information generated when you use CrystalSAT, and limited information processed by services that help us operate the site.
Account information
When you create or use a CrystalSAT account, our authentication system processes information needed to create and authenticate your account, including your email address and account identifier. CrystalSAT accounts also have an assigned role, such as user, tutor, or administrator.
Depending on how your account is used, your account may also contain profile information such as a profile photo, avatar, presence status, notification preferences, push-notification subscriptions, and other settings.
Google sign-in is available. When you choose Google authentication, authentication is handled through Google and information made available through that authentication flow may be processed by Google.
Educational and practice information
When you use CrystalSAT’s practice and mastery features, we may store information about your learning activity, including questions you have attempted; whether answers were correct or incorrect; question completion status; flagged or favorited questions; diagnostic answers and scores; study-plan answers and progress; test answers and scores; topic and skill performance; missed and previously encountered questions; and mastery stages, test attempts, and related progress information.
This information is used to provide progress tracking, personalized study plans, scoring, and other educational features.
Onboarding survey information
Authenticated students may be shown an optional onboarding survey asking about topics such as how they heard about CrystalSAT, their SAT goals, when they plan to take the SAT, and whether they are interested in a study plan.
The current submission flow stores only the survey question and selected answer and is intentionally decoupled from the student’s account, email address, and name.
Analytics and usage information
CrystalSAT collects usage information to understand how the Service is used and to improve it. Depending on the event, this may include pages visited; page paths; page-view events; a session identifier; logged-in user ID when available; time zone; operating system; device type; browser; referring page; and custom event properties.
Page-view events are sent through Base44’s analytics functionality, while custom events may also be stored in CrystalSAT’s SiteAnalyticsEvent system.
Referral information
When you visit CrystalSAT through one of our referral links, the site stores a referral code and a browser-specific random identifier so that the visit can be attributed to the appropriate referral campaign.
When a referred visitor later creates an account, the referral system may associate the resulting account ID with the referral visit.
Contact information
Our Contact page allows visitors to enter a name, email address, and message. The current implementation opens the visitor’s email client using a mailto link rather than storing the submitted form in a CrystalSAT database.
Once a message is sent, it may be retained by the email provider and mail systems involved in delivering or storing it. CrystalSAT does not define those providers’ retention periods in its code.
Volunteer applications
If you apply to volunteer with Crystal SAT, we store the information you submit in the volunteer application form, including your name, account email, grade, graduation year, country, selected volunteer areas and interests, SAT participation and section scores, an uploaded SAT score report for score verification, relevant experience, your motivation for volunteering, and an optional sample question review.
Applicants may redact unrelated information from the uploaded score report before submitting it. Volunteer application records and the uploaded report are used to review applications, verify the 700+ section-score requirement, and administer the volunteer program. Submitting an application does not automatically grant volunteer access.
3. Information We Do Not Intentionally Collect
Based on the current application code, CrystalSAT does not intentionally request or store payment-card information, payment credentials, GPS coordinates, or a physical mailing address as part of its normal student-facing features.
The application also does not contain a normal student-facing feature specifically requesting demographic information such as gender or age.
This does not mean that third-party infrastructure may never process technical information as part of delivering the Service. Third-party providers have their own privacy practices.
4. How We Use Information
We use information to create and authenticate accounts; provide practice and educational features; save and resume progress; calculate scores and learning statistics; generate and maintain mastery and study-plan progress; provide account and notification functionality; operate internal communication features; understand how the Service is used; improve reliability, performance, and functionality; understand referral and outreach effectiveness; review volunteer applications and administer volunteer access; respond to questions and support requests; and protect the Service and investigate misuse or security issues where necessary.
5. Educational and Student Data
CrystalSAT uses learning activity primarily to provide educational functionality.
For example, mastery records store diagnostic answers, study-plan answers, test answers, topic statistics, skill statistics, scores, and progress information. These records are associated with the user’s MasteryPath record and protected by ownership-based row-level access rules.
Practice progress is likewise associated with the user’s account when the user is authenticated. For users who are not logged in, certain practice status and flag information is kept in the browser instead.
7. User-Generated Content and Communications
CrystalSAT includes internal communication functionality for its team workspace.
Chat messages may contain message text, channel information, and thread relationships. Chat attachments may contain an original filename, MIME type, file size, and an R2 storage key.
Question reports can also contain free-text descriptions submitted by users when reporting an issue with a question.
8. Files and Storage
CrystalSAT uses Cloudflare R2 object storage for certain application files.
For example, chat attachments may be stored in R2. The database stores the object’s storage key rather than a permanent public URL, and the attachment record includes the original filename, MIME type, and file size.
CrystalSAT also uses server-side access to R2 rather than placing R2 credentials in the browser. Administrative storage operations use protected backend functionality and temporary signed URLs.
9. Third-Party Services
Base44: CrystalSAT uses Base44 for application hosting/backend functionality, authentication, database functionality, backend functions, and analytics.
Google: Google authentication is available as a sign-in option.
Cloudflare: CrystalSAT uses Cloudflare R2 for object storage.
Desmos: CrystalSAT embeds the Desmos Graphing Calculator in an iframe hosted by Desmos. Your browser may communicate directly with Desmos while the calculator is used.
YouTube: CrystalSAT links to YouTube content and resources. When you follow those links, YouTube’s own policies apply.
Third-party providers may process information according to their own systems, privacy policies, logging, cookies, and retention practices. CrystalSAT’s code cannot establish every category of information those providers may independently process.
11. Data Retention
CrystalSAT’s current source code does not define a universal retention schedule for account information, mastery data, educational progress, chat data, uploaded files, referral records, or most analytics records.
For that reason, this policy does not state a specific number of days or years for retention unless the application explicitly defines one.
Some analytics dashboards use recent reporting periods, but that should not be interpreted as a guaranteed deletion deadline.
When a user requests deletion, CrystalSAT will review the request and, where applicable, delete information from systems under CrystalSAT’s control, subject to legitimate operational, security, or legal retention requirements.
Third-party providers may retain information according to their own policies.
12. Data Security
CrystalSAT uses several technical controls in the current implementation, including authenticated access, role-based access controls, row-level access restrictions for user-specific records, and server-side handling of sensitive storage credentials.
For example, MasteryPath and SiteUserProgress are protected by ownership-based rules for normal user access.
CrystalSAT cannot guarantee absolute security. No internet service or electronic storage system can be guaranteed to be completely secure.
13. Your Privacy Rights
Depending on where you live, you may have rights concerning personal information we hold about you. These may include access to your information; correction of inaccurate information; deletion of your account or personal information; information about how your data is used; and other rights provided by applicable privacy law.
To make a privacy request, contact us at hello@crystalsat.com.
We may need to verify your request before completing it, and we will handle requests in accordance with applicable law.
14. Children’s Privacy
CrystalSAT is an SAT-preparation service and may be used by students who are under 18.
We do not intentionally design the Service to collect extensive personal information from students. The primary account information used for normal registration is an email address and authentication information, with educational data generated from use of the Service. Volunteer applications collect additional information because applicants voluntarily provide it to be considered for the volunteer program.
We do not claim in this policy that the Service is compliant with any particular children’s privacy law without a separate legal review.
Parents or guardians who have questions about a child’s information may contact us at hello@crystalsat.com.
15. International Data Processing
CrystalSAT can be accessed by users in different countries.
The Service relies on third-party providers such as Base44, Google, Cloudflare, and Desmos. Those providers may process information in locations outside the country where you live, depending on their infrastructure and policies.
Because the CrystalSAT codebase does not establish the exact geographic locations or legal transfer mechanisms used by each provider, this policy does not state a specific country, transfer mechanism, or legal basis without further provider-level verification.
16. Changes to This Privacy Policy
We may update this Privacy Policy when the Service changes, when our data practices change, or when additional clarification is needed.
When material changes are made, we may update the “Last updated” date and, where appropriate, provide additional notice through the Service or another reasonable method.
17. Contact Us
For privacy questions, requests concerning your personal information, or concerns about this policy, contact:
C. ITEMS TO CONFIRM BEFORE PUBLICATION
Prepared from the CrystalSAT GitHub application audit on September 6, 2026.