Who we are
Echelio is a coding assessment platform for schools. In this policy, “we” means Echelio.
It covers the Echelio website and application. For questions about your data, write to [email protected].
Our role: controller and processor
Echelio is used by schools and other training organizations. For the data of its teachers and students (classes, questions, answers, results), the organization is the data controller: it decides why and how the data is used. Echelio acts as its processor, handling that data on the organization’s behalf and following its instructions. Its administrators can stop Echelio’s product news to its students.
For its own website and for the accounts needed to sign in and keep the service secure, Echelio is the controller. That covers account and sign-in data, security records, and the emails the service sends, including product news.
If you are a student, your school is your first contact for questions about your results and about how your data is used in your course. You can also write to us.
What we collect and why
We collect only what the service needs. This list comes from what the application stores.
- Account: your name, email address, and a hash of your password if you have one (never the password itself), your role (teacher or student), whether the account is active, and whether your email address is confirmed, with, until it is entered, a hash of the 6-digit code that confirms it. If you sign in with Google: your Google account’s identifier and the address it had when you linked it.
- Organization and classes: the organization you belong to and your role in it, the classes you are in, and each class’s name and dates.
- Invitations: the email addresses teachers invite to a class or share a folder with, and whether and when the invitation email was sent.
- What teachers write: questions, test cases, solutions, quizzes, folders, skills, and the tests they schedule.
- What students produce in code tests: the code they write, which is saved as they type, each run and submission with its time, the result of every test case (including run time and memory), the score, and the output of visible test cases.
- Quiz answers: each answer, the automatic result, the final result, and who set it.
- Test activity: when a student joined, finished, ran examples, or submitted, and, only when the teacher turned the option on for that test, each time the student left the test page and for how long.
- Grading and progress: teachers’ corrections, the verdict and short reason of an AI grading when a teacher asked for one (the reason is for the teacher only), and the skill levels Echelio calculates from a learner’s results.
- Billing (Teacher plan): Stripe’s identifiers for the customer and the subscription, the plan, price, and status, the trial and renewal dates, a fingerprint of the card that started a free trial (so each card gets one trial), and when the terms were accepted. The card number and billing address stay with Stripe; Echelio never sees the card number.
- Quote requests: when a school asks for a quote, the name, work email, and role of the person asking, and the school’s name, country, type, size, languages, start date, and message entered in the form.
- Contact messages: when you write to us from the contact form, your name, email address, the topic you choose, the message you write, and the language of the page.
- Security records: to limit guessing of passwords and join codes, we keep for 24 hours the email address and network address of failed sign-in attempts and password reset requests, and a hash of the network address and browser identifier of join-code attempts.
- Visits to the public site: on the public pages only, never inside the application, Cloudflare Web Analytics counts visits: the page, the site you came from, your country, your browser and device type, and how fast the page loaded. It sets no cookie, stores nothing on your device, and does not follow you from one visit or site to another.
- Preferences: the language you choose for the interface, and whether you want product news.
We do not run advertising, we do not sell personal data, and we do not track people: the visit counts above use no cookie or identifier. Echelio does not profile people for marketing.
Legal bases
Under the GDPR and similar laws, we rely on these bases.
- Performance of a contract (providing the service to the organization and its members), for account data and for the data processed on the organization’s behalf.
- Legitimate interests, for keeping the service secure, preventing abuse and cheating on tests, fixing faults, counting visits to the public site, and sending product news about the service to people who have an account, which they can stop in their account settings or from any of those emails.
- Legal obligations, when the law requires us to keep or hand over information.
For the data it controls, the organization chooses its own legal basis, for example its teaching mission or its contract with the student. We do not rely on consent for ordinary use of Echelio.
Who sees your data
Access depends on role, and an organization never sees another organization’s members or results.
- Teachers see the classes they teach, and their students’ code, answers, results, and test activity. They see questions and quizzes shared with them.
- When a teacher turns it on for a code test, they can see, once the test ends, which of their students’ answers are alike, side by side. Students are told while they take the test. The comparison runs on Echelio’s servers and sends code nowhere.
- Organization administrators manage members and settings of their own organization.
- An organization can have Echelio send its tests’ results to its own systems, such as its learning platform: each student’s name, email, scores, how each question ended, finish time, and tab switches. Echelio sends them only to the address the organization’s administrators set, never code or answers.
- Students see their own work and results.
- A teacher can open a live class display on a screen. It shows participants’ names and scores to the people in the room.
- A small number of Echelio staff can access organizations’ data to run the service and give support, only as far as the task needs. What they open in Echelio’s staff pages is recorded.
Service providers
We use the providers below to run Echelio. Each handles personal data only to provide its service.
- Hetzner Online GmbH (Nuremberg, Germany): Hosts the application, its database, its job queue, and the server that runs students’ code. Holds all the data described above.
- Brevo (France): Delivers the emails Echelio sends: class invitations, test assignments, folder invitations, password reset links, and product news. Receives the recipient’s email address and the content of the message. For product news, it also keeps the address’s list (teachers or students), its language, and whether it unsubscribed.
- OpenRouter (United States): When a teacher uses an AI feature, and to translate problems. Receives the text described below and forwards each request to the model provider it selects.
- Stripe (United States): Takes payment for the Teacher plan: the card, the billing address, and tax details are entered on Stripe’s page. Receives the teacher’s email address and tells Echelio the subscription’s status.
- Cloudflare (United States): Carries all traffic to Echelio (protection against attacks, redirects) and, on the public pages only, counts visits without cookies. Sees each request’s network address, the page, and the browser.
Code execution. Echelio runs students’ code itself, on its own server at Hetzner Online GmbH, in Nuremberg, Germany. When a student runs or submits code, the code and the test input go to that server, which runs it in an isolated sandbox with time and memory limits and returns the output. No other company receives it, and nothing that identifies the student is sent with it.
AI features. Drafting and grading run only when a teacher uses them. AI quiz drafting sends the teacher’s request (topic, level, question types, language) and the beginning of the quiz’s existing questions, so the model does not repeat them. AI problem drafting sends the teacher’s request (what the problem should practise, its programming language and kind, its difficulty, and the language to write in) and the titles of problems the teacher can already see in that programming language, for the same reason. AI grading sends, for each open answer a teacher chose to grade, the question, any code shown with it, the grading notes, the explanation, and the student’s answer. Problem translation runs on its own: when a problem is published, used in a test, or opened by someone who reads the other language, its title, statement and constraints are sent to be translated between English and French, and the translation is kept with the problem; no student’s code or answer is sent. Quiz translation runs only for a quiz whose author switched it on: then, and after each change to the quiz, its title, description, and each question’s prompt, options, explanation, and accepted short answers are sent to be translated, and the translation is kept with the quiz; grading notes and students’ answers are not sent. None of these sends a name, email address, or account number. If a student writes personal data in an answer, that text is sent too. OpenRouter forwards each request to the model provider it selects for the chosen model. Echelio sends these requests through its own OpenRouter account, set to use only providers that do not train on the text, so student answers are not used to train models. An organization on the Organization plan may add its own OpenRouter key instead; then that organization’s account and the model provider handle the text under their own terms.
Email. Echelio sends service emails (invitations, test assignments, password resets) and, a few times a year, product news about new features to people who have an account. Every product news email has an unsubscribe link, and product news can also be turned off in the account settings. For product news, Brevo also keeps each address’s list (teachers or students), its language, and whether it unsubscribed. Echelio sends no advertising for other companies.
Payments. A teacher who buys the Teacher plan pays on Stripe’s checkout page. Stripe handles the card, the billing address, and tax details under its own privacy policy, and sends Echelio the subscription’s status, never the card number. Schools on the Organization plan are invoiced through Stripe.
Sign in with Google. If you choose Continue with Google, Google tells Echelio your Google account’s identifier, your name, your email address, and whether Google has verified that address. Echelio asks for nothing else (no contacts, files, or calendar) and tells Google nothing about what you do in Echelio. Google handles the sign-in itself under its own privacy policy.
International transfers
Echelio’s servers, including the one that runs code, are in Nuremberg, Germany. OpenRouter, Stripe, and Cloudflare are in the United States, outside the European Economic Area, and the model providers OpenRouter forwards requests to may be elsewhere too.
These transfers rely on the contractual safeguards those providers offer.
How long we keep data
Some records expire on their own; the rest stays while the organization uses Echelio.
- Sign-in sessions last 7 days at most and are then deleted.
- Password reset links are valid for one hour and are deleted once expired.
- A Google sign-up left before choosing student or teacher is deleted after 15 minutes.
- A teacher sign-up that never finishes checkout, and a student sign-up that never confirms its email address, are deleted after 7 days. The code that confirms an email address works for 10 minutes.
- Failed-attempt records are deleted after 24 hours.
- Accounts, classes, questions, and results are kept while the organization uses Echelio. When an organization stops paying or its contract ends, it becomes read-only and its data is kept for 90 days, so it can pay again and get everything back. Its admins are emailed 30 days, 7 days, and the day before; then the data is deleted. We keep only a short record that the organization was deleted (its identifier, plan, and dates, no names) for support and accounting, and the fingerprint of any card that started a free trial, so each card still gets one trial. A student’s data is deleted immediately when their account is deleted.
- Invoices and payment records are kept, by Stripe and by us, as long as tax and accounting law requires.
- A quote request is kept while we discuss it with the school and for up to 2 years after, then deleted.
- A contact message is kept while we answer it and for up to 2 years after, then deleted.
- An address is removed from Brevo when its account is deleted. While the account exists, an address that unsubscribed from product news stays marked as unsubscribed, so it is not emailed again.
- Backup copies are kept for up to 30 days and then permanently deleted. Until then they are used only to restore the service after an incident.
How we protect data
These measures are part of the application.
- Passwords are stored only as bcrypt hashes. Sign-in session tokens and password reset tokens are stored only as hashes.
- The sign-in cookie cannot be read by page scripts and is sent only over secure connections in production.
- Students’ code runs on a separate execution server, in a sandbox with time, memory, and output limits.
- An organization’s AI key is encrypted before it is stored, and only its last four characters are ever shown again.
- Sign-in attempts, password resets, and join-code attempts are rate-limited.
- Each person sees only what their role and organization allow, and hidden test cases are never sent to students’ browsers.
Your rights
You have the right to:
- access the personal data we hold about you and get a copy;
- have inaccurate data corrected;
- have your data erased, where the law provides for it;
- object to processing based on legitimate interests, and ask us to restrict processing;
- receive the data you provided in a portable format, where the law provides for it;
- lodge a complaint with the data protection authority of your country.
To use these rights, write to [email protected]. We may ask you to prove who you are, and we answer within one month.
For data an organization controls, we pass your request to it or point you to it, because it decides what happens to that data.
Children and students
Echelio sets no minimum age. Students use it through their school or training organization, and whether they are under 18 depends on the school.
The organization decides who uses Echelio. It is responsible for informing students and for any parental consent its law requires.
Changes to this policy
When we change this policy, we update the date at the top. For a significant change, we also tell organization administrators in the application or by email.
Contact
For any question about this policy or your data, write to [email protected]. The publisher’s details are in the legal notice.