The POS is the borrower’s front door. It is not the system of record — the LOS is, and the POS never invents loan status. Everything below hangs off that one rule.
A POS that computes its own status will eventually tell a borrower they are approved when they are not. Every status string the borrower sees must be traceable to an LOS value and a timestamp.
LosAdapter is an interface with two implementations — LendingPad now (L2, P0), NachoLOS later (L3, P2). Written that way, moving to Nacho is a config change and a test suite, not a rewrite.
Webhooks get dropped. A nightly diff of POS state against LOS truth, with an alert on drift, is L10 — and it is P0 for a reason.
These are long-lead items. They gate real testing, and this is the exact gap that stalled the Nacho build — 6 of the 15 open items there were credentials, not code. Source them now, in parallel with development.
Automated underwriting. Nothing realistic can be tested without it.
Soft pull for pre-qual, hard pull at application.
Sandbox keys are free; production is a contract and an underwriting review.
Only needed for eNote (Phase 3) — but the setup takes months, so start it in Phase 1.
Disclosure packages and the eClose path.
Optimal Blue or Polly, for anything rate-adjacent.
The unglamorous long tail that blocks end-to-end tests.
Row-level scoping, per-tenant keys, no expressible cross-tenant join. Retrofitting isolation is a rewrite.
Every vendor, in a non-production environment, before the first borrower. “We tested against mocks” is how launch weeks go wrong.
Completion rate, time-to-first-touch, drop-off by step. If it is not measured, the 68% abandonment problem is invisible.
Mid-range Android on cellular is the target device, not a MacBook on office wifi.
The POS will outlive its first LOS. Version the contract now.
“Coded” is not “done.” Done means it passes its acceptance test on a real device, with its compliance controls tested.