Skip to main content
Tandom
How it works
About
Discuss a sourcing project →
Resources/Guides/Dual-sourcing strategy for manufacturing

Guide

Dual-sourcing strategy for manufacturing

Model second-source qualification cost, shared dependencies, allocation, keep-warm evidence, and disruption exposure before splitting manufacturing volume.

Updated September 25, 2026·18 min read·Copy the scenario model →
Share:X

On this page

TL;DRBuild the business caseTest real independenceSet the operating allocationKeep the source usableCopy the scenario modelWorked exampleCommon pitfallsGlossaryFAQ

TL;DR

  • Build a dual-sourcing strategy around a named disruption and mapped dependencies, since NIST MEP recommends tracing supplier activities, subtiers, alternative sites, and recovery time.
  • Compare qualification cash and recurring burden with time-phased unmet demand under single-plus-buffer, active-dual, and standby models.
  • Never assume two supplier names remove shared material, processing, tooling, logistics, ownership, site, country, or approval dependencies.
  • Set allocation from demand, minimum runs, price tiers, release cadence, capacity evidence, and the proof needed to keep each source usable.

Build the business case before splitting volume

Dual sourcing is justified only when the buyer can name the exposure it addresses and the cost of maintaining usable alternative capacity. Begin with one controlled item, one revision, and one decision owner.

Compare three operating models

Operating models for the dual-sourcing decision
Operating modelCost basisProtection claim
Single plus bufferIncumbent purchases, setup, logistics, and buyer-approved inventory carrying costInventory and usable pipeline cover demand while the incumbent recovers
Active dualPurchases at each price tier, setup by release, logistics, inventory, oversight, and keep-warm workBoth sources provide accepted output under a planned allocation
Qualified standbyQualification cash plus recurring evidence, asset, commercial, and activation-readiness costThe second source starts accepted output after its actual restart and release lags

Operating model

Single plus buffer

Cost basis
Incumbent purchases, setup, logistics, and buyer-approved inventory carrying cost
Protection claim
Inventory and usable pipeline cover demand while the incumbent recovers

Operating model

Active dual

Cost basis
Purchases at each price tier, setup by release, logistics, inventory, oversight, and keep-warm work
Protection claim
Both sources provide accepted output under a planned allocation

Operating model

Qualified standby

Cost basis
Qualification cash plus recurring evidence, asset, commercial, and activation-readiness cost
Protection claim
The second source starts accepted output after its actual restart and release lags

Keep the cash views separate

Cash views in a dual-sourcing business case
Cash viewIncludeDecision use
Qualification cashBuyer time, audit, samples, validation, duplicate assets, test equipment, data preparation, and approvalsShows the one-time funding needed before the source can support the strategy
Optional amortized viewOne-time qualification cash divided by a buyer-approved planning horizonSupports planning while keeping the full cash requirement visible
Recurring operating cashPrice tiers, MOQ and setup effects, logistics, inventory, administration, quality work, and keep-warm evidenceShows the annual burden of the chosen operating model
Scenario exposureTime-phased unmet demand multiplied by a buyer-approved consequence per unitCompares operating models without inventing a probability

Cash view

Qualification cash

Include
Buyer time, audit, samples, validation, duplicate assets, test equipment, data preparation, and approvals
Decision use
Shows the one-time funding needed before the source can support the strategy

Cash view

Optional amortized view

Include
One-time qualification cash divided by a buyer-approved planning horizon
Decision use
Supports planning while keeping the full cash requirement visible

Cash view

Recurring operating cash

Include
Price tiers, MOQ and setup effects, logistics, inventory, administration, quality work, and keep-warm evidence
Decision use
Shows the annual burden of the chosen operating model

Cash view

Scenario exposure

Include
Time-phased unmet demand multiplied by a buyer-approved consequence per unit
Decision use
Compares operating models without inventing a probability

The Ready.gov Business Impact Analysis worksheet separates interruption timing and duration from operational and financial effects. Apply that discipline to each scenario. Do not multiply an unsupported probability by a dramatic loss and call the result a forecast.

Peer-reviewed disruption research also compares inventory, reliable sourcing, and contingent rerouting under explicit assumptions. Tomlin's 2006 Management Science study shows why mitigation choice depends on disruption behavior, capacity, and source flexibility. It does not provide a probability or policy for this buyer.

Skip dual sourcing when it cannot create usable separation

If both manufacturers rely on the same constrained input, process, tool, gauge, site, route, owner, country, approval, or data right for the scenario that matters, adding the second name does not solve that dependency. Fund a different mitigation or close the dependency first.

Test whether the two sources are independent

A second source earns disruption credit only for dependencies that are independent and evidenced. Mark every relevant node Independent, Shared, or Unknown. Any blank or other status is invalid. Independent and Shared both require named dependencies for each source, a current evidence reference, and an evidence date. Treat Unknown as unresolved.

The NIST MEP supply-chain mapping method includes critical parts, geographic concentration, Tier 2 and Tier 3 relationships, routings, and transport modes. Use that logic in the dependency tab.

Academic models reach the same structural warning through a narrower lens. Ang, Iancu, and Swinney model how shared Tier 2 suppliers change the value of direct multisourcing. Their results are model-specific, but the practical question is durable: do the two Tier 1 routes converge upstream?

Dependency tests for dual sourcing
DependencyQuestionEvidence to retain
Parent and ownershipAre apparently separate suppliers controlled or financed through the same group?Legal entities, ownership evidence, and buyer financial review
Site and countryDo the sites share a campus, utility, equipment pool, labor market, or country-level exposure?Exact sites, critical resources, backup arrangements, and scenario map
Material and subtierDo both routes depend on the same producer, grade, mill, component, or special processor?Named providers, approval status, capacity basis, and alternatives
Tools, gauges, and softwareCan each source use serviceable controlled assets without waiting for transfer or access?Identity, location, ownership, condition, maintenance, spares, versions, and rights
LogisticsDo both lanes converge at the same port, corridor, carrier, consolidator, border, or warehouse?Route map, alternates, booking terms, transit basis, and capacity evidence
Technical rights and approvalCan the buyer provide and approve the data, process, tooling, software, test method, and change package for both?Rights record, controlled package, approval path, and transfer conditions

Dependency

Parent and ownership

Question
Are apparently separate suppliers controlled or financed through the same group?
Evidence to retain
Legal entities, ownership evidence, and buyer financial review

Dependency

Site and country

Question
Do the sites share a campus, utility, equipment pool, labor market, or country-level exposure?
Evidence to retain
Exact sites, critical resources, backup arrangements, and scenario map

Dependency

Material and subtier

Question
Do both routes depend on the same producer, grade, mill, component, or special processor?
Evidence to retain
Named providers, approval status, capacity basis, and alternatives

Dependency

Tools, gauges, and software

Question
Can each source use serviceable controlled assets without waiting for transfer or access?
Evidence to retain
Identity, location, ownership, condition, maintenance, spares, versions, and rights

Dependency

Logistics

Question
Do both lanes converge at the same port, corridor, carrier, consolidator, border, or warehouse?
Evidence to retain
Route map, alternates, booking terms, transit basis, and capacity evidence

Dependency

Technical rights and approval

Question
Can the buyer provide and approve the data, process, tooling, software, test method, and change package for both?
Evidence to retain
Rights record, controlled package, approval path, and transfer conditions

GAO found that limited visibility into materials and parts suppliers constrained dependency analysis in a large public acquisition system. The GAO-25-107283 finding is a useful visibility warning, not a private purchasing rule.

Set allocation from the operating requirement

Do not begin with an inherited percentage. Begin with the work each source must perform to preserve its role, then test whether demand, price tiers, minimum runs, setup, and approved capacity support it.

  1. Enter annual good-unit demand for the named business scenario.
  2. Enter each source's approved minimum economic run and price tier.
  3. Choose the release count needed for operating and evidence goals.
  4. Calculate units per release and reject infeasible cadences.
  5. Check planned units against approved capacity, not nameplate capacity.
  6. Add setup, logistics, inventory, administration, and keep-warm cash.

Allocation research can support the input list without creating a universal answer. Burke, Carrillo, and Vakharia analyze price, cost, capacity, reliability, inventory, and minimum order quantities in a stylized model. This workbook uses buyer-entered evidence instead of importing their assumptions or outputs.

The 2025 OECD Supply Chain Resilience Review distinguishes supply, regulatory, infrastructure, and catastrophic risks. An allocation can reduce one exposure while leaving another unchanged, so test scenarios separately.

Build the second source before you allocate demand.

A paid, fixed-fee Tandom sourcing project can support requirement control, manufacturer screening, comparable RFQs, technical evidence, samples, and first-order readiness. The buyer retains every final approval.

Discuss a sourcing project →

Keep the second source usable with evidence

Qualified does not mean instantly surge-ready. Warmth is the current evidence needed to support the source's assigned role.

Keep-warm evidence plan
Readiness claimEvidenceRefresh trigger
Can build the current revisionReleased production or buyer-approved verification tied to the current site, route, material, tooling, and instructionsDrawing, BOM, process, site, tool, gauge, software, or approval change
Can meet the release cadenceRecent run size, setup, yield, lead-time, and delivery recordsDemand, minimum run, equipment, staffing, or capacity change
Can release conforming productCurrent inspection, test, traceability, packaging, and nonconformance recordsQuality-plan, measurement, test, packaging, or customer change
Can obtain critical inputsNamed material and special-process sources with current lead-time and approval statusSource, grade, provider, approval, capacity, or lead-time change
Can use required assetsTool and gauge location, condition, maintenance, spares, software, and access evidenceDamage, transfer, version change, maintenance lapse, or ownership dispute
Can activate commerciallyCurrent quote, terms, capacity evidence, contacts, payee controls, and release authorityPrice expiry, ownership, bank, term, capacity, or contracting-entity change

Readiness claim

Can build the current revision

Evidence
Released production or buyer-approved verification tied to the current site, route, material, tooling, and instructions
Refresh trigger
Drawing, BOM, process, site, tool, gauge, software, or approval change

Readiness claim

Can meet the release cadence

Evidence
Recent run size, setup, yield, lead-time, and delivery records
Refresh trigger
Demand, minimum run, equipment, staffing, or capacity change

Readiness claim

Can release conforming product

Evidence
Current inspection, test, traceability, packaging, and nonconformance records
Refresh trigger
Quality-plan, measurement, test, packaging, or customer change

Readiness claim

Can obtain critical inputs

Evidence
Named material and special-process sources with current lead-time and approval status
Refresh trigger
Source, grade, provider, approval, capacity, or lead-time change

Readiness claim

Can use required assets

Evidence
Tool and gauge location, condition, maintenance, spares, software, and access evidence
Refresh trigger
Damage, transfer, version change, maintenance lapse, or ownership dispute

Readiness claim

Can activate commercially

Evidence
Current quote, terms, capacity evidence, contacts, payee controls, and release authority
Refresh trigger
Price expiry, ownership, bank, term, capacity, or contracting-entity change

Put each required activity in Keep_Warm. If a production run is already included in the allocation, mark its units that way. Mark fixed event cash separately because an allocated run can include the units without including calibration, witness, testing, or review cash. The model excludes only the cost element explicitly marked as counted.

Model recovery in phases

A standby source may produce nothing while material, tooling, gauges, software, approvals, and transport are still pending. Enter zero when no output is planned. When output is planned, the Disruption sheet requires yield, every readiness day, transport time, an evidence reference, and confidence before it credits accepted units. Phase dates must begin at the declared scenario origin and remain contiguous. Closing inventory or backlog rolls into the next phase. Only the terminal row at the declared horizon may be marked as the horizon end.

Time-to-recover and time-to-survive research formalizes this gap between disruption duration and the period a network can keep serving demand. Simchi-Levi and coauthors' automotive case is a primary implementation example. This guide uses a simpler buyer-entered phase model and does not reproduce its equations or data.

Copy this seven-tab dual-sourcing scenario model

Create tabs with these exact names and paste the matching block into cell A1: Decision, Qualification_Cost, Dependency_Map, Allocation, Keep_Warm, Disruption, and Summary. Cross-sheet formulas depend on those names.

Paste all seven tabs before entering data. Fill blank inputs, enter percentages and yields as decimals, and do not overwrite cells beginning with =. Use one pre-normalized model currency. Retain source, date, status, owner, confidence, and limits for every decision input. Enter numeric zero where zero is the controlled fact; a blank remains unavailable and keeps the decision on hold. In Decision, enter the scenario origin and horizon, identify both legal entities and sites, and mark the controlled item, revision, currency, source identities, and evidence cutoff as current only after review.

Dual-sourcing scenario formulas

qualification cash = SUM(quantity x unit rate + external cash)
source units = annual demand x source share
units per release = source units / planned releases
cadence passes only when units per release meet the source-specific minimum economic run
keep-warm incremental units = 0 only when production units are marked as already counted in the allocation
keep-warm incremental fixed event cash = 0 only when that fixed cash is separately marked as already counted in the allocation
annual recurring total = unit purchases + setup + logistics + inventory + administration + incremental keep-warm cash
accepted source units in a phase = attempted units x yield only when every required readiness, transport, evidence, and confidence input is present and the arrival day is within the phase
first phase start = declared scenario origin; each later phase start = prior phase end
closing backlog = MAX(0, opening backlog + phase demand - opening inventory - pipeline arrivals - accepted Source A units - accepted Source B units)
closing inventory = MAX(0, opening inventory + pipeline arrivals + accepted source units - opening backlog - phase demand)
horizon exposure = closing backlog on the single terminal row at the declared horizon x buyer-approved impact per uncovered unit

1. Decision (tab name: Decision)

Decision worksheet

Copies 8 columns and 18 starter rows as tab-separated cells for Excel and Google Sheets.

Columns

  1. 1field
  2. 2controlled_value
  3. 3unit_or_convention
  4. 4source_or_document
  5. 5source_date
  6. 6evidence_status
  7. 7owner
  8. 8notes
Starter-row preview (18 rows; copy includes every cell)
  1. item_id

    unit_or_convention: text · source_or_document: controlled item master · evidence_status: Open

  2. drawing_specification_revision

    unit_or_convention: text · source_or_document: controlled technical package · evidence_status: Open

  3. model_currency

    unit_or_convention: ISO currency code · source_or_document: buyer finance policy · evidence_status: Open

  4. annual_good_unit_demand

    unit_or_convention: units per year · source_or_document: approved demand scenario · evidence_status: Open

  5. source_a_unit_price

    unit_or_convention: model currency per good unit · source_or_document: current quote or contract · evidence_status: Open

  6. source_b_unit_price

    unit_or_convention: model currency per good unit · source_or_document: current quote or contract · evidence_status: Open

  7. impact_per_uncovered_unit

    unit_or_convention: model currency per uncovered unit · source_or_document: buyer business-impact analysis · evidence_status: Open

  8. analysis_horizon

    unit_or_convention: years · source_or_document: buyer decision basis · evidence_status: Open

  9. decision_owner

    unit_or_convention: name or role · source_or_document: buyer approval matrix · evidence_status: Open

  10. chosen_operating_model

    unit_or_convention: must match Allocation operating_model · source_or_document: buyer decision · evidence_status: Open

  11. chosen_disruption_scenario

    unit_or_convention: must match Disruption scenario_id · source_or_document: buyer decision · evidence_status: Open

  12. second_source_qualification_status

    unit_or_convention: Approved Conditional or Hold · source_or_document: buyer qualification record · evidence_status: Open

  13. source_a_identity_and_site

    unit_or_convention: legal entity and site · source_or_document: approved supplier master · evidence_status: Open

  14. source_b_identity_and_site

    unit_or_convention: legal entity and site · source_or_document: approved supplier master · evidence_status: Open

  15. evidence_cutoff_date

    unit_or_convention: YYYY-MM-DD · source_or_document: buyer review record · evidence_status: Open

  16. scenario_origin_day

    unit_or_convention: day number, normally 0 · source_or_document: buyer scenario definition · evidence_status: Open

  17. scenario_horizon_end_day

    unit_or_convention: day number · source_or_document: buyer scenario definition · evidence_status: Open

  18. evidence_cutoff_status

    unit_or_convention: Current or Hold · source_or_document: buyer review record · evidence_status: Open

2. Qualification cost (tab name: Qualification_Cost)

Qualification cost worksheet

Copies 12 columns and 8 starter rows as tab-separated cells for Excel and Google Sheets.

Columns

  1. 1cost_id
  2. 2category
  3. 3description
  4. 4quantity
  5. 5unit
  6. 6unit_rate_model_currency
  7. 7external_cash_model_currency
  8. 8total_cost_model_currency
  9. 9source_or_document
  10. 10source_date
  11. 11evidence_status
  12. 12owner
Starter-row preview (8 rows; copy includes every cell)
  1. QC-001

    category: buyer labor · description: engineering review and data preparation · total_cost_model_currency: =IF(OR(D2="",F2="",G2=""),"",D2*F2+G2)

  2. QC-002

    category: buyer labor · description: quality planning and validation review · total_cost_model_currency: =IF(OR(D3="",F3="",G3=""),"",D3*F3+G3)

  3. QC-003

    category: buyer labor · description: procurement and commercial setup · total_cost_model_currency: =IF(OR(D4="",F4="",G4=""),"",D4*F4+G4)

  4. QC-004

    category: supplier evidence · description: audit visit or remote evidence review · total_cost_model_currency: =IF(OR(D5="",F5="",G5=""),"",D5*F5+G5)

  5. QC-005

    category: product evidence · description: samples trial run and independent testing · total_cost_model_currency: =IF(OR(D6="",F6="",G6=""),"",D6*F6+G6)

  6. QC-006

    category: assets · description: duplicate tooling fixtures gauges or test equipment · total_cost_model_currency: =IF(OR(D7="",F7="",G7=""),"",D7*F7+G7)

  7. QC-007

    category: other · description: buyer-defined qualification cash · total_cost_model_currency: =IF(OR(D8="",F8="",G8=""),"",D8*F8+G8)

  8. TOTAL

    description: one-time qualification cash · total_cost_model_currency: =IF(COUNT(H2:H8)=7,SUM(H2:H8),"") · source_or_document: calculated

3. Dependency map (tab name: Dependency_Map)

Dependency map worksheet

Copies 14 columns and 8 starter rows as tab-separated cells for Excel and Google Sheets.

Columns

  1. 1dependency_id
  2. 2dependency_type
  3. 3source_a_dependency
  4. 4source_b_dependency
  5. 5independence_status
  6. 6evidence_reference
  7. 7evidence_date
  8. 8scenarios_affected
  9. 9closure_action
  10. 10owner
  11. 11target_date
  12. 12notes
  13. 13evidence_status
  14. 14row_validation_status
Starter-row preview (8 rows; copy includes every cell)
  1. DEP-001

    dependency_type: parent or ownership · independence_status: Unknown · evidence_status: Open

  2. DEP-002

    dependency_type: manufacturing site · independence_status: Unknown · evidence_status: Open

  3. DEP-003

    dependency_type: raw material producer grade or component · independence_status: Unknown · evidence_status: Open

  4. DEP-004

    dependency_type: subtier or special process provider · independence_status: Unknown · evidence_status: Open

  5. DEP-005

    dependency_type: tool fixture gauge software or test system · independence_status: Unknown · evidence_status: Open

  6. DEP-006

    dependency_type: utility or critical equipment · independence_status: Unknown · evidence_status: Open

  7. DEP-007

    dependency_type: port corridor carrier country or border · independence_status: Unknown · evidence_status: Open

  8. DEP-008

    dependency_type: technical data IP or approval path · independence_status: Unknown · evidence_status: Open

4. Allocation and capacity (tab name: Allocation)

Allocation and capacity worksheet

Copies 29 columns and 3 starter rows as tab-separated cells for Excel and Google Sheets.

Columns

  1. 1operating_model
  2. 2annual_demand_good_units
  3. 3source_a_share
  4. 4source_b_share
  5. 5source_a_units
  6. 6source_b_units
  7. 7source_a_min_economic_run
  8. 8source_b_min_economic_run
  9. 9planned_releases_a
  10. 10planned_releases_b
  11. 11units_per_release_a
  12. 12units_per_release_b
  13. 13cadence_check
  14. 14capacity_check
  15. 15source_a_approved_annual_capacity
  16. 16source_b_approved_annual_capacity
  17. 17source_a_unit_price_tier
  18. 18source_b_unit_price_tier
  19. 19source_a_setup_cash_per_release
  20. 20source_b_setup_cash_per_release
  21. 21incremental_logistics_cash
  22. 22incremental_inventory_carrying_cash
  23. 23incremental_admin_quality_cash
  24. 24keep_warm_incremental_cash
  25. 25purchase_and_setup_cash
  26. 26annual_recurring_total
  27. 27source_or_document
  28. 28evidence_status
  29. 29row_validation_status
Starter-row preview (3 rows; copy includes every cell)
  1. SINGLE_PLUS_BUFFER

    annual_demand_good_units: =IF(Decision!B5="","",Decision!B5) · source_a_share: 1 · source_b_share: =IF(C2="","",1-C2)

  2. ACTIVE_DUAL

    annual_demand_good_units: =IF(Decision!B5="","",Decision!B5) · source_b_share: =IF(C3="","",1-C3) · source_a_units: =IF(OR(B3="",C3=""),"",B3*C3)

  3. QUALIFIED_STANDBY

    annual_demand_good_units: =IF(Decision!B5="","",Decision!B5) · source_a_share: 1 · source_b_share: =IF(C4="","",1-C4)

5. Keep warm (tab name: Keep_Warm)

Keep-warm worksheet

Copies 22 columns and 4 starter rows as tab-separated cells for Excel and Google Sheets.

Columns

  1. 1activity_id
  2. 2operating_model
  3. 3source
  4. 4required_evidence
  5. 5events_per_year
  6. 6units_per_event
  7. 7minimum_economic_run
  8. 8production_units_already_in_allocation
  9. 9incremental_units
  10. 10unit_price_model_currency
  11. 11fixed_cash_per_event
  12. 12fixed_event_cash_already_in_allocation
  13. 13incremental_fixed_event_cash
  14. 14other_annual_incremental_cash
  15. 15annual_incremental_cash
  16. 16cadence_check
  17. 17last_completed_date
  18. 18evidence_reference
  19. 19status
  20. 20next_due_date
  21. 21owner
  22. 22row_validation_status
Starter-row preview (4 rows; copy includes every cell)
  1. KW-001

    operating_model: ACTIVE_DUAL · incremental_units: =IF(OR(H2="",E2="",F2=""),"",IF(H2="Yes",0,E2*F2)) · incremental_fixed_event_cash: =IF(L2="","",IF(L2="Yes",0,IF(OR(E2="",K2=""),"",E2*K2)))

  2. KW-002

    operating_model: ACTIVE_DUAL · incremental_units: =IF(OR(H3="",E3="",F3=""),"",IF(H3="Yes",0,E3*F3)) · incremental_fixed_event_cash: =IF(L3="","",IF(L3="Yes",0,IF(OR(E3="",K3=""),"",E3*K3)))

  3. KW-003

    operating_model: QUALIFIED_STANDBY · incremental_units: =IF(OR(H4="",E4="",F4=""),"",IF(H4="Yes",0,E4*F4)) · incremental_fixed_event_cash: =IF(L4="","",IF(L4="Yes",0,IF(OR(E4="",K4=""),"",E4*K4)))

  4. KW-004

    operating_model: QUALIFIED_STANDBY · incremental_units: =IF(OR(H5="",E5="",F5=""),"",IF(H5="Yes",0,E5*F5)) · incremental_fixed_event_cash: =IF(L5="","",IF(L5="Yes",0,IF(OR(E5="",K5=""),"",E5*K5)))

6. Disruption and recovery (tab name: Disruption)

Disruption and recovery worksheet

Copies 40 columns and 9 starter rows as tab-separated cells for Excel and Google Sheets.

Columns

  1. 1scenario_id
  2. 2operating_model
  3. 3phase_id
  4. 4phase_start_day
  5. 5phase_end_day
  6. 6horizon_end_yes_no
  7. 7phase_sequence_check
  8. 8good_unit_demand_in_phase
  9. 9opening_usable_inventory
  10. 10usable_pipeline_arriving_in_phase
  11. 11source_a_attempted_units_in_phase
  12. 12source_a_yield
  13. 13source_a_material_ready_day
  14. 14source_a_tool_gage_ready_day
  15. 15source_a_approval_ready_day
  16. 16source_a_transport_days
  17. 17source_a_evidence_reference
  18. 18source_a_evidence_confidence
  19. 19source_a_availability_status
  20. 20source_a_accepted_units_in_phase
  21. 21source_b_attempted_units_in_phase
  22. 22source_b_yield
  23. 23source_b_material_ready_day
  24. 24source_b_tool_gage_ready_day
  25. 25source_b_approval_ready_day
  26. 26source_b_transport_days
  27. 27source_b_evidence_reference
  28. 28source_b_evidence_confidence
  29. 29source_b_availability_status
  30. 30source_b_accepted_units_in_phase
  31. 31opening_backlog
  32. 32total_demand_including_backlog
  33. 33total_usable_supply
  34. 34served_units_in_phase
  35. 35closing_backlog
  36. 36closing_usable_inventory
  37. 37impact_per_uncovered_unit
  38. 38horizon_unmet_exposure
  39. 39assumptions_and_limits
  40. 40row_validation_status
Starter-row preview (9 rows; copy includes every cell)
  1. SCENARIO_1

    operating_model: SINGLE_PLUS_BUFFER · phase_id: PHASE_1 · phase_sequence_check: =IF(OR(A2="",B2="",C2="",D2="",E2="",F2=""),"HOLD: missing phase identity dates or horizon flag",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: missing or invalid scenario origin horizon",IF(NOT(OR(B2="SINGLE_PLUS_BUFFER",B2="ACTIVE_DUAL",B2="QUALIFIED_STANDBY")),"HOLD: invalid operating model",IF(OR(NOT(ISNUMBER(D2)),NOT(ISNUMBER(E2)),D2<Decision!B17,E2<=D2,E2>Decision!B18,AND(F2<>"Yes",F2<>"No")),"HOLD: invalid phase range or horizon flag",IF(COUNTIFS(A:A,A2,B:B,B2,C:C,C2)>1,"HOLD: duplicate phase ID",IF(OR(AND(F2="No",E2=Decision!B18),AND(F2="Yes",OR(E2<>Decision!B18,COUNTIFS(A:A,A2,B:B,B2,E:E,">"&E2)>0))),"HOLD: horizon row must be terminal",IF(D2<>Decision!B17,"HOLD: first phase must start at scenario origin","Pass")))))))

  2. SCENARIO_1

    operating_model: SINGLE_PLUS_BUFFER · phase_id: PHASE_2 · phase_sequence_check: =IF(OR(A3="",B3="",C3="",D3="",E3="",F3=""),"HOLD: missing phase identity dates or horizon flag",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: missing or invalid scenario origin horizon",IF(NOT(OR(B3="SINGLE_PLUS_BUFFER",B3="ACTIVE_DUAL",B3="QUALIFIED_STANDBY")),"HOLD: invalid operating model",IF(OR(NOT(ISNUMBER(D3)),NOT(ISNUMBER(E3)),D3<Decision!B17,E3<=D3,E3>Decision!B18,AND(F3<>"Yes",F3<>"No")),"HOLD: invalid phase range or horizon flag",IF(COUNTIFS(A:A,A3,B:B,B3,C:C,C3)>1,"HOLD: duplicate phase ID",IF(OR(AND(F3="No",E3=Decision!B18),AND(F3="Yes",OR(E3<>Decision!B18,COUNTIFS(A:A,A3,B:B,B3,E:E,">"&E3)>0))),"HOLD: horizon row must be terminal",IF(OR(A3<>A2,B3<>B2,D3<>E2),"HOLD: phase gap overlap or sequence","Pass")))))))

  3. SCENARIO_1

    operating_model: SINGLE_PLUS_BUFFER · phase_id: PHASE_3 · phase_sequence_check: =IF(OR(A4="",B4="",C4="",D4="",E4="",F4=""),"HOLD: missing phase identity dates or horizon flag",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: missing or invalid scenario origin horizon",IF(NOT(OR(B4="SINGLE_PLUS_BUFFER",B4="ACTIVE_DUAL",B4="QUALIFIED_STANDBY")),"HOLD: invalid operating model",IF(OR(NOT(ISNUMBER(D4)),NOT(ISNUMBER(E4)),D4<Decision!B17,E4<=D4,E4>Decision!B18,AND(F4<>"Yes",F4<>"No")),"HOLD: invalid phase range or horizon flag",IF(COUNTIFS(A:A,A4,B:B,B4,C:C,C4)>1,"HOLD: duplicate phase ID",IF(OR(AND(F4="No",E4=Decision!B18),AND(F4="Yes",OR(E4<>Decision!B18,COUNTIFS(A:A,A4,B:B,B4,E:E,">"&E4)>0))),"HOLD: horizon row must be terminal",IF(OR(A4<>A3,B4<>B3,D4<>E3),"HOLD: phase gap overlap or sequence","Pass")))))))

  4. SCENARIO_1

    operating_model: ACTIVE_DUAL · phase_id: PHASE_1 · phase_sequence_check: =IF(OR(A5="",B5="",C5="",D5="",E5="",F5=""),"HOLD: missing phase identity dates or horizon flag",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: missing or invalid scenario origin horizon",IF(NOT(OR(B5="SINGLE_PLUS_BUFFER",B5="ACTIVE_DUAL",B5="QUALIFIED_STANDBY")),"HOLD: invalid operating model",IF(OR(NOT(ISNUMBER(D5)),NOT(ISNUMBER(E5)),D5<Decision!B17,E5<=D5,E5>Decision!B18,AND(F5<>"Yes",F5<>"No")),"HOLD: invalid phase range or horizon flag",IF(COUNTIFS(A:A,A5,B:B,B5,C:C,C5)>1,"HOLD: duplicate phase ID",IF(OR(AND(F5="No",E5=Decision!B18),AND(F5="Yes",OR(E5<>Decision!B18,COUNTIFS(A:A,A5,B:B,B5,E:E,">"&E5)>0))),"HOLD: horizon row must be terminal",IF(D5<>Decision!B17,"HOLD: first phase must start at scenario origin","Pass")))))))

  5. SCENARIO_1

    operating_model: ACTIVE_DUAL · phase_id: PHASE_2 · phase_sequence_check: =IF(OR(A6="",B6="",C6="",D6="",E6="",F6=""),"HOLD: missing phase identity dates or horizon flag",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: missing or invalid scenario origin horizon",IF(NOT(OR(B6="SINGLE_PLUS_BUFFER",B6="ACTIVE_DUAL",B6="QUALIFIED_STANDBY")),"HOLD: invalid operating model",IF(OR(NOT(ISNUMBER(D6)),NOT(ISNUMBER(E6)),D6<Decision!B17,E6<=D6,E6>Decision!B18,AND(F6<>"Yes",F6<>"No")),"HOLD: invalid phase range or horizon flag",IF(COUNTIFS(A:A,A6,B:B,B6,C:C,C6)>1,"HOLD: duplicate phase ID",IF(OR(AND(F6="No",E6=Decision!B18),AND(F6="Yes",OR(E6<>Decision!B18,COUNTIFS(A:A,A6,B:B,B6,E:E,">"&E6)>0))),"HOLD: horizon row must be terminal",IF(OR(A6<>A5,B6<>B5,D6<>E5),"HOLD: phase gap overlap or sequence","Pass")))))))

  6. SCENARIO_1

    operating_model: ACTIVE_DUAL · phase_id: PHASE_3 · phase_sequence_check: =IF(OR(A7="",B7="",C7="",D7="",E7="",F7=""),"HOLD: missing phase identity dates or horizon flag",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: missing or invalid scenario origin horizon",IF(NOT(OR(B7="SINGLE_PLUS_BUFFER",B7="ACTIVE_DUAL",B7="QUALIFIED_STANDBY")),"HOLD: invalid operating model",IF(OR(NOT(ISNUMBER(D7)),NOT(ISNUMBER(E7)),D7<Decision!B17,E7<=D7,E7>Decision!B18,AND(F7<>"Yes",F7<>"No")),"HOLD: invalid phase range or horizon flag",IF(COUNTIFS(A:A,A7,B:B,B7,C:C,C7)>1,"HOLD: duplicate phase ID",IF(OR(AND(F7="No",E7=Decision!B18),AND(F7="Yes",OR(E7<>Decision!B18,COUNTIFS(A:A,A7,B:B,B7,E:E,">"&E7)>0))),"HOLD: horizon row must be terminal",IF(OR(A7<>A6,B7<>B6,D7<>E6),"HOLD: phase gap overlap or sequence","Pass")))))))

  7. SCENARIO_1

    operating_model: QUALIFIED_STANDBY · phase_id: PHASE_1 · phase_sequence_check: =IF(OR(A8="",B8="",C8="",D8="",E8="",F8=""),"HOLD: missing phase identity dates or horizon flag",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: missing or invalid scenario origin horizon",IF(NOT(OR(B8="SINGLE_PLUS_BUFFER",B8="ACTIVE_DUAL",B8="QUALIFIED_STANDBY")),"HOLD: invalid operating model",IF(OR(NOT(ISNUMBER(D8)),NOT(ISNUMBER(E8)),D8<Decision!B17,E8<=D8,E8>Decision!B18,AND(F8<>"Yes",F8<>"No")),"HOLD: invalid phase range or horizon flag",IF(COUNTIFS(A:A,A8,B:B,B8,C:C,C8)>1,"HOLD: duplicate phase ID",IF(OR(AND(F8="No",E8=Decision!B18),AND(F8="Yes",OR(E8<>Decision!B18,COUNTIFS(A:A,A8,B:B,B8,E:E,">"&E8)>0))),"HOLD: horizon row must be terminal",IF(D8<>Decision!B17,"HOLD: first phase must start at scenario origin","Pass")))))))

  8. SCENARIO_1

    operating_model: QUALIFIED_STANDBY · phase_id: PHASE_2 · phase_sequence_check: =IF(OR(A9="",B9="",C9="",D9="",E9="",F9=""),"HOLD: missing phase identity dates or horizon flag",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: missing or invalid scenario origin horizon",IF(NOT(OR(B9="SINGLE_PLUS_BUFFER",B9="ACTIVE_DUAL",B9="QUALIFIED_STANDBY")),"HOLD: invalid operating model",IF(OR(NOT(ISNUMBER(D9)),NOT(ISNUMBER(E9)),D9<Decision!B17,E9<=D9,E9>Decision!B18,AND(F9<>"Yes",F9<>"No")),"HOLD: invalid phase range or horizon flag",IF(COUNTIFS(A:A,A9,B:B,B9,C:C,C9)>1,"HOLD: duplicate phase ID",IF(OR(AND(F9="No",E9=Decision!B18),AND(F9="Yes",OR(E9<>Decision!B18,COUNTIFS(A:A,A9,B:B,B9,E:E,">"&E9)>0))),"HOLD: horizon row must be terminal",IF(OR(A9<>A8,B9<>B8,D9<>E8),"HOLD: phase gap overlap or sequence","Pass")))))))

  9. SCENARIO_1

    operating_model: QUALIFIED_STANDBY · phase_id: PHASE_3 · phase_sequence_check: =IF(OR(A10="",B10="",C10="",D10="",E10="",F10=""),"HOLD: missing phase identity dates or horizon flag",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: missing or invalid scenario origin horizon",IF(NOT(OR(B10="SINGLE_PLUS_BUFFER",B10="ACTIVE_DUAL",B10="QUALIFIED_STANDBY")),"HOLD: invalid operating model",IF(OR(NOT(ISNUMBER(D10)),NOT(ISNUMBER(E10)),D10<Decision!B17,E10<=D10,E10>Decision!B18,AND(F10<>"Yes",F10<>"No")),"HOLD: invalid phase range or horizon flag",IF(COUNTIFS(A:A,A10,B:B,B10,C:C,C10)>1,"HOLD: duplicate phase ID",IF(OR(AND(F10="No",E10=Decision!B18),AND(F10="Yes",OR(E10<>Decision!B18,COUNTIFS(A:A,A10,B:B,B10,E:E,">"&E10)>0))),"HOLD: horizon row must be terminal",IF(OR(A10<>A9,B10<>B9,D10<>E9),"HOLD: phase gap overlap or sequence","Pass")))))))

7. Decision and trigger summary (tab name: Summary)

Decision and trigger summary

Copies 6 columns and 23 starter rows as tab-separated cells for Excel and Google Sheets.

Columns

  1. 1metric
  2. 2value
  3. 3unit_or_status
  4. 4source_or_formula
  5. 5decision_interpretation
  6. 6owner_or_action
Starter-row preview (23 rows; copy includes every cell)
  1. one_time_qualification_cash

    value: =IF(Qualification_Cost!H9="","",Qualification_Cost!H9) · unit_or_status: model currency · source_or_formula: Qualification_Cost total

  2. optional_annualized_qualification_view

    value: =IF(OR(B2="",Decision!B9="",NOT(ISNUMBER(Decision!B9)),Decision!B9<=0),"",B2/Decision!B9) · unit_or_status: model currency per planning year · source_or_formula: one-time cash divided by buyer-entered horizon

  3. single_plus_buffer_annual_recurring

    value: =IF(AND(COUNTIF(Allocation!A:A,"SINGLE_PLUS_BUFFER")=1,COUNTIFS(Allocation!A:A,"SINGLE_PLUS_BUFFER",Allocation!AC:AC,"Pass")=1),INDEX(Allocation!Z:Z,MATCH("SINGLE_PLUS_BUFFER",Allocation!A:A,0)),"") · unit_or_status: model currency per year · source_or_formula: validated Allocation row

  4. chosen_operating_model_annual_recurring

    value: =IF(AND(COUNTIF(Allocation!A:A,Decision!B11)=1,COUNTIFS(Allocation!A:A,Decision!B11,Allocation!AC:AC,"Pass")=1),INDEX(Allocation!Z:Z,MATCH(Decision!B11,Allocation!A:A,0)),"") · unit_or_status: model currency per year · source_or_formula: validated chosen Allocation row

  5. annual_recurring_delta

    value: =IF(OR(B4="",B5=""),"",B5-B4) · unit_or_status: model currency per year · source_or_formula: chosen model less single plus buffer

  6. first_year_cash_delta

    value: =IF(OR(B2="",B6=""),"",B2+B6) · unit_or_status: model currency · source_or_formula: qualification cash plus annual recurring delta

  7. single_plus_buffer_exposure

    value: =IF(AND(COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"SINGLE_PLUS_BUFFER")>0,COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"SINGLE_PLUS_BUFFER",Disruption!AN:AN,"Pass")=COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"SINGLE_PLUS_BUFFER"),COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"SINGLE_PLUS_BUFFER",Disruption!F:F,"Yes")=1),SUMIFS(Disruption!AL:AL,Disruption!A:A,Decision!B12,Disruption!B:B,"SINGLE_PLUS_BUFFER"),"") · unit_or_status: model currency per named scenario · source_or_formula: validated horizon row in Disruption

  8. active_dual_exposure

    value: =IF(AND(COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"ACTIVE_DUAL")>0,COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"ACTIVE_DUAL",Disruption!AN:AN,"Pass")=COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"ACTIVE_DUAL"),COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"ACTIVE_DUAL",Disruption!F:F,"Yes")=1),SUMIFS(Disruption!AL:AL,Disruption!A:A,Decision!B12,Disruption!B:B,"ACTIVE_DUAL"),"") · unit_or_status: model currency per named scenario · source_or_formula: validated horizon row in Disruption

  9. qualified_standby_exposure

    value: =IF(AND(COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"QUALIFIED_STANDBY")>0,COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"QUALIFIED_STANDBY",Disruption!AN:AN,"Pass")=COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"QUALIFIED_STANDBY"),COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,"QUALIFIED_STANDBY",Disruption!F:F,"Yes")=1),SUMIFS(Disruption!AL:AL,Disruption!A:A,Decision!B12,Disruption!B:B,"QUALIFIED_STANDBY"),"") · unit_or_status: model currency per named scenario · source_or_formula: validated horizon row in Disruption

  10. chosen_operating_model_exposure

    value: =IF(Decision!B11="SINGLE_PLUS_BUFFER",B8,IF(Decision!B11="ACTIVE_DUAL",B9,IF(Decision!B11="QUALIFIED_STANDBY",B10,""))) · unit_or_status: model currency per named scenario · source_or_formula: chosen validated model

  11. chosen_scenario_exposure_reduction

    value: =IF(OR(B8="",B11=""),"",B8-B11) · unit_or_status: model currency per named scenario · source_or_formula: single plus buffer less chosen model

  12. shared_dependency_count

    value: =COUNTIF(Dependency_Map!E:E,"Shared") · unit_or_status: count · source_or_formula: Dependency_Map

  13. unknown_dependency_count

    value: =COUNTIF(Dependency_Map!E:E,"Unknown") · unit_or_status: count · source_or_formula: Dependency_Map

  14. selected_allocation_row_count

    value: =COUNTIF(Allocation!A:A,Decision!B11) · unit_or_status: count · source_or_formula: Allocation

  15. selected_allocation_validation

    value: =IF(B15<>1,"HOLD: selected model missing or duplicated",INDEX(Allocation!AC:AC,MATCH(Decision!B11,Allocation!A:A,0))) · unit_or_status: status · source_or_formula: Allocation row validation

  16. selected_scenario_phase_count

    value: =COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,Decision!B11) · unit_or_status: count · source_or_formula: Disruption

  17. selected_horizon_end_count

    value: =COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,Decision!B11,Disruption!F:F,"Yes") · unit_or_status: count · source_or_formula: Disruption

  18. selected_disruption_hold_rows

    value: =B17-COUNTIFS(Disruption!A:A,Decision!B12,Disruption!B:B,Decision!B11,Disruption!AN:AN,"Pass") · unit_or_status: count · source_or_formula: Disruption row validation

  19. selected_keep_warm_row_count

    value: =COUNTIF(Keep_Warm!B:B,Decision!B11) · unit_or_status: count · source_or_formula: Keep_Warm

  20. selected_keep_warm_hold_rows

    value: =B20-COUNTIFS(Keep_Warm!B:B,Decision!B11,Keep_Warm!V:V,"Pass") · unit_or_status: count · source_or_formula: Keep_Warm row validation

  21. noncurrent_keep_warm_rows

    value: =COUNTIFS(Keep_Warm!B:B,Decision!B11,Keep_Warm!S:S,"<>Current") · unit_or_status: count · source_or_formula: Keep_Warm

  22. invalid_dependency_rows

    value: =MAX(0,COUNTIFS(Dependency_Map!A:A,"<>",Dependency_Map!N:N,"<>Pass")-1) · unit_or_status: count · source_or_formula: Dependency_Map row validation

  23. decision_gate

    value: =IF(OR(Decision!B2="",Decision!B3="",Decision!B4="",LEN(TRIM(Decision!B4))<>3,Decision!B14="",Decision!B15="",Decision!B16="",Decision!F2<>"Current",Decision!F3<>"Current",Decision!F4<>"Current",Decision!F14<>"Current",Decision!F15<>"Current",Decision!F16<>"Current",Decision!B19<>"Current"),"HOLD: essential identity or evidence controls incomplete",IF(OR(Decision!B17="",Decision!B18="",NOT(ISNUMBER(Decision!B17)),NOT(ISNUMBER(Decision!B18)),Decision!B18<=Decision!B17),"HOLD: scenario origin or horizon invalid",IF(OR(Decision!B10="",NOT(OR(Decision!B11="SINGLE_PLUS_BUFFER",Decision!B11="ACTIVE_DUAL",Decision!B11="QUALIFIED_STANDBY")),Decision!B12=""),"HOLD: select owner model and scenario",IF(Decision!B13<>"Approved","HOLD: qualification not approved",IF(B2="","HOLD: qualification cost incomplete",IF(OR(B14>0,B23>0),"HOLD: dependency map invalid or unresolved",IF(OR(B15<>1,B16<>"Pass"),"HOLD: selected allocation invalid",IF(OR(B17=0,B18<>1,B19<>0),"HOLD: disruption phases or evidence invalid",IF(AND(Decision!B11<>"SINGLE_PLUS_BUFFER",OR(B20=0,B21<>0,B22<>0)),"HOLD: keep-warm plan or evidence invalid",IF(OR(B4="",B5="",B8="",B11=""),"HOLD: validated cost or exposure unavailable","BUYER REVIEW: weigh scenario protection against cash and evidence confidence")))))))))) · unit_or_status: status · source_or_formula: buyer inputs and workbook checks

The summary compares the three operating models under one named scenario only after the selected allocation, cadence, capacity, evidence, phase sequence, readiness, horizon, and keep-warm checks pass. It does not calculate a probability-weighted expected loss, certify capacity, approve a source, or prove that a shared dependency is available.

Worked example: test one site-outage scenario

Fictional inputs only

The part, sources, prices, costs, duration, output, yield, and business impact below demonstrate the model. They are not market rates, forecasts, supplier promises, or a recommended split.

A US industrial buyer purchases 12,000 machined housings per year from Source A. Source B has completed the buyer's qualification workflow. The team tests an active-dual allocation of 9,000 units at A and 3,000 at B because three 1,000-unit B releases meet this fictional source's minimum run and evidence plan. The percentage is an output, not a rule.

Fictional dual-sourcing business case
Input or outputValueBasis
Annual demand12,000 good unitsFictional buyer scenario
Active-dual allocation9,000 to A; 3,000 to BChosen only for this example
Source B cadenceThree releases of 1,000Meets the fictional 1,000-unit minimum run
Qualification cash48,000Fictional buyer labor, validation, fixture, and test inputs
Recurring price effect15,000 per year3,000 units x (47 minus 42)
Other recurring burden12,000 per yearFictional administration, logistics, inventory, quality, and keep-warm cash
First-year cash delta75,00048,000 + 15,000 + 12,000

Input or output

Annual demand

Value
12,000 good units
Basis
Fictional buyer scenario

Input or output

Active-dual allocation

Value
9,000 to A; 3,000 to B
Basis
Chosen only for this example

Input or output

Source B cadence

Value
Three releases of 1,000
Basis
Meets the fictional 1,000-unit minimum run

Input or output

Qualification cash

Value
48,000
Basis
Fictional buyer labor, validation, fixture, and test inputs

Input or output

Recurring price effect

Value
15,000 per year
Basis
3,000 units x (47 minus 42)

Input or output

Other recurring burden

Value
12,000 per year
Basis
Fictional administration, logistics, inventory, quality, and keep-warm cash

Input or output

First-year cash delta

Value
75,000
Basis
48,000 + 15,000 + 12,000

Calculate the named interruption

The buyer tests a 90-day Source A site outage at 40 good units per day. The example uses one phase from day 0 through day 90 and marks it as the horizon end. Usable opening inventory is 600 units and pipeline is zero. Source A attempted output is entered as zero. After its stated material, tool, approval, and transport lags, Source B contributes 1,800 accepted units with an evidence reference and confidence. The example assumes those units already reflect the fictional yield input.

scenario demand = 90 x 40 = 3,600 units

single-plus-buffer shortfall = 3,600 - 600 = 3,000 units

active-dual shortfall = 3,600 - 600 - 1,800 = 1,200 units

single-plus-buffer exposure = 3,000 x 120 = 360,000

active-dual exposure = 1,200 x 120 = 144,000

modeled exposure reduction = 216,000 for this scenario

The fictional first-year cash delta is 75,000. The named scenario reduction is 216,000. That comparison informs the buyer, but it is not automatic approval and not expected value. The team still judges the evidence, confidence, other mitigations, and operating burden.

Show how a shared node erases protection

Both manufacturers use the same approved anodizing provider. In a processor-outage scenario, neither route contributes accepted units until that node recovers or an alternate is approved. The apparent diversification disappears for that event, even though the Tier 1 supplier names and sites differ.

Run second-source qualificationReview the supplier risk register

Common pitfalls and what they break

The amounts and day counts below are fictional illustrations, not market rates, supplier benchmarks, or forecasts.

Starting with a default split

A fictional 600-unit annual award divided into two releases creates 300-unit runs against a 1,000-unit minimum, so the cadence stays on hold after 48,000 of qualification cash.

Counting two names as independent

If both fictional sources use the same anodizer, its outage removes the 1,800-unit backup output and restores the 90-day shortfall from 1,200 to 3,000 units, or 360,000 of modeled exposure.

Hiding qualification cash in unit price

Spreading fictional qualification cash of 48,000 over four years shows 12,000 per year but understates first-year funding by 36,000.

Double-counting keep-warm cash

Three fictional releases with 1,500 of fixed witness and setup cash each add a false 4,500 annual premium when the same fixed events are counted in Allocation and Keep_Warm.

Using annual capacity in a short scenario

A fictional supplier with 18,000 units of annual capacity still delivers zero in a 30-day phase when material plus transport takes 45 days, leaving the full phase demand uncovered.

Treating qualified as surge-ready

A fictional 30-day gauge release followed by 20 days of transport puts the first accepted units on day 50, so a 30-day recovery promise misses by 20 days.

Blending unrelated disruptions

The fictional site-outage case shows a 216,000 reduction, but combining it with a shared-processor outage hides that the processor case retains the full 360,000 exposure.

Inventing a disruption probability

Applying an unsupported 5 percent probability to fictional exposure of 360,000 creates an 18,000 expected-loss figure; changing the guess to 1 percent cuts it to 3,600 and can reverse the funding decision.

Letting the standby source go cold

A fictional 21-day gauge calibration plus 14-day approval takes 35 days, so the source misses a 30-day activation window by 5 days.

Moving volume before qualification release

Releasing a fictional 1,000-unit order at 47 per unit commits 47,000 to a supplier that the decision gate still marks Hold.

Ignoring the incumbent response

If the fictional incumbent price rises from 42 to 45 after volume moves, the remaining 9,000 units add 27,000 per year and erase the original recurring-cost comparison.

Treating exposure reduction as approval

Spending the fictional 75,000 first-year cash delta addresses the named site outage but leaves 360,000 of exposure in the shared-anodizer scenario, so the workbook must stop at Buyer Review.

Glossary

Dual sourcing
An operating model in which two approved sources can supply the same controlled requirement under buyer-defined roles.
Second source
A named legal entity, site, and route approved for a defined item and buying lane.
Single plus buffer
An operating model that uses one production source plus buyer-approved inventory or pipeline protection.
Active dual
An operating model that gives both approved sources planned production work.
Qualified standby
An approved source maintained for activation with limited or no routine production allocation.
Qualification cash
One-time buyer and external cost needed to evaluate and approve the alternative source.
Recurring operating burden
Annual cash added by price tiers, releases, logistics, inventory, oversight, and readiness evidence.
Minimum economic run
The smallest buyer-approved production quantity that a source can run on the stated commercial and process basis.
Allocation
The planned demand, releases, or roles assigned to each source for a defined period.
Keep-warm evidence
Current records showing that a source can still perform the readiness role assigned by the buyer.
Shared dependency
A required node used by both sources that may allow one event to affect both routes.
Recovery assumption
A sourced scenario input for when and how a source can resume accepted output.
Usable pipeline
In-transit or committed units the buyer can release and receive inside the modeled phase.
Unmet demand
Phase demand remaining after usable inventory, pipeline, and accepted source output.
Time to recover
The modeled time a disrupted node needs to restore the stated capability or output.
Time to survive
The modeled period demand can be served before the disruption creates unmet demand.

FAQ

Practical answers for industrial buyers deciding whether and how to operate a qualified second source.

What is a dual-sourcing strategy?+
A dual-sourcing strategy is a buyer-approved operating model for two sources supplying the same controlled item or requirement. It defines why the second source exists, what volume or work each source receives, which dependencies remain shared, how readiness is maintained, and who may change allocation. Two unqualified candidates are not dual sourcing.
Is there a standard split for dual sourcing?+
No universal split is best. Start with annual demand, each source's minimum economic run, planned release cadence, capacity evidence, unit economics, quality burden, and the protection required under named scenarios. A percentage that cannot support a viable release or current evidence is not an operating plan.
How do I know whether a second supplier is truly independent?+
Map material producers, subtiers, special processors, tooling, gauges, software, sites, utilities, ownership, logistics nodes, carriers, countries, approval paths, and intellectual-property constraints for both sources. Mark each dependency Independent, Shared, or Unknown and attach evidence. A different Tier 1 name or country does not prove independence.
What costs belong in a dual-sourcing business case?+
Keep one-time qualification cash separate from recurring cost and any optional amortized planning view. Qualification can include buyer labor, audits, samples, validation, tooling, gauges, test equipment, and approvals. Recurring cost can include price tiers, minimum runs, setup, logistics, inventory, administration, quality oversight, and keep-warm evidence.
How should a buyer model disruption risk without reliable probabilities?+
Use named scenarios instead of an unsupported expected-value claim. State the affected dependency, duration, demand, usable inventory and pipeline, time-phased output by source, recovery basis, uncovered units, and a buyer-approved consequence per uncovered unit. Compare single-source and dual-source outcomes one scenario at a time.
What keeps a backup manufacturer warm?+
Only evidence tied to the required readiness claim. Depending on the part, that may include released production, current material and special-process sources, maintained tools and gauges, current software and instructions, trained people, accepted quality records, closed changes, valid terms, and a tested recovery path.
Can a qualified second source remain on standby with no production allocation?+
Sometimes, but call it a standby model and test activation assumptions. Tooling, gauges, material, people, software, process settings, special-process approvals, capacity, price, quality evidence, and transport can change while the source is idle. Record what must be refreshed and who can release production.
When should a buyer skip dual sourcing?+
Skip or defer it when the requirement is unstable, the buyer lacks rights to transfer needed data or tooling, demand cannot support two viable sources, the candidate shares the dependency being mitigated, or the protection does not justify qualification and recurring burden. Consider inventory, redesign, contractual capacity, or another mitigation instead.
What does Tandom do in a dual-source project?+
A paid, fixed-fee Tandom sourcing project can support requirement normalization, manufacturer search and screening, comparable RFQs, technical and commercial follow-up, samples, and first-order readiness. The buyer approves the strategy, supplier, allocation, evidence, contract, payment, import treatment, and purchase orders. Outcomes are not guaranteed.
Share:X

Keep reading

Related guides

How to develop an alternative manufacturer

Use the stage-gated workflow for manufacturer search, qualification, samples, and first-order readiness before relying on a second source.

Read guide →

Supplier risk assessment checklist

Combine operational, quality, capacity, financial, geographic, logistics, compliance, and continuity evidence into owned mitigation decisions.

Read guide →

Supplier-development service

Discuss a sourcing project

Tandom runs paid, fixed-fee supplier-development projects. The buyer keeps the supplier relationship and every final approval.

Discuss a sourcing project →
Tandom

Tandom helps US industrial buyers find, evaluate, and develop manufacturers across Asia and Latin America.

Discuss a sourcing project →

Proud to partner with

Microsoft for Startups

NVIDIA

Inception Program

Sourcing

  • How it works
  • What you receive
  • How engagements work
  • Discuss a sourcing project

Free tools

  • Tariff Calculator
  • AD/CVD Lookup
  • AD/CVD Catalog
  • HTS Catalog

Resources

  • Resource Center
  • Trade compliance guides
  • Roadmap

Company

  • About
  • Contact
  • Security
  • Accessibility
  • Public API status
  • Tandom Brasil ↗
For AI agentsllms.txtllms-full.txtConnect free import tools to your AIFree API overviewAPI reference

© 2026 Fintora Technologies Inc., d/b/a Tandom.ai. All rights reserved.

PrivacyTermsCookiesAcceptable Use

Made with ❤️ in São Paulo and San Francisco

Tandom

Tandom helps US industrial buyers find, evaluate, and develop manufacturers across Asia and Latin America.

Discuss a sourcing project →

Proud to partner with

Microsoft for Startups

NVIDIA

Inception Program

Sourcing

  • How it works
  • What you receive
  • How engagements work
  • Discuss a sourcing project

Free tools

  • Tariff Calculator
  • AD/CVD Lookup
  • AD/CVD Catalog
  • HTS Catalog

Resources

  • Resource Center
  • Trade compliance guides
  • Roadmap

Company

  • About
  • Contact
  • Security
  • Accessibility
  • Public API status
  • Tandom Brasil ↗
For AI agentsllms.txtllms-full.txtConnect free import tools to your AIFree API overviewAPI reference

© 2026 Fintora Technologies Inc., d/b/a Tandom.ai. All rights reserved.

PrivacyTermsCookiesAcceptable Use

Made with ❤️ in São Paulo and San Francisco