Privacy Policy
Last updated: October 19, 2026
At Prismfolio ("we," "our," or "us"), operated by Vault and Compass, LLC, we are committed to protecting your privacy. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you use our browser extension and website. Please read this policy carefully. If you do not agree with the terms of this policy, please do not access the site.
Short version
- Without signing in, the extension extracts holdings on your device and sends them to our servers to analyze; we do not store those holdings, and the extension keeps a local copy in Chrome storage. On the web, the Trade Impact page at /trade-impact accepts holdings you type without an account; they are analyzed in memory and not stored, and ticker symbols you type may be looked up and cached as public market data.
- When you sign in (Free or Plus), holdings you analyze are sent to our servers and stored so you can use the web app across devices. Free includes up to 1 Plaid auto-sync connection; Plus raises account and Plaid limits.
- We use Plaid for read-only brokerage linking. We never receive your brokerage login credentials.
- One analytics tool, PostHog, served from our own domain. Before you choose, and if you decline, it counts page visits in your browser without cookies and without identifying anyone. Browser analytics start only if you accept.
- You can delete your account and request data removal at any time.
Who we are
Prismfolio is a software product from Vault and Compass, LLC. We build tools that help you understand your portfolio; we are not a registered investment advisor, broker-dealer, or bank. This policy covers the Prismfolio Chrome extension, prismfolio.io, and related services we operate for Prismfolio only.
For company-wide practices across Vault & Compass products (including how we describe Sheetful and the corporate site), see the Vault & Compass privacy policy.
1Information We Collect
Portfolio Data
The Prismfolio browser extension extracts portfolio data from brokerage websites when you choose to analyze your holdings. This includes:
- Stock symbols and quantities
- Current market values
- Asset allocation data
- Sector and industry classifications
Analytics Data
We use a single analytics tool, PostHog, served from our own domain. Until you make a cookie choice, and whenever you decline (or your browser sends a Global Privacy Control signal, which we honor), PostHog runs in your browser in cookieless mode: it counts page visits in memory only, stores nothing on your device, sets no cookies, and identifies no one. Only after you click Accept do we enable browser analytics.
We do not use Google Analytics. The Prismfolio browser extension sends no analytics of any kind (no PostHog, no Google Analytics, and no usage or behavioral telemetry), with one exception: if you are signed in and answer its "Was this helpful?" feedback prompt, our servers record that vote as one of the account events listed below. The only thing the extension transmits on its own initiative is a crash report when it hits an error, through Sentry, described in section 4.
Global Privacy Control is honored as an opt-out: when your browser sends the signal we record your choice as declined and confirm on screen that we saw it. Analytics then store nothing else on your device and nothing in your browser identifies you, though anonymous page counts still run in your browser. If you then deliberately turn analytics on using the cookie preferences control below, that later choice stands, and the on-screen note says so.
In your browser, cookieless mode collects only:
- A count of page visits, held in memory for the life of the page
- No cookies, no browser storage, no profile, and no cross-visit identifier
Regardless of your choice, our servers record:
- A completed checkout (the plan, billing cadence, currency, whether you are a founding member, any launch promo, and the Stripe reference for the subscription, never card numbers; it also updates the plan, subscription status, billing cadence and founding-member status on your analytics profile)
- A trial conversion (the amount paid, the plan, billing cadence and the Stripe reference for the subscription)
- A plan change or cancellation
- A failed payment (amount and currency, the Stripe references for the subscription and invoice, the attempt count, and whether we emailed you a notice; no card data)
- A failed brokerage connection or sync (an error description and the institution, no holdings)
- A feedback vote made while signed in, on an article or in the extension
These are keyed to your account id and carry no portfolio holdings. A feedback vote made while signed out is not sent to PostHog.
After you accept, we may also collect:
- Page views and session duration on the marketing site and web app
- Feature usage events (no portfolio holdings in analytics payloads)
- Clicks and other interactions on the page, collected automatically rather than event by event
- Browser type and anonymised referrer information
- Masked session recordings on marketing pages (inputs hidden before transmission)
- Once you sign in, your browser analytics linked to your Prismfolio account id, with your plan, billing cadence, founding-member status and days since sign-up (never your email)
You can change your choice on the web at any time via cookie preferences or the site consent banner. Sentry error reporting runs separately for service stability (see section 4a).
2How We Use Your Data
We use your data for the following purposes:
- Portfolio Analysis: To provide insights into your investment portfolio's diversification, risk, and performance
- Service Improvement: Cookieless visit counts, and browser analytics once you accept, help us understand how prismfolio.io is used; signed-in product usage may also inform reliability and capacity planning without putting holdings in analytics payloads
- Account Services: To provide cloud sync and multi-device access for web app users
- Error Reporting: To detect and diagnose technical issues using Sentry error tracking
- Security: To protect against fraud and ensure the security of our service
We do not use or share your data to decide creditworthiness or for lending.
3Data Storage & Processing
Browser Extension (Extract vs Analyze)
The Prismfolio browser extension extracts portfolio data from brokerage websites on your device. What happens next depends on whether you are signed in:
- What the extension reads: Prismfolio doesn't have its own connection to your broker. It works by reading your broker's page in your browser. The extension reads the pages you open at your broker while you are signed in there. Those pages sometimes carry account-holder details such as name, postal address or phone number alongside your holdings, because your broker includes them in the same response. Prismfolio uses only your holdings, account names and the last 4 digits of each account number. To tell your accounts apart, the extension replaces the full account number with an irreversible hash made on your device, keyed by a secret that never leaves it (an older extension version sends the number, and our server replaces it with a keyed hash before anything is stored); we do not store or log the full account number. Anything else is discarded on your device and is never sent to our servers.
- Extract (on device): Reading holdings from the broker page happens in your browser. We never see your brokerage login credentials.
- Anonymous use: Without signing in, the extension sends your holdings to our API to analyze and shows you the results; we do not store those holdings. A local copy may be kept in Chrome's storage API. Uninstalling the extension removes that local data. On the web, the Trade Impact page at /trade-impact accepts holdings you type without an account; they are analyzed in memory and not stored, and ticker symbols you type may be looked up and cached as public market data.
- Signed-in analyze / sync: When you sign in and run analysis (or sync), holdings are sent to our API and stored in our database so the web app and multi-device features work. This applies on Free and Plus, cloud storage is not limited to Plus.
Web App with Plaid Integration
If you use the web app to link investment accounts via Plaid:
- Plaid's secure infrastructure routes data through Plaid's servers (the same system used by Robinhood, Venmo, and Betterment)
- Read-only access: We can view your holdings but cannot trade or move your money
- OAuth security: Your brokerage credentials are never stored or visible to us; Plaid handles authentication
- Account-holder identity and contact information: Connected-account data delivered by your financial institution may include identity and contact details for the account holder, such as name, postal address, email address, and phone number on file with that institution. Financial institutions may share this category with connected-account data regardless of which data a product requests. We request investment account data only, and do not ask your institution for identity or contact information.
- Encrypted tokens: Plaid access tokens are encrypted with AES-256-GCM before storage in our database. Portfolio holdings are stored as application data in our database and protected by our host provider's encryption at rest and access controls, not the same app-level AES wrap used for tokens.
- No sale of data: We do not sell your portfolio data. We share data only with processors listed in section 4 as needed to operate the service (for example Plaid, Stripe, Neon, hosting, and error monitoring), under contract.
Your broker relationship
Brokers generally treat use of a third-party tool, including Prismfolio, as authorized by you, and that can affect the broker's own fraud protection guarantee. This is true of any portfolio tool, including bank connection services, and is not specific to Prismfolio.
Your relationship with your brokerage is between you and the brokerage. We take no responsibility for your broker's site, or for anything that happens there.
Privacy commitment: Whether you use the browser extension or web app, we do not sell your personal information. Investment data is used to provide portfolio analysis and related product features, and is shared with service providers only as described in this policy.
Account Data (Optional)
If you choose to create an account, we store your email address and portfolio data from analyses and syncs you run while signed in (subject to your plan limits). Signing in is optional for basic extension extract; signed-in Free and Plus both use our cloud for web features.
4Third-Party Services
We use the following third-party services:
Plaid (Account Linking)
For web app users who link investment accounts, we use Plaid to securely connect to your brokerage. Plaid is SOC 2 Type II certified and used by major financial apps like Robinhood, Venmo, and Betterment. Plaid never shares your brokerage credentials with us.
PostHog
PostHog is our only analytics tool. We use PostHog Cloud for product analytics on prismfolio.io (feature usage and friction signals). PostHog does not sell data to advertisers. Session recordings are fully masked (all inputs and marked sensitive fields are hidden before transmission), and they run only after you accept.
Analytics requests are sent to prismfolio.io and forwarded to PostHog by our own servers, so your browser never contacts PostHog directly.
Before you make a cookie choice, and if you decline, PostHog runs in your browser in cookieless mode: page visits are counted in memory, nothing is written to your device, and the browser creates no profile. Session recording, autocapture, and browser feature-usage events are off in that mode.
Independently of your cookie choice, our servers record a small set of account events to PostHog under your account id: a completed checkout (the plan, billing cadence, currency, whether you are a founding member, any launch promo, and the Stripe reference for the subscription, never card numbers; it also updates the plan, subscription status, billing cadence and founding-member status on your analytics profile), a trial conversion (the amount paid, the plan, billing cadence and the Stripe reference for the subscription), a plan change or cancellation, a failed payment (amount and currency, the Stripe references for the subscription and invoice, the attempt count, and whether we emailed you a notice; no card data), and a failed brokerage connection or sync (an error description and the institution, no holdings). If you use the feedback control on an article or in the extension while signed in, your vote is recorded the same way; a vote made while signed out is not sent to PostHog.
Sentry
We use Sentry for error monitoring and crash reporting. Sentry collects error logs and stack traces to help us diagnose and fix technical issues. When an error occurs, Sentry may also record a replay of that session. Replays are configured to mask all on-screen text and to block media before transmission, so a replay is meant to show the layout and the actions taken rather than the figures on your screen. This app draws its charts as SVG, and we are still verifying that chart labels are masked by that setting; until we have confirmed it, we do not claim that a replay can never contain a figure from your portfolio. Sessions without an error are not recorded. Our code strips request headers from error reports before sending them, and we do not attach your name or email to them; that stripping applies to error reports, while replays travel on a separate channel and are governed by the masking settings described above. When you are signed in, we attach an internal account ID to error reports; it is a random identifier, not your name or email, and lets us match an error to your account when you report a problem. Sentry keeps error reports for up to 30 days, including after you delete your account. Because your browser sends these reports to Sentry directly, Sentry can see the IP address the report comes from, in the same way any service you connect to can; that is a property of the connection rather than something we put in the report.
Stripe (Billing)
Plus subscriptions are processed by Stripe. Stripe receives payment and billing contact information you provide at checkout. We do not store full payment card numbers on our servers.
Google (Sign-in)
If you sign in with Google, Google provides basic profile information (such as name and email) under OAuth. We use it only to authenticate your Prismfolio account.
Resend (Email)
We use Resend to send operational email from contact and feedback forms (notifications to our team, and related transactional messages). Sign-in is Google-only, we do not send password-reset email. Plus billing receipts and invoices are sent by Stripe, not Resend. Resend processes recipient addresses and message content on our behalf. We also use Resend to email you account notices, such as a warning before an inactive account is deleted.
Neon (Database)
Signed-in Free and Plus account and portfolio sync data is stored in Neon Postgres. Data is encrypted in transit and protected by Neon/host encryption at rest and access controls in production.
Vercel (Web hosting)
Our marketing site and Next.js web application are hosted on Vercel. Vercel may process request metadata (such as IP address and user agent) as part of delivering pages.
AWS App Runner (API hosting)
Our API server runs on AWS App Runner at api.prismfolio.io. Request metadata needed to serve authenticated API calls may transit AWS infrastructure; portfolio and account data is stored in Neon Postgres, not on App Runner hosts beyond processing in memory.
Upstash (Rate limiting)
We use Upstash Redis for API rate limiting. Upstash may process request identifiers needed to enforce limits; it does not receive portfolio holdings.
4a. Cookies & Analytics
We use cookies and similar technologies for essential service operation and, with your consent, browser analytics. Essential cookies and technologies (for example auth session cookies, the small cookie that remembers your analytics choice, and Sentry error reporting) run without an Accept click. In your browser, PostHog runs in cookieless mode until you accept, and in full mode after. The table below lists analytics and error tools, what they collect, and when they activate.
| Service | Purpose | What it collects | Activated |
|---|---|---|---|
| PostHog (cookieless mode) | Page-visit counting | A page-visit count held in memory. Each page view carries the page address, the page you came from, and basic browser and device information. It travels through our own server, which like any web server sees the IP address the request comes from; we do not pass your IP address on to PostHog, so the analytics service never sees it. No cookies, no browser storage, no profile, no cross-visit identifier in your browser. | Before you choose, and on Decline |
| PostHog (full mode) | Product analytics | Feature usage events, masked session recordings, linked to your account id once you sign in. No financial data. | On Accept only |
| PostHog (server events) | Account and reliability events | A completed checkout (the plan, billing cadence, currency, whether you are a founding member, any launch promo, and the Stripe reference for the subscription, never card numbers; it also updates the plan, subscription status, billing cadence and founding-member status on your analytics profile), trial conversion (the amount paid, the plan, billing cadence and the Stripe reference for the subscription), plan change or cancellation, failed payment (amount and currency, the Stripe references for the subscription and invoice, the attempt count, and whether we emailed you a notice; no card data), failed brokerage connection or sync (error description, institution, no holdings), and feedback votes made while signed in, on an article or in the extension. Keyed to your account id. No portfolio holdings. | Always, regardless of cookie choice |
| Sentry | Error reporting | Stack traces and error context, plus a text-masked, media-blocked session replay captured only when an error occurs, and the IP address the report is sent from. Essential for service stability. | Always (essential) |
What Decline means: Declining stops all analytics storage and all identification in your browser. PostHog keeps counting page visits in memory so we know how many people visited, but in your browser it sets no analytics cookies, builds no profile, and records no session. If you had accepted before, the identifiers and stored properties from that earlier visit are erased from your browser the moment you decline, not at some later point. One thing described elsewhere in this section is still kept: the record of your analytics choice itself. The campaign record is erased on the decline as well, cookie included; the tab-scoped record of the campaign that brought you here may be recorded again for the current tab as you browse, sets no cookie, and disappears when you close the tab. That stays true on later visits unless you change your choice on this page. Account events our servers record (see the PostHog card in section 4) are not governed by this choice.
Global Privacy Control
We honor Global Privacy Control as an opt-out, and it applies to the browser that sends it. See Analytics Data in section 1 for how the signal is recorded, how we confirm it on screen, and when a later choice of your own overrides it.
How you found us
When you arrive from an advertisement or a campaign link, the link carries campaign parameters (for example a click identifier and the campaign name). We record those, the referring site, and the page you landed on, so we can tell which campaigns bring people here. These are campaign details, not personal information, and we never put anything you type into this record.
Consistent with the rest of this section, we hold that record only for the current browser session unless you accept analytics. If you accept, it is stored in a first-party cookie named pf_first_touch for up to 180 days. If you never choose, no such cookie is written and the record disappears when you close the tab. If you decline, any cookie written under an earlier acceptance is deleted at that moment, together with the session record, and no new cookie is written unless you accept again.
4b. Data retention
We retain data while your account is active, and as needed to provide the service:
- Account history: We keep each account's name, institution, daily values and holdings for as long as you have a Prismfolio account, including accounts you hid or disconnected, until you erase them.
- After you delete your account: We delete or anonymize associated cloud data from active systems within 30 days, except the consent and connection records and the security log described below, which we keep for the periods stated there, and where retention is required by law or needed to resolve disputes. It takes longer only while we are still retrying the removal of a bank connection at Plaid, and in that case the encrypted connection token, or after 90 days only the connection's identifier, is kept solely to finish that removal. Stripe keeps its records of your past payments, including invoices, as financial record-keeping requires; we remove your name, email and address from the Stripe customer record.
- Consent and connection records. When you connect a financial account, disconnect it, erase a connected account's data, or delete your account, we record that choice and its time, the versions of the privacy policy and consent text shown to you, your internal account ID, the institution and number of accounts involved, and the identifier Plaid assigned to the connection. When we act for you (for example, a disconnect when you replace a connection you ended at your bank), we record that too. When you delete your account, we replace your account ID and the Plaid identifier with keyed codes and remove the list of accounts. We keep the record for five years after deletion to document your choices and to answer compliance or contractual requests, including from Plaid, then delete it. We restrict access to these records and do not use them to restore your account or its data.
- Security log: We keep a security log of sign-ins (including failed attempts), sign-outs, ended sessions, each use or removal of your bank-connection token, account deletions and actions our staff take. It holds your internal account ID, a session ID and a keyed code for the Plaid connection, and no name, email, IP address, device details or financial data. We keep it for 12 months, including after you delete your account.
- Inactive accounts: If you do not sign in for 24 months and have no active paid plan, we email you at 21 months and again 14 days before deletion, then delete your account and its data, except the records described in Consent and connection records and the security log, which are kept for the periods stated there.
- Disaster-recovery backups: Encrypted database backups / point-in-time recovery windows are short-lived (on the order of days, not months) and are overwritten on rotation; they are not used for other purposes.
- Extension-only (anonymous): Clear extension storage or uninstall to remove local data.
Where GDPR applies, we keep the consent and connection records and the security log on the basis of our legitimate interests (Article 6(1)(f) GDPR) in documenting the choices you made and keeping accounts and bank connections secure, for the periods stated above; you can object by emailing privacy@prismfolio.io.
Our server logs, which can include your user id, are deleted after 90 days.
Contact and support messages are retained long enough to respond and maintain service quality, then archived or deleted according to operational needs. Deleting your account deletes them from our database; copies emailed to our support inbox are removed on a verified deletion request.
4c. Security
We use industry-standard safeguards for data in transit and at rest, including HTTPS, encrypted tokens where applicable, and access controls for production systems. No method of storage or transmission is perfectly secure; if you discover a vulnerability, please email security@prismfolio.io. For a deeper overview, read our Security page.
5Your Rights
You have the following rights regarding your data:
- Access: You can view all data stored locally in the extension at any time
- Deletion: You can delete your local data by clearing the extension data or uninstalling it. For cloud-stored data, contact us or use your account settings
- Opt-Out (web analytics): You can turn browser analytics off anytime via cookie preferences or the site consent banner, and we honor Global Privacy Control. The Chrome extension runs no analytics, except a signed-in "Was this helpful?" vote, which is one of the server-side account events listed above and is not covered by Decline; extension error reporting (Sentry) is limited to crash/diagnostic data for stability.
- Data Portability: You can export your portfolio data from the extension
- Correction: You can update or correct your data at any time through the extension interface
Hiding, disconnecting and erasing accounts
Hiding a linked account stops our syncing for it; what we already hold is kept. Disconnecting a bank ends the connection but keeps each account's name, institution, daily values and holdings, so your past totals do not change. Erasing a hidden account, or choosing Erase everything when you disconnect, deletes the account with its daily values and holdings. You can also revoke the connection at your financial institution, using the connected-apps controls in its online banking settings. At Citi, for example, the path is Citi Online, then Profile, then More settings, then Connected Apps; other institutions place the equivalent controls elsewhere in their online banking settings. Changing your bank password does not revoke access previously granted to a data aggregator, so use the revocation control at your institution, disconnect the bank here, or both.
California (CCPA)
California residents may request access, deletion, and information about our data practices. We do not sell personal information, and we do not share personal information for cross-context behavioral advertising. To exercise these rights, email privacy@prismfolio.io or use account settings (including account deletion). For optional web analytics opt-out, use cookie preferences.
Other jurisdictions
Where GDPR or similar laws apply, you may have rights to access, portability, erasure, restriction, and objection. Contact privacy@prismfolio.io to exercise these rights. We respond within 30 days where required.
6Children's Privacy
Our service is not intended for children under the age of 13. We do not knowingly collect personal information from children under 13. If you are a parent or guardian and believe your child has provided us with personal information, please contact us immediately, and we will take steps to delete such information.
7Policy Updates
We may update this Privacy Policy from time to time. When we do, we will:
- Post the updated policy on this page
- Update the "Last updated" date at the top
Your continued use of the service after any changes constitutes acceptance of the updated policy.
8Contact Us
If you have any questions, concerns, or requests regarding this Privacy Policy or our data practices, please contact us:
Vault and Compass, LLC2108 N ST STE NSacramento, CA 95816United StatesEffective Date
This Privacy Policy is effective as of October 19, 2026, and will remain in effect except as otherwise stated in any future revisions to this policy.