Methodology
Outsource vs Hire Comparison methodology
Educational only: Business decision support, not accounting, tax or legal advice.
Privacy: Calculations run locally; Margin101 does not receive your commercial inputs.
Update policy: Reviewed when formulas or official dependencies change.
Scope: Market-neutral small-business planning using your own assumptions.
1. Formulas and units
leftIncrementalCost = outsource incremental fixed cost + required units ร outsource incremental cost per unit, if capacity is sufficientWhere
- units
- Required units (units/period)Source: User decision
- leftIncrementalFixedCost
- Outsource incremental fixed cost (currency units/decision period, ex tax)Source: Business record
- leftIncrementalVariableCostPerUnit
- Outsource incremental cost per unit (currency units/unit, ex tax)Source: Business record
- leftCapacityUnits
- Outsource capacity (units/period)Source: Business record
- leftIncrementalCost
- Outsource incremental cost (currency units, ex tax)Source: Calculated output
rightIncrementalCost = hire incremental fixed cost + required units ร hire incremental cost per unit, if capacity is sufficientWhere
- units
- Required units (units/period)Source: User decision
- rightIncrementalFixedCost
- Hire incremental fixed cost (currency units/decision period, ex tax)Source: Business record
- rightIncrementalVariableCostPerUnit
- Hire incremental cost per unit (currency units/unit, ex tax)Source: Business record
- rightCapacityUnits
- Hire capacity (units/period)Source: Business record
- rightIncrementalCost
- Hire incremental cost (currency units, ex tax)Source: Calculated output
crossoverUnits = ceiling((right fixed cost โ left fixed cost) / (left unit cost โ right unit cost)), when reachable within both capacitiesWhere
- crossoverUnits
- Cost crossover units (units)Source: Calculated output
leftCapacityGap = max(0, required units โ outsource capacity)Where
- units
- Required units (units/period)Source: User decision
- leftCapacityUnits
- Outsource capacity (units/period)Source: Business record
- leftCapacityGap
- Outsource capacity gap (units)Source: Calculated output
rightCapacityGap = max(0, required units โ hire capacity)Where
- units
- Required units (units/period)Source: User decision
- rightCapacityUnits
- Hire capacity (units/period)Source: Business record
- rightCapacityGap
- Hire capacity gap (units)Source: Calculated output
excludedSunkCost = current sunk cost disclosed but excluded from both incremental optionsWhere
- currentSunkCost
- Current sunk cost (currency units/decision period, ex tax)Source: Business record
- excludedSunkCost
- Excluded sunk cost (currency units, ex tax)Source: Calculated output
Money inputs and outputs use the currency selected in the scenario without changing the canonical methodology. Rates, margins, utilisation and buffers are entered as percentages and converted to decimal values for calculation.
2. Worked example
Input assumptions
The labelled rows below are formatted directly from the exact shared engine using the visible default inputs.
- Required units
- 120 units/period
- Current sunk cost
- 2,500 currency units/decision period, ex tax
- Outsource incremental fixed cost
- 200 currency units/decision period, ex tax
- Outsource incremental cost per unit
- 70 currency units/unit, ex tax
- Outsource capacity
- 220 units/period
- Hire incremental fixed cost
- 6,000 currency units/decision period, ex tax
- Hire incremental cost per unit
- 35 currency units/unit, ex tax
- Hire capacity
- 220 units/period
Calculation and outputs
Outsource incremental cost
leftIncrementalCost = outsource incremental fixed cost + required units ร outsource incremental cost per unit, if capacity is sufficient- Required units
- 120 units/period
- Current sunk cost
- 2,500 currency units/decision period, ex tax
- Outsource incremental fixed cost
- 200 currency units/decision period, ex tax
- Outsource incremental cost per unit
- 70 currency units/unit, ex tax
- Outsource capacity
- 220 units/period
- Hire incremental fixed cost
- 6,000 currency units/decision period, ex tax
- Hire incremental cost per unit
- 35 currency units/unit, ex tax
- Hire capacity
- 220 units/period
- Hire incremental cost
- 10,200 money
- Cost crossover units
- 166 units
- Outsource capacity gap
- 0 units
- Hire capacity gap
- 0 units
- Excluded sunk cost
- 2,500 money
Engine result: 8,600 money
Hire incremental cost
rightIncrementalCost = hire incremental fixed cost + required units ร hire incremental cost per unit, if capacity is sufficient- Required units
- 120 units/period
- Current sunk cost
- 2,500 currency units/decision period, ex tax
- Outsource incremental fixed cost
- 200 currency units/decision period, ex tax
- Outsource incremental cost per unit
- 70 currency units/unit, ex tax
- Outsource capacity
- 220 units/period
- Hire incremental fixed cost
- 6,000 currency units/decision period, ex tax
- Hire incremental cost per unit
- 35 currency units/unit, ex tax
- Hire capacity
- 220 units/period
- Outsource incremental cost
- 8,600 money
- Cost crossover units
- 166 units
- Outsource capacity gap
- 0 units
- Hire capacity gap
- 0 units
- Excluded sunk cost
- 2,500 money
Engine result: 10,200 money
Cost crossover units
crossoverUnits = ceiling((right fixed cost โ left fixed cost) / (left unit cost โ right unit cost)), when reachable within both capacities- Current sunk cost
- 2,500 currency units/decision period, ex tax
- Outsource incremental fixed cost
- 200 currency units/decision period, ex tax
- Outsource incremental cost per unit
- 70 currency units/unit, ex tax
- Outsource capacity
- 220 units/period
- Hire incremental fixed cost
- 6,000 currency units/decision period, ex tax
- Hire incremental cost per unit
- 35 currency units/unit, ex tax
- Hire capacity
- 220 units/period
- Outsource incremental cost
- 8,600 money
- Hire incremental cost
- 10,200 money
- Outsource capacity gap
- 0 units
- Hire capacity gap
- 0 units
- Excluded sunk cost
- 2,500 money
Engine result: 166 units
Outsource capacity gap
leftCapacityGap = max(0, required units โ outsource capacity)- Required units
- 120 units/period
- Outsource incremental fixed cost
- 200 currency units/decision period, ex tax
- Outsource incremental cost per unit
- 70 currency units/unit, ex tax
- Outsource capacity
- 220 units/period
- Hire capacity
- 220 units/period
- Outsource incremental cost
- 8,600 money
- Hire capacity gap
- 0 units
Engine result: 0 units
Hire capacity gap
rightCapacityGap = max(0, required units โ hire capacity)- Required units
- 120 units/period
- Outsource capacity
- 220 units/period
- Hire incremental fixed cost
- 6,000 currency units/decision period, ex tax
- Hire incremental cost per unit
- 35 currency units/unit, ex tax
- Hire capacity
- 220 units/period
- Hire incremental cost
- 10,200 money
- Outsource capacity gap
- 0 units
Engine result: 0 units
Excluded sunk cost
excludedSunkCost = current sunk cost disclosed but excluded from both incremental options- Current sunk cost
- 2,500 currency units/decision period, ex tax
- Outsource incremental fixed cost
- 200 currency units/decision period, ex tax
- Outsource incremental cost per unit
- 70 currency units/unit, ex tax
- Hire incremental fixed cost
- 6,000 currency units/decision period, ex tax
- Hire incremental cost per unit
- 35 currency units/unit, ex tax
- Outsource incremental cost
- 8,600 money
- Hire incremental cost
- 10,200 money
- Cost crossover units
- 166 units
Engine result: 2,500 money
Example
The labelled rows below are formatted directly from the exact shared engine using the visible default inputs.
- Outsource incremental cost
- 8,600.00
- Hire incremental cost
- 10,200.00
- Lower-cost feasible option
- Outsource
- Cost crossover units
- 166 units
- Outsource capacity gap
- 0 units
- Hire capacity gap
- 0 units
- Excluded sunk cost
- 2,500.00
The lower-cost feasible option is Outsource.
Interpretation
Compare the same delivered workload and service level rather than headline hourly rates.
3. Validation and boundary checks
- All inputs must be finite and remain inside the visible non-negative validation boundaries.
- Capacity and demand fields that represent physical units reject fractional values where the engine requires whole units.
- Rates remain inside the closed range from 0% to 100%.
- Unreachable contribution, crossover or payback thresholds return an explicit unavailable state rather than Infinity.
- Option comparisons reject an infeasible option when its entered capacity is below the required workload.
- Control: decide which option gives the required authority over priorities, methods, quality checks and escalation; the cost result does not score control.
- Continuity: document how each option covers absence, supplier failure, handover and knowledge retention; capacity alone does not prove continuity.
- Reversibility: compare notice periods, commitments, switching effort and the ability to unwind the decision; the lower-cost result is not a recommendation.
- Required units minimum
units โฅ 0 units/periodโ A lower value is rejected before calculation.- Required units maximum
units โค 100,000,000 units/periodโ A higher value is rejected before calculation.- Current sunk cost minimum
currentSunkCost โฅ 0 currency units/decision period, ex taxโ A lower value is rejected before calculation.- Current sunk cost maximum
currentSunkCost โค 10,000,000 currency units/decision period, ex taxโ A higher value is rejected before calculation.- Outsource incremental fixed cost minimum
leftIncrementalFixedCost โฅ 0 currency units/decision period, ex taxโ A lower value is rejected before calculation.- Outsource incremental fixed cost maximum
leftIncrementalFixedCost โค 10,000,000 currency units/decision period, ex taxโ A higher value is rejected before calculation.- Outsource incremental cost per unit minimum
leftIncrementalVariableCostPerUnit โฅ 0 currency units/unit, ex taxโ A lower value is rejected before calculation.- Outsource incremental cost per unit maximum
leftIncrementalVariableCostPerUnit โค 10,000,000 currency units/unit, ex taxโ A higher value is rejected before calculation.- Outsource capacity minimum
leftCapacityUnits โฅ 0 units/periodโ A lower value is rejected before calculation.- Outsource capacity maximum
leftCapacityUnits โค 100,000,000 units/periodโ A higher value is rejected before calculation.- Hire incremental fixed cost minimum
rightIncrementalFixedCost โฅ 0 currency units/decision period, ex taxโ A lower value is rejected before calculation.- Hire incremental fixed cost maximum
rightIncrementalFixedCost โค 10,000,000 currency units/decision period, ex taxโ A higher value is rejected before calculation.- Hire incremental cost per unit minimum
rightIncrementalVariableCostPerUnit โฅ 0 currency units/unit, ex taxโ A lower value is rejected before calculation.- Hire incremental cost per unit maximum
rightIncrementalVariableCostPerUnit โค 10,000,000 currency units/unit, ex taxโ A higher value is rejected before calculation.- Hire capacity minimum
rightCapacityUnits โฅ 0 units/periodโ A lower value is rejected before calculation.- Hire capacity maximum
rightCapacityUnits โค 100,000,000 units/periodโ A higher value is rejected before calculation.
4. Assumptions and source classification
- All operating volumes, rates, workload, capacity, time, cost and contribution values are supplied by the user.
- Money inputs use one consistent ex-tax basis and every record refers to the same operating period.
- Demand realisation, recovery, hours saved and expected unit rates are scenarios, not forecasts or benchmarks.
- Committed sunk cost is disclosed but excluded from make, buy, outsource and hire incremental economics.
- The shared engine retains raw precision and display formatting never feeds back into calculation.
This comparison calculator has no current policy-data dependency. Its commercial assumptions are user supplied. Registered family-level regression suites exercise the shared business-logic engine and worked-result reconciliation.
5. Limitations
- Results depend on complete and comparable incremental cost, capacity and operating records.
- The model does not forecast demand, service quality, employee performance, supplier reliability or disruption duration.
- A positive result or short payback does not establish implementation feasibility or guarantee a commercial outcome.
- The planner does not replace operational, accounting, tax, legal or financial advice.
This is educational decision support, not tax, accounting, legal or financial advice. Check the treatment of your actual transactions under the rules that apply to your business and seek qualified advice where appropriate.
6. Update and evidence policy
Registered family-level suites test formula invariants and example reconciliation; the release ledger records that coverage without claiming a separate oracle for every line of public copy. There is no official threshold or benchmark to refresh for this comparison calculator. Commercial inputs remain user-supplied because they vary by business and contract.
Change history
- : Initial public release of the planner and methodology after pre-launch calculation, content, source and interaction review.
Related reading
Guides to interpret the decision and its assumptions.
- Subcontractor vs Employee Crew Capacity
Compare internal and subcontracted delivery capacity on one loaded-cost, recovery, timing and risk boundary.
Read guide - Commission vs Booth or Chair Rental
Compare commission and rental structures on aligned revenue, loaded cost, capacity and risk assumptions.
Read guide