Ten Cards Privacy Policy
Last updated: September 30, 2026
Ten Cards is a coding-interview study app. This policy explains what information Ten Cards processes, why it is processed, and the choices available to you.
Information Ten Cards processes
Ten Cards may process:
- account information supplied by an authentication provider, including your user identifier, name, and email address. Ten Cards displays a small local pixel-art profile picture generated from your account identifier rather than using a provider profile photo;
- profile preferences such as display name, daily goal, and time zone;
- an email address you voluntarily submit on ten-cards.com to request TestFlight access or Ten Cards launch updates;
- study content you create, including written answers, selected answers, bookmarks, solve records, confidence ratings, and optional notes you submit when reporting an issue with a question or answer; and
- voice-answer audio while you hold the microphone button and the resulting transcript, if you choose to dictate an answer; and
- product-interaction data required for learning features, including study sessions, scores, response times, progress, XP, streaks, and activity history.
Ten Cards does not include advertising or cross-app tracking code and does not sell personal information.
The Ten Cards website does not use advertising, cross-site tracking, or product analytics. It does not set an analytics or advertising cookie.
How information is used
This information is used to authenticate you, synchronize your progress, personalize review scheduling, grade answers, show learning history, operate widgets, review and resolve reported content issues, secure the service, diagnose failures, and provide support.
If you join the website waitlist, Ten Cards uses the submitted email address only to contact you about TestFlight access and the Ten Cards public launch. The waitlist does not send an automatic confirmation email and is not used for unrelated marketing.
Service providers
Ten Cards uses Supabase for authentication, database hosting, and server-side functions. If you choose Google, GitHub, or Apple to sign in, that provider also processes the information needed to authenticate you under its own privacy terms.
For Google sign-in, Google's sign-in service also receives technical information such as the sign-in SDK version and execution environment with authentication requests. The included Google Sign-In SDK declares potential collection of name, email address, phone number, general location, user and device identifiers, other usage data, and other technical data. Its declarations include analytics purposes for user and device identifiers, other usage data, and other data types; Ten Cards includes these third-party categories and purposes in its privacy disclosures. These are the SDK vendor's declarations, not a claim that every category is collected during every sign-in. Ten Cards itself requests basic identity, email, and profile access and does not request contacts, phone-number access, or access to Google Drive or Gmail. Ten Cards does not read or store a phone number from Google sign-in.
Ten Cards uses Cloudflare to host and protect ten-cards.com. Cloudflare D1 stores waitlist email addresses, creation times, and the applicable consent-policy version. Cloudflare Turnstile checks whether a signup appears automated before the website accepts it. Ten Cards does not add the visitor's IP address to the waitlist record.
For GitHub sign-in, Cloudflare processes a one-time authorization code and connects to GitHub to verify your numeric account identifier and obtain your public display name. Ten Cards does not request access to your repositories or private email addresses. Supabase stores the identifier-to-account mapping and an internal generated email address used only to establish your app session. Ten Cards does not store the GitHub access token. The sign-in service uses protected identifiers derived from request IP addresses for rate limiting; it stores counters rather than the raw addresses. Counters expire for rate limiting after ten minutes and old records are removed on subsequent requests.
Ten Cards uses RevenueCat to process and reconcile App Store subscription status. RevenueCat receives a random billing identifier, App Store product and transaction information, subscription status, and limited app/device metadata needed to provide purchases and restore access. Ten Cards does not use an email address or display name as the RevenueCat customer identifier. Apple processes the purchase and payment under its own terms; Ten Cards and RevenueCat do not receive your full payment-card number.
Ten Cards uses Sentry in TestFlight and production Release builds with a configured Sentry DSN to diagnose crashes, operational failures, and sampled performance of app operations. Without a configured DSN, Ten Cards does not send these diagnostics to Sentry. When enabled, Sentry may receive native crash stacks, device and app-version metadata (which may include a device identifier), country-level location inferred during delivery, bounded screen and operation breadcrumbs, a random support reference, and sampled operation names and durations. Ten Cards does not intentionally attach your account identifier to new diagnostics and prevents Sentry from storing IP addresses for new events. Ten Cards does not send Sentry your email, display name, authentication credentials, written answers, question text, grading prompts or responses, screenshots, view hierarchies, or network request and response bodies. Older diagnostic events may still contain an account identifier from earlier app builds until they expire or are removed.
Voice answers use Apple Speech, separately from optional AI grading. Speech recognition may send microphone audio to Apple for processing when on-device recognition is unavailable or not used. Ten Cards does not retain the audio recording or send it to its own servers. The transcript appears in the answer field for you to review and edit before submission. If submitted, the text is handled as a written answer under this policy. You can type instead of using voice input.
Free-response AI grading is optional. Ten Cards asks for permission before the first AI-graded submission. If you allow it, Ten Cards sends the question, grading rubric, curated model answer, and the answer you wrote to Microsoft Azure OpenAI. The grading prompt does not include your name, email address, or Ten Cards user identifier. Microsoft may process this content outside the United States because Ten Cards uses a Global Standard model deployment. Microsoft may store content flagged by its abuse-monitoring system and allow authorized personnel to review it. Microsoft says this content is not made available to OpenAI or used to train base models. The service returns a suggested score and feedback. AI feedback can be inaccurate and should be treated as study guidance. Your answer may itself contain identifying information, so review it before choosing AI grading. Microsoft's Azure data and privacy description explains its processing and abuse-monitoring controls.
You can decline AI grading and reveal the curated answer instead. You can also withdraw AI grading permission at any time under Profile → Privacy & AI. Ten Cards will then stop sending new answers for AI grading unless you give permission again.
To limit AI service costs and abuse, Ten Cards records grading-dispatch request identifiers, request fingerprints, and timestamps in a separate security ledger. It does not store written answers or model responses in that ledger. Account deletion removes the ledger's link to your account while preserving dispatch history to protect shared service limits. Records become eligible for cleanup after 30 days and are removed during subsequent grading activity.
Service providers, including Supabase, RevenueCat, Sentry, and Microsoft Azure OpenAI when you opt into AI grading, process information only to provide their configured service to Ten Cards and are subject to their applicable contractual and privacy terms. Azure stores applicable data at rest, including abuse-monitoring data, in the resource's designated United States geography. Microsoft does not specify a definitive abuse-monitoring retention period in its current public data/privacy description.
Retention and deletion
Account and study information is retained while your account exists so Ten Cards can provide synchronized learning history. Operational security and error logs may be retained for a limited period under service-provider settings. Sentry's current Developer plan retains error events for 30 days. Sentry cannot erase an individual error event or performance trace by account identifier; deleting an entire error issue may also remove other users' events. Account deletion therefore does not immediately erase all older Sentry diagnostics. Ten Cards will review an erasure request for older account-linked error issues; remaining diagnostic data expires under Sentry's retention and backup schedules. Question and answer issue reports, including optional notes, are retained while your account exists so content administrators can investigate and resolve them.
Waitlist email addresses are retained until they are used for beta access or launch updates and are deleted within 90 days after Ten Cards launches publicly on the App Store, unless you separately renew your consent. You can request earlier removal by emailing privacy@ten-cards.com. Removing a waitlist address does not delete an in-app Ten Cards account, and deleting an in-app account does not automatically remove a separately submitted waitlist address.
You can permanently delete your account inside the app under Profile → Delete account. Deletion removes the Ten Cards authentication account and associated profile, answers, sessions, bookmarks, progress, XP, streak, activity data, GitHub identifier mapping, and question and answer issue reports, except information that must be retained temporarily for security, fraud prevention, or legal compliance.
After Ten Cards confirms Supabase account removal, a server-side deletion job continues any unfinished RevenueCat cleanup. RevenueCat may accept the request before its asynchronous deletion finishes, so Ten Cards distinguishes a request accepted by RevenueCat from verified absence of the RevenueCat customer. A completed Ten Cards deletion-job record is retained for 30 days for operational reconciliation and then purged. An unresolved job is retained until it is resolved. The job contains bounded identifiers and status metadata; it does not store Apple authorization codes, access tokens, provider response bodies, or written study content.
Ten Cards deletes its normalized billing-event records with the account. Apple and RevenueCat may separately retain purchase, transaction, tax, fraud, security, or compliance records under their own terms. Deleting a Ten Cards or RevenueCat account does not cancel an active App Store subscription. You can manage or cancel the subscription in Apple Subscriptions; access continues through the paid period subject to Apple's subscription terms.
If you used Sign in with Apple, Ten Cards asks you to reauthenticate during account deletion. Ten Cards uses the resulting one-time authorization code to try to revoke its Apple authorization before deleting your account and associated study data. The authorization code is never saved for a background retry. If Apple revocation cannot be confirmed, Ten Cards continues account deletion and instructs you to remove Ten Cards under Sign in with Apple in Apple Account settings.
Deletion also removes the deleted account's cached study summaries, custom-review draft, reminder preference and pending reminders, widget snapshot, and local RevenueCat identity from that device. If a network or authentication failure makes the server result uncertain, Ten Cards does not claim deletion was confirmed.
Data security
Ten Cards uses authenticated connections and server-side authorization controls to limit personal study data to the account that created it. No method of storage or transmission is completely secure, but access controls are reviewed and tested as part of release preparation.
Children
Ten Cards is intended for coding-interview preparation and is not directed to children under 13. Do not use Ten Cards if local law does not permit you to consent to this processing.
Changes
If this policy changes materially, Ten Cards will update the date above and ask again before any newly described AI data sharing occurs.
Contact
For privacy questions or to remove a waitlist email address, email privacy@ten-cards.com. You can also use that address for general support. Do not include passwords, access tokens, private answers, or other sensitive personal information in a support request.