## Bottom Line Up Front

Cost-benefit analysis (CBA) is the decision-grade bridge between business objectives and technology investments — use it when you have credible options, measurable baselines, and a decision horizon of 6–36 months. This guide gives CTOs, VPs of Engineering, and IT Directors a repeatable process to frame options, model value with ranges (not point estimates), run a guarded pilot, and decide with pre-agreed continue/modify/stop triggers.

## When CBA Is the Right Tool (And When It Isn't)

Apply CBA when you face a discrete choice among known alternatives — build vs. buy, vendor A vs. vendor B, migrate now vs. later — and you can quantify at least three material cost or benefit lines. Skip CBA and run discovery first when the problem space is undefined, no baseline metrics exist, or ethical/regulatory constraints make net-value tradeoffs impermissible.

<div class="my-stack-md overflow-x-auto">
<table class="w-full min-w-[42rem] border-collapse text-left">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Situation</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Use Instead</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Reason</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Problem not yet framed</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Customer discovery, Jobs-to-be-Done, scenario planning</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Reduces unknowns before valuation</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">No measurable baseline</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Instrumentation sprint + PDCA</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Establishes a stable process to improve</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Root cause unknown in existing process</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">DMAIC (Define–Measure–Analyze–Improve–Control)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Finds causes before comparing solutions</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Existential, ethical, or regulatory risk</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Guardrail-first decision framework</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Some thresholds cannot be priced</td></tr></tbody>
</table>
</div>
Red Flag / Go-No-Go : If you cannot name three measurable cost/benefit lines with low/base/high ranges, stop. Run a 2-week discovery spike first.

## Framing the Decision: Objective, Options, Baseline

Owner: VP Engineering | Measure: Decision frame documented and signed off by business sponsor within 5 business days.

- State the business outcome in OKR format — e.g., "Reduce MTTR 40% in 2 quarters while holding monitoring spend growth ≤5%." Avoid vague goals like "improve observability."

- List 3–5 credible options including status quo — status quo is always Option A. Each option needs scope, key assumptions, and hard constraints (data residency, contract windows, team capacity).

- Define the decision horizon — 12 months for team tooling, 24–36 months for platform migrations. Align to budget cycles.

H3: Decision Frame Template

<div class="my-stack-md overflow-x-auto">
<table class="w-full min-w-[42rem] border-collapse text-left">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Element</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Required Artifact</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Owner</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Business outcome</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">OKR with target + horizon</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Business sponsor</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Options list</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">3–5 alternatives + status quo</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Product manager</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Constraints</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Hard limits (regulatory, budget, talent)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Security/Finance</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Decision horizon</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Time bound matching payback</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Finance partner</td></tr></tbody>
</table>
</div>
Red Flag / Go-No-Go : If the business sponsor cannot articulate the outcome as an OKR with a numeric target and date, escalate — do not model.

## Building the Valuation Model: Ranges, Scenarios, Sensitivity

Owner: Finance partner | Measure: Model completed with sensitivity drivers identified and reviewed by engineering lead within 10 business days.

- Time horizon : Match to asset half-life (12–18 months for SaaS tooling, 36 months for infrastructure).

- Line-item ranges : For each material cost/benefit, document low/base/high. Round to meaningful units — no spurious decimals.

- Discount rate : Apply corporate hurdle rate (typically 8–12%) only for horizons >18 months.

- Sensitivity analysis : Identify the top 3 assumptions that swing NPV >20%. Document them as "key risk drivers."

- Double-counting guard : Tag each benefit to exactly one bucket (revenue, cost avoidance, risk reduction, throughput). Audit before review.

H3: Model Structure for a 24-Month Horizon

<div class="my-stack-md overflow-x-auto">
<table class="w-full min-w-[42rem] border-collapse text-left">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Category</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Line Item</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Low</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Base</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">High</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Confidence</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Key Driver</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">One-time cost</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Migration engineering</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$18K</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$25K</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$35K</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Medium</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Data volume</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Recurring cost</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Vendor subscription</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$55K/yr</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$60K/yr</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$68K/yr</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">High</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Seat count</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Benefit</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">MTTR reduction value</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$30K/yr</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$45K/yr</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$60K/yr</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Medium</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Incident freq.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Benefit</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Tooling maintenance saved</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$12K/yr</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$15K/yr</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$18K/yr</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">High</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Deprecation plan</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Risk</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Data egress overage</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">-$5K</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">-$10K</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">-$20K</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Low</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Growth rate</td></tr></tbody>
</table>
</div>
Red Flag / Go-No-Go : If any single assumption drives >40% of base-case NPV, the model is too fragile — gather more data before deciding.

## Designing a Guarded Pilot

Owner: Engineering lead | Measure: Pilot launched with all guardrails instrumented and fallback tested within 3 weeks of decision frame sign-off.

- Scope the minimum viable slice : 10–15% of production traffic, internal or low-risk cohorts only.

- Primary success metric : One quantitative threshold tied to the business outcome (e.g., "MTTR on pilot services improves ≥30% at 6 weeks\)).

- Guardrail metrics (all must hold) :

- P1/P2 incident count: no increase vs. baseline

- Security/privacy: zero high-severity findings

- Spend growth: ≤5% vs. modeled

- Team adoption: dashboard/runbook survey ≥4/5 at 30 days

- Fallback plan : Documented, tested, reversible within 4 hours (feature flags, dual-running, DNS cutover).

H3: Pilot Design Checklist

<div class="my-stack-md overflow-x-auto">
<table class="w-full min-w-[42rem] border-collapse text-left">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Component</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Requirement</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Verification Method</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Cohort definition</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">10 internal services, daytime only</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Service catalog tag</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Baseline window</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">8 weeks pre-pilot MTTR, tickets, false positives</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Incident tooling export</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Instrumentation</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Detection + restoration timestamps automated</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Deployed with pilot</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Fallback test</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Dry-run completed before launch</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Runbook drill record</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Review cadence</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Weekly for 6 weeks, then biweekly</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Calendar invites sent</td></tr></tbody>
</table>
</div>
Red Flag / Go-No-Go : If fallback cannot be executed in <4 hours during a dry run, do not launch pilot.

## Making the Go/No-Go Decision

Owner: Business sponsor | Measure: Decision recorded with rationale, dissent captured, and next actions assigned within 2 business days of pilot review.

Pre-agree thresholds before pilot launch:

<div class="my-stack-md overflow-x-auto">
<table class="w-full min-w-[42rem] border-collapse text-left">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Decision</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Threshold (Base Case)</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Threshold (Low Case)</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Continue</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Payback ≤12 months; all guardrails green 4 consecutive weeks</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Payback ≤18 months; one guardrail yellow with remediation plan</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Modify</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Payback 12–18 months; 1 guardrail breach, reversible</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Payback 18–24 months; 2 guardrails yellow</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Stop</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Payback &gt;24 months; any red guardrail; high-sev security finding</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Any red guardrail; payback &gt;36 months</td></tr></tbody>
</table>
</div>
Record assumptions, dissenting views, and the "option to beat" (usually status quo) in the decision log. Silence is not consent — require explicit verbal/written approval from each accountable role.

## Governance: Decision Rights That Prevent Drift

Owner: CTO | Measure: RACI for CBA decisions published and acknowledged by all roles within 10 business days.

<div class="my-stack-md overflow-x-auto">
<table class="w-full min-w-[42rem] border-collapse text-left">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Decision Gate</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Accountable</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Consulted</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Informed</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Authority Limit</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Objective &amp; scope</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Business sponsor</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Product, Finance</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Engineering, Security</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Redirect scope</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Options &amp; baseline</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Product manager</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Engineering, Finance</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Architecture</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Approve options list</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Estimates &amp; risks</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Engineering lead</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Security, Architecture</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Product</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Approve estimation method</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Valuation &amp; scenarios</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Finance partner</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Product, Engineering</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Business sponsor</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Approve modeling approach</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Go/No-Go &amp; funding</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Business sponsor</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Finance, Architecture</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">All</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Approve within spend threshold</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Pilot expansion</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">VP Engineering</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Product, Finance</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Business sponsor</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Scale to 50% traffic</td></tr></tbody>
</table>
</div>
Red Flag / Go-No-Go : If any gate lacks a named accountable owner, the process stalls — assign before proceeding.

## Vignette: Fintech Scale-Up Chooses Transaction Routing Engine

Context : 400-person Series C fintech (payments orchestration), $45M ARR, 12-person platform team. Current homegrown routing engine handles 8K TPS; projected 35K TPS in 18 months.

Objective : Support 35K TPS with ≤50ms p99 latency, ≤$0.0008/transaction marginal cost, zero increase in PCI scope. Horizon: 24 months.

Options : A) Status quo — refactor core engine (estimated 6 engineer-months) B) Buy vendor "RouteCore" — managed routing, usage-based pricing C) Hybrid — adopt RouteCore for new payment methods, keep core for existing

Model Highlights (24-month, base case) :

<div class="my-stack-md overflow-x-auto">
<table class="w-full min-w-[42rem] border-collapse text-left">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Line Item</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Year 1</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Year 2</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Confidence</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">RouteCore subscription</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$180K</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$220K</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">High</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Migration (Option B)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$95K</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$0</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Medium</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Refactor (Option A)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$280K</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$40K</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Low</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Incident cost avoidance</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$120K</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$180K</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Medium</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Faster launch value (new methods)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$300K</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$450K</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Medium</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PCI scope reduction</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$60K/yr</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$60K/yr</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">High</td></tr></tbody>
</table>
</div>
Sensitivity : New-method launch velocity drives 55% of NPV variance. Vendor SLA breach (>99.95% uptime) triggers stop.

Pilot : RouteCore for 2 new payment methods (ACH + local wallet), 5% traffic, 8 weeks. Success: p99 latency ≤40ms, zero SLA breaches, team survey ≥4/5. Guardrails: no PCI scope increase, cost/transaction ≤$0.0009.

Outcome : Pilot hit 38ms p99, 99.98% uptime, survey 4.3/5. Continue decision made at Week 8. Full migration completed Month 5. Actual Year 1 cost: $192K (vs. $180K modeled). NPV positive at Month 11.

## Continue / Modify / Stop Triggers

Set these before pilot launch and review at each cadence.

Continue

- Primary metric ≥30% improvement at 6 weeks, ≥40% at 12 weeks

- All guardrails green 4 consecutive weeks

- Updated model with pilot data: payback ≤12 months base, ≤18 months low

Modify

- Primary metric 15–30% at 6 weeks, or single guardrail breach with root cause identified and fix testable in 2 weeks

- Action: Narrow scope, add instrumentation, retrain; re-evaluate at 4 weeks

Stop

- Primary metric <15% at 6 weeks and <25% at 12 weeks

- Repeated guardrail breaches (2+ weeks)

- Any high-severity security/privacy finding attributable to change

- Action: Full rollback, documented lessons learned, reassess options with updated CBA

## Decision Review Checklist

Use at every gate. Bring evidence, not opinions.

<div class="my-stack-md overflow-x-auto">
<table class="w-full min-w-[42rem] border-collapse text-left">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Review Question</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Accountable</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Evidence Required</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">What business outcome does this serve?</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Business sponsor</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">OKR with target + date</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">What are the options, including status quo?</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Product manager</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Options table with constraints</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">How were benefits/costs estimated?</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Engineering lead</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Method, ranges, sensitivity drivers</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">What risks and guardrails are defined?</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Security/compliance</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Risk log, thresholds, fallback test result</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">What is the pilot scope and cohort?</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Product manager</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Cohort definition, reversibility proof</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">What are the pre-agreed decision thresholds?</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Business sponsor</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Continue/Modify/Stop table signed</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">How will we measure and learn?</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Engineering lead</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Baselines, instrumentation, review calendar</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">What is the funding decision and authority?</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Finance partner</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Budget impact, spend thresholds, approval record</td></tr></tbody>
</table>
</div>

## Next Steps This Month

- Pick one pending investment (vendor renewal, platform migration, build vs. buy) and draft the decision frame: OKR outcome, 3 options, status quo baseline.

- Build the 24-month model with low/base/high for the top 5 line items. Identify the top 3 sensitivity drivers.

- Design a 6–8 week pilot with one primary metric, 4 guardrails, and a tested 4-hour fallback.

- Schedule the decision review using the checklist above. Assign a single accountable owner per gate.

- Publish the RACI for CBA decisions across product, engineering, finance, and security.

The payoff: faster, defensible decisions that connect engineering effort to measurable business value while containing risk.