Engineering App (sign-in)

Turning bank feeds into explainable financial signals

A full-stack finance app on Plaid Production: a TypeScript data pipeline that cleans real bank feeds, a seven-detector alerts engine, and an explainable 0–100 financial health score.

Plaid
production bank data
7
alert detectors
0–100
financial health score
Daily
automated sync (cron)

Problem

Most budgeting apps stop at showing you a list of transactions. The harder, more useful problem is turning a messy, real-time bank feed into something that tells you when to pay attention — a missed paycheck, a subscription that quietly went up, a budget about to blow — plus one honest read on whether your finances are improving. That's an engineering problem as much as a finance one.

Data

Live transaction, balance, and account data from real financial institutions via Plaid's Production environment, synced on a schedule and normalised through a TypeScript cleaning pipeline that resolves pending transactions, deduplicates, and maps merchants before anything reaches the UI.

Method

A React + TypeScript front end over an Express + Prisma API, with Clerk handling authentication and a node-cron job pulling fresh data daily. The core logic is a seven-detector alerts engine (large transactions, budget pace, low balance, missed paycheck, subscription price hikes, and more) and a transparent 0–100 financial-health score that weights distinct signals so the number is explainable, not a black box.

Finding

The app connects real bank data through a daily pipeline to seven alert detectors and an explainable health score.

The engineering signal is the point — authentication, a typed data pipeline, scheduled jobs, and a real third-party financial integration, end to end.

Recommendation

Make each alert and score component traceable to its underlying transactions so users can understand the signal and review categorisation errors. Prioritise sync reliability and access-control testing as the app grows.

Limitations and next steps

The health score reflects designed rules rather than a validated predictor of financial outcomes. Bank-feed delays and categorisation errors can affect alerts. Next steps are testing sync failures and account isolation, and validating demonstrations with synthetic transactions so they can be reviewed without personal banking data.

Explore Ledger

Plaid Production · auth-gated
A private financial workspace

The bank-connected workspace requires sign-in because it handles personal financial data. This case study describes the pipeline, alerts, and score without displaying banking records. Explore the app's sign-in page or review the code linked below.

Open the app (sign-in) ↗