Privacy

What we collect, what we don’t, and how we handle your data.

The short version

Seba is anonymous by default. You can read the public library, ask Sebastian, and use the dream room without giving us your name, email, phone number, or payment details. We do not render your name, photograph, or email anywhere in the public interface. We do not sell data. We do not run third-party trackers or advertising pixels. The site works without sign-in.

Without sign-in, Seba can still keep browser-level continuity: conversations and saved items are tied to a randomly generated identifier stored in your browser. Sebastian’s private rolling memory starts when you sign in. Google sign-in links your records to your account so they follow you across devices. Optional donations, newsletter signup, feedback, or support emails collect only the information needed to handle that specific request.

What we store on the server

These categories may live on the Seba server, keyed either by the browser identifier on this device or by your account if you sign in.

Chat threads. Your conversations with Sebastian — the messages, the order they were sent, and timestamps. So you can come back on the same browser and pick up where you left off.

Saved readings and notes. Dream interpretations, tarot / I Ching / astrology readings you saved, and any Sebastian responses you bookmarked. Without sign-in, these are primarily device-local. When you sign in, they can sync to your profile.

Profile memory for signed-in readers. A short prose summary Sebastian writes about you over time, so the next conversation is not a cold start. It draws on your signed-in conversations across the site — chat with Sebastian and the experience flows (dream, tarot, astrology, and I Ching readings) can all contribute to it. It is short by design, lives in your profile record only, and is not created for signed-out readers.

Anonymous dream-theme counts. We keep anonymous daily counts of common dream themes (like teeth or water) to understand what themes people bring — never the words of a dream, and never tied to a person or account.

The memory records themselves do not store your IP address, and they are not visible to other users. Separate service logs (described below under “What we collect”) may use a short-lived IP-based key for rate limiting and reliability. We do not sell or share any of this.

What we collect

Analytics. We run a self-hosted instance of Umami to understand how pages perform. It records page URL, referrer, screen size, browser, and country — nothing that identifies you personally. It does not set cookies. It does not log your IP address in identifiable form. When you answer “Was this reading helpful?” under a dream reading, Umami counts your answer and the reading’s length anonymously, along with the visit’s source labels (see “Campaign attribution” below); the page address and the referring address are sent cut to their paths, and nothing of your dream is sent.

Campaign attribution. When a campaign link brings you to Seba, your browser may keep a bounded first-touch record for up to 30 days so we can understand whether that visit later led to a reading, saved item, membership, or donation. The record contains only allowlisted campaign labels and the landing-page path. It never contains your dream, question, reading, full URL, query string, or referrer string, and it stays in your browser’s local storage.

Sign-in (optional). If you sign in with Google, we receive your Google account identifier, email, display name, and profile-photo URL from Google’s sign-in service. We use the identifier to link your records to your account so they follow you across devices. We do not render your name, photograph, or email anywhere in the public interface. We do not email you directly without your opt-in through the newsletter form.

Signing in to the Seba Dreams app (optional). The Seba Dreams app for iPhone and iPad signs in with Apple, with Google, or with a code we email you. With Apple or Google, Seba receives only your email address and the account number Apple or Google uses for you. If you sign in with Apple, the address may be a private relay address that Apple forwards to your inbox. Seba keeps no password and no Google or Apple token. When you sign in on your iPhone or iPad, the app keeps a sign-in token in that device’s Keychain.

AI processing. When you ask Sebastian a question or use an experience, the text you write and the context needed to answer it — including selected library passages — are processed by third-party AI providers to generate the response, subject to those providers’ API data-use terms. Depending on the feature, Seba uses or has used DeepSeek, Anthropic (Claude), OpenAI, Voyage AI, Cloudflare Workers AI, and DeepInfra.

Voice dictation (when offered). If you tap the microphone in Sebastian, the audio is processed by Cloudflare Workers AI using a speech-to-text model. Seba does not save the recording. The resulting transcript is placed into the text box for you to review and edit; it is not sent to Sebastian or saved as part of a conversation unless you press Send.

Spoken answers (when offered). If you tap Listen beneath a completed answer, the visible answer text is sent to DeepInfra’s Kokoro text-to-speech service. Free visitors may receive a limited listening sample; membership raises the listening allowance. Seba does not send your name, email, member credential, source packet, or conversation history with the text. Generated audio is not stored on Seba’s servers; your browser may keep a private local copy so replaying the same answer does not generate it again.

Seba measures the free listening sample with a one-way digest of the anonymous browser identifier for about one year. A short-lived one-way digest of the network address limits repeated resets; the raw address is not stored in the speech counter. These counters contain character totals and dates, not answer text or audio. Anonymous analytics may record that a sample started or finished, or that a membership link was opened, without recording what was read.

Seba does not attach your account name, email, or other profile identity to these requests. Anything you include in the text itself, however, is sent as part of the request. No account, name, or email is required to use Seba. On Seba’s side, activity is associated with an anonymous identifier stored in your browser. Dream text is not stored on our servers unless you choose to save a reading. Chat conversations are kept under the anonymous identifier so you can return to them on the same browser; you can delete them or ask us to delete them. If you sign in, your saved items and conversations are linked to your profile instead.

We are building a local-processing option so this work can run on infrastructure we operate rather than third-party AI services. Check back here for updates. Section updated August 2026.

Newsletter (optional). If you subscribe to our newsletter, we store your email address with our email provider so we can send you occasional dispatches. You can unsubscribe at any time from any email we send.

Donations (optional). Donations are handled by Stripe. Seba does not see or store your card number. To recognize supporters and suppress donation nudges, the site may send Stripe the anonymous browser identifier stored under seba.anon_uuid, then store a supporter flag keyed to that identifier and, when available, a short-lived IP-based key. Seba also stores a Stripe Checkout Session reference for reconciliation. These supporter records are kept for about one year. Your card statement should show SEBA.HEALTH or similar, depending on your bank.

Estate membership (optional). Membership checkout, recurring billing, and the manage-or-cancel portal are hosted by Stripe. Seba stores an opaque member key, your anonymous Seba profile identifier, the Stripe subscription and customer references needed to recognize access and open that portal, and the membership start date. Seba does not store your card number or copy Stripe’s billing identity into the estate ledger. Stripe retains the billing records required to operate the subscription.

Dream-reading credits (optional, when offered). One-off credit checkout is hosted by Stripe. Seba sends an opaque browser identifier, then stores the verified Checkout Session marker and credit balance against that browser identifier and, when available, a short-lived IP-based key. Credits expire after about ninety days. Seba does not store your card number or copy Stripe’s billing identity into the credit record.

Feedback / Report a problem. If you use the “Report a problem” form on /profile or the site-wide feedback banner, we store the message you wrote, the optional contact email if you provided one, the page URL you were on, your browser’s user agent, and your profile identifier if one is present in your browser. We use this to debug the problem and to reply to you if you left an email. Reports are stored in our support queue and may be forwarded to our team’s inbox; we do not share them.

Service logs. When you ask Sebastian or use any of the public AI endpoints (chat, dream, tarot, I Ching, astrology, matchmaker), the backend may store a short request label or, on the public Oracle / search service, query text; a timestamp; an anonymous browser identifier when available; response-status or compact error information; and duration / cost metadata. The dream room does not put the words of your dream into these service logs. Separate rate-limiting and reliability controls may temporarily use a short-lived IP-based key. We use these records for rate limiting, abuse prevention, debugging, and keeping the service reliable. Service logs are kept separate from your profile memory; they are not used to enrich Sebastian’s memory of you, and your profile memory does not contain an IP-based key.

On-device storage. Your browser stores a session token (if you signed in), your reading palette preference, and an anonymous identifier under the key seba.anon_uuid. That identifier is the only thing that lets your browser retrieve browser-linked chat threads and saved items from the server. For a reading in progress, the browser keeps a copy of it in the tab, so a refresh does not erase it. For your current dream reading it also keeps a device-local recovery copy, so a phone that drops the page does not erase the intake or a reading that finished while the phone was asleep. The tab’s copy lasts as long as the tab; the device-local copy is shown only within four hours of the last time the page kept it. The page keeps it afresh each time the reading changes and each time it brings the reading back (a refresh, or opening the Dream room again), so its four hours start again then. Each copy records whose dream it is. A dream begun while you are signed in is yours under that sign-in: its device-local copy also holds your conversation with Sebastian about the dream, and its copies are shown again only during that same sign-in on this browser; after a sign-out, or another sign-in on this browser, they are not shown again, even to the same account, and they are removed. A dream begun as a guest stays a guest’s dream whoever signs in afterwards, in that tab or another: its conversation with Sebastian is kept in the tab only and goes with the tab, and no sign-in moves any of it under an account. A guest’s copies, and copies kept by the site before it recorded whose copies were, are treated as they always have been: as the copies of whoever has the page. On a shared browser, the next person to use that tab, or to open the Dream room there within the device-local copy’s four hours, can see them. Nothing removes a device-local copy at the moment its four hours end: an expired copy, or one made under a sign-in that is no longer the current one, is removed the next time the page that keeps it loads. Copies are also removed when you start over or sign out (signing out removes every device-local copy and the copies in the tab you sign out in, and may remove those of another open tab that notices it), and when you clear browser storage; after a sign-out or a change of account, another open tab of this browser removes its copy of a dream begun under the sign-in that ended as soon as it notices, and a tab that is not open on that page removes it the next time the page loads there. So that only one tab at a time carries a signed-in reader’s dream on, the tab doing so also keeps a short note on this device, with none of the dream in it, that it renews every few seconds; the note is removed when that tab closes, or by a later visit once it has gone a minute without being renewed. A save that finishes after another tab has taken the dream on leaves a note with the time, so that tab sends it again. When the tab carrying the dream on starts over, it leaves a note on this device holding the dream’s random identifier and the time, none of its words, so that another tab still showing the dream does not carry it on; a later visit removes it once a day has passed. Signing out removes all of these notes. A guest’s dream has none of them: each of its tabs goes on by itself. A dream you saved keeps, on this device, a one-way tag of the last version your account confirmed, so that opening it again does not send it again. A saved dream begun while you were signed in keeps up with your conversation about it as the conversation goes on; any other saved dream changes only when you save it again. If this device cannot keep a save (its storage is full), the save is still sent to your account when you are signed in, and the page says that this device’s copy could not be kept. In a conversation with Sebastian, words you have typed but not yet sent are kept only while you are signed in, so a reload of that tab does not erase them: on this device, one copy for each tab (a duplicated tab gets its own), shown only in that tab and only during that sign-in. A guest’s unsent words are not kept, and words typed as a guest are not kept after a sign-in either. A copy keeps the first 40,000 characters, and the page says so when it had to shorten one. A copy is removed when you send its words, empty the box or start a new conversation, when you sign out, and, once four hours have passed since its last change, the next time a conversation with Sebastian is opened in this browser while you are signed in. Clearing your browser storage removes the identifier; the server-side records remain but become unreachable from that browser. To remove them, see “How to delete your data” below.

How long we keep data

Profile memory, saved readings, notes, and browser-linked threads remain until you delete them or ask us to delete them, because their purpose is continuity. Service logs are shorter lived: usage events and public Oracle query logs are purged after about 90 days; expired sessions and magic sign-in links are purged after about 30 days; forwarded feedback reports are purged after about 12 months. Donation/supporter records are kept for about one year, as described above. Dream-reading credit balances and their redemption markers expire after about ninety days. Aggregate daily-cost rows are not personal records.

Practitioner interview submissions are kept for editorial review and removed when a correction/removal request requires it; public directory pages are handled through the directory correction and removal process.

What we don’t collect

No advertising cookies. No fingerprinting. No session recording. No third-party analytics (Google Analytics, Facebook Pixel, etc.). No sale of data to any party.

How to delete your data

Anonymous visitors. Your records on the server are keyed only by an opaque identifier — we have no way to look you up by name or email. To request deletion, email cody@seba.health and include your identifier. You can find it in your browser’s devtools under localStorage, the key seba.anon_uuid. We will delete every record under that identifier.

Signed-in accounts. Email cody@seba.health from the address you signed up with and we will delete the account and all associated records.

In the Seba Dreams app. Account > Delete account deletes your account on Seba’s servers. If your account uses Sign in with Apple, it also asks Apple to disconnect Seba.

Payment, supporter, and reading-credit records. If you donated or purchased a reading credit and want the associated records removed, include the browser identifier and, if you have it, the Stripe receipt or Checkout Session reference. Records linked to the browser identifier can be removed. IP-keyed marks are only removable when the exact key is identifiable; otherwise they expire automatically.

Newsletter. Use the unsubscribe link in any email we send.

Clearing your browser’s site storage for seba.health removes the identifier from this device but does not delete the server-side records on its own — without the identifier we can’t find them to delete them. If you want them gone, send the identifier first.

Contact

Seba is operated by 702 Alliance LLC, doing business as Seba Health. Questions about privacy go to cody@seba.health. We respond to privacy and deletion requests within 30 days.