Miscellaneous Items
Overview
Miscellaneous items represent general costs that don't fit into other modules (concrete, labor, equipment, materials, subcontractors). These are simple quantity × rate calculations.
Endpoints
List Miscellaneous Items
- Request
- Response
GET /api/misc/scope/:scopeId
Cookie: sAccessToken=...; sRefreshToken=...
[
{
"id": "uuid",
"scopeId": "uuid",
"description": "Permits and Fees",
"quantity": 1,
"ratePerUnit": 1500.00,
"totalCost": 1500.00
},
{
"id": "uuid",
"scopeId": "uuid",
"description": "Site Cleanup",
"quantity": 5,
"ratePerUnit": 200.00,
"totalCost": 1000.00
},
...
]
Roles: ADMIN, ESTIMATOR, PM
Create Miscellaneous Item
- Request
- Response
POST /api/misc
Cookie: sAccessToken=...; sRefreshToken=...
Content-Type: application/json
{
"scopeId": "uuid",
"description": "Permits and Fees",
"quantity": 1,
"ratePerUnit": 1500.00
}
{
"id": "uuid",
"totalCost": 1500.00,
"message": "Miscellaneous item created successfully"
}
Roles: ADMIN, ESTIMATOR
Required Fields:
scopeId(string, UUID) - Parent scopedescription(string) - Item descriptionquantity(number) - QuantityratePerUnit(number) - Cost per unit
Update Miscellaneous Item
- Request
- Response
PUT /api/misc/:id
Cookie: sAccessToken=...; sRefreshToken=...
Content-Type: application/json
{
"quantity": 3,
"ratePerUnit": 500.00
}
{
"id": "uuid",
"totalCost": 1500.00,
"message": "Miscellaneous item updated successfully"
}
Roles: ADMIN, ESTIMATOR
Delete Miscellaneous Item
- Request
- Response
DELETE /api/misc/:id
Cookie: sAccessToken=...; sRefreshToken=...
{
"message": "Miscellaneous item deleted successfully"
}
Roles: ADMIN, ESTIMATOR
Cost Calculation
totalCost = quantity × ratePerUnit
Simple multiplication - no taxes, no waste factors, no markups at item level.
Common Use Cases
Miscellaneous items typically cover:
| Description | Typical Quantity | Rate Type |
|---|---|---|
| Permits and Fees | 1 | Lump sum |
| Site Cleanup | Days | Per day |
| Temporary Facilities | Months | Per month |
| Bonding/Insurance | 1 | Percentage |
| Mobilization/Demobilization | 1 | Lump sum |
| Testing and Inspection | Tests | Per test |
| Traffic Control | Days | Per day |
| Dust Control | Days | Per day |
| Utility Relocation | 1 | Lump sum |
| Contingency | 1 | Percentage |
Data Model
interface MiscItem {
id: string // UUID
scopeId: string // Parent scope UUID
description: string // Item description
quantity: number // Quantity
ratePerUnit: number // Cost per unit
totalCost: number // Calculated (quantity × ratePerUnit)
// Relations
scope: Scope
}
PM Export Mapping
In PM exports, miscellaneous items are grouped under "GENERAL CONDITIONS" section.
Comparison to Other Modules
| Module | Calculation Complexity | Tax? | Waste? | Markup? |
|---|---|---|---|---|
| Concrete | High (cubic yards, rebar) | ✅ | ✅ | ✅ |
| Labor | High (soft costs, auto) | ❌ | ❌ | ✅ |
| Equipment | Medium (rental, fuel) | ✅ | ❌ | ✅ |
| Materials | Medium (waste factor) | ✅ | ✅ | ✅ |
| Subcontractor | Medium (buffer) | ❌ | ✅ | ✅ |
| Misc | Simple (qty × rate) | ❌ | ❌ | ✅ |
info
Miscellaneous items are the simplest module - just quantity × rate with no additional complexity.
Example: Permit Fee
{
"description": "Building Permit",
"quantity": 1,
"ratePerUnit": 2500.00
}
Calculation:
- Total: 1 × $2,500 = $2,500.00
Example: Daily Site Cleanup
{
"description": "Daily Site Cleanup",
"quantity": 10,
"ratePerUnit": 150.00
}
Calculation:
- Total: 10 × $150 = $1,500.00
Module Markups
While the item-level calculation is simple, bid-level markups still apply:
- Workers Compensation (WC)
- Overhead
- Profit
- GL Pollution