Bail Fund CRM

A CRM that helped bail funds coordinate community bail in 14 states

Jan 2021 to Mar 2021B2B SaaS

Context

CZI's Justice & Opportunity team built tools for bail funds coordinating community bail. Ten days after I joined, the team was shut down (I'd like to believe those are unrelated), and we had 16 weeks to wrap up before spinning the work out to external partners.

Problem

Bail funds were tracking 200+ cases in spreadsheets, copying formulas, filtering rows by hand, and rebuilding reports every week. Power users needed all 79 case fields. Volunteers needed dead-simple views with just 6. And we had no time to build custom workflows for each organization.

Approach

I designed an 80/20 system. The core data model and workflows are locked down, and views and filters are fully customizable. Coordinators could save their own filter combinations, column visibility, and sorting as workspaces with minimal setup.

The CRM's Columns panel beside a case table. Request Status and Case Status switch off, the count changes from Visible columns (8) and Hidden columns (71) to 6 and 73, and their columns fold out of the table, leaving Client Name, Bail Status, Bail Amount, Date Bail Posted, Courthouse, and County. Then they switch back on.

Solution

I built 5 features so bail funds could set up their own workflows without engineering support.

Workspace System. Pre-built views ("New Requests," "Court Dates In Next 7 Days") for novices, custom workspaces for power users. Funds could build something like "Cases by County" or "Bail Amount > $2,500" in under 5 minutes.

The Court Dates In the Next 7 Days workspace. A Workspaces list (All Requests, New Requests, Court Dates In the Next 7 Days, Referrals, Ready for Pickup) sits beside the table toolbar and its Client Name column.

Multi-Field Filters. AND/OR logic on any field, with applied filters shown as removable pills in the toolbar.

The New Requests view. Filter pills for Request Status: New and Bail Amount ≤ $2,500 are joined by And, and the Courthouse filter is open on a list of courthouses, over a table of six new requests.

Column Visibility. Every case has 79 fields and any of them can be shown or hidden. Coordinators see everything, volunteers see the 6 that matter.

Court Appearances Dashboard. A separate view for upcoming dates, because missing a court date forfeits the bail.

Case Detail Page Redesign. Collapsible sections with jump links. The critical info stays visible, and power users can drill into all 79 fields.

Impact

I shipped 7 weeks early, and the product still grew 3x while the team was winding down.