Cost Rollup
The Cost Rollup system automatically aggregates costs from individual estimation items up through scopes to the final bid total. Understanding this flow is essential for accurate bidding and cost management.
Costs flow upward: Items โ Scopes โ Bid Total. Each level calculates automatically based on the level below it.
Cost Flow Architectureโ
Level 1: Item Costsโ
Individual estimation items calculate their own costs:
Concrete Itemsโ
Cubic Yards ร Concrete Price
+ Rebar Weight ร Rebar Rate
+ Formwork Area ร Formwork Rate
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
= Concrete Item Total Cost
Example:
Volume: 10 CY @ $135/CY = $1,350
Rebar: 500 LB @ $0.92/LB = $460
Formwork: 120 SF @ $5/SF = $600
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Total: $2,410
Labor Itemsโ
Hours ร Rate ร (1 + Burden %)
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
= Labor Item Total Cost
Example:
40 hours @ $38/hr base rate
Burden: 35% (FICA, FUTA, SUTA, Worker's Comp)
40 ร $38 ร 1.35 = $2,052
Equipment Itemsโ
Duration ร Rate
+ Delivery Fee
+ Fuel Charge (days ร $50)
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
= Equipment Item Total Cost
Example:
Dozer: 5 days @ $931/day = $4,655
Delivery: $150
Fuel: 5 days ร $50 = $250
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Total: $5,055
Material Itemsโ
Quantity ร Unit Price ร (1 + Waste %)
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
= Material Item Total Cost
Example:
Rebar: 1000 LB @ $0.92/LB
Waste: 5%
1000 ร $0.92 ร 1.05 = $966
Subcontractor Itemsโ
Base Cost ร (1 + Buffer %)
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
= Subcontractor Item Total
Example:
Concrete Pumping: $2,500
Buffer: 10%
$2,500 ร 1.10 = $2,750
Per-Module Markup Chainโ
Before scope costs are summed, each cost category passes through a module markup chain that stacks four factors on top of the hard cost. This is separate from the bid-level Overhead and Profit applied at Level 3.
Hard Cost
+ Equipment Rental Insurance (equipment module only)
+ Workers Compensation (WC %)
+ Overhead %
+ Profit % (on hard cost + WC + overhead + rental insurance)
+ GL/Pollution % (on subtotal after profit)
= Module Total
Markup Variablesโ
Each module has its own set of percentage variables stored as GlobalVariable rows on the bid (seeded from DefaultVariable platform defaults at bid creation):
| Variable Name | Module | Description |
|---|---|---|
Labor_WC | labor | Workers comp |
Labor_Overhead | labor | Overhead |
Labor_Profit | labor | Profit margin |
GL_Pollution_Labor | labor | GL/Pollution insurance |
Subcontractor_WC | subcontractor | Workers comp |
Subcontractor_Overhead | subcontractor | Overhead |
Subcontractor_Profit | subcontractor | Profit margin |
GL_Pollution_Subcontractor | subcontractor | GL/Pollution insurance |
Equipment_WC | equipment | Workers comp |
Equipment_Overhead | equipment | Overhead |
Equipment_Profit | equipment | Profit margin |
GL_Pollution_Equipment | equipment | GL/Pollution insurance |
Equipment_Rental_Insurance | equipment | Rental insurance on base rental cost only |
Materials_WC | materials | Workers comp |
Materials_Overhead | materials | Overhead |
Materials_Profit | materials | Profit margin |
GL_Pollution_Materials | materials | GL/Pollution insurance |
Misc_WC | misc | Workers comp |
Misc_Overhead | misc | Overhead |
Misc_Profit | misc | Profit margin |
GL_Pollution_Misc | misc | GL/Pollution insurance |
These variables are set per-bid. Admins configure the platform defaults under Admin โ Estimation Settings โ Bid Factors & Fees.
Equipment Rental Insuranceโ
The equipment module has an additional Equipment_Rental_Insurance factor that applies only to the base rental cost, not to fuel or delivery charges. The rental insurance amount is added before WC, overhead, and profit are calculated.
Base Rental Cost (e.g. $5,000)
+ Rental Insurance: $5,000 ร rentalInsurance%
= Rental Base for WC/OH/Profit
Example: Labor Moduleโ
Labor Hard Cost: $2,000
WC (3%): $60
Overhead (5%): $100
Profit Base: $2,160 (hard cost + WC + overhead)
Profit (8%): $172.80
GL/Pollution Base: $2,332.80
GL/Pollution (1%): $23.33
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Labor Module Total: $2,356.13
The per-module markup chain applies within each scope. The bid-level Overhead and Profit at Level 3 are applied after all scope totals are summed, on the bid subtotal.
Level 2: Scope Costsโ
Scopes aggregate item costs by category:
| Field | Calculation |
|---|---|
concreteCost | Sum of all concrete item costs |
laborCost | Sum of all labor item costs |
equipmentCost | Sum of all equipment item costs |
materialCost | Sum of all material item costs |
subletCost | Sum of all sublet item costs |
miscCost | Sum of all misc item costs |
totalCost | (Sum of all categories) ร multiplier |
Scope Cost Exampleโ
Scope: "Foundation"
Multiplier: 1.0
Concrete Items: $10,000
Labor Items: $5,000
Equipment Items: $3,000
Materials Items: $2,000
Subcontractor Items: $1,500
Misc Items: $500
โโโโโโโโโโโโโโโโโโโโโโโโโ
Subtotal: $22,000
Multiplier: 1.0
โโโโโโโโโโโโโโโโโโโโโโโโโ
Scope Total: $22,000
Scope with Multiplierโ
Scope: "Driveway (Typical)"
Multiplier: 5.0
Concrete Items: $3,000
Labor Items: $1,500
Equipment Items: $800
Materials Items: $500
Subcontractor Items: $200
โโโโโโโโโโโโโโโโโโโโโโโโโ
Subtotal: $6,000
Multiplier: 5.0
โโโโโโโโโโโโโโโโโโโโโโโโโ
Scope Total: $30,000 โ $6,000 ร 5
The multiplier is applied after summing all item categories, not to individual items.
Level 3: Bid Totalโ
The bid aggregates all scope totals and applies overhead and profit:
All Scopes Total (sum of scope totals)
= Bid Subtotal
Bid Subtotal ร (1 + Overhead %)
= Subtotal + Overhead
(Subtotal + Overhead) ร (1 + Profit %)
= Bid Total
Bid Cost Breakdownโ
| Field | Calculation |
|---|---|
concreteCost | Sum of all scope concreteCost |
laborCost | Sum of all scope laborCost |
equipmentCost | Sum of all scope equipmentCost |
materialCost | Sum of all scope materialCost |
subletCost | Sum of all scope subletCost |
miscCost | Sum of all scope miscCost |
subtotalCost | Sum of all scope totalCost |
overheadAmount | subtotalCost ร overheadPercent |
profitAmount | (subtotalCost + overheadAmount) ร profitPercent |
totalCost | subtotalCost + overheadAmount + profitAmount |
Complete Bid Exampleโ
Bid: "Commercial Foundation"
Scope 1: Foundation
Total: $22,000
Scope 2: Driveway (Typical) [5.0x]
Total: $30,000
Scope 3: Sidewalks
Total: $8,000
โโโโโโโโโโโโโโโโโโโโโโโโโ
Bid Subtotal: $60,000
Overhead (10%): $6,000
โโโโโโโโโโโโโโโโโโโโโโโโโ
Subtotal + Overhead: $66,000
Profit (5%): $3,300
โโโโโโโโโโโโโโโโโโโโโโโโโ
Bid Total: $69,300
Tax Handlingโ
Tax is applied at the item level based on bid configuration:
- Normal (Taxable)
- Tax Exempt
Materials Tax: Applied to material items
Material: 100 SF @ $2.00/SF = $200
Tax (8.25%): $16.50
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Total: $216.50
Equipment Tax: Applied to equipment rentals
Rental: 5 days @ $500/day = $2,500
Tax (12.25%): $306.25
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Total: $2,806.25
When bid is marked Tax Exempt:
- Material tax = $0
- Equipment tax = $0
- Item costs exclude tax
- Scope and bid totals reflect tax-exempt pricing
See Tax Management for details on tax exemption.
Auto-Calculation Triggersโ
Cost rollup recalculates automatically when:
| Trigger | Action |
|---|---|
| Item created | Recalculate scope โ bid |
| Item updated | Recalculate scope โ bid |
| Item deleted | Recalculate scope โ bid |
| Scope multiplier changed | Recalculate scope โ bid |
| Bid variables changed | Recalculate bid total (overhead/profit) |
| Tax exemption toggled | Recalculate all items โ scopes โ bid |
You don't need to manually trigger recalculations. The system handles it automatically.
Manual Recalculationโ
For edge cases or troubleshooting, you can manually trigger cost rollup:
Navigate to the bid you want to recalculate.
Click the "Cost Rollup" button in the top-right toolbar.
Modal shows:
- Current scope totals
- Current bid total
- Recalculation in progress
After recalculation completes:
- All scope costs updated
- Bid total updated
- Modal shows updated values
Manual recalculation should rarely be needed. Use it only if you suspect calculation errors.
API Endpointsโ
Recalculate Scopeโ
POST /api/costs/scope/:scopeId
Response:
{
"scopeId": "uuid-123",
"concreteCost": 10000.00,
"laborCost": 5000.00,
"equipmentCost": 3000.00,
"materialCost": 2000.00,
"subletCost": 1500.00,
"totalCost": 22000.00
}
Recalculate Bidโ
POST /api/costs/bid/:bidId
Response:
{
"bidId": "uuid-456",
"subtotalCost": 60000.00,
"overheadAmount": 6000.00,
"profitAmount": 3300.00,
"totalCost": 69300.00
}
Recalculate and Propagateโ
POST /api/costs/scope/:scopeId/propagate
Description: Recalculates scope costs and propagates to bid total
Full Bid Recalculationโ
POST /api/costs/bid/:bidId/full
Description: Recalculates ALL scopes and bid total
Viewing Cost Breakdownโ
Scope Card Viewโ
Each scope card shows the cost breakdown:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Foundation Editโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Concrete: $10,000 โ
โ Labor: $5,000 โ
โ Equipment: $3,000 โ
โ Materials: $2,000 โ
โ Subcontractor: $1,500 โ
โ Misc: $500 โ
โ โ
โ Scope Total: $22,000 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Bid Summary Cardโ
The bid summary shows aggregate costs:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Bid Total โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Concrete: $40,000 โ
โ Labor: $20,000 โ
โ Equipment: $15,000 โ
โ Materials: $10,000 โ
โ Subcontractor: $8,000 โ
โ Misc: $2,000 โ
โ โ
โ Subtotal: $95,000 โ
โ Overhead (10%): $9,500 โ
โ Profit (5%): $4,750 โ
โ โ
โ Bid Total: $109,250 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Cost Discrepanciesโ
Common Causesโ
| Issue | Cause | Solution |
|---|---|---|
| Scope total doesn't match items | Multiplier not applied | Check scope multiplier |
| Bid total missing scopes | Scope not linked to bid | Verify scope-bid relationship |
| Overhead/profit incorrect | Wrong percentages | Check bid variables |
| Tax amounts wrong | Tax rates outdated | Update pricing database |
Troubleshooting Stepsโ
Check individual items have correct:
- Quantities
- Unit prices
- Tax rates (if applicable)
Verify each scope:
- Items sum correctly
- Multiplier applied
- No missing items
Confirm bid settings:
- Overhead percentage
- Profit percentage
- Tax exemption status
If totals still don't match, trigger manual recalculation:
- Click "Cost Rollup" button
- Review updated totals
Best Practicesโ
Review Before Submitting
Always review the bid summary before changing status to SUBMITTED. Verify all costs aggregate correctly.
Use Scope Multipliers Correctly
Ensure multipliers are set correctly for repeated areas. Incorrect multipliers can drastically affect bid totals.
Keep Variables Updated
Regularly update global variables (overhead, profit, tax rates) to ensure accurate calculations.
Check Tax Status
Verify tax exemption status matches the client's requirements. Incorrect tax status affects bid competitiveness.
Historical Preservationโ
Important: When bid variables (overhead, profit, tax rates) change globally, existing bids preserve their original values. This ensures historical accuracy.
Example:
January 2025:
- Admin sets Overhead = 10%
- User creates Bid A
- Bid A has Overhead = 10%
March 2025:
- Admin changes Overhead to 12%
- User creates Bid B
- Bid B has Overhead = 12%
Result:
- Bid A still has 10% overhead (preserved)
- Bid B has 12% overhead (new default)
Integration with Other Featuresโ
Auto-Materializationโ
When concrete items auto-add materials:
Concrete Item: 10 CY slab
Auto-add materials: YES
Result:
1. Concrete item added โ concreteCost increases
2. Material items created โ materialCost increases
3. Both aggregate to scope total
4. Scope total propagates to bid
Per Diem Calculationsโ
When per diem is enabled:
Labor Items: $20,000
Per Diem: $50/day ร 20 days ร 5 workers = $5,000
โโโโโโโโโโโโโโโโโโโโโโโโโ
Total Labor Cost: $25,000 โ Includes per diem