A full-stack case management system for Do Moore Good's Pardon Me Campaign, Philadelphia. Purpose-built in Django to replace disconnected spreadsheets with a single, integrated platform.
As the Pardon Me Campaign grew, the team was tracking applicants, volunteers, and hubs across spreadsheets, with no central system and no way to coordinate communications. There was no document management, no automated outreach, and no single place for staff to see the full picture of a case.
A full-stack Django web application purpose-built for the Pardon Me Campaign. One codebase, one database, one place for staff and coaches to work.
Four roles: super admin, hub manager, volunteer, and a future applicant portal. Every list query is scoped to the user's role. A volunteer's URL cannot expose another volunteer's applicants, even if guessed directly.
Gemini 2.5 Flash via Vertex AI summarizes court documents, evaluates applicants against pardon criteria, and can pre-fill conviction history fields. Prompts are stored in the database and editable by staff without a developer. Every output is reviewed before any action is taken.
A queue-based email system with named trigger classes (status change, hub assignment, coach pairing). Every message is logged, BCC'd to a sysadmin mailbox for audit, and per-recipient opt-out is respected at send time.
One-click copy of name and DOB for court lookups, plus a bookmarklet that auto-fills the PA Unified Judicial System search form and bulk-downloads every docket sheet on the results page. Cuts document collection from 20 minutes to under two.
Auth uses magic-link email. Users click a time-limited link to start a session. No passwords, no OAuth flow, no Google account required for volunteers.
| Last name ▲ | First name | Status | DOB | Hub | Coach | Follow-up | Added | Updated | |
|---|---|---|---|---|---|---|---|---|---|
| View | Applicant A Addition | New | 1982-04-09 | Unassigned | Unassigned | - | 2026-05-01 | 2026-05-01 | |
| View | Applicant B | In Progress | 1978-11-22 | West Philly Hub | Coach 1 | 2026-04-30 | 2026-03-14 | 2026-05-08 | |
| View | Applicant C | Submitted | 1990-07-03 | Kensington Hub | Coach 2 | 2026-06-01 | 2026-02-28 | 2026-05-10 | |
| View | Applicant D | Approved | 1975-02-17 | North Philly Hub | Coach 3 | - | 2025-11-05 | 2026-04-22 | |
| View | Applicant E | In Progress | 1986-09-14 | Germantown Hub | Coach 4 | 2026-05-28 | 2026-01-19 | 2026-05-12 |