505 karma · joined September 26, 2010
https://github.com/mzxrai | matt@driggsby.com
On banks not supported by Plaid — while most are covered already (12,000+), totally understand that some like Fidelity aren’t. For this, we’re considering a way to manually import statements, but that wouldn’t support the live data sync that Plaid provides of course.
Performance tracking — yes! Absolutely on this. We’ve been sketching this out lately since it has some nuance to get right. Would love your input on what you’d like to see here.
It may be that more mundane analysis ends up being the most useful. For example — for years, we had some money in a money market fund earning basically no interest. It just wasn’t on the radar.
Had even a not very smart LLM nudged us to put the money into a HYSA earlier, we would have made thousands per year in interest.
My wife also recently used our tool to do some simple investing optimization that’s going to save us a few thousand per year on taxes.
Thing like this aren’t sexy but do have value, and don’t take GPT Pro.
Plaid does do screen scraping for smaller banks, but they have agreements for OAuth-based access with most of the largest institutions.
Making it secure is actually quite hard, but that's why we're spending an enormous amount of time thinking about that.
It was a bit of a process involving sales calls, contracts, security attestations, etc., but they're planning to make it easier to try out the platform. There is a pay-as-you-go, developer-friendly option, but the support it includes is pretty flaky. The support issue is less "my code broke" and more things like "this institution isn't returning what it should," or, "I haven't been approved yet by this institution that does manual review."
Overall, it's been a pretty good experience! I'd suggest spinning up an app if you're considering them. Here are their LLM-friendly docs: https://plaid.com/docs/llms-full.txt
Here's a quick list of some of the major ones:
JPMorgan Chase, Bank of America, Wells Fargo, Citibank, U.S. Bank, PNC, Capital One, Truist, TD Bank, Charles Schwab, Vanguard, Marcus by Goldman Sachs, Goldman Sachs Private Wealth, Morgan Stanley, E*TRADE, USAA, M&T, RBC, American Express, Fifth Third, Citizens, KeyBank, Huntington, Ally, Discover, BMO
Thanks for sharing about the apartment -- that's super cool and a really great use-case.
How well has the cash flow prediction worked?
- Backend & CLI are both strictly linted Rust. The webapp runs on Axum (Rust web framework), and connects to Postgres via sqlx.
- Financial read-only. There's no transfer, pay, or send tool in the product. Nothing in the AI surface can move money.
- We request transactions, investments, and liabilities from Plaid. We don't request auth, transfer, or payment_initiation, so we never receive full account numbers or routing numbers — just the last-4 mask Plaid returns by default.
- Bank usernames and passwords go to Plaid Link, not us. We only hold a per-institution access token.
- Plaid access tokens live in a separate database behind a single custody Cloud Run service, encrypted at rest by Cloud KMS. The broker calls KMS's encrypt/decrypt endpoints — the root key material never leaves Google's HSM boundary and the broker's service account is the only one with encrypt/decrypt permissions. The web app doesn't have permission to read that database.
- Every encryption and decryption call passes the Plaid item ID as AAD (additional authenticated data). A ciphertext from one item cannot be swapped in and decrypted as another item's token.
- Each Cloud Run service (including our web app) runs under its own cloud identity and with its own DB role.
- Internal calls between services are authenticated: the caller presents a short-lived identity token from the cloud provider, and the receiver verifies it.
- The prod databases have no public IP. Secrets live in managed secret storage, not in source or container images.
- The AI connector is OAuth 2.1 + PKCE, scoped per user, revocable from the UI. Every tool call records the tool name, sanitized args, calling client, and the reason the agent supplied, so you can see what your LLM asked on your behalf.
- There are no fetch-URL, shell, or general I/O tools in the AI surface. Tools return structured financial data and nothing else.
- Networking, IAM, and DB grants are all in Terraform. All infra changes go through that path.
- Infra access is gated by 2fa and security keys.