Sasquatch National Bank — Institution Tour
Generated from the L2 institution YAML (l2.yaml).
Point RECON_GEN_DOCS_L2_INSTANCE at a different YAML
and re-run the docs build to regenerate this tour against another
institution.
Sasquatch National Bank's combined treasury + merchant-acquiring
view. SNB runs a Cash Management Suite (CMS) for commercial customer
DDAs and ZBA cash concentration, AND a merchant-acquiring service
that processes card-network sales for retail merchants and pays them
out via ACH / wire / check. The L2 instance below covers both
surfaces in one model — the L1 dashboard renders treasury invariants
(drift, overdraft, limit breach), the L2 flow-tracing dashboard
surfaces merchant-acquiring pipeline structure (XOR payout vehicles,
TransferKey-grouped settlement cycles, external card-network
aggregation).
At a glance
What
Count
Singleton accounts (SNB's GL + external counterparties)
16
Account templates (per-customer / per-merchant shapes)
3
Rails (money-movement primitives)
29
Transfer Templates (multi-rail bundles)
3
Chains (parent → child firing rules)
5
Limit Schedules (per-account / per-rail caps)
7
The diagrams below show how these pieces connect. Per-entity descriptions
live on the dedicated subpages — that prose IS the source of truth for
how SNB treats each entity.
Topology — accounts + rails
Every Rail draws an edge between its source-role account and its
destination-role account. Single-leg rails draw a self-loop on the leg-
role account. Internal SNB accounts are
blue; external counterparties are orange.
digraph {
nodesep=0.5 rankdir=LR ranksep=1.0
node [fontsize=11 style=filled]
"gl-1010-cash-due-frb" [label="Cash & Due From Federal Reserve" fillcolor="#bbdefb" shape=box]
"gl-1810-ach-orig-settlement" [label="ACH Origination Settlement" fillcolor="#bbdefb" shape=box]
"gl-1815-card-acquiring-settlement" [label="Card Acquiring Settlement" fillcolor="#bbdefb" shape=box]
"gl-1820-wire-settlement-suspense" [label="Wire Settlement Suspense" fillcolor="#bbdefb" shape=box]
"gl-1830-internal-transfer-suspense" [label="Internal Transfer Suspense" fillcolor="#bbdefb" shape=box]
"gl-1840-merchant-payable-clearing" [label="Merchant Payable Clearing" fillcolor="#bbdefb" shape=box]
"gl-1850-cash-concentration-master" [label="Cash Concentration Master" fillcolor="#bbdefb" shape=box]
"gl-1899-internal-suspense-recon" [label="Internal Suspense / Reconciliation" fillcolor="#bbdefb" shape=box]
"gl-2010-dda-control" [label="Customer Deposits — DDA Control" fillcolor="#bbdefb" shape=box]
"gl-2020-merchant-dda-control" [label="Merchant Deposits — DDA Control" fillcolor="#bbdefb" shape=box]
"ext-frb-snb-master" [label="Federal Reserve Bank — SNB Master" fillcolor="#ffe0b2" shape=box]
"ext-payment-gateway-processor" [label="Payment Gateway Processor" fillcolor="#ffe0b2" shape=box]
"ext-card-network-acquirer" [label="Card Network Acquirer" fillcolor="#ffe0b2" shape=box]
"ext-coffee-shop-supply-co" [label="Coffee Shop Supply Co" fillcolor="#ffe0b2" shape=box]
"ext-valley-grain-coop" [label="Valley Grain Co-op" fillcolor="#ffe0b2" shape=box]
"ext-harvest-credit-exchange" [label="Harvest Credit Exchange" fillcolor="#ffe0b2" shape=box]
"gl-1830-internal-transfer-suspense" -> "gl-1830-internal-transfer-suspense" [label=InternalTransferSuspenseClose color="#7b1fa2" fontsize=9 style=dashed]
"gl-1899-internal-suspense-recon" -> "gl-1899-internal-suspense-recon" [label="CustomerFeeAccrual
NoFraudReview
StandardFraudReview
EnhancedFraudReview" color="#7b1fa2" fontsize=9 style=dashed]
"gl-1850-cash-concentration-master" -> "ext-harvest-credit-exchange" [label=ConcentrationToFRBSweep color="#1976d2" fontsize=9]
"gl-1810-ach-orig-settlement" -> "gl-1010-cash-due-frb" [label=ACHOriginationDailySweep color="#1976d2" fontsize=9]
"ext-harvest-credit-exchange" -> "ext-harvest-credit-exchange" [label=CustomerFeeMonthlySettlement color="#7b1fa2" fontsize=9 style=dashed]
"ext-card-network-acquirer" -> "gl-1840-merchant-payable-clearing" [label=MerchantCardSale color="#1976d2" fontsize=9]
"gl-1840-merchant-payable-clearing" -> "ext-harvest-credit-exchange" [label="MerchantPayoutWire
MerchantPayoutCheck" color="#1976d2" fontsize=9]
"ext-card-network-acquirer" -> "ext-card-network-acquirer" [label=ExternalCardSettlement color="#7b1fa2" fontsize=9 style=dashed]
"gl-1840-merchant-payable-clearing" -> "gl-1840-merchant-payable-clearing" [label="SettlementAutoSettle
SettlementStandardSettle
SettlementSlowSettle" color="#7b1fa2" fontsize=9 style=dashed]
"gl-1840-merchant-payable-clearing" -> "gl-1820-wire-settlement-suspense" [label=MerchantDailySettleAggregator color="#1976d2" fontsize=9]
"gl-1820-wire-settlement-suspense" -> "gl-1820-wire-settlement-suspense" [label=MerchantWeeklyBatchClose color="#7b1fa2" fontsize=9 style=dashed]
}
Topology — account templates + rails
Same shape as the accounts view above, but the nodes are
AccountTemplate roles rather than singleton Accounts. Each template
is one role × N node (the dashed border marks "many instances at
runtime"); rail edges connect templates whose roles the rail's
source_role / destination_role / leg_role references.
Singleton-only rails (no template touched) drop out — this is the
template-shape skeleton, not the full topology.
digraph {
nodesep=0.5 rankdir=LR ranksep=1.0
node [fontsize=11 style=filled]
tmpl__CustomerDDA [label="CustomerDDA × N" fillcolor="#bbdefb" shape=box style="filled,dashed"]
tmpl__MerchantDDA [label="MerchantDDA × N" fillcolor="#bbdefb" shape=box style="filled,dashed"]
tmpl__ZBASubAccount [label="ZBASubAccount × N" fillcolor="#bbdefb" shape=box style="filled,dashed"]
"ext-harvest-credit-exchange" [label="Harvest Credit Exchange" fillcolor="#ffe0b2" shape=box]
"gl-1850-cash-concentration-master" [label="Cash Concentration Master" fillcolor="#bbdefb" shape=box]
"gl-1840-merchant-payable-clearing" [label="Merchant Payable Clearing" fillcolor="#bbdefb" shape=box]
"ext-harvest-credit-exchange" -> tmpl__CustomerDDA [label="CustomerInboundACH
CustomerInboundWire
CustomerCashDeposit" color="#1976d2" fontsize=9]
tmpl__CustomerDDA -> "ext-harvest-credit-exchange" [label="CustomerOutboundACH
CustomerOutboundWire
CustomerCashWithdrawal
CustomerInboundACHReturnNSF
CustomerInboundACHReturnStopPay" color="#1976d2" fontsize=9]
tmpl__CustomerDDA -> tmpl__CustomerDDA [label="InternalTransferDebit
InternalTransferCredit
CustomerFeeAccrual" color="#7b1fa2" fontsize=9 style=dashed]
tmpl__ZBASubAccount -> "gl-1850-cash-concentration-master" [label=ZBASweep color="#1976d2" fontsize=9]
"gl-1840-merchant-payable-clearing" -> tmpl__MerchantDDA [label=MerchantPayoutACH color="#1976d2" fontsize=9]
}
Topology — chains (parent → child firings)
Chains declare that when one Rail or Transfer Template fires, another
SHOULD fire too. Solid edges are required (validator catches a missing
firing); dashed edges are optional. XOR groups capture "any one of
these MUST fire — pick the right child by metadata".
digraph {
nodesep=0.4 rankdir=LR ranksep=0.9
node [fontsize=11 shape=box style="filled,rounded"]
ACHOriginationDailySweep [label=ACHOriginationDailySweep fillcolor="#e0f7fa"]
ConcentrationToFRBSweep [label=ConcentrationToFRBSweep fillcolor="#e0f7fa"]
CustomerFeeAccrual [label=CustomerFeeAccrual fillcolor="#e0f7fa"]
CustomerInboundACH [label=CustomerInboundACH fillcolor="#e0f7fa"]
CustomerInboundACHReturnNSF [label=CustomerInboundACHReturnNSF fillcolor="#e0f7fa"]
CustomerInboundACHReturnStopPay [label=CustomerInboundACHReturnStopPay fillcolor="#e0f7fa"]
InternalTransferCycle [label="InternalTransferCycle (template)" fillcolor="#fff9c4"]
MerchantDailySettleAggregator [label=MerchantDailySettleAggregator fillcolor="#e0f7fa"]
MerchantPayoutACH [label=MerchantPayoutACH fillcolor="#e0f7fa"]
MerchantPayoutCheck [label=MerchantPayoutCheck fillcolor="#e0f7fa"]
MerchantPayoutWire [label=MerchantPayoutWire fillcolor="#e0f7fa"]
MerchantSettlementCycle [label="MerchantSettlementCycle (template)" fillcolor="#fff9c4"]
MerchantWeeklyPayoutBatch [label="MerchantWeeklyPayoutBatch (template)" fillcolor="#fff9c4"]
ACHOriginationDailySweep -> ConcentrationToFRBSweep [label=required color="#666666" fontsize=9 style=solid]
CustomerInboundACH -> CustomerInboundACHReturnNSF [label=xor color="#666666" fontsize=9 style=dashed]
CustomerInboundACH -> CustomerInboundACHReturnStopPay [label=xor color="#666666" fontsize=9 style=dashed]
MerchantSettlementCycle -> MerchantPayoutACH [label=xor color="#666666" fontsize=9 style=dashed]
MerchantSettlementCycle -> MerchantPayoutWire [label=xor color="#666666" fontsize=9 style=dashed]
MerchantSettlementCycle -> MerchantPayoutCheck [label=xor color="#666666" fontsize=9 style=dashed]
MerchantSettlementCycle -> MerchantWeeklyPayoutBatch [label=xor color="#666666" fontsize=9 style=dashed]
CustomerFeeAccrual -> InternalTransferCycle [label=required color="#666666" fontsize=9 style=solid]
MerchantDailySettleAggregator -> MerchantWeeklyPayoutBatch [label=required color="#666666" fontsize=9 style=solid]
}
Topology — account hierarchy (rollup)
How the singleton accounts and templates roll up. Each edge points
from a child to its parent — the singleton Account whose role
matches the child's parent_role. Solid-bordered nodes are 1-of-1
singletons; dashed-bordered × N nodes are templates that
materialize many instances at runtime (e.g. one CustomerDDA per
customer, all rolling up to the DDAControl GL).
digraph {
nodesep=0.4 rankdir=BT ranksep=0.9
node [fontsize=11 style=filled]
"gl-1010-cash-due-frb" [label="Cash & Due From Federal Reserve" fillcolor="#bbdefb" shape=box]
"gl-1810-ach-orig-settlement" [label="ACH Origination Settlement" fillcolor="#bbdefb" shape=box]
"gl-1815-card-acquiring-settlement" [label="Card Acquiring Settlement" fillcolor="#bbdefb" shape=box]
"gl-1820-wire-settlement-suspense" [label="Wire Settlement Suspense" fillcolor="#bbdefb" shape=box]
"gl-1830-internal-transfer-suspense" [label="Internal Transfer Suspense" fillcolor="#bbdefb" shape=box]
"gl-1840-merchant-payable-clearing" [label="Merchant Payable Clearing" fillcolor="#bbdefb" shape=box]
"gl-1850-cash-concentration-master" [label="Cash Concentration Master" fillcolor="#bbdefb" shape=box]
"gl-1899-internal-suspense-recon" [label="Internal Suspense / Reconciliation" fillcolor="#bbdefb" shape=box]
"gl-2010-dda-control" [label="Customer Deposits — DDA Control" fillcolor="#bbdefb" shape=box]
"gl-2020-merchant-dda-control" [label="Merchant Deposits — DDA Control" fillcolor="#bbdefb" shape=box]
"ext-frb-snb-master" [label="Federal Reserve Bank — SNB Master" fillcolor="#ffe0b2" shape=box]
"ext-payment-gateway-processor" [label="Payment Gateway Processor" fillcolor="#ffe0b2" shape=box]
"ext-card-network-acquirer" [label="Card Network Acquirer" fillcolor="#ffe0b2" shape=box]
"ext-coffee-shop-supply-co" [label="Coffee Shop Supply Co" fillcolor="#ffe0b2" shape=box]
"ext-valley-grain-coop" [label="Valley Grain Co-op" fillcolor="#ffe0b2" shape=box]
"ext-harvest-credit-exchange" [label="Harvest Credit Exchange" fillcolor="#ffe0b2" shape=box]
tmpl__CustomerDDA [label="CustomerDDA × N" fillcolor="#bbdefb" shape=box style="filled,dashed"]
tmpl__MerchantDDA [label="MerchantDDA × N" fillcolor="#bbdefb" shape=box style="filled,dashed"]
tmpl__ZBASubAccount [label="ZBASubAccount × N" fillcolor="#bbdefb" shape=box style="filled,dashed"]
tmpl__CustomerDDA -> "gl-2010-dda-control" [color="#666666"]
tmpl__MerchantDDA -> "gl-2020-merchant-dda-control" [color="#666666"]
tmpl__ZBASubAccount -> "gl-1850-cash-concentration-master" [color="#666666"]
}
Per-entity reference
Pick a primitive to walk its full inventory + descriptions:
Accounts — singletons + templates with descriptions.
Rails — every money-movement primitive with shape, aging
caps, posted requirements, metadata keys.
Transfer templates — multi-rail bundles.
Chains — required (singleton-children) + XOR (multi-children) firings.
Limit schedules — daily flow caps.
How the dashboards read this
L1 Reconciliation Dashboard — surfaces the L1 invariant
violations against the data this L2 declares: drift, overdraft,
limit breach (using the Limit Schedules above), stuck pending /
unbundled (using the Rails' aging caps), supersession audit.
L2 Flow Tracing — walks the Rails / Chains / Transfer Templates
diagrams above against runtime activity, surfacing
declared-but-never-fired rails, chain orphans and unmatched
transfer types.
Investigation — questions over the leaf-account / external-
counterparty graph above (recipient fanout, volume anomalies, money
trail, account network).
Executives — coverage / volume / money-moved scorecard rolled up
across SNB's account roster.
For a per-app sheet-by-sheet walkthrough, see the
Walkthroughs section.
See it live — the bundled
spec_example institution rendered as the live HTMX dashboards.