I considered three different technical approaches before settling on a browser extension. Here is the reasoning, and the privacy decision embedded in it.
Founder, Vault & Compass

When I started building Prismfolio, the obvious form factor was a web app. You log in, connect your accounts via Plaid, and see your portfolio analytics. Most investment tracking tools work exactly this way.
I chose a Chrome extension instead. Here's why.
Option 1: Standard web app with Plaid integration. Users connect accounts via Plaid's OAuth flow. We get read-only access to investment data, store it on our servers, and display analytics. This is the most common model. It is how Personal Capital, Kubera, and most portfolio trackers work.
The problem: it requires users to trust us with a connection to every investment account they own, indefinitely. Plaid access tokens are persistent. We're storing sensitive financial data on our servers. The business model has to justify the security and trust burden of that.
Option 2: File upload. Users export a CSV from their brokerage and upload it. No account connections needed. Some tools use this approach.
The problem: it's inherently stale. The moment you upload the file, it starts becoming outdated. Running analytics on data that's weeks old is useful for retrospective analysis but not for current portfolio review. People also just don't do it. The friction is too high for regular use.
Option 3: Chrome extension with local processing. The extension reads portfolio data directly from the brokerage page you're already viewing. No account connections. No data leaves your browser. Analysis runs locally.
The free tier of Prismfolio is built on the extension model because it solves the privacy problem definitively.
When you're on your Schwab account page, you're already authenticated with Schwab. You can see your portfolio. The extension reads what you can already see and runs analytics on it. We never receive your data.
This isn't a compromise or a workaround. It is the right architecture for a tool that genuinely doesn't need to store your financial data to provide value. The analytics (beta, standard deviation, Sharpe ratio, expense ratio, allocation breakdown) can all be calculated in the browser without any of it leaving your machine.
The extension model has real limitations:
Up to three accounts on Free. The free tier analyzes the brokerage page you're viewing and can save up to three accounts when you sign in. Seeing your complete picture across many institutions without visiting each tab is what Plus unlimited sync is for.
Browser dependency. An extension only runs when you open the browser. It doesn't sync in the background or send notifications.
Chrome-only. Building for multiple browsers increases development complexity significantly. We started with Chrome, where the majority of desktop financial research happens.
Choosing the extension model meant we couldn't monetize the free tier through advertising (no server-side data). It meant our revenue model had to be based on users who found enough value in Plus to pay for it.
That constraint is actually useful. It focuses the product on being genuinely valuable at the free tier (so people discover and trust it) and genuinely better at the paid tiers (so the upgrade is obvious). A business model that depends on charging for storage and connections forces you to make the analytics themselves compelling.
The privacy benefit to users is real. But it's also not disconnected from good product strategy. Tools that ask for less trust get used more freely. A Chrome extension you install without connecting an account is a much lower commitment than a web app that wants your Schwab credentials on day one.
That lower barrier (to discovery, to first use, to understanding the value) is part of what makes the model work.
Get early access
Prismfolio and Sheetful are launching soon. Join the waitlist for early access.
Get access