Use the formulas and worked example below, or collect quote amounts in the editable response workbook.
Start a scenario
The worked example uses invented staffing costs and fees, not provider prices. Loading an example, saved inputs or a file replaces the inputs currently on this page.
This older scenario applied unit rates to the full workload. Review the billing mode and included quantities before calculating.
Started from an invented example. These amounts are illustrations, not quotes or recommended staffing assumptions. Replace them with your own inputs before using the result.
Model NOC or help desk delivery from your monthly workload, required coverage and quoted fees. Compare recurring annual costs and year-one costs for an internal team, an outsourced service or a hybrid split.
Coverage staffing divides annual covered seat-hours by productive hours per employee. The larger of coverage staffing and workload staffing sets the internal requirement. Hybrid uses your explicitly retained coverage hours and workload share. Provider minimums and fixed fees are not reduced in proportion to ticket volume.
How to use it
- Enter your workload: tickets, alerts, handling time and required coverage hours.
- Fill in the internal model with your real salary and overhead numbers.
- Fill in the outsourced model from an actual proposal. Choose whether its rates apply to every unit or only above a monthly included allowance. Leave unconfirmed costs empty.
- Optionally split the work in the hybrid model.
- Press Calculate. Compare year-one and recurring annual cost per model, then test the assumptions in the sensitivity view.
The lowest estimate is not automatically the right operational choice. Coverage quality, escalation ownership and transition risk are outside this model; the result tells you what a scenario costs, not whether it works.
All fields work with a keyboard; errors appear next to the field.
Missing workload inputs prevent calculation. Missing cost inputs block the affected model; they are never treated as zero. Other fully specified models can still be compared.
Inputs and field help
Read the detailed input definitions
Workload
- Managed users and managed endpoints - counts used to normalize cost per user and per endpoint. Zero or positive integers.
- Monthly tickets and alerts - use the same units as any per-ticket or per-alert quote. Average human handling time over those same counts, including zero handling time for automatically completed units when they are billable.
- Average handling minutes per ticket / per alert - human handling, notes and escalation time. Count the same work once. Alert minutes represent work additional to the ticket minutes, even if both billable quantities appear in the proposal.
- Required coverage hours per week - 0 to 168. A 24x7 desk is 168.
- Expected annual workload growth percentage - entered in percentage points (10 means 10 percent). Used for planning context, not compounded into the year-one result.
Monthly averages and busy periods
Monthly counts do not show when work arrives. In an invented example, four requests arrive at 09:00. One engineer handles one at a time, each needs 15 minutes, and there are no interruptions or other work. Their work starts at 09:00, 09:15, 09:30 and 09:45. The last request waits 45 minutes even though the group needs only one hour of handling time.
Use the times requests arrive and your target for starting work when planning concurrent coverage. The minimum seat input applies throughout the covered window; it does not schedule extra people for a short burst. Plan shifts and temporary cover separately, then enter the staffing and costs you intend to maintain. Keep intake, acknowledgement and technical work start distinct in the service requirements.
Internal model
- Technician annual salary - base salary before burden, in your currency.
- Payroll burden percentage and benefits and overhead percentage - percentage-point inputs (20 means 20 percent), converted to fractions in the formula.
- Productive hours per technician per year - hours actually available after meetings, training and leave. Must be above zero and cannot exceed the 8,736 total hours in this model's nominal 52-week year. The upper limit is a mathematical boundary, not a recommended staffing assumption.
- Minimum staffed seats per covered shift - the floor of people who must be present per shift regardless of volume.
- Recruiting and training cost - one-time year-one cost.
- Management allocation per month - the monthly share of a manager's loaded cost attributable to this team.
- Tool cost - annual tooling attributable to internal delivery.
Outsourced model
- Recurring base fee, per-user fee, per-endpoint fee, per-ticket fee, per-alert fee, dedicated resource fee, after-hours premium - monthly amounts from the proposal. Mark a fee "not applicable" only when the provider confirms it does not exist; an unknown fee is not zero.
- Unit rate basis - apply rates to all workload units, or to the units above the monthly quantities included in the quoted plan. A positive unit rate needs its included quantity in allowance mode; enter zero explicitly if none are included. A zero rate needs no allowance quantity.
- Minimum monthly commitment - the floor the provider bills even when variable charges fall below it.
- Onboarding fee - one-time year-one cost.
- Estimated monthly overage - your estimate of charges beyond included volumes.
- Retained internal management hours and loaded hourly cost - outsourcing does not remove vendor management; this prices the hours you keep.
For an invented example, suppose 1,000 monthly alerts include 100 that each need six minutes of additional human work. If the proposal bills all 1,000 alerts, enter 1,000 alerts and 0.6 average minutes per alert. If those 600 minutes are already in the ticket-handling estimate, enter zero additional alert minutes instead. Per-alert quote charges still use the 1,000-unit count before any included allowance. If the proposal bills a different unit, normalize it before using that rate here.
Hybrid model
- Internal and outsourced share of tickets and alerts - percentage-point inputs that must total 100 percent.
- Coverage hours kept internally per week - the hours your own team must staff. This is independent of its share of tickets and cannot exceed the total coverage window.
- Retained internal FTE floor - the internal staffing assumption you keep.
- Additional annual hybrid tooling / overhead covers costs not already counted in staffing or retained provider-management hours. Transition is a separate one-time year-one cost.
What the result shows
- Required internal FTE from workload and from coverage - and which one controls staffing. When coverage FTE exceeds workload FTE, the modeled staffing floor is coverage-bound. Build the actual shift roster separately, including absence cover and busy periods.
- Year-one cost by model - recurring cost plus one-time charges (recruiting and training, onboarding, transition).
- Recurring annual cost by model and the monthly equivalent.
- Cost per user, per endpoint, per ticket and per covered hour - shown only when the denominator is available.
- Differences from the internal model when its inputs are complete.
- Your input assumptions, confirmed-zero choices and the cost inputs still unknown for each blocked model.
A result that depends on an unknown mandatory charge is labeled incomplete. Treat an incomplete result as a list of questions for the provider, not as a comparison.
The formulas
Read the calculation formulas
All formulas are published so the result can be audited by hand. Formulas use decimal fractions; the form takes percentage points and divides by 100 (20 becomes 0.20).
annual_ticket_hours = monthly_tickets * handling_minutes_per_ticket / 60 * 12
annual_alert_hours = monthly_alerts * handling_minutes_per_alert / 60 * 12
annual_work_hours = annual_ticket_hours + annual_alert_hours
workload_fte = annual_work_hours / productive_hours_per_technician
coverage_fte = coverage_hours_per_week * 52 * minimum_staffed_seats / productive_hours_per_technician
required_internal_fte = max(workload_fte, coverage_fte)
loaded_salary = annual_salary * (1 + payroll_burden_pct + benefits_overhead_pct)
internal_recurring_annual = required_internal_fte * loaded_salary + management_monthly * 12 + internal_tool_cost_annual
internal_year_one = internal_recurring_annual + recruiting_training_cost
chargeable_units(demand, included) = demand # all-units mode
chargeable_units(demand, included) = max(0, demand - included) # allowance mode
outsourced_variable_monthly = sum(chargeable_units(workload_unit, included_unit) * unit_rate)
outsourced_monthly = max(minimum_monthly, base_fee + outsourced_variable_monthly + dedicated_resource_fee + after_hours_premium + overage_monthly)
outsourced_recurring_annual = outsourced_monthly * 12 + retained_management_hours_monthly * retained_loaded_hourly_cost * 12
outsourced_year_one = outsourced_recurring_annual + onboarding_fee
hybrid_internal_workload = annual_work_hours * internal_share
hybrid_internal_coverage_fte = internal_coverage_hours_per_week * 52 * minimum_staffed_seats / productive_hours_per_technician
hybrid_internal_fte = max(hybrid_internal_workload / productive_hours_per_technician, hybrid_internal_coverage_fte, retained_internal_fte_floor)
hybrid_internal_annual = hybrid_internal_fte * loaded_salary
hybrid_variable_monthly = sum(chargeable_units(workload_unit * outsourced_share, included_unit) * unit_rate)
hybrid_provider_monthly = max(minimum_monthly, base_fee + hybrid_variable_monthly + dedicated_resource_fee + after_hours_premium + overage_monthly)
hybrid_provider_annual = hybrid_provider_monthly * 12 + retained_management_hours_monthly * retained_loaded_hourly_cost * 12
hybrid_recurring_annual = hybrid_internal_annual + hybrid_provider_annual + hybrid_tooling_management_annual
hybrid_year_one = hybrid_recurring_annual + onboarding_fee + transition_cost
When the outsourced share is zero, provider fees, retained provider-management cost and provider onboarding are zero in the hybrid scenario. Otherwise, fixed fees and the quoted monthly minimum remain in full. Only unit-based demand is scaled. Monthly included quantities stay unchanged in the same-plan hybrid assumption: for 1,000 tickets, 200 included and a 50% outsourced share, 300 tickets are chargeable. The full-workload case has 800 chargeable tickets. Request a separate hybrid quote if its plan or allowances differ.
Worked example - illustrative inputs only
Follow the illustrative calculation
The numbers below are invented to show the arithmetic. They are not vendor rates and not a market benchmark.
Assume 1,000 monthly tickets at 20 handling minutes, 600 monthly alerts at 8 minutes, 60 coverage hours per week with 1 minimum seat, 1,600 productive hours per technician:
- annual_work_hours = (1000 * 20/60 * 12) + (600 * 8/60 * 12) = 4,000 + 960 = 4,960 hours
- workload_fte = 4,960 / 1,600 = 3.1
- coverage_fte = 60 * 52 * 1 / 1,600 = 1.95
- required_internal_fte = 3.1 (workload controls)
With an illustrative salary of 60,000 at 12 percent burden and 18 percent overhead (enter 12 and 18 in the form), loaded_salary = 60,000 * 1.30 = 78,000, so staffing alone is 3.1 * 78,000 = 241,800 per year before management and tooling. An outsourced comparison is complete only once every fee line from the proposal is entered.
Caveats and limits
- Results are estimates built entirely from your inputs; the calculator knows nothing your inputs do not say.
- It does not model service quality, SLA compliance, client churn or the cost of a failed transition.
- It does not compound growth into year-one numbers.
- Included quantities use the same unit as the rate and reset monthly in this model. Tiered rates, rollover, pooled unit conversions and invoice rounding need separate quote calculations.
- Hybrid unit counts can be fractional planning quantities; confirm the supplier billing rules.
- Recurring, one-time and pass-through costs are kept separate; do not read year-one cost as a run rate.
- Modeled output is never a provider quote. Replace assumptions with real proposal numbers as soon as you have them.
Export and next steps
Use Copy results and assumptions for a readable breakdown, or Export scenario for a JSON file you can import later. Import restores inputs, the unit-billing mode and confirmed-zero choices; it ignores stored totals and asks you to calculate again.
- NOC pricing models - source the NOC fee inputs correctly.
- Help desk pricing models - source the help desk fee inputs correctly.
- Request matched quotes - replace assumptions with proposals in a comparable format.