NutriLearn
Last reviewed: [Last Reviewed Date]
Draft — not yet reviewed for external publication.
This page summarizes NutriLearn's technical architecture and data-handling practices as implemented in the product today, based on a review of its database schema and source code. It has not been reviewed by legal, security, or compliance staff and should not be cited in a procurement decision, security questionnaire response, or contract until it has been. Every bracketed placeholder (e.g. [Contact Email]) must be filled in — or the surrounding claim independently verified — before this goes live.
This page is a plain-language technical and data-practices overview for school IT staff, security reviewers, and procurement teams evaluating NutriLearn for district or school adoption. It complements, but does not replace, our Privacy Policy and Terms of Service, which are the governing legal documents. Where this page and either of those documents differ, the Privacy Policy and Terms of Service control.
NutriLearn is built on a small set of established, widely-used commercial infrastructure providers rather than custom-built or self-hosted systems:
We do not operate our own servers or data centers. This means NutriLearn inherits the operational security practices (patching, physical security, network protections) of these providers rather than requiring a district to trust custom infrastructure.
NutriLearn is used by many schools at once, so keeping one school's data from being visible to another — and one teacher's classes from being visible to another teacher — is a core design requirement, not an afterthought.
We enforce this using Row-Level Security (RLS), a feature of our PostgreSQL database. In plain terms: access rules (“a teacher can only see classes they created,” “a student can only see and read their own game sessions”) are checked by the database itself on every query, not only by application code. Even if a bug existed somewhere in our application's UI or API layer, a student or teacher's own database session is still restricted to the rows they're allowed to see — there is no way to query around that restriction from a normal user session.
Consistent with this, students never have write access to their own score or session records — those are computed and written only by trusted, server-side code (see “Server-side scoring integrity” below), and the database itself denies any direct write attempt from a student session. We periodically review and tighten these access rules as the product evolves; access control is treated as a database-level guarantee, not just an application-level convention.
There are no cross-school data joins, comparisons, or exports anywhere in the product — every student's data stays scoped to their own school and class.
Game and challenge scores are calculated and verified on our servers from the underlying food selections, not accepted as-is from a student's browser. This prevents a student from tampering with their own score, currency earned, or leaderboard standing by modifying client-side requests.
Student accounts are created only by a teacher, from the class roster tool — students never self-register. A student logs in with a class code, a username, and a password:
This design reflects our approach to COPPA (the Children's Online Privacy Protection Act): because NutriLearn is sold to and deployed by schools — which review our Privacy Policy and Terms, create student accounts themselves, and control what limited information (if any) is entered — we rely on the “school official” exception recognized under FERPA and by FTC COPPA guidance for education technology vendors, rather than collecting per-student parental consent directly. See our Privacy Policy for the full legal basis and details of what is and isn't collected.
We retain a class's student data for as long as that class is active, so teachers can track ongoing progress. When a teacher archives a class, that data is not deleted immediately — this gives a school a window to export or reference records — but it is not kept indefinitely. Our policy is to permanently delete a class's student data no later than 90 days after the class is archived. [Add: current implementation status of the automated retention/deletion process, once verified and tested — do not describe automated deletion as already running unless it has actually been confirmed in this codebase]. A school can also request earlier deletion of a class or specific student records at any time — see “Questions for your district” below, or our Privacy Policy.
We take a small number of concrete, verifiable measures, and we'd rather state plainly what we do than imply more than is true:
[Add: current status of any third-party security audit, penetration test, or compliance certification (e.g. SOC 2, ISO 27001) — do not claim a certification or audit that has not actually been completed. If none has been completed yet, state that plainly here rather than omitting the topic.]
No online service can guarantee perfect security, and we do not claim NutriLearn is immune to all possible security incidents. See our Privacy Policy for our breach-notification commitment.
This page is a general architecture overview, not a substitute for a completed security questionnaire, a signed data-processing agreement, or legal review of our Privacy Policy and Terms of Service. Districts with a formal vendor-review process are welcome to send us their standard questionnaire directly.
IT, security, or procurement questions about NutriLearn can be sent to [Contact Email — e.g. security@[yourdomain].com].
[Company Name] — [Company Address — placeholder, fill in before publishing]
See also our Privacy Policy and Terms of Service.