Skip to main content

Methodology

Capacity Constraint Profit Planner methodology

Test whether a bounded capacity expansion serves enough constrained demand to recover its period cost and improve contribution.

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

Units served before expansion
servedUnitsBeforeExpansion = min(demand units, current capacity units)

Where

demandUnits
Demand units (units/period)Source: Business record
currentCapacityUnits
Current capacity units (units/period)Source: Business record
capacityExpansionUnits
Capacity expansion units (units/period)Source: User decision
servedUnitsBeforeExpansion
Units served before expansion (units)Source: Calculated output
Constrained demand units
constrainedUnitsBeforeExpansion = max(0, demand units โˆ’ current capacity units)

Where

demandUnits
Demand units (units/period)Source: Business record
currentCapacityUnits
Current capacity units (units/period)Source: Business record
capacityExpansionUnits
Capacity expansion units (units/period)Source: User decision
constrainedUnitsBeforeExpansion
Constrained demand units (units)Source: Calculated output
Units served after expansion
servedUnitsAfterExpansion = min(demand units, current capacity units + capacity expansion units)

Where

demandUnits
Demand units (units/period)Source: Business record
currentCapacityUnits
Current capacity units (units/period)Source: Business record
capacityExpansionUnits
Capacity expansion units (units/period)Source: User decision
servedUnitsAfterExpansion
Units served after expansion (units)Source: Calculated output
Incremental units served
incrementalUnitsServed = units served after expansion โˆ’ units served before expansion

Where

servedUnitsBeforeExpansion
Units served before expansion (units)Source: Calculated output
servedUnitsAfterExpansion
Units served after expansion (units)Source: Calculated output
incrementalUnitsServed
Incremental units served (units)Source: Calculated output
Incremental contribution
incrementalContribution = incremental units served ร— (selling price per unit โˆ’ variable cost per unit) โˆ’ expansion period cost

Where

sellingPricePerUnit
Selling price per unit (currency units/unit, ex tax)Source: Business record
variableCostPerUnit
Variable cost per unit (currency units/unit, ex tax)Source: Business record
expansionPeriodCost
Expansion cost for the period (currency units/decision period, ex tax)Source: User decision
incrementalUnitsServed
Incremental units served (units)Source: Calculated output
incrementalContribution
Incremental contribution (currency units, ex tax)Source: Calculated output
Expansion break-even units
expansionBreakEvenUnits = ceiling(expansion period cost / contribution per served unit), when contribution is positive

Where

expansionPeriodCost
Expansion cost for the period (currency units/decision period, ex tax)Source: User decision
expansionBreakEvenUnits
Expansion break-even units (units)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.

Demand units
150 units/period
Current capacity units
100 units/period
Selling price per unit
20 currency units/unit, ex tax
Variable cost per unit
8 currency units/unit, ex tax
Capacity expansion units
30 units/period
Expansion cost for the period
100 currency units/decision period, ex tax

Calculation and outputs

  1. Units served before expansion

    servedUnitsBeforeExpansion = min(demand units, current capacity units)
    Demand units
    150 units/period
    Current capacity units
    100 units/period
    Capacity expansion units
    30 units/period
    Constrained demand units
    50 units

    Engine result: 100 units

  2. Constrained demand units

    constrainedUnitsBeforeExpansion = max(0, demand units โˆ’ current capacity units)
    Demand units
    150 units/period
    Current capacity units
    100 units/period
    Capacity expansion units
    30 units/period

    Engine result: 50 units

  3. Units served after expansion

    servedUnitsAfterExpansion = min(demand units, current capacity units + capacity expansion units)
    Demand units
    150 units/period
    Current capacity units
    100 units/period
    Capacity expansion units
    30 units/period
    Expansion cost for the period
    100 currency units/decision period, ex tax
    Units served before expansion
    100 units
    Constrained demand units
    50 units
    Expansion break-even units
    9 units

    Engine result: 130 units

  4. Incremental units served

    incrementalUnitsServed = units served after expansion โˆ’ units served before expansion
    Capacity expansion units
    30 units/period
    Expansion cost for the period
    100 currency units/decision period, ex tax
    Units served before expansion
    100 units
    Constrained demand units
    50 units
    Units served after expansion
    130 units
    Expansion break-even units
    9 units

    Engine result: 30 units

  5. Incremental contribution

    incrementalContribution = incremental units served ร— (selling price per unit โˆ’ variable cost per unit) โˆ’ expansion period cost
    Selling price per unit
    20 currency units/unit, ex tax
    Variable cost per unit
    8 currency units/unit, ex tax
    Capacity expansion units
    30 units/period
    Expansion cost for the period
    100 currency units/decision period, ex tax
    Units served before expansion
    100 units
    Constrained demand units
    50 units
    Units served after expansion
    130 units
    Incremental units served
    30 units
    Expansion break-even units
    9 units

    Engine result: 260 money

  6. Expansion break-even units

    expansionBreakEvenUnits = ceiling(expansion period cost / contribution per served unit), when contribution is positive
    Variable cost per unit
    8 currency units/unit, ex tax
    Capacity expansion units
    30 units/period
    Expansion cost for the period
    100 currency units/decision period, ex tax
    Units served before expansion
    100 units
    Constrained demand units
    50 units
    Units served after expansion
    130 units
    Incremental units served
    30 units
    Incremental contribution
    260 money

    Engine result: 9 units

Example

The labelled rows below are formatted directly from the exact shared engine using the visible default inputs.

Units served before expansion
100 units
Constrained demand units
50 units
Units served after expansion
130 units
Incremental units served
30 units
Incremental contribution
260.00
Expansion break-even units
9 units

The incremental contribution is 260.00.

Interpretation

Contribution per bottleneck unit is useful only when the entered resource is the actual constraint.

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.
Demand units minimum
demandUnits โ‰ฅ 0 units/period โ€” A lower value is rejected before calculation.
Demand units maximum
demandUnits โ‰ค 100,000,000 units/period โ€” A higher value is rejected before calculation.
Current capacity units minimum
currentCapacityUnits โ‰ฅ 0 units/period โ€” A lower value is rejected before calculation.
Current capacity units maximum
currentCapacityUnits โ‰ค 100,000,000 units/period โ€” A higher value is rejected before calculation.
Selling price per unit minimum
sellingPricePerUnit โ‰ฅ 0 currency units/unit, ex tax โ€” A lower value is rejected before calculation.
Selling price per unit maximum
sellingPricePerUnit โ‰ค 10,000,000 currency units/unit, ex tax โ€” A higher value is rejected before calculation.
Variable cost per unit minimum
variableCostPerUnit โ‰ฅ 0 currency units/unit, ex tax โ€” A lower value is rejected before calculation.
Variable cost per unit maximum
variableCostPerUnit โ‰ค 10,000,000 currency units/unit, ex tax โ€” A higher value is rejected before calculation.
Capacity expansion units minimum
capacityExpansionUnits โ‰ฅ 0 units/period โ€” A lower value is rejected before calculation.
Capacity expansion units maximum
capacityExpansionUnits โ‰ค 100,000,000 units/period โ€” A higher value is rejected before calculation.
Expansion cost for the period minimum
expansionPeriodCost โ‰ฅ 0 currency units/decision period, ex tax โ€” A lower value is rejected before calculation.
Expansion cost for the period maximum
expansionPeriodCost โ‰ค 10,000,000 currency units/decision period, ex tax โ€” 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 planner 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 planner. Commercial inputs remain user-supplied because they vary by business and contract.

Change history

  1. : Initial public release of the planner and methodology after pre-launch calculation, content, source and interaction review.

Guides to interpret the decision and its assumptions.

Return to the planner