2026-05 · Platform
A small city needed its collections batch reviewed by one external person who is not an engineer. The console is a court-branded magic-link login, a large-type guided wizard, and a hard rule that the database and the browser never see a Social Security number, a date of birth, or a street address.
15
merges on the surface
n/a
records reviewed: no metric captured
n/a
support requests after handoff: no metric captured
When
Part of an arc of 2 merges on court-console, 2026-05-28. The whole arc, derived from the record
Walkthrough video: coming soon.
A municipal court's collections submission arrived as PII-bearing exports and memos. Someone outside the city's IT had to review each record and record a disposition, and the existing process was hand work over sensitive files.
The reviewer is a clerk with a browser, not an engineer. Real client data can never sit in git, and the application tier can never hold the identifiers that make a court export sensitive.
Redact at the boundary and build the console for the reviewer: a pass that blanks SSN, date of birth, license number, address, ZIP, phone, and email while keeping names; an auth-gated review console behind a court-branded magic-link login; a plain-language guided wizard with a finish flow; document serving with an in-app reader and PDF download; an onboarding email that carries the end-to-end instructions; and an admin runbook.
Rejected
Load the raw exports into the app database
Then the database is the PII. The database and the browser only ever see minimal, low-sensitivity display fields, and the raw exports stay git-ignored in private storage.
Narrative documentation for the reviewer
Reads well, fails in practice. The wizard verifies each step where it happens, and the instructions email walks the whole flow end to end.
An accuracy pass on the submission batch, the review console, the guided wizard and court login, document serving and an in-app reader, the reviewer onboarding email, and the admin runbook, in use by the city.
The reviewer's access grant was committed to the repository's permissions file. #1918 moved it to an environment override so no client detail sits in git, which is the rule the redaction pass already enforced for records and should have covered the access list from day one.
npm run court:redactAccuracy pass: municipal court collections submission (Batch COURT-20260527)
#570 · 2026-05-28 · feature · +625 −0, 4 files
Auth-gated municipal court collections review console
#571 · 2026-05-28 · feature · +1,635 −10,927, 35 files
Court console: guided wizard, court login, doc serving, finish flow
#573 · 2026-05-28 · docs · +1,251 −48, 22 files
Redaction --src default + court admin runbook
#574 · 2026-05-28 · feature · +69 −3, 2 files
Add reviewer onboarding email for Court console collections
#579 · 2026-05-28 · feature · +265 −1, 4 files
Court docs: PDF download, download-all, and an in-app reader
#581 · 2026-05-29 · docs · +661 −23, 6 files
Remove Court console client PII from committed permissions.json (#1806)
#1918 · 2026-07-08 · feature · +55 −25, 11 files
Checked at build against the published corpus.
www.jakelawrence.xyz/research/case-study-library/municipal-court-collections-console
Cite: Lawrence, J. (2026). A court-collections review console a non-technical reviewer can finish alone. jakelawrence.xyz case study library.
I build the AI tools and automations a team adopts, and the full-stack apps and data pipelines under them, and ship them to production. Tell me the problem in a sentence and I'll give you an honest read on fit within a day.
Work with me →