The queue
Every open case in one table — number, title, constituent, category, status pill, assignee, opened date — cut by filter chips for status, category, assignee, and SLA. Statuses run open → in progress → awaiting external → resolved (or closed without action); priority is normal or urgent; a red SLA 2d pill means the clock has already run out.
Work the queue in a fixed order: breaches first, urgent second, oldest third. The Home triage queue surfaces the top five breaches automatically, so the morning starts with the cases that are already late — and the filter chips make “my open Benefits cases past SLA” a two-click view you can keep open all day.
Case detail & notes
A case is one constituent's one issue. The hero holds the controls — status, priority, assignee, SLA due date, category — and the constituent block shows contact details plus the voter-file check: linked, not in voter file, or marked non-voter so staff stop re-searching.
The thread below is the case's memory: internal notes (staff-only), external emails (sent to and received from the constituent), and call logs, in reverse chronological order. If it happened, it goes in the thread — a case that lives in the record survives staff turnover, FOIA requests, and the next transition.
History tracks every status change and reassignment automatically, attachments stay on the case, and the AI Assist panel offers three verbs — categorize, draft reply, summarize thread. Drafts wait for a staffer; nothing sends itself.
Involved parties
A benefits case is rarely just you and the constituent — it's you, the constituent, and the state agency sitting on the claim. Every case carries an Involved parties panel for exactly that: attach the agencies, offices, organizations, or press outlets a case has to move through, pick the right contact at each, and log every call and email to them right there. The parties come from a shared directory the whole office builds — state and federal agencies, municipal and county offices, organizations, press — so the third time a case runs through the same department, the contact is already on file.
The contact log lives on the case, on purpose. Open a party's own record from Constituents ▸ Involved parties and you'll see its whole history read-only — who reached out, when, what came back — but you always log a new contact from inside a case, so every outreach stays tied to the constituent it was for.
Inbox triage
Mail to the office address lands in the triage inbox, not somebody's personal folder. Each message shows subject, sender, and received time; promote it to a case with a category and assignee, or reject it with a reason that stays on the record.
Triage once or twice a day, not continuously. Kennedy pre-suggests a category on each message and flags lookalikes — three emails about Palisade Ave flooding are probably one case with three reporters, so promote the first and attach the rest.
Categories & SLAs
Categories carry the office's promises: a default SLA in hours, a default assignee, and an auto-categorize hint Kennedy uses on inbound mail. A background worker watches every due date, flags breaches on the queue and dashboard, and emails the assignee.
Set SLAs you can keep. A 48-hour promise on Benefits cases that depend on a state agency will breach weekly and teach staff to ignore the color red; an honest 5-day SLA that holds is worth more than an aspirational 2-day one that doesn't.
Public status links
Every case can carry a private token URL where the constituent checks progress themselves — status and office messages only, sensitive notes excluded, no login required. Fewer “any update?” calls; the caseworker's afternoon back.
Send the link in the first reply, every time — it's the cheapest goodwill the office has. Regenerate the token if a link leaks; the old one dies instantly and the case history is untouched.