Security & Threat Model

The short version
  • No account, no email, no password — your workspace is an anonymous ID in a cookie.
  • No bank connection: you upload statement files you export yourself.
  • Uploads are parsed and stored server-side in your own isolated workspace, deletable with one click.
  • No third-party analytics, no ads, no tracking scripts, no data resale.
  • Pinke never calls an AI provider. If you want AI help, your own LLM reads your data through a scoped token you create and can revoke.
Identity: no account

There is no signup. On your first visit (after the cookie-consent click) Pinke creates a random user ID and stores it in an HttpOnly cookie with a signed session token. No email address, no password, no personal identifier is collected. Moving to another device works via a QR-code transfer, not via an account.

The flip side, stated honestly: lose the cookie without exporting or transferring first, and the workspace is orphaned. There is no password-reset because there is nothing to reset.

Data flow: what is stored, what leaves

Uploaded statements (CSV/PDF) and e-invoices (XRechnung/ZUGFeRD) are sent over TLS to the server, parsed there, and stored in a per-user workspace together with the derived transaction rows, your rules and settings. Pinke is a server-side application — it is not a purely client-side tool, and this page will not pretend otherwise.

What the server does not do:

  • No connection to your bank — there is nothing to connect; you export files yourself.
  • No third-party analytics or ad scripts anywhere. Page-view counting is first-party only (path and external referrer domain), used solely to see which pages are read.
  • No sharing or selling of data. Infrastructure providers (hosting/storage) process data only to run the service.

Deletion is real: your profile page deletes individual uploads or the entire workspace including every derived row. Demo data seeded for first-time visitors is automatically purged the moment you import your own statement.

AI: bring your own LLM, keys stay with you

Pinke runs no LLM and holds no AI provider keys. AI assistance is inverted: instead of Pinke sending your data to a provider, your own assistant (ChatGPT, Claude, any agent) reads from Pinke's data API — but only after you generate an access token.

  • Tokens are scoped, revocable and expire after 7 days.
  • The API serves minimized data: transaction clusters, categories and rules — not raw statement files.
  • Every AI write (e.g. a suggested rule) is validated and tagged ai-created, so you can audit and remove it.
  • The full API manual is public at /api/ai/llm.txt.

Consequence: which AI sees your data, and under which privacy policy, is entirely your choice — including choosing none.

What you are trusting

An honest threat model names its trust anchors. When you use Pinke you trust:

  • The operator. Data is processed server-side, so the operator could technically access it. The mitigations are minimization (no identity attached to your workspace), one-click deletion, and the policies on the privacy page. Pinke is currently closed-source, so this is a trust statement, not an audited claim.
  • TLS for transport between your browser and the server.
  • Your own device and browser — the cookie is the workspace key.

What you explicitly do not have to trust:

  • Your bank's API connectivity or a screen-scraping aggregator — neither exists here.
  • Any AI provider — unless you connect one yourself, and then only the one you chose.
  • An advertising or analytics network — none are present.
Reporting a vulnerability

Found a security issue? Mail info@pinke.pro — reports are read by the developer, not a ticket queue. Please include steps to reproduce; good-faith research is welcome.