Skip to content

Privacy Policy

CYOBot uses learner account details to provide sign-in, details from contact messages to respond to you, and subscription details to send email updates when you opt in.

Contact messages

Our contact form collects your name, email address and message. We store them in Supabase so our team can respond. An email alert tells our team that a submission arrived; that alert contains a submission ID and time, not your message or contact details. We remove contact submissions after one year.

Email updates

If you explicitly subscribe, we store your name, email address and consent time in Supabase. We use Resend to send a welcome email and future updates. You can unsubscribe through the link in the welcome email. Unsubscribing removes your subscription record.

Abuse prevention and hosting

When enabled, Cloudflare Turnstile checks form submissions for abuse. We use a short-lived rate-limit record based on a protected hash of your IP address. Supabase stores form records and public download files. Vercel hosts this website. Preview versions of the site use the same form database and email service.

Dashboard accounts

Learner sign-in uses Supabase Auth with Google, GitHub, an email link, a password or a passkey. Google and GitHub share your basic account identity, email address and profile details with Supabase so we can sign you in. Google sign-in requests only your Google account identity, email address and basic profile; we do not request access to your Google files, contacts or other Google services. We do not ask for your provider password. Supabase handles email/password credentials and account recovery, and Resend delivers authentication emails. Supabase may link identities using the same verified email address to one learner account.

We store your Supabase user ID and optional display name in our Supabase database. Older account records may also contain age and terms confirmation times and a terms version. The app uses session cookies to keep you signed in. Passkey private keys and biometric checks stay on your device or with your password manager; Supabase stores public credentials and authentication records. If you enable multi-factor authentication, Supabase stores the enrolled verification factors. After confirmed passkey setup or sign-in, a one-year cookie remembers only that this browser should offer passkey sign-in; it contains no account identifier or credential.

Quiz answers and results

Before sign-in, a quiz draft stays in your browser tab for up to 24 hours. A signed, short-lived cookie carries completed answers through sign-in. Once you finish, we save each completed set of ten answers, its rule version, score matches, and time in Supabase. Only your signed-in account can request its latest result through our application. We keep attempts while your learner account is active so you can retake the quiz and see your latest result.

Chosen career

Your learner profile also stores the career you choose in the role gallery so it remains selected across sessions. Only your signed-in account can read or change that choice through our application. We keep it while your learner account is active.

Learning activity and progress

In the Student app, we record app visits, viewed quests and levels, confirmed career changes, learning results and active time. We do not record raw keystrokes, click coordinates or page query strings. Activity files wait in your browser's local storage while offline and sync to private Supabase storage when you reconnect with the same account and workspace. Clearing browser storage removes unsent files.

We store submitted question answers for grading and instructor review, together with completion records, acquired skills and rewards, and weekly login streaks. Code answers are stored as text. Instructors and managers in your workspace can review submissions requiring approval. You can choose your timezone in your profile; streak dates use verified visits interpreted in that timezone. These records and activity files are retained until explicit account or workspace membership deletion and are included in verified deletion requests. Suspension stops access but does not delete these records.

Deletion and retention

Workspace chat stores session titles, messages, context summaries, sent image attachments, proposed changes and tool results in Supabase for your account and workspace so you can return to previous sessions. Other workspace members cannot read your sessions through the app. Image attachments are resized and re-encoded in your browser before sending. Chat requests, including sent images, and relevant workspace content are sent through Vercel AI Gateway to the configured model provider. Saved sessions remain until deleted through a verified data-deletion request or when the workspace is deleted.

We record AI usage by account and workspace, including model identifiers, token/cache counts, audio duration when reported and costs. Instructors can see their own usage; workspace managers and owners can also see per-user workspace totals. The backend stores accounting metadata in private files for asynchronous processing with retries and deduplication. These accounting records and files contain no chat text or recordings and remain until a verified deletion request or workspace deletion.

Voice dictation is optional and starts only when you activate the microphone control and allow browser access. When you stop recording, CYOBot sends the audio through Vercel AI Gateway to the configured transcription provider to produce editable text. CYOBot does not persist the audio; a failed recording remains temporarily in this chat panel for retry and is discarded when you close or leave the panel. Vercel and the selected provider process audio under their own privacy and retention terms. Record into the draft leaves the text editable until you press Send. Record and send transcribes and sends the message when you stop recording, unless you have added draft content meanwhile.

To request deletion of your learner account, profile (including your chosen career and timezone), saved quiz attempts, learning submissions, activity files, progress, chat sessions and AI usage records/files, email team.cyobot@gmail.com from your account email. We verify requests before deleting data. Supabase and Vercel may retain limited backups and operational logs under their own retention schedules. We do not use quiz answers for marketing email signup.

Product analytics and error monitoring

When enabled, PostHog processes website navigation, confirmed product actions, basic device/performance information and sanitized errors in its United States region so we can understand usage and improve reliability. Signed-in activity uses an opaque account ID and workspace ID without your name or email. Analytics is separate from your saved answers and learning records. Page URLs exclude query strings, invitation tokens and document identifiers; referrers include only their origin. We anonymize IP addresses and exclude answer contents, grades, chat text, uploads, audio, contact messages and authentication credentials.

Optional session replay masks all text, inputs and DOM attributes, and blocks images, media and editable regions. It does not record authentication, invitation or unsubscribe pages, console logs or network payloads. New recordings use a 30-day retention period. Browser analytics uses local storage for an anonymous device identifier; signing out resets it. Browser Do Not Track and Global Privacy Control suppress browser collection. Operational server monitoring remains separate. Account-linked analytics is included in verified deletion requests; PostHog retains other analytics and operational records under its service retention settings.

Contact us

For privacy questions, email team.cyobot@gmail.com.

Return home