CPQ Platform
Parametric quoting that can’t be wrong.
Enter a finished width and a finished drop. The engine derives every cut size, prices every line against the rate card, and grosses the total to the margin floor. There is no spreadsheet left to get out of date.
Live engine
Move a slider. Watch the cut list and the price move with it.
This is the production engine, not a mock-up. The reference configuration below — 96.00" × 120.00" motorised with a cassette — returns $642.10 CAD wholesale and $1,284.20 CAD retail every time.
Configuration
Glare control with retained outward view. The default commercial specification.
Rechargeable lithium-ion, 12 V DC · Somfy RTS 433.42 MHz
Priced per inch of finished width at $0.30/in.
Bracket pair, idler, chain retainer, and fixings bagged per unit.
Cut list
These are the sizes the shop cuts. They are derived from the finished width and drop — never re-entered.
| Component | Derivation | Cut size |
|---|---|---|
| Aluminum tube | W − 1.25" | 94.75" |
| Extruded hembar | W − 1.00" | 95.00" |
| Fabric width | W − 1.50" | 94.50" |
| Fabric drop | D + 4.00" wrap | 124.00" |
| Fabric consumption | (fabric W × fabric D) ÷ 144 | 81.375 ft² |
Cost breakdown
Every line is rounded before it is summed, so what is printed reconciles to what is totalled.
| Line | Basis | Unit | Extended |
|---|---|---|---|
| Solar Screen 3% — Charcoal | 81.375 ft² × $3.18/ft² | $258.77 | $258.77 |
| Aluminum tube | 94.75" × $0.60/in | $56.85 | $56.85 |
| Extruded hembar | 95.00" × $0.40/in | $38.00 | $38.00 |
| Aluminum surcharge | $94.85 × 3.5% | $3.32 | $3.32 |
| Fabrication labour | 1 unit × $55.20 | $55.20 | $55.20 |
| LI-ION RTS tubular | Somfy RTS 433.42 MHz · 6 Nm | $189.00 | $189.00 |
| Fascia cassette | 96.00" × $0.30/in | $28.80 | $28.80 |
| Bracket & fixings set | 1 set per unit | $12.16 | $12.16 |
| Wholesale | $642.10 | $642.10 | |
Gross margin
50.0%
Locked at the 50.0% margin floor.
Wholesale · 1 unit
$642.10 CADRetail at the 50.0% floor
$1,284.20 CADUnit wholesale $642.10 CAD · unit retail $1,284.20 CAD · all figures CAD
Deduction logic
Three deductions and one allowance. Applied once, in one place.
Every roller in the range comes off the same four rules. They live in the engine as frozen constants, which means an estimator cannot apply them differently from a fabricator, and neither can apply them differently on a Friday.
- Tube
- W − 1.25"
- Clears the bracket pair and the idler end plug.
- 94.75"
- Hembar
- W − 1.00"
- Sits inside the fabric edge so it cannot catch the reveal.
- 95.00"
- Fabric width
- W − 1.50"
- Keeps the panel clear of the bracket faces through the full roll.
- 94.50"
- Wrap allowance
- D + 4.00"
- Retains wraps on the tube at full extension.
- 124.00"
Rate card
Seven rates. Published, versioned, and editable on Enterprise.
| Item | Rate | Basis | Note |
|---|---|---|---|
| Fabric | $3.18 / ft² | Applied to (fabric width × fabric drop) ÷ 144. | Rate varies by fabric; the default 3% solar screen carries the base rate. |
| Aluminum tube | $0.60 / in | Cut at finished width − 1.25". | Extruded 38 mm tube, wall thickness selected by span. |
| Extruded hembar | $0.40 / in | Cut at finished width − 1.00". | Sealed end caps included in the rate. |
| Fabrication labour | $55.20 / unit | Flat per finished unit, independent of size. | Covers cut, weld, roll, and QC on the bench. |
| Aluminum surcharge | 3.5% | Applied to the tube and hembar extended cost only. | Tracks the LME cash settlement; reviewed monthly. |
| Fascia cassette | $0.30 / in | Priced on finished width, not tube length. | Optional. Zero when the unit ships open-roll. |
| Bracket & fixings set | $12.16 | One set per finished unit. | Optional. Zero when the dealer supplies hardware. |
Fabric
$3.18 / ft²
Applied to (fabric width × fabric drop) ÷ 144.
Rate varies by fabric; the default 3% solar screen carries the base rate.
Aluminum tube
$0.60 / in
Cut at finished width − 1.25".
Extruded 38 mm tube, wall thickness selected by span.
Extruded hembar
$0.40 / in
Cut at finished width − 1.00".
Sealed end caps included in the rate.
Fabrication labour
$55.20 / unit
Flat per finished unit, independent of size.
Covers cut, weld, roll, and QC on the bench.
Aluminum surcharge
3.5%
Applied to the tube and hembar extended cost only.
Tracks the LME cash settlement; reviewed monthly.
Fascia cassette
$0.30 / in
Priced on finished width, not tube length.
Optional. Zero when the unit ships open-roll.
Bracket & fixings set
$12.16
One set per finished unit.
Optional. Zero when the dealer supplies hardware.
Margin governance
The floor is 50.0%, and it is enforced three times.
At the line
Each line item is rounded and grossed independently, so a discount on one component cannot quietly subsidise another.
At the quote
The quote total is checked against the floor before it can be issued. A shortfall is stated in dollars, not as a vague warning.
At the approval
Overrides route to a permissioned role and are written to an immutable audit trail with the requested and approved figures.
Tiered price books, dealer and retail views
A dealer sees wholesale. A retail salesperson sees retail. A project estimator sees both, plus the margin between them. The same quote record serves all three, so nobody is reconciling two documents.
- Price books version on every rate change, with an effective date.
- Dealer tiers carry their own multiplier applied after the margin floor.
- Quotes render in CAD by default; USD price books are per-tenant configuration.
- Historic quotes always reprice against the book that was live when issued.
Quote to work order, without a re-key
Acceptance generates the work order directly from the configuration. The cut list, the parts list, the required skill tags, and the install duration are already populated when dispatch opens it.
- 01
Quote accepted
Configuration frozen, price book version stamped.
- 02
Work order generated
Cut list and parts list carried across verbatim.
- 03
Skills resolved
Required certifications derived from the drive and mount type.
- 04
Dispatch board
Job enters the board with its time window and duration.
Objections
The six questions estimators ask first.
Our deductions are different from yours. Can we change them?
Yes. The deductions, rates, and margin floor are tenant-level configuration on Professional and Enterprise. The values shown in this sandbox are our factory defaults for a 38 mm tube roller. Changing a deduction versions the price book and stamps the change with the user, timestamp, and prior value.What stops an estimator from quoting below cost to win a job?
The engine grosses every quote to the margin floor by default. An estimator can request a lower price, but the quote then routes to a role that holds the margin-override permission, and the override is written to the audit trail with the requested price, the approved price, and the resulting margin.We quote in imperial but manufacture in metric. Does that break anything?
No. Dimensions are stored in a single canonical unit and rendered per user preference. Cut lists print in the unit the shop works in, and the conversion happens once at render, not repeatedly through the math.How do you handle a fabric that will not roll to the required width?
The engine compares the derived fabric cut against the roll width for the selected fabric and raises a warning inline before the quote is issued. The warning names the roll limit and the required cut so the estimator can railroad, seam, or split the elevation deliberately.Can we quote a project with three hundred openings without re-entering each one?
Yes. Openings import from a take-off spreadsheet or an architectural schedule, and each row runs through the same engine that powers this sandbox. Quantities above five hundred units route to a project estimator rather than quoting straight through.Does the quote carry into the work order, or is that a re-key?
It carries. Accepting a quote generates the work order with the cut list, the parts list, the required skill tags, and the install duration already populated. Nothing about the configuration is typed a second time.
Bring us three real elevations.
We will run them through the engine on the call and put the cut list next to whatever your current process produced. Twenty minutes, no slides.