Skip to main content
<- back to archive
custom softwarecostbusiness strategybudgetingsmall business

Rob Behbahani4 min read

Ask five shops what custom software costs and you'll get five ranges wide enough to drive a truck through. That's not evasion, it's that "custom software" describes both a two-screen internal tool and a customer-facing platform with payments. Nobody prices "a vehicle."

So instead of a fake range, here's the thing agencies rarely show you: the actual dials that move a quote up or down. Learn these and you can read any proposal, ours or anyone's, and cut your own cost before the first call.

Dial 1: Integrations (the biggest one)

The single largest cost driver is how many other systems your tool has to talk to, and how cooperative they are.

  • A standalone tool with its own data: cheapest.
  • Pulling from tools with clean modern APIs (Stripe, HubSpot, Google Workspace): moderate.
  • Wrestling with legacy systems, tools with no API, or "we export a CSV from this 2009 desktop app": this is where budgets go to grow.

Each integration is authentication, error handling, rate limits, and keeping data in sync when the other side changes. Two integrations aren't twice the work of one, the interactions between them compound. When we scope a build, the integrations list is the first thing we pressure-test: which connections earn their cost on day one, and which can wait for version two.

Dial 2: Who logs in

An internal tool your team uses on trust is one tier. Add roles and permissions, sales sees this, accounting sees that, and you've added a tier. Open it to customers or vendors with a portal, password resets, and data isolation between accounts, and you've added another.

None of this is exotic, but each ring of users adds real surface area. The cheapest version of your tool is the one where everyone who logs in works for you.

Dial 3: The data you already have

Greenfield tools start clean. Most businesses don't get that luxury, there are six years of records in the old system, and they're coming along.

Migration cost scales with mess, not volume. A million clean rows import in an afternoon. Fifty thousand rows where phone numbers live in three formats and half the "unique" customers are duplicates? That's detective work. If your current data is chaos, budget for the cleanup, or accept a hard cutover date where the old system becomes read-only history. (Chaotic data is usually a symptom worth fixing anyway, we've written about why CRM data goes bad.)

Dial 4: Polish depth

Internal tools can be plain. Fast, correct, unstyled. Customer-facing tools carry your brand and need to survive first impressions.

The trap is paying customer-facing polish prices for an internal tool. If only your ops team sees it, spend the budget on the workflow, not the gradient.

Dial 5: The invisible 20 percent

Every proposal has line items that look skippable and aren't: error handling, backups, security review, deployment setup, documentation. Cutting these doesn't make the software cheaper, it moves the cost to a 2 AM phone call six months later. If a quote looks dramatically lower than the others, this dial is usually where the difference is hiding.

How the delivery model changes the math

Here's what's changed in the last two years: AI-assisted builds have collapsed the typing part of development. Our own pipeline uses AI build agents working from a human-written spec, with human review on every line, here's exactly how that works. The effect on cost is direct: the hours compress, and what you're paying for concentrates in the part that always mattered, understanding your workflow and making the right architecture calls.

It also changes the SaaS comparison. The old argument against custom was "sure, you own it, but it costs 10x a subscription up front." When a build ships in days instead of quarters, the crossover point where owning beats renting moves way, way closer. We've run that math in detail, for a lot of small-team workflows, the custom build now wins inside the first year.

How to keep your own build lean

Practical moves that lower the number before anyone writes code:

  1. Cut the integration list to what day one needs. Every "while we're at it" connection is a dial turn.
  2. Start internal. Prove the workflow with your team before adding a customer portal ring.
  3. Bring describable process, not a wishlist. "Here's our current Airtable base and where it breaks" scopes tight. "Something like Salesforce but simpler" scopes wide. (If you're on Airtable now, that base is your spec.)
  4. Decide the data question early. Migrate, or archive-and-cut-over. Deciding late is the expensive version.
  5. Ask what's in the invisible 20 percent. A shop that itemizes error handling and support is quoting the real project.

The only number that matters

Quotes are inputs. The decision number is total cost over three years: build cost once, versus subscription stack times 36 months plus the hours your team spends working around the tools you rent. Run that comparison honestly and the answer usually stops being close.

Every build is different, which is why we quote per project after a scoping call instead of publishing a price sheet. But walk in knowing your dials, integrations, users, data, polish, and you'll get a tighter quote from anyone you talk to, including us.

// end of transmission

Want something like this built for your business?