Report: The Alert Log
Screen: /dashboard/reports/alert-logUpdated 2026-09-22For: Staff / caseworker, Founder
What this screen is for

The Alert Log (/dashboard/reports/alert-log) records every decision the reasoning engine made, at what level, who (if anyone) was alerted, and what a human made of it afterward. It's the honesty check on the engine itself — every alarm, and whether it deserved to be.
What you see, in the screen's own labels

- H1 "The Alert Log (Every alarm, and whether it deserved to be)."
- Band tiles: "Engine decisions, last {n} weeks," "Alarm," "Urgent," "Watch," "Alerted a human," plus a sparkline labeled "Alerted a human, by week."
- Table columns: Level · When · Person · What fired · Who was alerted · Outcome.
- Level meanings, verbatim: - Alarm — "Crisis language was found — in an intake story or in a reply on the after-care journey. The engine called for a human immediately." - Urgent — "A human was called for without crisis language: the person declared crisis-today on their intake, or the reasoning engine flagged the story URGENT." - Watch — "No human was called. The engine named a lane of care at medium or high confidence — a suggestion a volunteer carries in person, never an automated offer." - For information — "The engine read it and raised nothing — no crisis language, no crisis declared, and no lane named, or a lane named at low confidence."
- Outcome labels: "False alarm," "Acted," "Acknowledged," "Not yet."
- Each row can be expanded for "Why — {the engine's own rationale}" — or, when a person hasn't consented to their story being shown: "Why: withheld — this person did not consent to their story being shown, so nothing written about it is printed."
What to do

- Use this report to audit the engine, not just to find alerts. Reading the Outcome column against the Level column tells you whether the engine's alarms are actually landing on real crises.
- Close the loop. If an alert's outcome still reads "Not yet," that's a live prompt to record what actually happened.
What NOT to do

- Don't confuse "Watch" with a human being notified. By definition, Watch-level items never call a human — they're a suggestion a volunteer carries in person, nothing automated is sent.
When something goes wrong

- No decisions in the window: "The engine recorded no decision in the last {n} weeks as of {date} — there is nothing to put on this log."
- Decisions exist, but none alerted a human: "0 of {n} engine decision(s) alerted a human in the last {n} weeks as of {date} — that is not a bug."
- Every alert already has a human outcome recorded: "Every one of the {n} alert(s) in the last {n} weeks has a human outcome recorded — 0 not yet, as of {date}."
- A decision receipt couldn't be read: it's counted and disclosed rather than silently dropped: "{n} decision receipt(s) in this window could not be read and are not on this log. They are counted here rather than guessed at."
