Problems & solutions · Internal Tools

Domestic Violence Shelter Software Problems: The 7 That Cost You Funding and Trust, and How to Avoid Them

Domestic Violence Shelter Software product interface illustration showing common problems and fixes.
The short answer

The most expensive failure in this category is confidentiality implemented as a permissions setting rather than as a data model, because permissions govern who can open a screen and say nothing about what leaves the system. Identifying information then escapes through the side doors nobody reviewed: notification emails, exported spreadsheets, printed reports, search results that confirm a person exists, and web addresses that carry a client reference. For a survivor whose location is a safety matter that is a physical risk, and for your agency it is a breach of the confidentiality conditions attached to your funding, which is the one finding that can put a grant rather than a process at stake.

Why does the case management with permissions scope keep failing here?

Most developers arriving in this sector have built case management before, and the instinct is reasonable: a client record, service notes, a caseload view, and role based permissions to control who sees what. That design is adequate almost everywhere else and it is wrong here, because it treats confidentiality as an access question when it is a structural one.

Role based permissions answer whether a legal advocate can open the client screen. They do not answer whether the legal advocate should be able to learn that this person is currently in shelter, which is a different and more dangerous piece of information. They do not stop a caseload count from revealing occupancy. They do not stop an automated reminder email containing a client name from arriving on a phone that is not private. And they do not stop a well meaning staff member exporting a list to work on at home.

The fix is to design the walls into the model before any screens exist. One client record, with programme participation records attached, and access granted per programme rather than per role. Cross programme visibility requires a release of information that is itself a record with a scope, a date range and an expiry the system enforces. Then go through the side doors explicitly during design: what a notification may contain, what an export contains and who is told about it, what appears in a web address, and what search reveals when it finds nothing. A developer who has thought about this answers immediately and specifically.

What goes wrong when you migrate existing client records?

Most agencies arrive at a build carrying two versions of the same work: an identified record that advocates actually use, and a de identified extract assembled at report time. They were built by different people, at different times, from the same underlying reality, and they do not agree. Migrating both is how you carry the disagreement forward into a system that was supposed to end it.

The specific problems are consistent. The same survivor appears more than once because she returned after a gap and was entered again, and merging those records is a judgement call with safety implications rather than a deduplication script. Consent and release records frequently do not exist in structured form at all, so there is nothing to migrate that would justify cross programme visibility in the new system, and importing history without them creates access that no one has agreed to. Historical service entries were recorded against service definitions that have since changed, so counting them under current definitions produces numbers that will not match what you reported at the time.

What works is a deliberate line. Bring forward the people you are currently serving, with their programme participations, open safety plans, current consents and open referrals. Keep historical data in a read only archive with the same access controls, reportable in its original definitions. Then start the new reporting series from a stated date rather than backfilling, and tell your funders. Backfilled numbers that quietly disagree with previously submitted reports are a far bigger problem than a clean break.

Why do funder reporting exports break after they are built?

The report is built against the template your state administering agency published during the project, it passes, and then the template changes. A field is added, a service unit definition is tightened, an age band is split. The export still runs and still produces a file, and the file is now wrong in a way that only surfaces when a programme officer questions a figure.

The other recurring break is deduplication. When the same person receives shelter and legal advocacy, how they should be counted differs by funding stream and sometimes by report. Agencies handle this with a judgement made afresh each quarter by whoever assembles the report, which means the same underlying data yields different totals depending on who did it. That is not a reporting error so much as an absence of a defined rule.

The fixes are practical. Treat report definitions as configuration with an effective date, so a definition change is a versioned edit rather than a developer ticket, and so a report run last year still reproduces last year's numbers. Make the deduplication rule an explicit, named, documented rule in the system rather than an act of interpretation. And build lineage: every figure on a report must be traceable back to the constituent records by someone with the right access. When a funder queries a number, that lineage is the difference between an hour of work and rebuilding a quarter.

What happens when hotline and anonymous contacts are not properly covered?

Crisis line work is usually the largest volume of service an agency delivers and the worst captured. The reason is almost always the same design flaw: the system requires a client record before a service can be logged. Advocates faced with that requirement create phantom records, using placeholder names or initials, because they are on a call and need to record it.

That produces three problems at once. Your service counts become unreliable, because phantom records are inconsistently created and inconsistently reused. Your client population is polluted with entries that are not clients, which distorts every report built on it. And you have created identifying fragments about people who never consented to be in your system, which is precisely the outcome the confidentiality rules exist to prevent.

The fix is a contact log that stands on its own. It takes seconds, requires no client record, and captures call type, presenting issues, referrals given and duration while the advocate is still on the call. Anonymous is the default rather than an option. Where a contact later becomes a client and consent exists, the two can be linked, and that link is a deliberate act with a record rather than a side effect. The same thinking applies to unmet requests, which belong in the system without requiring you to create a client who is not one.

Should you build custom or configure what you already own?

If you are a single agency running one shelter and one advocacy programme, buy, and we would tell you that in a first meeting. Osnium is built specifically for this sector and understands the shape of victim services reporting. Apricot by Bonterra is a broader nonprofit case management platform with wide adoption and real configurability. Either costs a fraction of a build, and the difference is better spent on advocates. A small custom project on the budget an agency of that size can realistically find will be worse than the product you already have.

Before commissioning anything, test whether your complaint is capability or configuration. A great deal of what agencies blame on their software is a service definition that was never set up to match the funder's, or an export nobody has revisited since the template changed. Both are fixable inside a configured product by someone who knows it, and the fix costs a fraction of a build.

The build case is real in three situations and thin outside them. A state coalition funding one system across member agencies, where one system serving fifteen agencies costs far less per agency than fifteen licences plus fifteen sets of workarounds. A large multi programme agency running shelter, transitional housing, legal advocacy, child services and a hotline, where the walls between programmes are structural rather than a permission. And an agency whose funder reporting has outgrown configuration, where the quarterly spreadsheet rebuild has become an institution with an owner and a calendar entry.

How do hidden costs get into the quote?

The first is report count. Each distinct funder format is real work, and agencies routinely list two and discover five once state overlays and private funders are counted. Ask for a per report figure and a named list, and ask what happens when a template changes after launch.

The second is security work, which should be deeper here than in most projects and is frequently quoted as one line. Encryption at rest and in transit, access logging, penetration testing before go live, and a rule that no real client data enters a development environment all cost time, and the last of those means someone has to build realistic synthetic data.

The third is accessibility and language. Your clients and your staff are not uniform, and a system that only works in English excludes people who need it. Translation, right to left support where relevant, and genuine screen reader compatibility are scope, not polish.

The fourth is offline capture if advocates work in courthouses and hospitals, which is real engineering rather than a setting. The fifth is multi agency deployment, where serving member agencies with different practices demands a level of configurability that is usually the largest single cost driver and is usually discovered after the first two agencies onboard.

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

The report is derived from the records advocates create in the course of their work, with de identification applied at the reporting boundary rather than by keeping a parallel file. The moment a separate de identified dataset exists, you are back to two versions of the truth and a week of reconciliation every quarter.

Bed availability is modelled as a real constraint rather than a count. An advocate taking a hotline call at two in the morning needs to know whether a family of five with a dog can be accommodated tonight, and that depends on unit composition, household size, the gender of household members, accessibility needs and whether two households can safely be placed near one another. A number on a dashboard does not answer the question, so staff keep a whiteboard, and the whiteboard becomes the real system.

The confidentiality behaviour is trained, not just built. Staff need to understand why a notification contains no name, why an export is logged, and what a release of information actually authorises. Systems that are technically sound and behaviourally misunderstood get worked around by people acting in good faith under pressure.

And there is a documented answer, agreed with your counsel and your state coalition, for what happens when a subpoena or court order arrives, with the system able to support it. That is a legal question rather than a technical one, and a developer who says so while describing what the system must support is giving you the right answer.

Research & sources

The evidence behind this guide

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

  1. Median SaaS spend reached $9,455 per employee, and organizations leave an average of 36% of their SaaS licenses unused. Source: Zylo (2026) →
  2. The average developer spends more than 17 hours a week dealing with maintenance issues such as debugging and refactoring, and about four of those hours on 'bad code' - waste that equates to nearly $85 billion annually worldwide in opportunity cost. Source: Stripe (2018) →
  3. Across more than 5,400 IT projects studied by McKinsey and the University of Oxford BT Centre, large IT projects ran on average 45% over budget and 7% over schedule while delivering 56% less value than predicted. Source: McKinsey & Company / University of Oxford (BT Centre for Major Programme Management) (2012) →
  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) →
Parth Srivastav · General Manager · Delhi

As General Manager, Parth connects commercial decisions to what the delivery teams can realistically build. Scope, pricing structure, team shape and account health all cross his desk. His writing is useful for anyone trying to work out what a software project should cost and why.

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

FAQ

Frequently asked questions

Why can we not just use the community homeless management information system?
The confidentiality provisions attached to VAWA and VOCA funding prohibit victim service providers from entering personally identifying information about survivors into shared databases, including a community homeless management information system, which is why providers run a comparable database instead. The rules also restrict sharing identifying information without informed, written and reasonably time limited consent. Confirm how they apply to your specific funding streams with your state coalition and your counsel, since state overlays and interpretations vary.
How do we stop keeping two sets of client records?
Derive the funder report from the same service records advocates create during their work and apply de identification at the reporting boundary. Each service entry should carry the programme, funding source, service type mapped to your funder's definitions and unit measure, so every reported figure traces back to constituent records for someone with the right access. Once a separate de identified dataset exists, the two drift apart and you spend a week each quarter reconciling numbers nobody can explain.
What does confidentiality by design mean in practice?
That the walls live in the data model rather than in permission settings. One client record with programme participation records attached, access granted per programme, and cross programme visibility requiring a release of information that carries a scope and an expiry the system enforces. It also means the side doors are closed deliberately: notifications carry no identifying content, exports are logged and watermarked, web addresses carry no client reference, and search does not confirm that a person exists to someone without access.
How should hotline calls be logged if the caller is anonymous?
With a contact log that stands alone, requires no client record, and captures call type, presenting issues, referrals given and duration in seconds while the advocate is still on the call. Systems that demand a client record before any service can be logged push staff into creating phantom records, which corrupts your counts and creates identifying fragments about people who never consented to be in your system. Where a contact later becomes a client and consent exists, linking the two should be a deliberate act with a record.
Is Osnium or Apricot enough for our agency?
For a single agency running a shelter and an advocacy programme, almost certainly, and the difference in cost is better spent on advocates. Osnium is built for this sector and Apricot is a widely used configurable platform. Before commissioning anything, check whether your complaint is capability or configuration, because a great deal of what agencies blame on software is a service definition that was never matched to the funder's or an export nobody revisited after the template changed.
What breaks in funder reporting after the system goes live?
Template and definition changes, almost always. A field is added, a service unit definition is tightened or an age band is split, and the export still runs and still produces a file that is now quietly wrong. Treat report definitions as configuration with an effective date so a change is a versioned edit rather than a developer ticket, and so a report run for last year still reproduces last year's numbers. Make the deduplication rule for people served in two programmes explicit rather than a judgement someone makes each quarter.
What gets underestimated most in a shelter software quote?
Report count first, since agencies usually list two funder formats and discover five once state overlays and private funders are included. After that it is security depth, which should include penetration testing before go live and a rule that no real client data ever enters a development environment, which in turn means someone has to build realistic synthetic data. Accessibility and language support, and offline capture for advocates working in courthouses, are the other two that get treated as polish rather than scope.
How should shelter bed availability be modelled?
As a constraint rather than a count, because availability depends on unit composition, household size, the gender of household members, accessibility needs, pets and whether two households can safely be placed near one another. An advocate on a night time call needs that answer in seconds. If the system only shows a number, staff will keep a whiteboard and the whiteboard becomes the real system. Waitlist and unmet request logging belong in the same place, since turn aways are both a reporting element and your evidence when asking for capacity.
Should we build our internal tool in Retool instead of hiring developers?
Retool is the right choice if someone on your team is comfortable with SQL and JavaScript and the audience is a handful of technical users, because a basic CRUD dashboard comes together in days. Hire developers when non-technical staff will use the tool daily, when the logic goes beyond forms sitting on a database, or when per-seat pricing stings, since Retool's Business tier lists at $50 per standard user per month. A pattern Digital Heroes sees often: companies arrive after a year on Retool with a tool nobody can maintain because the one person who built it has left.
What should I prepare before contacting an agency about an internal tool?
Bring the spreadsheet or document you run the process on today, a list of everyone who touches the workflow and what each person does, and one sentence describing the outcome you want. You do not need wireframes or a technical spec; a 30-minute screen-share of the current process beats a 20-page requirements document. Decide your rough budget band and name a single internal decision-maker, because projects without one take noticeably longer in Digital Heroes experience.
What does an internal tool cost for a small business with 20 to 50 employees?
Plan on $5,000 to $15,000 for a focused tool that replaces one painful spreadsheet workflow, such as job scheduling, quoting, or PTO tracking. In Digital Heroes projects at this size, the sweet spot is one core workflow, two or three user roles, and a single integration, usually QuickBooks or Google Workspace. Quotes far below $5,000 usually mean a template with your logo on it rather than software built around your process.
What are the most common mistakes companies make when building internal tools?
The three failures Digital Heroes sees most: building for every department at once instead of nailing one workflow, designing without the end users so staff quietly go back to their spreadsheets, and leaving no named owner after launch so small bugs pile up until the tool dies. A subtler fourth is faithfully recreating the old spreadsheet, including its workarounds, instead of fixing the process first. Start with one team's most painful workflow and put the actual users in the room from week one.
How many developers does it take to build an internal tool?
Two to four people covers nearly every internal tool: one or two developers, a part-time designer, and a project manager who doubles as your single point of contact. Internal tools rarely need consumer-product polish, so a full-time dedicated designer is usually wasted budget. On Digital Heroes projects, a two-person core team handles the typical 4 to 8 week build, with a specialist pulled in briefly for a tricky integration or a security review.
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.
How long does it take to build a custom web or mobile app from scratch?
Plan on 8 to 16 weeks for a focused first version and 4 to 9 months for a larger platform, which is the typical spread across Digital Heroes builds. The first 2 to 3 weeks go to discovery and design before any production code ships. The two things that stretch timelines most are integrations with legacy systems and slow feedback from your side, not developer speed.
What does it cost to keep an internal tool running after launch, and do we need to hire a developer?
Budget 15 to 20 percent of the build cost per year, so a $25,000 tool runs roughly $300 to $400 a month covering hosting, security patches, dependency updates, and small tweaks, figures drawn from Digital Heroes maintenance contracts. You do not need an in-house developer; a monthly retainer with the agency that built it covers the typical internal tool comfortably. Hosting itself is cheap for internal audiences, often $20 to $100 a month, because you serve dozens of users rather than the open internet.
Should I hire a freelancer or an agency for my software project?
A skilled freelancer is the right call for a single-discipline scope under roughly $15,000, like a website, a plugin, or one integration. Above that, projects need design, backend, testing, and project management at once, and a solo builder becomes the single point of failure: if they get sick or take a bigger client, your project simply stops. Agencies bill 20-40% more per hour but carry continuity, code review, and someone to escalate to, which is what you are actually buying.
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?