Resource Capacity & Project Cost Estimator
Price a project from people and infrastructure — set your rates once, build the estimate live.
| Role | Level | Rate | Unit |
|---|
| Role | Count | Alloc% | Duration (mo) | Line cost |
|---|
| Name | Category | Env | Unit cost | Qty | Recurrence | Yearly Cost |
|---|
| Labor subtotal | — | |
| Infrastructure subtotal | — | |
| Subtotal | Labor + Infra | — |
| + Overhead | — | |
| + Contingency | — | |
| Cost | Subtotal + Overhead + Contingency | — |
| + Margin | — | |
| − Discount | — | |
| Price before tax | Cost + Margin − Discount | — |
| + Tax | — | |
| Final Price | — |
Frequently Asked Questions
How is the project price calculated?
The estimator adds up two buckets: labor (each resource's normalized monthly rate × count × allocation% × duration) and infrastructure (line items prorated to the project duration). This gives a subtotal.
Then it applies: +overhead% → +contingency% → cost → +margin% → −discount → price before tax → +tax% → final price. Every step is visible in the roll-up table so the number is fully auditable.
Can I mix hourly and monthly rates?
Yes. Set Hours/day and Days/month once in Project Settings. The rate card accepts hourly, daily, or monthly rates — the tool converts each to a monthly equivalent before summing. Formula: monthly = hourly × hoursPerDay × daysPerMonth or monthly = daily × daysPerMonth.
Does it handle cloud and licensing costs?
Yes. Add infrastructure line items in the Infrastructure card. Each item can be one-time, monthly, or annual. Monthly costs are multiplied by project duration; annual costs are prorated (unitCost × qty × durationMonths / 12); one-time costs are added once. This lets you model AWS/Azure compute, SaaS licenses, security tools, and support contracts in a single table.
Where is my data stored?
Everything stays in your browser's localStorage under the key toolshut.rcEstimator.v1. Nothing is sent to any server. Use Export JSON to save a snapshot to your computer, and Import JSON to restore it later or share with a colleague.
Can I compare onshore vs offshore options?
Today you can save two separate JSON exports (e.g. one with onshore rates, another with offshore rates) and compare the Final Price, headcount, and blended rate figures side by side. A built-in scenario comparison view is planned for a future update.
Methodology
Roll-up formula & rate normalization
Rate normalization — all rates in the rate card are converted to a monthly equivalent before any calculation:
ratePerMonth = hourly × hoursPerDay × daysPerMonthratePerMonth = daily × daysPerMonthratePerMonth = monthly (no change)
Labor line cost (months mode)count × ratePerMonth × durationMonths × (allocation / 100)
Labor line cost (hours mode)count × ratePerMonth × durationMonths × (allocation / 100) — identical math; the "hours" column shows durationMonths × daysPerMonth × hoursPerDay as a reference.
Infrastructure
One-time: unitCost × qty
Monthly: unitCost × qty × durationMonths
Annual: unitCost × qty × (durationMonths / 12)
Roll-up sequencesubtotal = laborSubtotal + infraSubtotaloverhead = subtotal × overhead%/100contingency = (subtotal + overhead) × contingency%/100cost = subtotal + overhead + contingencymargin = cost × margin%/100pricePreTax = cost + margin − discounttax = pricePreTax × tax%/100finalPrice = pricePreTax + tax
Derived metricstotalPersonMonths = Σ(count × allocation%/100 × durationMonths)blendedMonthlyRate = laborSubtotal / totalPersonMonthscostPerSprint = (cost / durationMonths) × (sprintWeeks / 4.345)
INR lakh / crore formatting
When the currency is set to INR, a display toggle appears in the Summary header:
• ₹ (raw) — uses Intl.NumberFormat('en-IN', { style: 'currency', currency: 'INR', maximumFractionDigits: 0 }) for the standard Indian comma-grouping system (e.g. ₹12,34,567).
• Lakh — divides by 100,000 and shows as "₹X.XX L" (1 Lakh = 1,00,000).
• Crore — divides by 10,000,000 and shows as "₹X.XX Cr" (1 Crore = 1,00,00,000).