MMindGuardRequest a demo

Roster CSV format

The roster upload accepts a UTF-8 CSV with one student per row. Extra columns are silently ignored — only the whitelisted columns below are read.

Required columns

ColumnRequiredNotes
student_idYesSchool's internal identifier. Hashed before storage.
student_first_nameYesUsed in email personalisation only.
student_emailYesWhere the student receives their consent request.
date_of_birthYesUsed to compute age at time of upload.
parent_first_nameIf minorPersonalisation in the parent email.
parent_emailIf minorRequired if age < 18; optional otherwise.
grade_levelNoe.g. Grade 9, Freshman.
notesNoFree text visible to admins only.

Example

student_id,student_first_name,student_email,date_of_birth,parent_first_name,parent_email,grade_level,notes
S-1001,Aisha,aisha@example.edu,2010-03-14,Fatima,fatima@example.com,Grade 9,
S-1002,Ben,ben@example.edu,2005-11-02,,,Grade 12,Transfer student
S-1003,Chen,chen@example.edu,2009-07-22,Wei,wei@example.com,Grade 8,

Validation rules

  • The file is rejected if any required column is missing — the specific columns are listed.
  • Each row is validated and errors are reported with row numbers and reasons.
  • The whole file is rejected if more than 10% of rows fail — the CSV is assumed to be wrong, not the data.
  • Rows are deduplicated on student_email within the file and against existing records.
  • A minor without a parent email is rejected at validation — consent cannot proceed without a parent route.
  • If date of birth is missing and there is no explicit minor/adult override, the row is rejected. MindGuard never guesses.

Minor detection

Two signals feed one decision. An explicit minor/adult override on the roster wins. Otherwise age is computed from date of birth at time of upload against the institution's age-of-majority threshold (default 18). Missing DOB with no override is rejected — MindGuard never guesses.

← Back to getting started