For attendance clerks: the daily list, the letters, and the paper trail somebody will ask you for in March
Your job is judged on a record that nobody looks at until it matters, and then they look at all of it. This page is about the escalation ladder, the evidence each rung needs, and a blunt account of which parts of it a platform can actually take off your desk today.
| Rung | Typical trigger | Channel that works | Tone | What the record must show |
|---|---|---|---|---|
| Same-day | Period-1 no-show, no call from home | SMS, then voice if the text fails | Neutral, factual, no accusation, you do not yet know why | Timestamp, guardian contacted, channel, delivery outcome |
| Day 3 | Third unexcused day | Voice call from a person, logged | Curious. The question is what is getting in the way | Who called, what was said, what was agreed, callback number used |
| Day 5 | Statutory first-notice threshold in many states | Letter, mailed, plus SMS that a letter is coming | Formal. Cites the statute and the count | Date generated, address of record, absence dates enumerated, copy retained |
| Day 10 | Chronic-absenteeism threshold crossed in a 100-day window | Letter plus conference invitation | Formal, with a named person and a date offered | Invitation sent, response or non-response, meeting held or not |
| Day 15–18 | Referral to SARB, truancy officer or court | Certified letter; district counsel involved | Legal. Every prior contact enumerated | Full contact history with delivery evidence for each prior notice |
The week this page is actually written for
The list arrives at about 07:50 and it is wrong. Three of the students on it are in the building, late, signed in at the wrong desk, or marked absent by a substitute who did not take attendance in the system. Two are on a field trip that somebody forgot to code. One transferred out eleven days ago and is still enrolled because the withdrawal paperwork is sitting in a tray.
By 10:30 you have reconciled the list against period-2 rosters, the sign-in sheet and two phone calls to teachers. Only then can you send anything, because sending an absence notice to a family whose child is sitting in Algebra is the single fastest way to lose the credibility you need on day five.
Thursday is letters. March is the records request, a hearing, an audit, an attorney, or a parent who says they were never told. What you need at that moment is not a report. It is a list of contact attempts with dates, channels and outcomes that somebody outside the district will accept.
The honest part: nothing fires by itself
Kastr does not send attendance notices automatically. There is a screen where auto-notice rules can be configured. No engine reads those rules and nothing fires them. If a vendor's pitch to you is "it runs itself", that is a real advantage they have over us today, and you should weigh it.
One more limit worth knowing before anyone books a demo: there is no grade targeting. Audiences are the district, a school, a class, specific people and saved groups, so a grade-wide list is built from specific people. What does help you: audience resolution filters out suppressed and retired people at send time, and people a roster sync has withdrawn are treated as retired, so they are left out of later sends. That matters to you specifically, because your list is the one full of stale enrolments.
What that leaves is a human send, once a day, from a list you already reconcile by hand. Which is what you are doing now. The difference is what happens around the send.
The two-minute daily workflow that survives contact with reality
- Reconcile the list as you do now. Nothing replaces this.
- Select the students, not the guardians. Selecting a student auto-expands to every guardian attached to that student, so the second parent who is not listed first in the SIS is included without you looking them up.
- Save that selection as a named audience preset if it will recur, a tier-2 watch list, for instance. Ad-hoc selections can be saved and reused.
- Use send-test-to-me first on any letter you have edited. It delivers only to you, prefixed
[TEST], on the real channel. - Check the reach preview: the recipient count and the channels you have chosen, so you know exactly how many households the send will reach before it goes.
- Send. Failed sends are retried and delivery receipts recorded, so a family with a dead mobile shows up as a failure. Kastr has no voice channel, so that family needs a call from a person.
Quiet hours default to 21:00–07:00 and are applied at dispatch, which means a late reconciliation does not become a 21:30 text to nine hundred households.
The paper trail, and what it is actually made of
Every send is written to an append-only audit log. The mechanism matters more than the word "audit": each entry stores a SHA-256 hash computed over the previous entry's hash and the canonical form of the current event, so altering or removing any entry breaks the chain in a way that is detectable by recomputation. Writes are serialised under a Postgres advisory lock so the chain stays correct when two people send at once.
It is append-only at two independent layers. UPDATE and DELETE are revoked at the database role level, and the row-level security policy set contains no UPDATE or DELETE policy at all, not a policy that denies them, but no policy, which in Postgres means the operation cannot succeed.
For a referral packet, what you want out of it is per-notice: the date and time, the guardian, the channel, the delivery outcome reported by the carrier, and the identity of the staff member who sent it. Being precise about a limit here: there is no self-serve export button. Contract clause §7.1 gives you a right to machine-readable export of everything, at any time, without fee or notice, and today we run that export for you on request. The right is enforceable; the button is not built. See what belongs in an audit log for the general form of the question.
Contact records: the field that decides whether any of this works
Every contact point carries both a validation state (is this number syntactically valid, did it ever accept a message) and a consent state (has this household opted in or sent STOP), plus its source and its rank. The distinction is the one that ends most disputes: a family that never received the day-three call because the number in the SIS has been disconnected since September is a data problem, and a family that received it and ignored it is an engagement problem. They look identical on a report that only counts sends.
A student's guardians are attached to the student, not duplicated per school, so a family with children in three buildings is one household with one contact record. And a person who is both a guardian in your district and an employee of it is one person with two effective-dated roles, not two accounts that disagree about a phone number.
Questions people actually ask
Does Kastr automatically send absence notices without me?
No. Auto-notice rules can be configured in the interface, but no engine reads them and nothing fires. The daily send is a human action. We publish that rather than let you find it in week three of an implementation.
Can I prove in a truancy hearing that a notice was sent and when?
Yes, in the sense that matters: every send is recorded in a hash-chained append-only log with the timestamp, the guardian, the channel, the delivery outcome and the sending staff member. Tampering is detectable because each entry's hash covers the previous entry's hash. Getting that record out is a request to us today, not a button in the product, the export right is contractual under §7.1.
Can I send the same notice as text and voice for families without email?
Text, yes; voice, no. Channels are selected per send, and Kastr sends SMS and email only: there is no voice channel and no SMS-to-voice failover. For a family without email whose text fails, the fallback is a phone call from a person.
How do I reach a guardian who is not the one listed first in the SIS?
Select the student rather than a contact. The audience expands to every guardian attached to that student, ranked but not filtered, so a second parent or a grandparent with custody is included without you searching for them. Contact points carry rank and source so you can see which number came from where.
Can I target a message to a grade level or a single school?
A single school, yes: that is a school audience, and a class is a class audience. A grade level, no: there is no grade targeting, so a grade-wide send is built from specific people or a saved group. For attendance work this is less limiting than it sounds, because your audience is a reconciled list of named students anyway.
One price. Every feature. Locked for three years.
$3.50 per student per year under 5,000 students. No tiers or add-on modules. Normal messaging is included under a published fair-use allowance, with transparent cost recovery only above it.