Fixed bids, two weeks at a time — how we price custom work without anyone getting burned

Every custom-software horror story starts with a contract shape, not a bad programmer. How we work — three ways in, fixed prices always, contingency stated instead of hidden — and why two-week fixed sprints are the shape where the buyer and the builder finally want the same thing.

Every custom-software horror story you've heard from another shop owner — the two-year project, the doubled budget, the system that never shipped — starts in the same place, and it isn't a bad programmer. It's a contract shape that made the buyer and the builder want different things.

This post is how we work, written down. Not because our way is the only way, but because once you see why it's shaped like this, you'll know what to demand from anyone you hire — including us.

Start smaller than you think: the three ways in

The biggest pricing mistake in this industry happens before any price is quoted: scoping the project as "replace the system" when the pain is actually three specific places where the current setup bleeds.

1. Connect what you already have. This is the highest return per dollar we know of, and it's where most engagements should start. The Access database, QuickBooks, the label printer, the scheduling spreadsheet, the inbox where orders arrive — they all work; they just don't talk. Making them talk is days-to-weeks of work, not months. And this is where AI earns its keep in a shop, quietly: reading the inbound POs and drawings that a person currently retypes, drafting the quote for a human to approve, flagging the order that doesn't look like the last hundred. No rip-and-replace, no migration, no one retrained. The systems you have, minus the retyping between them.

2. Off-the-shelf, halfway. Sometimes the honest answer is a package. Where your shop is standard — books, payroll, shipping — buy the standard thing; it's cheaper than anything anyone can build you. Custom work then goes only where you aren't standard: the pricing logic, the weird routing, the connective tissue the package refuses to handle. A good builder will tell you which half is which, even though it shrinks the invoice.

3. Build from scratch. Real, sometimes right, and almost never step one. From-scratch is earned — after connected tools and honest middles have proven out, or when your workflow is so much your own that nothing off the shelf survives contact with it. If a builder's first proposal is a ground-up rebuild, ask what they tried to talk you out of.

Fixed bids — and the contingency nobody talks about

Whichever way in, we price it the same way: a fixed bid. You know the number before work starts, and the number doesn't move.

We think fixed is right for both sides, and not for the obvious reason. Yes, it caps your cost. The deeper effect is on the builder: a fixed price forces us to actually understand the work before quoting it. Time-and-materials lets a builder defer that thinking onto your invoice — every surprise is billable, so why look hard for surprises up front? A fixed bid moves the risk of surprises onto us, which is exactly where the incentive to prevent them belongs.

But moved risk doesn't vanish, and here's the part of fixed-bid pricing that rarely gets said out loud: every honest fixed bid contains a contingency. A cushion for the unknowns. Ours do. So does every fixed quote you've ever received — the only question is whether it's stated or buried. There is nothing wrong with contingency; it's the fair price of handing your risk to someone else. What's wrong is pretending it isn't there.

Why two weeks is the magic number

Now the lever that makes all of this cheap instead of expensive: contingency grows much faster than scope.

Fix the price on a year of work and you're asking the builder to absorb a year of unknowns — every requirement that will drift, every integration that will surprise, every assumption that will die on contact with the real shop floor. Priced honestly, that cushion is enormous. This is the real reason big fixed-bid projects cost what they cost: you aren't paying for more software, you're paying for more not-knowing. (And when a bidder's cushion isn't big enough, you get the other horror story: the builder starts drowning, quality is the first thing thrown overboard, and the fixed price gets renegotiated from the bottom of the sea.)

Fix the price on two weeks of work and the unknowns are two weeks deep. The cushion shrinks toward zero. And at the end of those two weeks, everything just learned gets priced into the next bid instead of guessed at a year in advance. The uncertainty premium you'd have paid up front simply never gets charged, because the uncertainty keeps getting retired before it can compound.

So: fixed-bid sprints. Each one quoted before it starts, each one committed to a measurable outcome — an order desk that's live, a pricing engine that reproduces last year's invoices, a scanner station the floor actually uses. Deployed software you can click, every two weeks, or the sprint didn't count.

Contract shapeYour riskBuilder's riskWho wants what
Time & materialsUnbounded budgetNoneBuilder paid to discover problems slowly
One big fixed bidDeath-march quality, renegotiationA year of unknownsBoth sides praying the guess was right
Fixed two-week sprintsTwo weeks, cappedTwo weeks, survivableBoth sides want the sprint to ship

That last cell is the whole argument. Under fixed sprints, the buyer and the builder finally want the identical thing: this small promised outcome, delivered, in fourteen days. Aligned incentives beat clever contracts every time.

Where every engagement starts

The first sprint is always the same and it's the cheapest risk reduction either side will ever buy: discovery. A short, fixed, known price to take your current setup apart — data, systems, the folklore in people's heads — and hand you a written plan with real numbers attached. The plan is yours either way; execute it with us, with someone else, or not at all. Nobody should quote you a big number, us included, before someone has done this — a big bid on an unexamined shop is just a big contingency with your name on it.

And before even that: a conversation that costs nothing, where the honest answer might be "buy the package" or "your Access database needs a backup, not a consultant." Two of the three ways in barely involve us. That's on purpose — filtering ourselves out of the wrong jobs is cheaper for everyone than winning them.

The takeaway, whoever you hire: demand fixed prices. Ask where the contingency lives — anyone who says "there isn't one" has hidden it or hasn't thought. And never buy more than a few weeks of promises at a time from someone who hasn't yet shipped you anything.

Dan Gray · Rivlet — custom manufacturing software. Shop system dying? Start with the free honest read.

← All Shop Notes