PRIVACY

Local-first, by design.

Struppëflo runs in your browser. Boards, cards, and AI keys never touch our servers. Below is exactly what gets sent, in which tier, and how to turn any of it off.

Tier 0 — Always

No data ever leaves your browser.

Boards, cards, links, zonesStored in localStorage. Never sent anywhere.
AI provider keysStored in localStorage. Sent only to the provider that owns the key.

Tier 1 — Anonymous, no consent needed

Event names and small counts only. No content.

Page views and demo interactionsAnonymous, via Vercel Analytics.
Product eventsbrain_dump, organize, suggest_links, workflow_generated, template_used, xray_opened, prompt_copied, run_started, run_completed, open_in_model, key_connected, tour_completed, waitlist_joined, board_created_blank, result_added_to_board, result_split_into_cards, run_helpful_yes, run_helpful_no, telemetry_opt_in, telemetry_opt_out.
Per-run telemetryProvider, model, card count, input/output tokens, duration, status. Not the prompt content or output text.
Outcome feedbackThumbs up/down on run results. Optional one-line note (sent only when you submit it).

Tier 2 — Opt-in, structural only

Toggle in Help → Help improve Struppëflo. Default off. Never collects titles, bodies, or prompts.

Board structureCard type histogram, zone count, link type histogram, dependency depth. Plus a sha256 fingerprint of the structural shape (not the text).
Edit streamEach add/edit/remove event on cards, links, zones — with ms since the previous edit. Struggle signal: lots of edits before a run often means the prompt was hard to compose.
Per-run outcomesProvider, model, prompt fingerprint (sha256 of compiled markdown), output length, thumbs rating.
Run qualityDid the user re-run the same prompt? Did they add the result to the board or split it into cards?
SessionAnonymous user id, start/end timestamps, edit count, run count, thumbs distribution, final structure.

What we never see

Even with Tier 2 enabled.

Card titles, bodies, or prompt textNever collected at any tier. Server route's zod schema rejects these fields.
Your AI provider keysBrowser → provider direct; Struppëflo's servers never see them.
Your output text from runsStreamed in your browser; we only see length and your thumbs rating.
Your identityThe 'user id' is a random 24-char hex stored in your own localStorage. We don't see your name, email, IP, or anything else.

Where the data lives

Tier 1 events are retained by Vercel Analytics for the standard Vercel window. Tier 2 telemetry is stored in Vercel KV (Redis), keyed by date, with a 90-day TTL. We do not sell or share either tier with third parties.

Contact

Questions, deletion requests, or concerns: justin@attiteud.com.