Demand vs capacity
Stacked awarded + weighted pipeline (FTE) with your capacity line, by week.
Role gap summary
Peak shortage & surplus across the horizon.
Key driver projects
What's generating the most labor demand.
Staffing actions
Transparent, rules-based recommendations. Accept to add to your plan.
Weekly gap by role (FTE)
Red = shortage, green = surplus. Demand is awarded at 100% + pipeline discounted by win probability × document confidence.
Monthly gross margin vs labor carry
Bars = GM generated (awarded + weighted pipeline). Line = total monthly labor cost; dashed = the fixed + semi-fixed nut you owe regardless of workload.
Month by month
Fully-burdened labor (base wage × burden). Assumptions live in Settings; gross margin % is per project/opportunity (falls back to your default).
Awarded / active projects
Pipeline opportunities
Build a scenario
Layer changes on top of your live data — nothing is saved to the base plan.
Base vs scenario
Data tools
Templates must exist before importing projects/opportunities — the template_id or archetype column links a row to its labor curve. Import matches on archetype when no template_id is given.
The two questions
BidIntell Capacity sits downstream of your bid scoring.
“Should I chase this bid?” — scope fit, geography, client, contract risk.
“If it lands, can I staff it — and afford it?” — weekly labor by role vs your bench, and whether gross margin covers the team.
Set it up (about 10 minutes)
Enter these on the matching screens. Start with the two that matter most: People and Templates. You can also Import a CSV on each, or hit Sync to Capacity inside the main BidIntell app to pull your scored bids in automatically.
| Step | Screen | What to enter |
|---|---|---|
| 1 | People | Your crew and salaried staff (installers, foremen, PMs, estimators, support). For each: role, hours/week, base wage, and a labor bucket — direct (field production, flexes with work) or management (PM / foreman / estimator / support). A future “available from” date = a planned hire. Set your owner salary in Settings so profit is measured after paying yourself. |
| 2 | Templates | A reusable crew curve per job type — how many installers/foremen/PMs each week over the job’s duration. Build one per common archetype (e.g. “Flooring – Commercial TI, 10 wk”). This is what turns a job into a week-by-week labor shape. |
| 3 | Backlog & Pipeline → Projects | Jobs you’ve won. Each needs a start date + a template. Add contract value + margin % to power the money view. |
| 4 | Backlog & Pipeline → Opportunities | Bids you’re chasing. Same fields plus win probability (0–1) and document confidence (0–1). These weight how much the pursuit counts. |
| 5 | Settings | Company assumptions: planning horizon, hiring lead time, overtime %, outside-labor availability, labor burden %, default margin %, and monthly fixed overhead. Defaults are sensible — adjust to your shop. |
How the numbers work
Deterministic and inspectable — no black box. Everything below is just arithmetic on what you entered.
1 · Demand (the work you need to staff)
Each job’s template lays its crew curve onto the calendar from its start date. Awarded jobs count 100%. A pursuit counts partially — discounted by win probability × document confidence. An invite-only tease with a 30% chance moves your plan far less than a full, reviewed package you’ll likely win. Add it all up per role per week.
2 · Supply (the crew you have)
Your active roster, converted to full-time equivalents, plus any planned hires from their start date, minus normal attrition over time.
3 · Gap = demand − supply
Per role, per week. Positive = shortage (not enough people). Negative = bench (idle capacity). This is the weekly grid on the Forecast screen.
4 · Recommendations
Each shortage becomes a call, gated by two things — how long it lasts vs your hiring lead time, and whether gross margin can carry it:
A hire only fires when the work is sustained and gross margin covers the fully-burdened cost with cushion. Awarded work you can’t yet afford says “bridge with outside labor,” not “add payroll.” Pipeline-driven gaps say “hold” until the wins firm up.
5 · The money (can you afford the team?)
Each job throws off gross margin (contract value × margin %), recognized as the work gets done. Capacity runs a full waterfall: revenue → gross margin → contribution margin (after field labor) → operating income (after management labor, incl. a market-rate owner salary) → pretax profit (after non-labor overhead).
Two labor efficiency ratios tell you if the team is the right size: Direct LER = gross margin per $1 of field labor (target ~$2.00), Management LER = contribution margin per $1 of management labor (target ~$3.00). A hire only fires if it keeps efficiency at target and coverage above your floor — otherwise Capacity says bridge, not hire.
You also get months of coverage (how long booked work carries payroll) and the profit-target number: how much signed work per month you need to hit your target margin — the number BidIndex and outreach have to feed.
6 · Estimators (pricing capacity)
Estimators work the other direction: their demand comes from bids you're chasing, front-loaded into the pricing days before each bid's due date (win or lose — no discount). Awarded jobs create no estimating demand. When estimating hours outrun your estimators, Capacity says triage harder (tighten bid selection with BidIndex) → outsource takeoff → hire (only if the crunch is sustained and management efficiency holds).
Reading each screen
| Screen | What it answers |
|---|---|
| Dashboard | The one-glance summary — peak shortage role, coverage banner, demand-vs-capacity chart, and the staffing-action queue. |
| Forecast | The portfolio labor curve + a week-by-week gap grid by role (red = short, green = bench). |
| Margin coverage | The money view — monthly gross margin vs labor carry, months of coverage, and the break-even target. |
| Scenarios | “What if?” — delay a job, win an opportunity, add hires, and compare against your base plan before committing. |
Tip: hit ↺ Run forecast after any change. Nothing is committed to your live plan from Scenarios — it’s a sandbox.