Docs · skills/examples/05-state-matrix.md

Meridian — payoff quote flow, state matrix

Composite example.

Flow: request a payoff quote · 4 screens · Walked with the lead engineer 2026-04-02 D designed · N/A not applicable, with reason · OUT outstanding

StateEntryConfirmPendingQuote
Data
Empty — first runDN/A — always follows entryN/AN/A
Empty — clearedN/A — no user contentN/AD — request cancelledN/A
Empty — no resultsN/AN/AN/AD — no quote available, loan in transfer
Loading — initialDDDD
Loading — moreN/A — single recordN/AN/AN/A
PartialN/AN/AD — fees returned, principal pendingD — quote without escrow detail
StaleN/AN/AD — >24h, offers refreshD — quote expires at midnight, countdown shown
One itemN/AN/AN/AD
MaximumN/AN/AD — 5 concurrent requestsN/A
Long stringsD — 60-char legal entity nameDDD
Interaction
default / hover / activeDDDD
focus-visibleDDDD
disabledD — outside quote windowDN/AN/A
loading (button)DDN/AN/A
System
Error — validationDN/AN/AN/A
Error — serverDDDD
Error — partial failureN/A — single requestN/AOUTN/A
Permission deniedD — joint loan, not primaryDDD
Offline / reconnectingD — queued with noticeDDOUT
TimeoutDDN/AN/A
Destructive confirmN/AN/AD — cancel requestN/A
SuccessN/ADN/AD
Environment
320pxDDDD
200% zoomDDDD
Keyboard onlyDDDD
Screen readerDDDOUT — live region for expiry countdown
Reduced motionDDDD
PrintN/AN/AN/AD — borrowers print quotes; confirmed on call

Outstanding — 3

#StateWhy it's openOwnerNeeded by
1Pending → partial failureEngineering confirmed the batch can return principal without fees. Needs a design.MeSprint 12
2Quote → offlineUndecided whether an expiring quote should be cached at all. Compliance question, not a design one.ComplianceSprint 12
3Quote → screen reader, expiry countdownA live region announcing every second is unusable. Needs a considered interval.MeSprint 13

Notes from the engineering walkthrough

  • Payoff figures come from a nightly batch. A same-day quote is not possible. The flow is built around a requested → pending → available sequence for that reason — this was found at lo-fi and would have cost a sprint at hi-fi.
  • A loan mid-transfer returns a 200 with an empty body, not an error. Handled as "no quote available" rather than a server error, with different copy.

The method, written down

Every page here is one file from the skill library. The folder is loadable as a Claude project as-is.