Choosing a partner

In-house vs agency vs freelancer for building software

EdgeBrain Studios9 min read

Three thresholds decide this, and none of them is an hourly rate. Under roughly six weeks of engineering work, hire a freelancer or a specialist contractor, because an agency’s fixed scoping and onboarding cost eats the difference before anyone writes code. Between six weeks and about nine months, on a project with a defined endpoint that is not your core product, an agency is usually the cheapest route to a working system. If the software is the company, the thing customers pay for and still changing in three years, hire in-house. Start the search now even if an agency bridges the first quarter.

Below is the arithmetic behind them, itemised so you can replace the assumptions that are wrong for your market.

Compare cost per delivered engineering week, not hourly rate

Rates are not comparable across these models, because they cover different amounts of work. A salary buys calendar time, not delivery time. An agency rate folds in project management, code review, QA and release plumbing. A freelance rate has none of those, and somebody on your side does them unpaid. So normalise to one unit: what does a week of shipped engineering cost, and when does the first one arrive. Two inputs produce it. The total cost of owning the team, and the share of paid capacity that converts into delivered work. The second is where the models diverge, and it’s the one every comparison table omits. Every figure below is our own estimate from practice, not a published survey.

The in-house column, itemised

One senior full-stack engineer in the United States, measured across twelve months from the day you decide to hire rather than from their start date. That distinction carries most of the answer.

Year-one line itemEstimate
Base salary$145,000
Employer burden: payroll taxes, health premium, retirement match, statutory insurance, laptop, per-seat software$38,000
Recruiting, at a contingency fee of 20% of first-year base$29,000
Ramp (six weeks at roughly half output)$10,500
Management, four hours a week of a lead at $100/hr$20,000
Total, year one≈ $242,000

Doing the recruiting yourself doesn’t remove the cost. It converts into 60 to 100 hours of your team’s time, which isn’t free, only invisible. Now the denominator. Six to twelve weeks from job description to signed offer, plus a two to eight week notice period. Call it fourteen weeks before day one, leaving about 38 employed weeks in that first year. A solo engineer with no team around them converts roughly 55 to 70 percent of their hours into feature work; the rest is meetings, dependency upgrades, incidents, and waiting on decisions only you can make.

Thirty-eight weeks at 62 percent is about 23.5 delivered engineering weeks for $242,000, or roughly $10,300 per delivered week in year one, with the first one landing in month four. Year two inverts it: no recruiting, no ramp, less management, about $183,000 for roughly 27 delivered weeks, or $6,800 per delivered week from someone who now knows your domain. In-house is expensive to start and cheap to continue, and that shape is the whole decision.

The agency column, and where our own bias sits

Agency rates split by geography far more than by quality. What one full-time-equivalent costs per delivered week at 40 billed hours:

BandRatePer delivered week
Onshore (US, UK, Western Europe)$120–$220/hr≈ $7,800 at $160
Nearshore (Latin America, Poland, Romania, Portugal)$55–$100/hr≈ $3,650 at $75
Offshore (South Asia, South East Asia)$30–$65/hr≈ $2,200 at $45

We’re in that third band, in Lahore, so read every number above knowing the comparison flatters us. The rate isn’t the interesting part anyway. Conversion is. A functioning agency bills 35 to 40 hours a week per allocated person and turns 80 to 85 percent of it into your work, because management, review, QA and release sit inside the rate rather than being borrowed from your calendar. That gap is what you’re buying.

Against it, every agency carries a fixed cost per engagement: discovery, scoping, environment setup, learning your domain, contracting, handover. Twenty-five to fifty hours regardless of project size. On a 1,200-hour build that’s two to four percent. On a 240-hour build it’s ten to twenty, which is where the first threshold comes from. For the same arithmetic on a specific brief, we took it apart in what building an MVP actually costs.

Why an agency is the wrong answer under six weeks

Six weeks is roughly 240 engineering hours. Below that line an agency’s fixed overhead is a large enough share of the project to erase whatever their process was going to buy you. You fund a ramp on a job that finishes before the ramp does. It’s worse on their side, which is useful information. Sales and contracting are fixed per engagement, so a shop that takes a two-week job eagerly either has a bench sitting idle or will staff it with whoever is between projects.

Hire a specialist contractor instead, someone who has done that exact thing before. A Stripe billing integration, a Shopify app, a migration off a specific framework version. Expect $80 to $150 an hour and pay it without flinching. You buy far fewer hours and no ramp, because their whole value is having already made every mistake this job has on offer.

One case runs the other way. When small work sits inside a system nobody can safely touch, a payments flow or an auth boundary or anything where one bad week costs you customers, buy the process rather than the hours.

A freelancer’s rate is low because you took the project management job

This is the transfer nobody prices, and it stays invisible until it fails. A solo freelancer at $80 an hour delivering 30 productive hours a week invoices $2,400. To keep those hours productive, somebody on your side writes the specs, answers ambiguous questions inside a day, reviews the pull requests, tests each increment and decides what happens next. Four to eight hours a week. Price your own time at $100 an hour and the real cost is $2,800 to $3,200, an effective rate of $93 to $107, paid partly in the only currency you can’t buy more of.

Often that’s still the right trade; early on a founder should be close to the product anyway. It stops being right at two points. The first is when you stop having the hours. The week you’re raising, hiring or closing a large customer is the week the specs get thin, and thin specs are how a freelance engagement becomes three months of the wrong thing, discovered at the demo.

The second is scale, and it isn’t linear. Nobody is paid to make two freelancers’ work fit together, so the integration is yours and it arrives as a surprise. Three people on one codebase with no technical lead produces three architectures. If your instinct is to add a second freelancer to go faster, you’ve crossed into needing a team, which is what an agency or an in-house lead sells.

Bus factor of one, and how to actually close it

The freelancer risk is not that the person disappears. Most don’t. The knowledge disappears with them, because it was never written down anywhere else. What goes missing, roughly in order: the deploy step that exists only in someone’s shell history; credentials in a personal password manager; the Vercel or Supabase project on a personal account; the domain registered to their email; the undocumented environment variable the app will not boot without. Close it with conditions in the engagement rather than with trust.

  • Every repository in your GitHub organisation from the first commit. Transfers at the end don’t happen, so don’t plan one.
  • Every cloud, DNS and third-party account under your billing identity, contractor invited as a member. Test it by revoking their access for an hour.
  • Deployment in CI. If shipping needs a specific human running a command on a specific laptop, you do not own the software yet.
  • A README that takes a stranger from clone to a running local environment in under thirty minutes. Verify it by having someone else follow it, not by reading it and nodding.

The cheapest test: ask them to take a week off in month two. If nothing can move while they’re away, you have a bus factor problem today. You just haven’t been billed for it yet.

The agency failure mode: staffed with whoever is free

The senior engineer from the pitch deck who appears on the kickoff call and is never seen again is a real pattern, and a preventable one. It happens structurally rather than dishonestly. Agencies optimise for utilisation, and a shop above 85 percent billable has no slack, so when their largest account expands the slack comes from the smallest, newest client on the roster. That’s you. Four questions before signing tell you more than any portfolio does.

  • Which named individuals are on this, and what percentage of their week? Put names and allocation in the statement of work, with a right to refuse substitutions.
  • What’s your target utilisation? Above 85 percent means no slack, and your project is where slack gets taken from.
  • Can we see the commit history of a finished project? Screenshots won’t do. History shows review culture, test discipline, and whether one person wrote everything.
  • What does handover contain? A shop that can’t show you a real one has never written one.

Across time zones these failure modes compound, which we wrote up in how to work with an offshore development team, from the offshore side of the table. The five case studies on our work pageare labelled for what each one is: two products we own and run, and three builds done for clients, one of whom we name and two we don’t because they asked. Demand that specificity from anyone.

Staff augmentation is a fourth column, and it fails in one way

Staff augmentation rents you individual engineers who work inside your process: your sprint, your code review, your standup. An agency rents you a team and a process. Different products, similar rates, endlessly conflated.

It works when you have engineering leadership and a functioning process and are short only on throughput. Two experienced engineers dropped into a team with a strong tech lead is the fastest legitimate way to add capacity, and cheaper than an agency because you’re not paying twice for management you already employ.

It fails when there’s no lead. Without someone in-house owning architecture, review and priorities, staff augmentation is a freelancer with an agency markup and none of the agency’s project management, which is the worst of the four columns. If your answer to “who runs these people” is “I will, somehow”, buy the team or hire the lead first.

When you should hire nobody at all

These cost us work. They’re still true, and a studio unwilling to say them is one to read more carefully.

An internal dashboard for fewer than about twenty users, meaning CRUD over your own database with some filters and a couple of charts, should be Retool, Budibase, or an Airtable and Softr pair. A bespoke admin panel is three to five weeks of agency time and you inherit its maintenance forever. The tool costs a few hundred a year and someone non-technical can add a column without filing a ticket.

A marketing site under ten pages with no application behind it should be Framer or Webflow, and the budget should go to a designer rather than an engineer. Custom starts paying when you need programmatic pages at scale, real internationalisation, or an application boundary the CMS can’t cross. That’s the point where custom Next.js web development begins to make sense, and genuinely not before.

A workflow of under ten steps touching only SaaS products with existing connectors should be Zapier, Make, or self-hosted n8n. A custom AI automation buildearns its cost when volume, error handling, or an accuracy requirement breaks what a connector can express. The mere existence of a manual process isn’t enough.

And don’t build authentication, payments or search. Clerk, WorkOS, Stripe, Typesense, Algolia. Every hour reimplementing those rebuilds something maintained by a security team larger than your company.

The rule underneath all four: build custom when the off-the-shelf tool’s data model fights your domain, when your volume breaks its pricing curve, or when the thing is the surface you compete on. Otherwise rent it, and spend the engineering where it differentiates you.

The thresholds, stated plainly

  • Under six weeks. Specialist contractor, or an off-the-shelf tool.
  • Six weeks to nine months, defined endpoint, not core. Agency. This is the band where buying a process beats assembling one.
  • Ongoing, and the software is the company. In-house. Year one costs more per delivered week than any agency; year three buys domain knowledge nobody can sell you.
  • Tech lead in place, short on throughput. Staff augmentation.
  • No tech lead, and you can’t evaluate engineers. This is the real blocker, and no delivery model fixes it. Pay a technical advisor for the interview loop, or run an agency engagement and hire your first engineer out of the people who have already read your codebase.

Where we would rule ourselves out

We’re an agency in Lahore working with clients worldwide, which puts us in the offshore rate band and arranges every number above in our favour. Three cases where we’d tell you to go elsewhere.

Anything under about three weeks. Our sales and scoping cost more than the value we’d add. Hire the specialist contractor.

Anything where you already have a strong in-house team and a working process. You want staff augmentation or a direct hire, not a second delivery process running alongside the one you trust.

Anything needing daily live collaboration with a US West Coast team. Pakistan Standard Time is twelve hours ahead of Pacific, which leaves one overlap window and demands real asynchronous discipline: written decisions, recorded demos, specs that survive without a call. We’re good at that, and it’s still a cost. If your team pairs live every day, nearshore beats us. Better said now than found out in week three.

When the work genuinely is yours long-term, we build it properly and tell you to hire in parallel, so the handover goes to a person rather than a repository. Send us the scope and the deadline and we’ll name the column it belongs in, including the ones we don’t sell.

Got a version of this problem?

Send a paragraph describing what you’re trying to build and what’s currently in the way. We reply inside two working days with a scope, a price and a start date. If we’re not the right people for it, we say that instead.