What every construction proposal must include
1. Cover and identification
- Your company name, contact, and licence number
- Client name and the project or property address
- Proposal number and date so you can track versions and reference it later
2. Scope of work: inclusions AND exclusions
The most important part of the whole document. Describe the work you're doing in specific, plain language, and, just as importantly, state what you are not doing. Exclusions are the single field that prevents disputes: "price excludes permit fees, finish flooring, and any structural work uncovered during demo" stops the argument before it starts. Vague scope is where jobs go sideways and relationships sour.
3. Price: itemized or lump sum
State the price and be clear about its structure. An itemized breakdown (labour, materials, subs, markup) builds trust and justifies the number; a lump-sum figure is cleaner for the client but should still rest on a real, itemized takeoff behind the scenes. Either way, the number should come from actual cost data, not a gut-feel round figure.
4. Payment schedule and timeline
Lay out how and when you get paid (deposit, progress draws tied to milestones, final payment) and the expected start and completion dates. A clear payment schedule protects your cash flow, and a stated timeline sets expectations so "when will it be done?" is answered up front.
5. Assumptions, allowances, validity, and signature
List your assumptions (site access, existing conditions) and any allowances (a dollar figure carried for selections not yet chosen, like tile or fixtures). Add a validity or expiry date so a quote you priced in spring isn't held to you in fall. Finish with an acceptance signature and date, which is what turns a proposal into an agreement to proceed.
Proposal vs quote vs bid
These words get used interchangeably, but they aren't the same. A bid is a price you submit to compete for work, often against others. A quote is a firm price for a defined scope. A proposal is the fuller document that wraps the price in scope, terms, timeline, and the reasons you're the right contractor. If you're unsure which one the situation calls for, read estimate vs quote vs bid.
A free template to start with
You don't need to design this from scratch. A simple proposal template, whether a PDF, a Word doc, or a spreadsheet, with the fields above will get you sending professional proposals today and immediately beats a price texted with no scope attached. For a deeper checklist of what to put in the pricing, see what to include in a contractor bid.
Where a static template falls short
A template is a real step up from nothing, but a fillable PDF still has limits:
- You retype everything by hand. Client details, scope, and pricing get re-entered for every job.
- The pricing isn't tied to real cost data. You're eyeballing labour and material numbers instead of pulling from actual costs, so your margin is a guess.
- There's no clean path from accepted proposal to job. A signed PDF sits in a folder. It doesn't become your budget, so you re-key the whole thing again to actually run the work.
The template solves the blank-page problem. It doesn't solve the now-I-have-to-build-the-job-again problem.
From template to system
The next step up is a proposal that becomes the job. Instead of a static form, you build the proposal from real cost data, the client accepts it by link, and on acceptance it turns into the job and its budget, no re-keying. That's estimating handled as part of a connected estimating and bidding workflow rather than a stack of disconnected documents.
TradesMetrics builds each proposal from seed cost data, captures acceptance by link, and folds the accepted scope straight into the job and budget on its own. Start with a free template if you like, then see how the estimating hub removes the re-typing between winning the job and running it.
The fastest way to see the difference is to price a real job. Try the free estimating tool, then watch that estimate become a proposal, and the accepted proposal become a live budget, inside TradesMetrics.