Documentation

Privacy & your data

Financial data is personal, so it's worth knowing exactly where yours lives. The short version: as a guest, on the server only fleetingly and in your own browser durably; with an account, durably on the server under your login; with the desktop app, on your own disk and nowhere else.

Using the app as a guest

Everything works without an account. Guest mode is not a limited trial — uploads, all analytics, the assistant, favourites, manual assets and settings all behave identically. Signing up changes only where data is stored, never what you can do.

As a guest on the hosted app, your data lives in two places:

Practically, that means:

What creating an account changes

An optional email + password account (the Account tab in ⚙ Settings, hosted app only) moves the durable copy of your data to the server:

Starting as a guest, signing up later

You lose nothing by trying the app first: your first sign-in from a browser claims what you built there as a guest.

The story in order:

  1. You open the app as a guest, upload your exports, star favourites, tune settings.
  2. Later you create an account (or sign in for the first time) from that same browser. If the account is still empty and your guest session has data, everything the guest session owns — sources with their transactions, settings, API keys, manual assets, favourites — is moved to the account in one step, all-or-nothing.
  3. Any other device you sign in on now sees the same portfolio, served from the server.

Two edges worth knowing, exactly as implemented:

API keys

LLM API keys entered in Settings are encrypted at rest on the server and are never stored in the browser — not in localStorage, not in the IndexedDB backup. They belong to your session or account and are wiped with it. If you run the app yourself, keys can also come from the server's own .env (OPENAI_API_KEY / OPENROUTER_API_KEY).

And if you'd rather not send portfolio context to any cloud model: run the assistant on Ollama or LM Studio and it never leaves your machine.

What reaches an LLM provider

Nothing, until you connect one. The hosted app deliberately configures no server-wide LLM key — every assistant feature stays inert until you enter your own API key (or point at a local model) in ⚙ Settings → Assistant. The dashboard itself — uploads, charts, performance, risk, allocation — never involves any LLM.

Once you have connected a provider and use an assistant feature (chat, the one-click reports, AI insights, smart search), the app sends your question plus the portfolio context the answer needs — holdings with weights and values, performance and risk figures, recent trades, your strategy text, and what's currently on your screen — to the provider you chose, under your key (OpenAI or OpenRouter for cloud models). Your raw CSV files are never sent — only the derived portfolio the dashboard shows. What those providers do with request data is governed by their terms, which is exactly why the choice of provider — including a fully local one — is yours.

The desktop app

Fortunest also ships as a native Mac & Windows app (the Desktop app section of the site tracks the public download). It is not a thin window onto the cloud: the complete engine — import, valuation, analytics, the assistant — runs inside the app on your computer, which makes the privacy story short. The app never sends your portfolio to the Fortunest server: what it reads from the server is market data (see the first item below — ticker symbols go out, prices come back), and the one thing it can upload is opt-in and yours to control: Social sharing, which sends only the relative-value snapshot sections you explicitly ticked (see the list below and Social & friends).

Where your data lives

Everything the app knows sits in its own data folder on your disk: a SQLite database with your transactions, sources, settings, manual assets and favourites; the local encryption key protecting any API keys you enter; and the market-data caches. On macOS that folder is ~/Library/Application Support/Fortunest, on Windows %APPDATA%\Fortunest. Back it up and you've backed up the app; delete it and everything is gone — there is no copy anywhere else.

What leaves your machine, and why

What works offline

Essentially all of it: the dashboard, performance, allocation, risk, dividends, correlations, simulations, trade recommendations, Explore, and the assistant on a local model. Price history is cached for a day; when the network is away the app simply keeps serving the last cached prices (and quietly retries in the background), so charts show the world as of your last online session. The one thing an offline session can't do is price a symbol it has never fetched before — so a fresh install wants one online session to warm its cache, and after that you can work on a plane.

Social & friends

The Social tab is the one place data of yours can become visible to other people — and only ever the people you approved, only ever the sections you ticked, and only ever relative figures. The rules, exactly as built:

Usage analytics & feedback

The hosted app records anonymous, cookieless usage events (which features are used, how large portfolios are as counts). Only generic values travel — never file names, tickers, amounts, queries, chat or strategy text, or emails. The same anonymous counts are mirrored into cookieless Umami page analytics; this website uses the same cookieless Umami counter and nothing else.

One exception exists, and you type it yourself: a message sent through the in-app Feedback button is stored as written (with the email field only if you fill it in), tied to nothing more than the same anonymous session id.