Blog
Reconciling a construction proposal that grew three times
We needed a retaining wall built. It started with a budgetary number, the kind you get early to find out whether a project is a project at all. By the time a formal contract arrived, the price had moved up three separate times.
Each increase had a reason attached. The reasons were not obviously unreasonable — engineering came back, the design got revised, scope was clarified. But they arrived weeks apart, in different emails, each one asking me to accept a new total on the strength of a paragraph. And an email thread is a terrible place to hold an argument: every message re-opens a fragment, nobody can see the whole shape, and the person with the most recent message wins by default.
So I stopped replying and built a page instead.
One page, shared, password-gated
It is a single self-contained HTML file behind a password, written with an AI agent in an afternoon, and its title sets the tone: reconciling the proposal — together. Not a complaint. A reconciliation, laid out so either side can check it.
The structure turned out to be the whole value:
- A timeline. Every drawing, estimate, proposal and email in date order. Half of the confusion in a negotiation like this is simply not agreeing on what was sent when.
- Each increase, walked separately. One section per step, each answering the same question: what changed between these two versions, and does the price move match the change?
- A cross-check on the rate card. Their own published rates, multiplied out.
- The contract terms. The risk-allocation clause, the temporary easement, the time-and-materials carve-out for hillside shoring, and a typo in the payment terms.
- A short, specific ask at the end.
What I would tell anyone facing a big proposal
Separate scope changes from price changes. A bigger wall costing more is a completely different event from the same wall costing more, and quoting a single new total collapses the two. Insisting on the distinction, politely, in writing, is most of the work.
Ask what changed in the drawing. Proposal versions should diff like code. If v2 costs more than v1, something in v2 is different — more material, more excavation, a new engineering requirement — and it should be nameable. "Updated pricing" is not a change; it is the absence of one.
Treat the rate card as a hypothesis you can test. Contractors publish hourly rates and unit prices. Multiply them out against the work actually described and see whether the total implies a plausible number of crew-days. When the implied answer is not plausible, you are no longer arguing about whether a price feels high — you are asking about a specific arithmetic gap, which is a much better conversation.
Read the risk-allocation section. This is where the real money lives and it is the part nobody reads. Who carries differing site conditions? What is carved out as time-and-materials, billed at whatever it takes? Who is responsible if the neighbour's easement falls through? A fixed price with three open-ended exceptions is not a fixed price.
End with an ask. A document that only catalogues grievances leaves the other party with nowhere to land. Mine finished with a short list of specific, gettable things, which is what turned a pile of objections into something signable.
Why a web page and not a letter
Because a page can hold the evidence next to the argument. Every claim sits beside the drawing, email or rate line it came from; the sections can be read in any order; and the other side gets a link rather than an eleven-page PDF attachment they will skim on a phone. It also forced me to be precise — it is uncomfortable to write a number down on a page you are about to share with the person who quoted it, which is exactly the discipline you want.
This one stays behind its password, and I have left the company, the people and the figures out of this post deliberately: the technique is the transferable part, not my invoice. If you are staring at a proposal that has quietly grown three times, build the timeline first. The argument gets much simpler once everyone is looking at the same page.