Privacy

Last updated July 21, 2026.

Therapy is a one-person project, built and run by Joel Sandén. This page describes, in plain language, what data the app collects, what it's used for, who else sees it, and what to do if you want it gone. If anything here is unclear, email me@joelsanden.se — that's a real inbox, not a form that goes nowhere.

Two very different ways you might use this

Most of what Therapy offers — the technique library, session history, mood check-ins — works as an MCP connector inside Claude. When you use it that way, your actual conversation happens inside Claude, and is governed by Anthropic's own privacy policy, not this one. What Therapy's own servers see from that is narrow: which tool Claude called, whether it succeeded, how long it took, and — for technique-related calls — which technique. Never the conversation itself, never your prompt, never Claude's reply.

The paid tier adds a second surface: an in-app AI chat and generated insights/reports that run on Therapy's own servers, not inside Claude. Those are covered in more detail below.

What we collect

Account. Email, and optionally a name/avatar if you sign in with Google. You can also use the app as an anonymous guest without an email at all. If you later sign in for real, your guest data is merged into the new account and the anonymous one is removed. If you never convert it, it isn't automatically deleted — it just sits there like any other account until you ask us to remove it (see Retention and deletion).

Sessions. Signing in creates a session record: a session token, an expiry, and — standard for most web sessions — the IP address and browser user-agent used to sign in. This is what keeps you logged in; it's not used for tracking beyond that.

What you actually log. Mood check-ins (a 1-10 rating plus an optional note), technique usage (which technique, when), and conversation summaries — a short recap Claude writes at the end of an MCP session, not a transcript; the actual conversation happens inside Claude and never reaches our servers at all. This is the data the free tier and most insights are built from. The in-app chat feature (paid tier) works differently — see the next paragraph.

Paid-tier extras. If you're on With Insights: cached AI-generated insights (themes, technique effectiveness, patterns), sent progress reports, your report cadence preference, and — unlike the session summaries above — the full message history of any in-app chat you use, stored as-is so the conversation can pick back up later.

Billing. A Stripe customer ID and a mirror of your subscription — plan, status, renewal dates, and whether you've opted into overage billing — not your card number. See Payments below.

Usage metering. For paid AI features, we record how many tokens each call used — never the prompt or the response, just the count, so usage can be billed accurately.

We do not run any analytics, advertising, or behavioral-tracking script on this site. The only cookies we set are our sign-in system's own — a session cookie plus a couple of short-lived helper cookies used during the sign-in flow itself — nothing for tracking.

How the AI features handle your data

These paid features call a language model on our own servers (not inside Claude), routed through the Vercel AI Gateway. We pick a model per feature mainly for cost and capability, and that choice — including which company's model it is — can change over time. Rather than name a specific provider here and risk this page going stale the next time we do, here's what's actually configured right now:

Insights (themes, effectiveness, patterns) and progress reports are built from your saved summaries and check-ins, put through a filter first, every time:

In-app chat works more like an ordinary AI chat product — what you type goes to the model close to as-is, in real time, so we don't run the same filtering step there. If you ask the assistant to look something up (a past session, a check-in), the tool result — including its exact timestamp — becomes part of what the model sees for that reply. If you'd rather keep something out of a chat prompt entirely, not mentioning it there is the more private option, or use the MCP connector inside Claude instead, which never reaches our model-calling code at all.

Crisis-safety detection in in-app chat — the in-app chat scans your message text for language that may indicate acute distress or self-harm risk, using a deterministic keyword match — not a clinical or diagnostic assessment — so it can proactively lead its reply with crisis-support resources (a local hotline number). Only a content-free record that this check occurred is stored (never the message text itself). This check runs only for the in-app chat, not for conversations through the MCP connector in Claude.

Across both: prompt and response content is never logged or stored by us beyond what's already described on this page — there's no separate "AI request log." What we keep afterward is a token count, for billing, and — for insights — the resulting structured output (e.g. "recurring theme: work stress"), not the raw text that produced it. In-app chat is the one exception: the messages themselves are kept in full as your chat history, as described above, so the conversation can continue later.

None of this is a clinical read on you. It's reflection tooling built on top of what you've already shared — it doesn't evaluate, diagnose, or treat anything. See how the insights actually work for the full picture, including what they can't tell you.

Who else sees it

We don't sell data, and we don't share it for advertising. The below are the outside services this app relies on to run at all — each sees only what it needs to do its job:

Payments

If you subscribe to the paid plan (With Insights), Stripe handles the actual payment. We never see or store your card number — only a Stripe customer ID and your subscription status (active, canceled, and so on), which is how the app knows what you're entitled to.

Emails we send

Three types: a sign-in link when you log in without a password, a weekly or monthly progress report (paid tier, opt-in), and a daily or weekly check-in reminder (paid tier, opt-in). Every email that's recurring has a one-click unsubscribe link that works without logging in, and the same toggling is in your account settings. Turning off any of these doesn't touch any saved session or check-in data — it only stops those specific emails.

Check-in reminders — an optional email that nudges you if you haven't logged a mood check-in yet during the current day (if you picked daily) or the current week (if you picked weekly). It's off by default, and only runs for paid subscribers who've explicitly enabled it. If you've already checked in that period, the reminder won't send — it's meant to gently help a habit form, not add pressure. Like progress reports, each reminder carries a one-click unsubscribe link that works without logging in.

Retention and deletion

Right now, deleting your account isn't a self-service button in the app yet — email me@joelsanden.se and ask, and we'll delete it. The data model behind the app is built so that once an account is deleted, everything tied to it — sessions, check-ins, conversation summaries, cached insights, reports, chat history, usage records — is deleted along with it in the same operation, not left behind in some other table.

If you'd rather just stop receiving something specific, see Emails we send above for reports, or email us for anything else.

Your choices

If you're in a jurisdiction with specific data rights (for example the EU/UK's GDPR or California's CCPA) and want to exercise them formally, email us and we'll do our best to help — this is a small, independently run project rather than one with a dedicated legal/privacy team, so please be patient with us.

Not a clinical service

Therapy — the app and this policy both — is reflection tooling, not clinical assessment, diagnosis, or treatment, and using it doesn't create a relationship with a healthcare provider. If you're struggling, please consider reaching out to a qualified mental health professional, or, if you're in crisis, a local emergency service or crisis line.

Changes to this page

If this policy changes in a way that matters, we'll update the date at the top. Checking back occasionally is the best way to stay current.

Contact

me@joelsanden.se — for anything on this page, including data requests and deletion.