Construction, Fit-out & Manufacturing

Construction, fit-out and manufacturing, costed per project

Estimation to progress billing, with MRP, planning and contracts connected.

The challenge

Estimation, fit-out, procurement and in-house manufacturing ran on disconnected, largely manual processes. Progress billing and retentions were error-prone, and true project margin only appeared after the fact.

What we built

One platform, end to end.

Estimation & tenderingAccurate quotes built from a live cost library
Project planningPhases, milestones and resources on one schedule
Progress billingInvoice by completion, retentions handled
ContractsClient and subcontractor contracts tracked end to end
Manufacturing (MRP)Work orders and material planning for in-house production
Project costingCommitted vs actual cost, live per project
How we helped

What changed for the team.

Estimates, budgets and actuals on one thread, per project
Progress billing and retentions run to a schedule, not a scramble
MRP ties manufacturing to real project demand
Margin and progress are visible in real time, not at close
How it works

What actually shapes a construction build.

Progress billing is the hard part, not the estimate

Most construction projects can be quoted in a spreadsheet. What a spreadsheet cannot hold is the month after: certified percentages, retention held per contract, variation orders approved at different rates, and an invoice that has to reconcile to all three. In Odoo this runs on the project and its analytic account, so a certificate raised against completion writes to the same cost object the purchase orders and timesheets already post to. The invoice stops being a re-keying exercise.

Committed cost is what tells you the margin, and it is the number nobody has

Actual cost arrives late, when the supplier invoice does. Committed cost, the value of purchase orders raised but not yet invoiced, is what tells you where a project is heading while you can still act. Odoo shows both against budget on the same project, which is usually the first time a commercial team sees a live margin rather than one assembled after close.

In-house manufacturing has to answer to the project, not the warehouse

Joinery, metalwork and fit-out production create a second planning problem: work orders that exist because a project needs them on a date. Running MRP against project demand rather than replenishment stock keeps that link, so a slipped site date reschedules the shop floor instead of quietly building inventory nobody asked for.

Common questions

Questions we get about this work.

Does Odoo handle progress billing and retention?

Yes. Invoices can be raised on percentage of completion against a project, with retention held per contract terms and released on the schedule the contract sets. Because the project carries an analytic account, the certificate reconciles against the costs already posted to it rather than being assembled separately.

How are variation orders handled?

As additions to the project scope carrying their own approval and their own rate, so the original contract value and the approved variations stay separately visible. The distinction matters at final account, which is exactly when a system that merged them becomes a problem.

Can manufacturing and project delivery run on the same database?

Yes, and for fit-out contractors it is usually the reason to move. MRP work orders can be driven by project demand rather than stock replenishment, so production is scheduled against site dates and the same cost lands on the same project.

What about subcontractor certificates and back-to-back terms?

Subcontractor commitments are purchase orders against the project, so their certified values and retentions sit beside the client-side ones on the same margin view. That is what makes back-to-back terms checkable rather than a matter of trust.

Let's talk

Run something similar?

Tell us where your operations stand today, and we will map the path to a system that lasts.

Book a discovery call