Kestrel Banking — product requirements
Kestrel Banking is a private-banking vault. Clients sign in with a Secure ID, see their accounts and cards with net liquidity, move money between their deposit accounts behind an explicit authorization step, and open new products through a three-step application with a calendar date picker.
Problem. Clients must be certain that every transfer or product funding is authorized deliberately and that the money is always accounted for: balances and net liquidity must reconcile after every operation.
Users
- Private-banking client — See total liquidity at a glance, move funds safely and open new products without paperwork.
- Applicant — Complete identity, residence and funding steps with clear field-level feedback.
Goals
- No money is created or lost: every debit lands somewhere and net liquidity reconciles.
- Nothing moves until the client explicitly authorizes it.
- Every field error is specific and appears before an application advances.
Out of scope
- External wires (simulated as new funds)
- Statement and alert content
Contents
Vault sign-in
Secure ID login, session gating and sign-out.
- URL /kestrel/dashboard, heading "Portfolio", "Welcome back, @<secure ID>"
- "Access denied — secure ID or access code not recognised"
Portfolio
Facilities, net liquidity and sidebar.
- Checking •••• 2841 $12,480.55; Savings •••• 5530 $48,210.00; Vela Signature •••• 7710 "Balance owed $642.12"
- Net Liquidity $60,048.43 (12,480.55 + 48,210.00 − 642.12)
- Savings "4.10% APY · no lockup", Checking "Zero-fee daily liquidity", Platinum Credit Card "3× points · concierge"
- Alerts "Statement for September is ready." and "New device sign-in verified."
Move funds
Internal transfers with a Review Protocol and authorization dialog.
- Checking → Savings $500.00 shows Origin Checking •••• 2841, Recipient Savings •••• 5530, Amount $500.00
- After authorizing: Checking $11,980.55, Savings $48,710.00, Net Liquidity unchanged at $60,048.43
- Savings → Checking $10,000 gives Checking $22,480.55, Savings $38,210.00
- Origin Checking: "Available: $12,480.55"; Origin Savings: "Available: $48,210.00"
- "Origin and recipient facilities must differ"; no dialog
- Empty, "0" or "ten": "Enter a liquid capital amount above $0.00"
- 12480.56 from Checking: "Insufficient liquidity in origin facility"
- 12480.55 succeeds: Checking $0.00, Savings $60,690.55
- After Abort the form still shows $250 and Checking stays $12,480.55
Product application
Three-step application: identity, residence, initial allocation.
- Heading "Apply for Savings"; date hint "March 22, 1985"
- Externally funded $100: "Facility Approved" — "Savings was successfully provisioned." and "Savings •••• 1148 · Opening balance $100.00"
- Dashboard shows four facilities and Net Liquidity $60,148.43
- Checking funded $1,000 from Checking •••• 2841: new "Checking •••• 1148 · Opening balance $1,000.00"; source $11,480.55; Net Liquidity $60,048.43
- $20,000 from Checking: "Insufficient liquidity in origin facility" under the amount
- "Select a funding source" and "Funding amount required"
- Platinum Credit Card funded $100 from Checking: Checking $12,380.55 and Net Liquidity $60,048.43
- "1985-03-22" enables Continue with hint "March 22, 1985"
- "2023-02-29", "03/22/1985", "1899-12-31" and any future date disable Continue
- "2024-02-29" is accepted: "February 29, 2024"
- Popup "Choose date of birth" opens on January 1990
- July 1972, day 4: field "1972-07-04", hint "July 4, 1972"; reopening shows July 1972 with day 4 selected; "Previous month" twice reaches May 1972
- "Primary residence required", "City required", "State required", "Valid 5-digit ZIP code required"
- ZIP "9410" keeps the ZIP error
- 02101 (Massachusetts) is accepted and "Initial Asset Allocation" opens
- "1e4" shows "Valid 5-digit ZIP code required"
- Residence "456 Oak Ave", "Springfield", California, 94105; Identity Jane / Smith / 1985-03-22
- /kestrel/apply/Gold%20Bullion: "We couldn't find “Gold Bullion”."
Vault API
REST access to facilities, transfers and applications.
- No token: 401
- With token: 200, three facilities, netLiquidity 6004843
- Review with a card as recipient: 422 "Select origin and recipient facilities"
- Valid $50 transfer: 201, id "KTX-…", status "authorized", Checking balance 1243055
- Unknown product: 404 "Unknown product Gold"
- Empty sections: 422 with errors for firstName, lastName, dob, address, city, state, zip, source and amount
Non-functional requirements
Glossary and rules
| Net Liquidity | Deposit balances minus the balance owed on cards. |
|---|---|
| Facility | Any account or card in the portfolio. |
| Review Protocol | The review step before the Authorization Protocol dialog. |