Skip to main content

BLOC gets a real evaluator; SBA is questionnaire-gated (not Confirmable in Phase 9)

Status: accepted Date: 2026-07-09 Companion to ADR-0002 (five independent Product Decisions). This ADR locks how BLOC and SBA earn their verdicts and how operators act on them in the Established Funding UI.

Decision

  1. BLOC — Phase 9a ships a real BLOC evaluator with criteria distinct from SBA (ADR-0009: 660+ score, $20k+ avg monthly revenue, 2+ years TIB). BLOC is Confirmable when its Product Decision is qualified / qualified_conditional, same as MCA.
  2. SBA — remains a fifth Funding Product / Product Decision. The engine keeps today’s SBA gates as the baseline Product Decision. The Established Funding UI does not show Eligible / Not eligible for SBA and does not allow Confirming an SBA path in Phase 9. Instead the SBA row shows a Send questionnaire affordance that is disabled / “Coming Soon” until a later project ships the client questionnaire. When that questionnaire exists, a completed response may update the SBA Product Decision; only then does SBA become Confirmable.
  3. UI split — the Established Funding card / approve dialog stops collapsing “SBA / BLOC” into one row. Rows are MCA, BLOC, and SBA (SBA = questionnaire CTA, not an eligibility badge).

Context

SBA loans are uncommon and heavy to underwrite. Product direction is to add pre-approval estimates for BLOC and MCA, not SBA, and to gather SBA fit via a client questionnaire rather than treating the current boolean gate as an operator-facing “Eligible” signal. Historically evaluateEstablished used one SBA gate that silently covered BLOC (ApproveEstablishedDialog still labels the path “SBA / BLOC”). ADR-0002 already requires three separate Product Decisions; this ADR says what each row means to the operator.

Considered options

BLOC evaluator
  • Mirror SBA’s verdict — rejected; product is supplying real BLOC criteria and estimates.
  • Always not_evaluated until later — rejected; BLOC is a primary Established path alongside MCA.
  • Real evaluator in 9a (accepted).
SBA Confirmability
  • Confirmable from current gates + questionnaire CTA additive — rejected; would keep shipping SBA paths from a gate product does not want operators to treat as Eligible.
  • Drop SBA from the product set / out-of-band only — rejected; SBA stays a Product Decision so questionnaire enrichment has a home.
  • Not Confirmable until questionnaire upgrades eligibility; Phase 9 ships disabled “Coming Soon” CTA (accepted).

Consequences

  • Product set stays five: card_stacking | term_loan | mca | sba | bloc (ADR-0002 unchanged).
  • evaluateEstablished (or successors) must emit separate MCA, SBA, and BLOC statuses. BLOC and MCA use ADR-0009 thresholds (MCA is score-tiered revenue); SBA keeps current 680 / $20k / 2yr+ baseline until the questionnaire project replaces/enriches them.
  • establishedSubVariant / selected Established funding types in Phase 9: MCA and/or BLOC only. Do not persist an operator-confirmed SBA path from the Established card while the questionnaire is Coming Soon.
  • Approve / Established UI: three rows; SBA row = Coming Soon questionnaire button (no Eligible badge, not selectable for Confirm).
  • Questionnaire implementation, client fill flow, and post-response eligibility update are out of scope for Phase 9 — only the disabled CTA and the non-Confirmable rule ship now.
  • Pre-approval estimates for BLOC/MCA are a related future surface; not required to land inside 9a.
  • Glossary: CONTEXT.md → “SBA questionnaire gate”. System reference: docs/design/underwriting.md §7.

Open follow-ups (not decided here)

  • Exact BLOC + updated MCA thresholds → ADR-0009 (accepted).
  • Credit-repair reason attachment → ADR-0004 (accepted).
  • Parked-as-derived → ADR-0005 (accepted).
  • Operator-override symmetry → ADR-0006 (accepted: cards + TL only).
  • UX rename “Established Funding” → “Revenue Based” → ADR-0007 (accepted: Phase 9e labels; code ids stay).
  • MCA/BLOC estimated funding ranges → ADR-0008 (accepted: plumbing only).