How do I quote a project with sub-assemblies?
The short answer
Build the quote from the bill of materials up: cost each sub-assembly from its parts and labor, apply a target margin per sub-assembly using price = cost ÷ (1 − margin), and roll them into one assembly price. A $8,040-cost conference room package at 30% hardware and 45% labor margins quotes at $12,281. Show the assembly; hide the costs.
Start with the bill of materials, not the price
A sub-assembly is a group of parts and labor that you sell as one thing but cost as several. A conference room package is an assembly; the display, the audio and the control system inside it are sub-assemblies; the display sub-assembly is a screen, a mount and cabling. Companies that quote this way — AV integrators, machine builders, contractors, anyone who installs what they sell — get into trouble when they price at the top and hope the bottom works out. The fix is to cost every sub-assembly from its parts and labor first, then apply margin, then roll up. The buyer sees one number per assembly. You see every number underneath it.
Two rules make this work. First, the cost of a sub-assembly is everything it takes to deliver it — parts, the labor to install it and any freight or subcontract attached to it — not just the hardware on the invoice. Second, margin is applied per sub-assembly, not per project, because hardware and labor deserve different margins and blending them hides which one you are giving away.
A worked example, with the arithmetic
Take a single conference room with three sub-assemblies and an installation line. Costs are illustrative; the method is the point.
| Sub-assembly | Parts and labor | Cost | Target margin | Quoted price |
|---|---|---|---|---|
| Display | 75" display $1,800 · mount $120 · cabling $80 | $2,000 | 30% | $2,857.14 |
| Audio | Ceiling mic $950 · speaker bar $700 · DSP $550 | $2,200 | 30% | $3,142.86 |
| Control | Touch panel $1,100 · processor $700 | $1,800 | 30% | $2,571.43 |
| Installation | 24 hours × $85 | $2,040 | 45% | $3,709.09 |
| Assembly total | $8,040 | 34.5% blended | $12,280.52 |
The price on each row is cost divided by one minus the margin. The display sub-assembly is $2,000 ÷ (1 − 0.30) = $2,000 ÷ 0.70 = $2,857.14. Installation is $2,040 ÷ (1 − 0.45) = $2,040 ÷ 0.55 = $3,709.09. Add the four prices and the assembly quotes at $12,280.52 — round it to $12,281 on the document if you like, but keep the unrounded figure in the record. Gross profit is $12,280.52 − $8,040 = $4,240.52, which is 34.5% of the price. That blended number is what the finance side cares about, and it only comes out right because each row was priced separately first.
Now change one input. If the client wants a larger display and the hardware cost rises to $2,600, the display row becomes $2,600 ÷ 0.70 = $3,714.29 and the assembly becomes $13,137.67. Nothing else moves. That is the whole argument for sub-assemblies: a change to one component reprices the quote without anyone retyping the rest of it.
Margin is not markup, and the difference is money
The most common error in project quoting is applying a markup and calling it a margin. Markup is profit divided by cost; margin is profit divided by price. inFlow Inventory's guide gives the standard formulas and the example that makes the gap obvious: an item costing $18 and selling for $36 carries a 100% markup but only a 50% margin. On the display row above, a 30% markup gives $2,000 × 1.30 = $2,600, which is a margin of $600 ÷ $2,600 = 23.1%, not 30%. Across a $150,000 project that mistake is roughly $10,000 of profit you thought you had.
Decide once whether your company speaks in margin or markup, put that word in the quoting tool, and never let a rep choose. If the tool asks for a margin and the rep enters the markup they have in their head, every quote they write is under-priced by the same silent amount.
What the buyer should see
Show the assembly, hide the costs. A buyer needs to see "Conference room — display, audio, control, installation — $12,281" and, if they ask, the sub-assembly prices. They do not need to see that the DSP cost you $550, and a quote that exposes component costs invites a line-by-line negotiation you will lose. The same document should carry optional add-ons the buyer can switch on themselves — a second display, an extended warranty — each of which is a sub-assembly priced the same way.
When the same assembly is repeated, the price should step down by quantity. Ten identical rooms do not cost ten times one room to install, because the crew is already on site and the design is already done. A volume tier that takes the installation row from 24 hours to 20 for rooms five through nine, and to 18 for ten or more, is honest pricing and it is also how you win the larger order. Doing that by hand across a forty-line spreadsheet is where mistakes live, which is the case Salesforce makes for CPQ in general and the reason quoting tools exist at all.
Where SalesARC fits
SalesARC Propose Standard ($249/mo) does the method above as it is written: assemblies and sub-assemblies with real costs and target margins, prices that roll up automatically, volume discount tiers that step down by quantity, and a deal room where the buyer can comment on the quote and switch optional add-ons on or off. Basic ($99/mo) covers branded quotes with e-signature filed back to the CRM but not sub-assemblies. Propose requires SalesARC Prospect underneath it, and if you build a Playbook Standard the product tables and pricing strategy sync into Propose so the catalog is not entered twice. We built it this way because SalesARC's own background is AV integration and we had to quote this way ourselves.
See SalesARC Propose or build a plan.