Data model

Generated from the declared schema; tests fail if the code writes anything it does not declare. The ERD.

CollectionKeyFieldsWhat it holds
studentsidid, phone?, chosenName, pronouns?, zip, county?, age?, goal?, dial, household, enrollment, receives?, helpAreas, communities?, account?, createdAtWho the student is and how they want to be helped. Sealed facts are never stored here.
deadlinesidid, studentId, title, due, course?, kind, source, confirmed, effortHours?, durationMin?, done?Every date that matters: assignments, exams, aid, bills, appointments. Found dates stay unconfirmed until the student checks them.
classesstudent:course:indexcourse, days, start, end, building?, room?, campus?Weekly class meetings, from the schedule or a room-change email.
shiftsstudent:date:startdate, start, end, employer?Work shifts, typed by the student or sent through the API.
holdsidid, deadlineId?, title, date, start, endTime the student asked the Advocate to keep for a piece of work.
remindersidid, about, at, textReminders the student asked for.
draftsidid, studentId, to, recipient, body, purpose, statusMessages the Advocate wrote for the student to send. Nothing leaves without the student approving the exact text.
messagesidid, studentId, author, text, nextSteps, urgency, why?, at, status, holdReason?Everything the team said to the student, with why and what the tone gate decided.
last_stepsstudentstepsThe choices on the last message, so a reply of "1" by text picks the first.
playbook_runsstudent:playbookplaybook, studentId, stepId, status, startedAt, history, waitingSince?Where the student is in each playbook, with every checkpoint.
pulse_statestudentasked, everyDays, off?Quick questions: which were asked when, how often, or off.
pulse_pendingstudentpulseA quick question waiting for a yes or no.
sourcesstudent:sourcesource, connectedAtWhat the student connected: calendar, forwarding, class site, location. Each grant is also in the consent ledger.
api_tokenssha256(token)id, label, scopes, createdAtTokens the student created to connect other tools. Only a hash is stored.
webhooksidid, url, events, secretWhere the student asked to be notified. Https only; payloads carry ids, never message text.
vaultstudent:namename, addedAtNames of documents the student keeps; contents are sealed.
moneystudentbalance, bills, pay?Balance, bills and pay, for spotting a short month ahead of time.
household_planstudentchildCare?, commuteMin?, sleepHours?, commuteMode?, homeStop?Child care hours, commute and sleep, for the week solver.
commute_plansstudent|datedate, course, classStart, from, to, itineraries, notice?, fetchedAtBus trips that get the student to their first class each day, from the transit planner.
transit_nowstudentstop, at, arrivals, alertsLive arrivals and alerts at the student's stop; used only while under ten minutes old.
dispatchesidempotency keyid, studentId, kind, request, key, status, attempts, result?, queuedAtWrites the student asked for (room bookings), each sent once with an idempotency key and confirmed by looking it up.
campus_feedscampuscampus, fetchedAt, locations, hours, menus, spaces, events, postings, mentors, stops, unknownWhat the operator last fetched from each campus service: dining, places, careers and transit stops. Shared, not about any student.
leasesjobjob, holder, until, beatsWhich operator holds which job, with a heartbeat, so two never run the same job.
meetingsidid, title, date, start, attendees, course?Group meetings to prepare for.
coursesstudent:coursecourse, aiPolicy, aiPolicyLine?Each course and its AI policy, read from the syllabus.
dismissedstudent:subjectsubject, atAlerts the student said are fine.
aidstudentdisbursementWhen financial aid is expected, for book timing.