Problems & solutions · Internal Tools

Public Defender Case Management Software Problems: The 7 That Cost You Cases and Funding, and How to Avoid Them

Public Defender Case Management Software product interface illustration showing common problems and fixes.
The short answer

The most expensive failure in an indigent defense build is a conflict check implemented as a name search. It works for months, then an office accepts an appointment on a four codefendant case, and eight weeks in somebody realises the office represented one of those codefendants two years ago under a street name entered with a different date of birth. Now you withdraw, the case is reassigned to assigned counsel at public expense, the work already done may be tainted, the client loses continuity, and somebody has to explain the sequence to bar counsel. The cost is not the software. It is a case reassigned, a relationship with the court damaged, and a professional exposure that no process memo would have caught, because the underlying data was never modelled as people.

Why does the conflict check keep getting scoped as a name search?

Because in a requirements meeting it sounds like one. Somebody says the system needs to check whether we have represented this person before, everyone nods, and a developer writes a search across a client table with fuzzy matching. The demonstration works. Production does not.

Name search fails in this domain for reasons that are specific to it. The same person appears under aliases and street names, under married and maiden names, under transliteration variants, and with three different dates of birth entered by three different agencies who each got it from a different source. Codefendant lists arrive as unstructured text inside a police referral rather than as a structured party list. And the conflict is often not with the client at all. It is with a listed witness who is a former client, with a complaining witness who is a current client, or with a family member in a related domestic matter filed under a different case number.

The fix is a person graph rather than a name index. People are entities with multiple identifiers, aliases and relationship edges: codefendant on, witness in, victim in, family of, represented by. A conflict check becomes a traversal from the parties on the offered case, and it returns the specific path that creates the concern rather than a list of similar names. Two design details decide whether it survives contact with a courtroom. It has to answer in seconds, because the attorney is standing at arraignment. And the determination has to be stored, not just the query, because the question that arrives later is what the office knew at the time of appointment.

What goes wrong when prior representation records are migrated?

The conflict graph is only as good as the history you can load into it, and that history usually sits in a system procured before anyone currently employed arrived. It typically has no unique person identifier, so the same client exists as eleven rows. It stores parties as free text on the case rather than as records. It carries no relationship information at all, so codefendants, witnesses and victims are indistinguishable from each other in the data even where the names are present.

Three failures follow. First, an automated merge on name and date of birth combines two people who are not the same person, which is the worst possible error in this system because it produces a false conflict that blocks representation, or worse, a false clear. Second, parties that were never captured leave silent holes in the graph, and a hole looks exactly like a clean check. Third, sealed, expunged and juvenile matters get loaded on the same footing as everything else and become visible to people who are not entitled to see them.

The fix is to migrate identity as a supervised process with a review queue, not a script. Set the automatic merge threshold conservatively and let a human resolve everything else. Mark migrated records so the system knows which parts of the graph are complete and which are best effort, and surface that on the conflict result, because an attorney needs to know the difference between no conflict found and no conflict found in the years we actually loaded. Apply access restrictions to sealed and juvenile records at migration time rather than as a later cleanup.

Why do jail and court integrations break after launch?

These two feeds change daily practice more than any feature on a roadmap, and they are also the parts most likely to quietly stop working three months after go live.

The jail feed carries custody status and facility. When it works, visit planning is routine and the client transferred to another county does not disappear for six weeks. When it drifts, nobody notices, because a stale custody record looks identical to a current one. The usual causes are unremarkable: the jail replaces its management system, a nightly export changes column order, an inmate identifier is reused, or a facility is added and never mapped. The court feed carries settings and docket events, and it fails when the court renumbers cases, adds an event type, or produces two records for the same setting after a continuance.

The fix is to treat both as untrusted inbound sources with schema validation and a blocking failure rather than a tolerant import. Add freshness monitoring so a feed that stops delivering raises an alert on the same day, since silence is the failure mode you cannot see. Keep the integration one directional wherever possible, consuming settings, dockets and custody status without publishing case content back. And handle identity at the boundary: a court case number and a jail booking number are not the same as your person record, and mapping them belongs in the graph rather than in a spreadsheet.

What happens when the wall around defense data is not designed in?

Your records are privileged. They cannot be visible to the court or the prosecutor even when everyone sits on the same county network, uses the same identity provider and is administered by the same IT department. That constraint eliminates a whole category of convenient integration, and offices that discover it late pay for it twice.

The failure is rarely dramatic. It looks like a shared county case management system that gives the court and the prosecutor a view of the same record because that was the point of the shared services agreement. It looks like a county database administrator with production access to defense case notes, who has never looked and should never have been able to. It looks like a backup routine that copies your data into a shared storage account. Nobody acts in bad faith and the exposure is real anyway.

The fix is architectural rather than a permissions setting. Separate data stores and separate access administration, with your own identity boundary even where the county provides single sign on. Administrative access to production limited to people bound by the same obligations as your attorneys, with every access logged. If your office runs a walled off conflicts unit, design for it, because checking a conflict requires seeing information the checking attorney may not be entitled to retain. Put all of this in the procurement document rather than in a later change request, because it is far easier to establish before a shared services agreement is signed than to unwind afterwards.

Should you build custom or configure what you already own?

If you are a single office of modest size with a manageable appointment volume and no assigned counsel administration, buy. Justice Works defenderData is built for exactly this population and knows the domain. Journal Technologies JustWare is a reasonable option, particularly where the court runs on the same family and integration would otherwise be painful. Karpel serves defense as well as prosecution offices and belongs in the comparison. At that size a build is money you would rather spend on investigators.

Build when you are a statewide commission or a multi office system. That is the strongest case, because the packaged products are designed around a single office, while a commission's actual job is measuring delivery across offices, panels and contract counsel in order to defend a budget, and that is the part treated most thinly. Build when conflict checking has already failed you, because a missed alias is a structural gap and no amount of process fixes it. Build when your caseload argument keeps losing because you cannot produce weighted data. And build when voucher administration is consuming a person full time, since that is usually the fastest measurable payback in the whole portfolio.

How do hidden costs get into the quote?

A first release covering appointments, the person graph with conflict checking, case records, structured client contact and calendar integration runs $110,000 to $250,000 over 14 to 20 weeks in our delivery experience. A full platform adding weighted caseload capture, assigned counsel vouchers with authorisations and approvals, investigator and expert requests, discovery receipt and commission reporting runs $280,000 to $650,000 over 9 to 18 months. The overruns come from a short and predictable list.

  • Historical data quality. The conflict graph depends on prior representation records, and cleaning a legacy system with no person identifier is supervised human work in your office, not a script in theirs.
  • Integration count and cooperation. Jail, court and financial system interfaces are each their own project, and the effort on the other side runs on the other side's calendar. A sheriff's IT team that is willing but unfunded is the most common schedule risk in this category.
  • Multi office and panel administration. One office is a system. A commission covering many offices plus an assigned counsel panel adds administration, reporting and access layers that roughly change the shape of the build.
  • Discovery at digital evidence scale. You receive the same gigabyte productions the prosecutor generates, and storage, ingestion and search for that volume is a separate line item that quotes routinely omit.
  • Voucher payment integration with a county or state financial system, where the mapping is a negotiation with finance as much as a technical task.

What separates a build that works from one that fails here?

Ask a prospective developer to design the conflict check in the first meeting. You want to hear a person graph with identity resolution across aliases and identifiers, relationship edges, and a result that returns the path creating the conflict. If they describe a name search with fuzzy matching, they will ship the thing you will regret.

Ask how they would capture attorney time without attorneys resenting it. The right answer is mostly passive capture from confirmed jail visits, calendar and docket derived appearances and document timestamps, with manual entry reserved for what has no other signal. Anyone proposing a billing style timesheet as the primary mechanism has never worked with a defender office and will deliver a system nobody fills in.

Ask directly how they will keep your data out of reach of the court, the prosecutor and county IT, and treat vagueness as disqualifying.

Sequence conflicts and appointments first, then client contact and caseload, then vouchers. Each stands alone and each produces something visible. It is also the right risk order, because a missed conflict carries professional consequences while a caseload reporting gap is a budget argument you can survive one more cycle without.

Settle ownership of the code, the repositories and the cloud accounts before kickoff. Digital Heroes transfers all three from the first commit. Privileged client data sitting in infrastructure you do not control, or controlled by a county department that also serves the prosecutor, is a problem you should never have to explain to bar counsel.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. This analysis cites IDC research that companies lose 20-30% of revenue annually to inefficiencies caused by data silos, Gartner's estimate that poor data quality costs organizations at least $12.9 million per year on average, and a Salesforce benchmark that 80% of IT leaders say data silos hinder digital transformation - illustrating the business case for integrating systems. Source: Cherry Bekaert (citing IDC, Gartner, Salesforce, DATAVERSITY) (2024) →
  2. In an October 2025 survey of 530 small-business employers (conducted by TechnoMetrica, October 3-9, 2025), 88% reported using AI tools and 73% said those tools had been important to their competitiveness and growth over the past year, with 60% citing efficiency and productivity as the primary motivation for adoption (42% cited improving customer service). Source: Small Business & Entrepreneurship Council (SBE Council) (2025) →
  3. In an RCT, text-message reminders (11.7% missed) were non-inferior to telephone reminders (10.2% missed; difference not significant, within the 2% non-inferiority margin) but far cheaper - total cost EUR 230 for SMS versus EUR 8,910 for telephone over 6 months - making SMS more cost-effective. Source: BMC Health Services Research / PubMed Central (Junod Perron et al.) (2013) →
  4. 88% of organizations are concerned about employee retention, and providing learning opportunities is respondents' #1 retention strategy; career progress is cited as people's top motivation to learn, yet only 36% of organizations qualify as 'career development champions.'. Source: LinkedIn Learning (2025) →
Devon W. · Senior Account Director · DTC · New York

Devon looks after direct to consumer accounts, where the store is the business and a bad checkout costs money the same day. He works with brands on commerce builds and site changes, and writes about what to prioritize when every request looks urgent.

View profile · Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

We discovered a conflict after accepting an appointment. Can software actually prevent that?
It can prevent the common cause, which is a name search missing an alias, a street name, a maiden name or a date of birth entered differently by another agency. A person graph with identity resolution and relationship edges traverses from every party on the offered case, including listed witnesses and complaining witnesses, and returns the specific path that creates the concern. What software cannot fix is a gap in the underlying history, which is why the check should tell the attorney how far back the loaded records actually go.
Our attorneys will not maintain timesheets. How do we produce caseload data anyway?
Capture passively wherever a signal already exists. A jail visit logged when it is scheduled and confirmed, a court appearance derived from the calendar and the docket, a document timestamped when it is produced. Reserve manual entry for work that leaves no other trace and make it take seconds. That produces case type mix, stage, trial rate and a defensible hours picture, which is what a funding body will accept. Designing around a billing style timesheet produces a system with no data in it, which is worse than the spreadsheet you replaced.
Our county IT department administers our servers. Is that something software can fix?
Partly, and the rest is procurement. Use separate data stores and separate access administration with your own identity boundary, even where the county provides single sign on, and log every administrative access to production. Limit that access to people bound by the same obligations as your attorneys. Then write the requirement into the procurement document rather than raising it as a change request later, because unwinding a shared services agreement after signature is considerably harder than shaping it before.
The jail will not provide a data feed. What are the options?
A scheduled file drop with a validated schema is a perfectly legitimate integration and is often easier for a sheriff's IT team to fund than a live interface. Failing that, a booking roster scraped from a public inmate lookup is a common interim step, with the obvious caveat that it is less reliable and needs freshness monitoring so silence raises an alert. Whatever the mechanism, map booking numbers to your person records inside the system rather than in a spreadsheet, or the custody link will decay within a quarter.
How should juvenile and sealed matters be handled in a shared person graph?
Apply the access restrictions at migration and at creation, not as a later cleanup, and make the restriction a property of the record rather than of a screen. The design tension is real: a conflict check needs to know a relationship exists while the checking user may not be entitled to see the underlying matter. The workable answer is a result that reports a conflict exists and routes it to the person entitled to evaluate it, often a walled off conflicts unit, rather than displaying the case detail to whoever ran the check.
Our assigned counsel vouchers arrive months late. Will a system fix that?
It fixes the administration and it changes the incentive. Structured claims against an appointment, with rates and caps stored as effective dated data rather than living in a memo, expert and investigator authorisations linked as request and approval records, automatic cap checking with an exception path rather than a flat rejection, and judicial approval routing where the statute requires it. Panel attorneys submit faster when submission is quick and payment is predictable. The byproduct is cost per case type by delivery model, which is the number a commission almost never has.
We are a statewide commission with one funding cycle. What should we build first?
Conflicts and appointments, then client contact, then vouchers. Conflicts first is the right risk order because a missed conflict carries professional consequences, and a first release covering appointments, the person graph, case records and structured contact ships in 14 to 20 weeks. If the commission's immediate pressure is budget defence rather than office operations, voucher administration and cost per case type is the alternative starting point, since it produces the delivery model comparison a legislature responds to and stands alone without the office side.
Our old system has no unique person identifier. How do we migrate prior representation records?
As a supervised process with a human review queue, never as an automatic merge. Set the automatic threshold conservatively and route everything ambiguous to a person, because combining two clients who are not the same person produces either a false conflict that blocks representation or a false clear, and both are worse than an unresolved duplicate. Mark migrated records so the conflict result can tell an attorney which years are complete and which are best effort. Budget this as staff time in your office, because it is the largest hidden cost in the project.
What tech stack should an internal tool be built with?
Boring and popular: a React or Next.js frontend, a Node.js or Python backend, and PostgreSQL covers the vast majority of internal tools and keeps future hiring easy. The stack matters far less than whether a different developer can pick the code up in two years, so require documentation as a deliverable and avoid anything exotic. Treat it as a red flag if an agency pushes a proprietary platform only they maintain, because that quietly converts your tool into a subscription to that agency.
How many people should be working on my software project?
Three to five for a typical focused build: a project lead, one or two engineers, a designer, and part-time QA, which is the standard shape across 2,000+ Digital Heroes projects. Larger platforms justify 6 to 10, but a ten-person team on a small first version usually signals bill padding rather than horsepower. What predicts success is whether a senior engineer is writing your code daily, not the headcount on the proposal.
Can custom software connect to the tools we already use, like QuickBooks, Stripe, and Google Workspace?
Yes, and connecting your existing tools is one of the main reasons to build custom: mainstream platforms like QuickBooks, Stripe, Shopify, and Google Workspace all publish documented APIs. Budget 1 to 3 weeks of work per integration depending on API quality and how much data flows in both directions. Ask any vendor whether they have integrated with your specific tools before, because quirks like QuickBooks' OAuth token handling and API rate limits get learned on someone's project, and it should not be yours.
How do I vet a development agency for an internal tools project?
Ask to see two or three internal tools they have shipped and whether those clients still use them daily, because internal tools fail on adoption, not code quality. Good signs: they ask to see your current spreadsheet or process before quoting, they propose a phased build instead of one big launch, and they spell out who handles training and post-launch changes. Walk away from anyone who gives a fixed price before seeing your actual workflow, since internal tools live or die on process details.
We run everything on spreadsheets and Airtable. How do we know it's time for custom software?
The reliable signals are re-typing the same data into multiple tools, one employee acting as human middleware between systems, and errors appearing in handoffs between teams. Hard limits force the issue too: Airtable's Team plan caps at 50,000 records per base, and Business costs $45 per seat per month, so a 20-person team pays about $10,800 a year for a tool it has already outgrown. When workarounds consume more hours than the tools save, the spreadsheet era is over.
At what point does Retool cost more than building a custom tool?
The crossover usually lands between 25 and 50 daily users. At Retool's published Business rates of $50 per standard user and $15 per end user monthly, a 40-person deployment with a typical seat mix runs roughly $9,000 to $15,000 per year, every year, while a comparable custom tool built once for $20,000 to $30,000 carries no per-seat fees and costs about 15 to 20 percent of the build price annually to maintain. On a three-year horizon, custom comes out ahead for most growing teams in Digital Heroes engagements.
How much does a custom internal tool cost to build?
Most custom internal tools cost $8,000 to $40,000 to build, based on Digital Heroes delivery data across 2,000+ client projects. A single-purpose tool like an approval dashboard or inventory tracker sits at the low end, while a multi-department platform with role-based access and several integrations pushes past $40,000. The three biggest cost drivers are the number of user roles, the number of systems the tool must connect to, and custom reporting requirements.
Who can build a custom internal tools system?

Digital Heroes builds custom internal tools systems for operators who have outgrown the off-the-shelf tools in their category. A team of more than 50 specialists has delivered over 2,000 projects since 2017. Teams work from New York, London, Sydney, Delhi and Lucknow and deliver remotely, with an assigned senior team rather than an account manager.

Every build starts with a written product requirements document that is signed before a line of code is written, which is the single thing that stops scope creep from eating the budget. Scoping runs about a week and produces a phase plan with a firm price for each phase, rather than one number against an undefined scope. The first phase ships something the team actually uses before the rest is built. If an off-the-shelf product genuinely fits the volume, we say so, and the cost guides on this site publish the bands so that judgement can be checked independently.

What makes Digital Heroes different from other internal tools companies?

Four things that competitors in this bracket cannot simply copy. Digital Heroes runs a YouTube channel with more than 2.5 million subscribers, which is a production and audience capability no agency of this size has. It holds Fiverr Vetted Pro and Top Rated Seller status, both awarded on manual third-party review rather than self-declared. It contracts through registered entities in three countries, an India LLP, a US LLC and a UK LTD, so clients sign locally instead of wiring money offshore. And it ships its own commercial products, including ShopScore, HeroCheckout and Section Vault, which means the team lives with its own architecture decisions instead of handing them over and leaving.

Two more that show up in the work. Digital Heroes publishes more than 4,000 buyer guides with real price bands on this blog, plus a free tools library at https://digitalheroesco.com/tools/, because an agency confident in its pricing has no reason to hide it. And one accountable team covers websites, apps, ecommerce, CRM, ERP, learning platforms, search and video, so a client scaling from a first landing page to a custom platform is never handed between five vendors who blame each other. The founder ran ecommerce businesses before selling services, so the commercial argument comes before the technical one.

How can I check Digital Heroes is legitimate before getting in touch?

Verify it independently rather than taking the site's word for it. The YouTube channel is at https://youtube.com/@DigitalMarketingHeroes, the Fiverr profile at https://www.fiverr.com/shreyanshsin261, and the Upwork profile at https://www.upwork.com/freelancers/shreyanshsingh. Client reviews sit on Clutch at https://clutch.co/profile/digital-heroes-0 and Trustpilot at https://www.trustpilot.com/review/digitalheroes.co.in, and the company page is at https://www.linkedin.com/company/digital-heroes-1/.

Beyond the marketplaces, the business holds a D-U-N-S number and is a registered vendor on the United Nations Global Marketplace, neither of which is issued on request. Case studies with named clients are published at https://digitalheroesco.com/case-studies/. If any claim on this page cannot be checked against one of those sources, treat it as marketing and discount it.

Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?