Skip to content

Student Support Program

The Student Support Program is where a school runs its special-education / SEN (Special Educational Needs) case management — the equivalent of an IEP (US), an EHCP/SEN plan (UK), or an RPwD/PEI-style program elsewhere. A student is referred, the referral is triaged into a formal enrollment, and from there the school builds a support plan with measurable goals, logs the actual sessions delivered, holds periodic review meetings, tracks consent, and records standing accommodations — all against one student, one case file, over time.

The module is deliberately privacy-first: a student’s diagnosis is a separate, permission-gated field that most staff never see, even if they can see everything else about the case. And every AI-assisted feature in the module is a draft only — nothing is ever auto-filed; a human reviews and edits before anything is saved.


  1. A staff member raises a referral for a student — a short concern, optional evidence, and a requested action. This needs only the lightweight support-program:refer permission, so any teacher or counselor can flag a concern without needing case-management access.

  2. A coordinator triages the referral — either converts it into a formal enrollment (setting the program, need type, diagnosis if known, and severity) or declines it with a reason. This step needs support-program:manage.

  3. The enrollment becomes the student’s case file. From there the coordinator (or an assigned professional) builds a support plan — strengths, barriers, provision, exit criteria — with one or more measurable goals, each with a baseline, target, and measure type (percent / count / scale / yes-no).

  4. Professionals log sessions as they deliver support — pull-out, push-in, consultation, assessment, or a family meeting — with attendance and an observation note. Progress against each goal is recorded over time and charted.

  5. Review meetings are scheduled periodically to check progress with the family/team, with minutes and agreed follow-up actions (which can push straight into Team Tasks).

  6. Consent and accommodations are tracked alongside the case — consent for the program itself (and its withdrawal), and standing classroom/assessment accommodations that other staff and exam workflows can see.

  7. AI can draft — never file — five things along the way: a session note from shorthand bullets, a full plan skeleton from a referral/observation summary, a goal-quality check before saving a new goal, a progress narrative for a review meeting, and (as part of the school’s AI assistant) plain-language answers about a student’s case load or compliance status.


RoleWhereWhat’s there
Owner / Manager / Coordinator (with support-program:manage)Sidebar → Student Support → Student SupportSchool-wide enrollment roster — every student currently or previously in a support program
Anyone with support-program:refer or support-program:manageSidebar → Student Support → Support ReferralsPending/converted/declined referral queue — a refer-only user sees just their own submissions; view/manage holders see everyone’s
A professional with an active caseloadSidebar → Student Support → My CaseloadEvery student currently assigned to you, across the whole school — the own-scope mirror of the full roster
Any staff delivering support sessionsSidebar → Student Support → Log a SessionToday’s scheduled support slots (auto-populated from Staff Schedule) plus a standalone session form for anything off-schedule
Holders of support-program:reportSidebar → Student Support → ReportsSchool-wide breakdowns by class, program, diagnosis category, professional, plus a compliance dashboard (overdue reviews, consent gaps)
Student (secondary only) / ParentSidebar → My Learning → My Support / Sidebar → Utilities → My Children’s SupportRead-only overview of enrollment status, goals, progress, meetings, and consent — never diagnosis or raw session observation notes — only if the school has turned the family portal on

Unlike Behavior Records, Student Support is not read-by-default — case files are sensitive by nature, so every permission here is opt-in per position.

Permission keyWhat it unlocks
support-program:viewSee every enrollment in the school — the full roster, not just your own caseload
support-program:manageEnroll, withdraw, assign professionals, edit plans/goals/sessions/meetings, convert or decline referrals, manage programs/diagnosis categories/severity levels/session types
support-program:view-ownSee and act on only the students assigned to you — the caseload-scoped counterpart to view/manage
support-program:diagnosis-readSee the diagnosis category/severity field — layered on top of any of the above; without it, diagnosis always shows as Restricted, even to someone who can otherwise manage the case
support-program:referRaise a referral for a student — deliberately separate and lightweight, so any teacher can flag a concern without case-management access
support-program:reportThe Reports section — cross-student breakdowns and the compliance dashboard
support-program:settingsManage the org-level program/diagnosis-category/severity-level/session-type lists and the two toggles (Family Portal, Support AI) in Settings

Grant any of these per position from Settings → Positions — for example, give a Teachers position just view-own and refer so a class teacher can flag concerns and see their own caseload, without ever being able to convert a referral or read a diagnosis.


  1. Open Settings → Student Support. Four tabs manage the taxonomy every enrollment and session draws from: Programs (e.g. “Inclusive Education Support Program”), Diagnosis Categories, Severity Levels, and Session Types (e.g. “Reading intervention”, “Speech therapy”). None of these exist by default — the school defines its own taxonomy, or imports one.

    PresetModeled on
    US IEPUS Individualized Education Program categories
    UK SENUK SEN Code of Practice categories
    India RPwDIndia’s Rights of Persons with Disabilities Act categories
    Spain NEESpain’s Necesidades Educativas Especiales categories
    Chile PIEChile’s Programa de Integración Escolar categories
    GenericA neutral starting set for schools outside these systems

    Importing a preset seeds Programs, Diagnosis Categories, and Severity Levels in one go — you can still edit, add, or deactivate afterward. Session Types are not part of any preset; add at least one (e.g. “Reading intervention”) before anyone can log a session — the session-logging form requires a type and has none by default.

  2. Turn on the Family & Student Portal, if you want guardians and secondary students to see a redacted view of the case (status, goals, progress, meetings, consent — never diagnosis or session notes). Off by default.

  3. Turn on Student Support AI, if your school has already configured an AI provider under Settings → AI Assistant. This is a separate opt-in from the org’s AI provider itself — a school can have AI configured for other features (e.g. syllabus, exam grading) while keeping it off here, and vice versa.

  4. Grant permissions per position — see the table above. A typical split: give class teachers view-own + refer; give a Learning Support Coordinator manage + report + diagnosis-read; give a Head of Inclusion settings on top of that.


Most schools do not adopt Student Support with an empty register — they arrive with an existing SEN list of 40, 80, or 200 students already receiving support, maintained in a spreadsheet for years. Enrolling those one dialog at a time is hours of clicking, so the roster has a Bulk import button that takes that spreadsheet directly.

Students are matched by admission number — the ID already printed on their card and used everywhere else in the school — so you never have to look anyone up.

The fields that are the same for the whole file are chosen once in the dialog; only the ones that genuinely vary per student are columns.

Set once, in the dialogPer student, in the CSV
Program, Need type (temporary / permanent), Start dateadmission_no, diagnosis_category, severity_level, review_due_date, notes
ColumnRequiredNotes
admission_noYesMust match a student’s admission number in this school exactly (case is ignored).
diagnosis_categoryNoThe name or code of one of your configured diagnosis categories — e.g. Autism spectrum or ASD. Case and surrounding spaces are ignored.
severity_levelNoThe name of one of your configured severity levels — e.g. Moderate.
review_due_dateNoYYYY-MM-DD. Leave blank if you set review dates later.
notesNoFree text, up to 2000 characters.

A file containing nothing but a single admission_no column is perfectly valid — everything else can be filled in per student afterwards.

  1. Make sure your taxonomy exists first. Bulk import references your Programs, Diagnosis Categories, and Severity Levels by name — so set them up (or import a preset) before you start. If there are no active programs, the importer will tell you so instead of letting you upload.

  2. Open Student Support from the sidebar and click Bulk import. Choose the program, need type, and start date that apply to the whole file.

  3. Download the template. This is worth doing even if you already have a spreadsheet: the template is generated from your school’s catalog, so the example rows contain the exact diagnosis and severity strings that will match. Copy your data into it rather than guessing at the wording.

  4. Upload the file — drag and drop, or click to browse. CSV only, up to 2 MB and 500 rows per upload. Split a larger register into two files.

  5. Check the preview. Every row is validated before anything is written. Values that don’t match your configured lists are highlighted in amber with a “Did you mean…?” suggestion, and a checkbox lets you either import those rows with the unmatched field left blank, or leave it off so those rows are reported back for you to fix.

  6. Import. You get a count of students enrolled, plus a list of any rows that were skipped and why.

Rows are processed individually — a bad row never fails the batch. Anything that couldn’t be imported comes back in a list with its admission number so you can find the line in your spreadsheet.

ReasonWhat it meansFix
No student with this admission numberNothing in this school matches that ID.Check for a typo, or add the student first.
Student is not activeThe student is archived, deleted, or has a status such as withdrawn or graduated.Reactivate the student, or drop the row.
Already enrolled in this programThey have a live enrollment in the program you picked.Nothing — this is what makes re-uploading the same file safe.
Unknown diagnosis category / severity levelThe value isn’t one of your configured names or codes, and you chose not to import unmatched values as blank.Correct the spelling, add the category in settings, or re-run with the blank option ticked.

Bulk import needs support-program:manage, the same permission as enrolling a student by hand, and each import is written to the audit log as a single entry with the number of enrollments created.


  1. Open Support Referrals from the sidebar and click Raise a referral.
  2. Search for the student, write the concern, and optionally add evidence and a requested action.
  3. Submit. It lands in the Pending queue for whoever has support-program:manage to triage — a refer-only user can see it in their own list but can’t act on it.

A pending referral can be converted into a full enrollment (choosing the program, need type, and diagnosis/severity if known) or declined with a required reason. Both actions need support-program:manage; a declined referral shows a small reason icon in the queue that anyone can click to read why, no extra permission required.

  1. From the student’s enrollment record, click New plan — or Draft a plan with AI if the school has AI enabled (see below).
  2. Fill in the four plan sections: Strengths, Barriers, Provision, Exit criteria.
  3. Add one or more goals — a title, measure type (percent / count / scale / yes-no), and a target value. Optionally run Check with AI first (see below) before saving.
  4. Move the plan through its lifecycle: Draft → Active → Under review → Closed.

Open a goal on the plan and click Record progress — a value and an optional note. Progress is charted over time against the goal’s target line, with a hover tooltip showing the exact value, date, and note for each point.

  1. Open Log a Session. Any of today’s scheduled support blocks (from Staff Schedule) show up automatically, ready to log with one tap — no searching for the student.
  2. For anything off-schedule, use the standalone session form at the bottom: pick the student(s), date, time, duration, delivery mode, session type, and mark attendance.
  3. Add an observation note per student — or use Draft with AI to turn shorthand bullets into a written note.

From the enrollment record, click Schedule meeting — a date, optional start time, and an agenda. Once held, add minutes (or generate a first draft from the term’s actual goal-progress and session data with AI — see below) and any agreed actions, which can be pushed straight into Team Tasks for follow-up.

A case can have one or more assigned professionals (e.g. a lead SEN teacher plus a speech therapist), each with a role label and a start/end date. Reassigning ends the current assignment and starts a new one — history is kept, not overwritten.

Log consent for the program (and withdraw it later if a family changes their mind) from the enrollment’s Consent Records section — a straightforward audit trail of when and by whom.

Standing classroom/assessment adjustments (extra time, preferential seating, etc.) live in Accommodations on the enrollment record — continuous adjustments, distinct from the scheduled Sessions log. Other parts of the system (e.g. exam-day workflows) can read a student’s active accommodations independently of Student Support permissions.


Every AI action in this module follows the same rule: it drafts, a person decides. Nothing is ever saved automatically — every draft is shown for review and edit first, and accepting one only stamps an audit record; it never silently writes content elsewhere.

ActionWhereWhat it does
Draft a session noteLog a SessionTurns a staff member’s shorthand bullets into 2–4 sentences of professional, factual case-file prose
Draft a planSupport planFrom a referral concern, prior-plan summary, recent observations, and/or current accommodations, proposes the four plan sections plus 1–6 measurable goals
Goal quality checkAdd-goal formBefore saving, flags whether a goal is genuinely measurable — a clear metric, a target, something two people could agree was met or not — and suggests a rewrite if it isn’t
Progress narrativeReview meeting minutesSummarizes the term’s actual recorded goal-progress and session data into 1–2 paragraphs of parent/coordinator-facing prose, referencing real dates and datapoints — never inventing facts not in the record
AI assistant toolsSchool-wide AI AssistantAnswers plain-language questions about caseloads and compliance (e.g. “who on my caseload has a review due this month?”); diagnosis only surfaces if both the org’s diagnosis-in-AI toggle and the caller’s own diagnosis-read permission allow it

Both the org’s AI provider (Settings → AI Assistant) and the module’s own Student Support AI toggle (Settings → Student Support) need to be on for any of this to appear — otherwise every AI entry point shows a quiet “Set up AI” prompt instead of erroring.


A student’s diagnosis category and severity are the one field in this module that’s gated separately from everything else. Someone can have full manage access to a case — plans, goals, sessions, meetings — and still see “Diagnosis (restricted)” instead of the actual category, unless their position is also granted support-program:diagnosis-read.

The family portal view is redacted the same way, permanently — diagnosis and raw session observation notes never reach a student or parent account, regardless of any staff-side permission.


ViewWhat it shows
By classEnrollment counts and program mix per class
By programHow many students are on each support program
By diagnosis categoryBreakdown across diagnosis categories — only populated for callers with diagnosis-read
By professionalCaseload size and session counts per assigned professional
Compliance dashboardEnrollments with an overdue review meeting, and consent gaps (enrolled without a recorded consent) — or a “family portal is off” note if consent tracking isn’t applicable
ExportA CSV/row export of the current view’s underlying data, respecting the caller’s diagnosis-read permission the same way the on-screen view does

A daily background job also checks every school’s scheduled support blocks (from Staff Schedule) against what’s actually been logged, and nudges any staff member with an unlogged session — a rollup notification linking straight back to Log a Session.


My Support (student, secondary grades only) and My Children’s Support (parent) show a read-only view of: enrollment status, program and need type, goals and their progress charts, review meetings, and consent status. Diagnosis and raw session observation notes are never included, and the view only exists at all if the school has turned the Family & Student Portal setting on.


EventWho’s notified
A professional is assigned or reassigned to a caseThe newly assigned professional
A review meeting is scheduledAssigned professionals on the case
A scheduled support session goes unlogged by end of dayThe staff member who was scheduled for it, via the daily compliance check, linking to Log a Session

Why can’t I log a session even though I have access?

Section titled “Why can’t I log a session even though I have access?”

Almost always because the org has no Session Types configured yet — add at least one from Settings → Student Support → Session Types. This is the single most common first-day setup gap.

Why does the diagnosis field say “Restricted” even though I can edit everything else on this case?

Section titled “Why does the diagnosis field say “Restricted” even though I can edit everything else on this case?”

Diagnosis is gated by a separate permission, support-program:diagnosis-read, on top of whatever manage/view-own access you have. Ask an admin to add it to your position if you need it.

I raised a referral — why can’t I see it convert, or convert it myself?

Section titled “I raised a referral — why can’t I see it convert, or convert it myself?”

Raising a referral only needs support-program:refer. Converting it into an enrollment needs the separate support-program:manage permission — by design, so a school can let many staff flag concerns while keeping the actual enrollment decision with a smaller group.

Why don’t I see “Draft a plan with AI” / any AI button?

Section titled “Why don’t I see “Draft a plan with AI” / any AI button?”

Two switches both need to be on: the org’s AI provider (Settings → AI Assistant) and this module’s own Student Support AI toggle (Settings → Student Support). If either is off, the button shows a “Set up AI” prompt instead.

Can a parent or student see the diagnosis?

Section titled “Can a parent or student see the diagnosis?”

No — never, under any setting. The family portal view is permanently redacted for diagnosis and raw session notes, independent of any staff-side AI or permission toggle.

Does an AI-drafted note get saved automatically?

Section titled “Does an AI-drafted note get saved automatically?”

No. Every AI output is a draft shown for review and edit; a human has to explicitly accept it (or paste/apply it) before anything is saved to the case.


FeatureStatus
Accommodation indicators on the class register, seating charts, and gradebookNot yet built — those surfaces don’t exist yet independent of this module
Additional in-context AI actions for teacher-, parent-, and coordinator-facing views (beyond the five shipped)Not yet built
A middle permission tier that can see the full referral queue without being able to convert or declineAchievable today via custom position grants combining view without manage; not a default preset