Privacy Policy
Plain-language answers to: what we collect, why, who sees it, and how to make it go away.
Public launch is blocked. Required operator identity, contact, retention, region, subprocessors, governing-law, legal review, child-enrollment mode, or authenticated live-video configuration is incomplete.
Effective: Not configured — public launch is blocked · Operated by Not configured — public launch is blocked
Who runs PyClassroom
PyClassroom is a small, single-teacher platform for learning Python. It is operated by Not configured — public launch is blocked, who you can reach at Not configured — public launch is blocked. If your teacher invited you with a class code, your teacher is also a point of contact for anything about your data.
What we collect
We keep this deliberately small. When you use PyClassroom we may store:
- The display name you choose when you join a class (this can be a first name or a nickname — it does not have to be your legal name).
- An age group (8–12, 13–17, or 18+) when you join a class — required to apply the correct authorization rules and also used to adjust the tone of AI help.
- When you run code in a class assignment: the assignment, code, output, error, timing, and pass/fail result. Playground and self-paced practice runs are not stored as run records.
- Assignment submissions and their grades.
- Your practice progress: XP, badges, streak, and which exercises you’ve completed (for signed-in students in a class).
- Consent records, including the policy versions and authorization basis accepted when joining, and a session-specific record when you agree to live video/local recording.
- Limited service and learning events used to operate classes and understand feature use.
We do not ask for a home address, phone number, or payment card from students, and we don’t use advertising trackers.
Class-assignment runs are logged
In a class assignment, each time you press Run, we save the code and its result, tied to your account and assignment. Your teacher can use this run stream to see where you are stuck. Ordinary playground and self-paced practice runs are not inserted into this run stream. Interactive code runs in your browser; submitted assignments are also re-run by the server against grading tests.
Live video and local recordings
Live classes use JaaS by 8x8. Before its script or room opens, each participant sees a session-specific notice and must agree. If enabled in the room, audio, video, screen sharing, display name, and connection data are processed by 8x8. Camera and microphone start off. The server verifies the saved consent record before issuing a room token. For a learner under 13, it also verifies that the prior adult/school authorization was issued for this class, has not been revoked, was consumed by this learner, and explicitly covers both live video and local recording; the learner's in-room checkbox alone is not sufficient.
A teacher can record a class only after accepting an in-product responsibility notice. The recording is created by the browser and downloaded directly to the teacher's computer; PyClassroom does not receive or store the media file and cannot retrieve or delete it. The teacher or school must announce the recording, explain its purpose and retention period, secure every copy, and handle access or deletion requests. PyClassroom stores only the consent and recording-audit events.
Live classes can mirror your editor
During a live class, a teacher can turn on a “Watch live” view. While it is on, what you type in the code editor is shared with your teacher in near real time so they can help you as you work — much like looking over your shoulder. A short-lived watch lease limits access to your class teacher while they are actively watching. The latest editor buffer—not your whole screen—is stored in a bounded transient row, becomes unreadable to the teacher as soon as that lease ends, and is physically deleted within 24 hours.
AI features and third-party providers
When you use an AI feature — the “Ask Py” tutor, or teacher tools that draft exercises or summarize where a class is struggling — your question and the relevant code are sent to a configured third-party AI provider to generate a response. The operator's configured AI subprocessors are Not configured — public launch is blocked. Depending on the feature, the provider may receive exercise instructions, an age band, code, errors, a question, or a minimized summary of class runs. PyClassroom does not attach a student's name or email to AI requests and does not store Ask Py questions as chat transcripts, but providers process requests under the operator's agreement with them. AI features are optional; do not use them if you do not want that content sent to an AI provider.
Where your data lives
Accounts, runs, submissions, and progress are stored using Supabase (a hosted Postgres database and authentication service) in the Not configured — public launch is blocked region. Access is protected by row-level security so students see only their own data and teachers see only their own classes.
How long we keep it, and how to delete it
The operator's active-system retention policy is Not configured — public launch is blocked. You can ask to have your account data deleted at any time:
- Students / parents: contact Not configured — public launch is blocked or ask your teacher. The active-system deletion path covers the profile, enrollments, runs, submissions, grades, progress, service events, and consent records tied to that account.
- Authorized administrators can run the student-data deletion workflow from the admin console.
Active-system deletion cannot erase copies already held by a teacher (including local recordings) or immediately purge provider backups. The disclosed provider-backup policy is Not configured — public launch is blocked. Contact the teacher or school separately about any local class recording.
Children under 13
PyClassroom is used by learners as young as 8. If you are under 13, a parent, guardian, or teacher must set up your access and authorize the stated educational processing. Under-13 joining requires a prior, class-bound authorization record issued by the service after the operator verifies the parent/guardian or school approval. The server checks expiry and revocation and consumes that authorization once; a learner's checkbox or selected basis is not enough. The join record stores the authorization basis, timestamp, and exact policy versions. The configured mode is disabled. A parent or guardian can contact Not configured — public launch is blocked to request review or deletion. We do not sell children's data or use behavioral advertising.
Just trying it out?
If you use the free playground or practice pages without joining a class, your progress is saved only in your own browser (localStorage) — it isn’t sent to our servers and isn’t visible to anyone else. Clearing your browser data clears it.
Changes to this policy
If we make meaningful changes, we’ll update the date at the top and, where appropriate, let teachers know so they can inform families.
Contact
Questions about privacy? Contact Not configured — public launch is blocked. The law identified for these documents is Not configured — public launch is blocked. See also our Terms of Service.