> ## Documentation Index
> Fetch the complete documentation index at: https://docs.myfundingmachine.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 0002 per product decision split

# MCA, SBA, and BLOC are independent Product Decisions

Status: accepted

Date: 2026-07-09

Phase 9 of the underwriting roadmap introduces a **Per-Product Decision Model**: every Underwriting Decision carries a Product Decision for each Funding Product. This ADR locks the first open design question — whether MCA / SBA / BLOC stay collapsed or split at the decision layer.

## Decision

**Split all three.** `mca`, `sba`, and `bloc` are each their own Funding Product and each receive their own Product Decision on every run. The five-product set is:

`card_stacking | term_loan | mca | sba | bloc`

This reverses the 2026-04-23 variant-(A) call **at the decision layer only**. The workflow/UX layer may still group the three under one Established tab / `established_funding` primary with an `establishedSubVariant` chosen at approval — that grouping is presentation, not authority.

## Context

Today `evaluateEstablished` returns two booleans (`mcaEligible`, `sbaEligible`). The SBA gate silently covers BLOC (comment in `establishedUnderwriting.ts`: "SBA/BLOC: 680+…"). Operators cannot see "MCA qualified, SBA declined, BLOC not evaluated" as three verdicts; coaching, CRM badges, and overrides inherit that blind spot.

Locked decision #5 (cross-track non-exclusivity) already requires that a decline on one product must not erase another. Collapsing three Established products into one Product Decision would re-create the same erasure inside the Established family.

## Considered options

* **A — Split all three (accepted):** five equal Product Decisions. UX may still group Established.
* **B — Keep one `established` Product Decision:** cards + TL independent; Established stays collapsed with sub-variant flags inside. Rejected — operators need per-product reasons and overrides; collapsing re-hides MCA-vs-SBA-vs-BLOC disagreement.
* **C — Split MCA vs SBA; leave BLOC as an alias on SBA:** deferred the BLOC question into Decision 2. Rejected for Decision 1 because the product set must be stable before the BLOC *evaluator* strategy is chosen; aliasing BLOC would bake a non-product into the taxonomy.

## Consequences

* `products[]` on an Underwriting Decision is always length 5; a declined or unevaluated product is a row with reasons, never an absence.
* `evaluateEstablished` (or its Phase 9 successors) must emit per-product statuses for MCA, SBA, and BLOC — not a single Established boolean pair.
* Workflow locked decision #4 (one `established_funding` primary + sub-variant at approval) remains valid as **UX/sequencing**. It no longer describes the decision-layer shape.
* Glossary: CONTEXT.md → "Funding product", "Product Decision". System reference: `docs/design/underwriting.md` §7.
* Open follow-ups: BLOC evaluator + SBA questionnaire gate → **ADR-0003** (accepted). Still open: credit-repair reason attachment, parked-as-derived, override symmetry for all five products.
