Transfer Tracker
End-to-end tracking for incoming account transfers across custodians: stages and exceptions, asset-level detail, transfer forms filled from the account record, and fee reimbursements.
Overview
End-to-end tracking for incoming account transfers across custodians: stages and exceptions, asset-level detail, transfer forms filled from the account record, and fee reimbursements.
The problem
Transfers were tracked in a spreadsheet while the real status lived in each custodian’s portal. Rejections surfaced late, partial transfers left residual positions behind, and transfer fees were reimbursed late or not at all.
What I built
- A board showing every transfer by stage, with its value and time in stage.
- A custodian directory with transfer types, fee schedules and contact methods.
- Asset-level detail: what moves in kind, what must be sold first, and what stays behind.
- Transfer forms generated from the client and account record.
- Fee reimbursements calculated from the delivering custodian’s schedule.
- An advisor view scoped to the advisor’s own households.
Key decisions
Exceptions are a stage
Rejected and stalled transfers get their own column and a reason, so they cannot hide among routine work.
Custodian rules are data
Fees, contact methods and quirks live in records with the date each was last confirmed.
Generate forms, never retype
Form fields map to the account record, so a typo in a name cannot cause a rejection.
Archive, never delete
Records are soft-deleted, so the full history of a transfer survives a mistake.
Architecture
Next.js · React · Prisma · Postgres · pdf-lib · Zod
The demo
Custodians are fictional, clients come from the shared synthetic firm, and the daily digest is captured inside the demo instead of being sent.
Live demo in progress
This demo is being rebuilt on synthetic data. This page will link to it when it ships.