Methodology

Everything the calculators do is written here. Rules are versioned; a saved estimate keeps the version it was made with.

Units

Lengths are stored in metres, areas in square metres and volumes in litres, using exact factors: 1 ft = 0.3048 m, 1 in = 0.0254 m, 1 US gal = 3.785411784 L. The display unit never changes a stored value. Fractions are parsed explicitly (6 1/2") and ambiguous input is rejected with an example.

Geometry (rule geo-1.0)

  • Rectangle: width × height. Triangle: ½ × base × perpendicular height. Known area: entered directly, no edge lengths.
  • Rectangular room L × W × H generates walls A, C (L × H), B, D (W × H) and a floor (L × W). Flat ceiling = L × W.
  • Symmetric gable: slope = √((W ÷ 2)² + rise²); ceiling area = 2 × L × slope. Gable-end triangles are optional separate walls (½ × W × rise each). No dormers; complex ceilings are entered as planes.
  • Openings belong to one host surface. Net = gross − Σ(applicable openings). Negative net is rejected. Overlap cannot be detected; the planner warns when a surface has several openings.
  • Each material has its own surface selection. Floor area and wall area are never combined or subtracted from each other.

Drywall (drywall-1.0)

basis = net × (1 + allowance); sheets = ⌈basis ÷ sheet area⌉. Full opening area is deducted by default; an optional threshold keeps small openings in the basis. Compatibility for consolidation: board type, thickness, sheet size, pooling choice. Moisture-resistant and standard boards never merge. Pooled purchasing rounds the aggregate once; room-by-room rounds each room and sums. Output is an area estimate — not a layout.

Accessories (accessory-1.0)

Manual quantity, or coefficient × net installed area × (1 + allowance), or ⌈basis ÷ yield per package⌉. A coefficient records unit, source and review date. No reviewed coefficient → "Quantity required". Corner bead is never inferred from perimeter.

Paint and primer (paint-1.0, primer-1.0)

volume = net × coats ÷ coverage × (1 + loss); containers = ⌈volume ÷ container size⌉ for one chosen size. Grouped by product, finish and colour. Paint never uses drywall waste area.

Flooring (flooring-1.0)

basis = net floor × (1 + waste); boxes = ⌈basis ÷ box coverage⌉. Straight lay only. Wall openings never reduce flooring; floor exclusions are explicit objects. Underlayment and trim are manual.

Pricing (pricing-1.0)

line = packages × entered unit price. Tax = rate × Σ(taxable priced lines, plus delivery and fees if marked taxable), rounded to minor units on the aggregate. A total is shown only when every quantity is complete and every line is priced. Prices are user-entered with a date; there are no live prices.

Rounding safeguards

Canonical values are rounded to 10 decimal places after every operation to remove floating-point drift, and ceilings use a 1e-9 epsilon so an exact 10.0 never becomes 11.

Acceptance tests the engine passes

TestInputsExpected
T0112 × 12 ft, 9 ft walls, four walls432 sq ft gross
T02Three walls324 sq ft
T03Less 3 × 7 door and 4 × 4 window287 sq ft net
T04Add 12 × 12 flat ceiling431 sq ft drywall net
T0510%, 4 × 8 sheets474.1 basis; 15 sheets; 480 sq ft
T06Paint 287 sq ft, 2 coats, 350/gal, 10%1.804 gal; 2 cans
T07Primer 287 sq ft, 1 coat, 300/gal0.9567 gal; 1 can
T08Floor 144 sq ft, 10%, 23.77/box158.4 basis; 7 boxes; 166.39 sq ft
T09Gable W 12, L 12, rise 3 ftSlope 6.7082 ft; 160.9969 sq ft
T10Two 100 sq ft rooms, 32 sq ft sheets, 0%Separate 8; pooled 7
T11100 sq ft wall, 110 sq ft openingsInvalid; no negative output
T1210 × 10 ft to metres9.290304 m² = 100 sq ft
Cost15 sheets @ $15, 2 paint @ $35, 1 primer @ $25, 7 boxes @ $50, 6% tax, $50 non-taxable delivery$670 + $40.20 + $50 = $760.20

Limits

20 projects, 50 rooms per project, 100 surfaces per room, 100 shopping items per estimate, 10 MB backup import. These keep the planner fast in a browser; larger takeoffs need a different tool.

What is out of scope

Structural design, building-code approval, installation specifications, exact cutting plans, insulation assemblies, electrical sizing, structural spans, live supplier prices and labour estimates.