| Account: email address, sign-up date and last sign-in. Supabase, which handles sign-in for us, keeps for each open session your browser’s full name (its user agent) and the IP address it was opened from, and keeps a log of sign-ins | Signing you in with a code sent by email | As long as the account exists; a session: until it is closed (you can see and close your sessions in Settings › Security) |
| Profile: plan and renewal date, content filter on or off, date of your “18 or older” statement, any suspension, chosen avatar (a seed of at most 64 characters, never a photo), accent color | Applying your plan’s rights, showing your interface on every device | As long as the account exists |
| Payment: Stripe customer id, subscription status, auto top-up (threshold, amount, the card’s id at Stripe), gift codes used, ids of the Stripe events already handled | Billing, managing the subscription, never handling a payment twice | As long as the account exists; invoices at Stripe, as accounting law requires |
Credits: each batch (amount, origin, expiry) and each spend, with its amount, date and a reason that names the feature or the model paid for (for example chat:claude-opus-5.5, confessional, debate:contract, research:…, image:…, media:…). This log therefore shows on which dates you paid for a Confessional session, with nothing of what was said in it | Keeping your balance right, refunding a failed creation | As long as the account exists |
| Usage counters: the kind of action (message, image, search…) and the time, tied to your account; for a visitor without an account, to a random trial id and to a fingerprint of their IP address computed with a secret key (for an IPv6 address: of its whole /64 network, the block one connection can rotate through, not of the single address); for a free account, images, read-aloud and dictation are also counted against that fingerprint, in a separate counter that does not carry the account id (free accounts on one connection share a limit) | Limits over a rolling 24 hours, and the 30-day calendar in “My subscription” | Account: kept 31 days (numbers only, never content), then erased every hour. Visitor without an account: erased every hour past 48 hours. The last minute’s, which limit bursts of requests, after one hour |
| Cost of your included usage: an amount in dollars, a kind (chat, image, voice…) and the time, tied to your account or, for a visitor without one, to their trial id or to the fingerprint of their IP address | Each plan’s daily cost ceiling | Account: erased every hour past 35 days. Visitor without an account: past 48 hours |
| Long creations (video, music, sound effects): the model, status, dates, reserved credits, the provider’s task number and, for a video, the fact that it starts from an imported image | Following the generation and paying for it once | As long as the account exists, with no description and no file on our side; the task number lets the provider find the description it received, for as long as it keeps it |
| Share links: the encrypted text (unreadable to us), its size, its creation and expiry dates, the account that made it | So that whoever has the link can read it | Until the expiry you chose (1, 7 or 30 days) or until you delete it, then erased within the hour |
| Backup: one file encrypted with your passphrase, its size and date | Getting your data back on another device | Until you delete or replace it |
| Encrypted sync: each encrypted item (unreadable to us) with its opaque id, its version, its size rounded to 256 bytes, its time and the device that wrote it; the data key wrapped by your passkey, your recovery key and for each approved device; the space used | Getting your data on your other devices | Until you turn sync off or delete the account; a deleted item leaves a trace without content for 180 days |
| Companions’ spontaneous messages: for each companion, an opaque random id (never which character it is), the frequency you chose, the next time, your time zone and quiet hours, the day of the last notification and whether one is waiting; its name only if you allowed it in the notification. Never a word of a conversation: the message is written on your device when you open the app | Sending a notification without content (“NeverNo”, “Lena is thinking of you” or “A message is waiting for you”) | Until you turn it off for that companion or for the account, start the relationship over, or delete the account |
| API keys: their name, first 12 characters and a SHA-256 fingerprint (never the key itself), the date of last use | Recognizing your API calls | As long as the account exists (a revoked key keeps its revocation date) |
| Votes on replies: counters per day, model, vote and reason | Tuning the Auto mode | Without limit, but with no account, no id and no text: nothing ties them to you |
| Admin log: each action an administrator takes on an account (credits added, suspension…) and some automatic actions (a subscription that reached its end, an order paid in crypto with the declared country and the country of the connection, a sync reset, the purge of an inactive account) | Oversight and security | Kept, even after the account is deleted, without its id; no maximum duration is set yet |
| Usage statistics: event names from a fixed list, a page template, the referrer’s domain, campaign tags, country, kind of device, language, a fingerprint of the day (its key erased every night); for an account, its sign-up day, origin, first payment and totals of revenue and cost | Knowing what to improve, measuring sign-ups and margin | Raw events 90 days, then anonymous daily totals only; the account part until you turn it off or delete the account |
| Inactivity notice: the account id, the date the notice email was sent and the planned deletion date, for a free account unused for three years | Keeping the promise of the privacy policy: a warning 30 days before, one deletion through the same steps as “Delete my account”, never twice | Until you sign in again (the notice is dropped) or until the account is deleted |
| Browsers known to the account: the browser’s and system’s name (“Chrome, Windows”), when it was first and last seen, the date of the alert email | Emailing you when a new browser signs in | As long as the account exists (30 browsers at most) |
| Code confirmation of a sensitive action: for the session that asks, a fingerprint of the 6-digit code, the number of tries and of sends, the time of the last send and the end of the confirmation window | Checking it is you before signing your other sessions out or turning the sign-in alerts off | The code: 10 minutes; the row, without a code: until a later code request more than 24 hours after, or until the account is deleted |
| Trials of paid features: a counter per account and per IP address fingerprint, per feature and per month (or once only, for trials given a single time); for the missions trial, its date | Offering each trial once, without an account farm multiplying it | IP address fingerprint: the current month, erased on the first night of the next one. Account: monthly counters kept 3 months at most; trials given a single time (Claude Opus answers, Confessional, video, agents, missions…): as long as the account exists; everything is erased with the account |
| Orders paid in crypto: the plan, price, status, dates, declared country, country of the connection, VAT and the order number at CoinGate | Opening the plan you paid for, and keeping the accounting and VAT records the law requires | A paid order: 10 years, the period the law requires, detached from the account when it is deleted (automatic erasure at the end of that period is not in place yet); an unpaid order goes with the account |
| Contract evidence: when confirmations and receipts were sent, the version of the notice shown, and the waiver of the right of withdrawal checked before a purchase | Proving what was agreed to and sent, as consumer law requires | As long as the account exists; those of a paid crypto order stay, without the account |
| Granted plans and credits taken back: a plan granted by the administrator, with a free-text note; credits taken back after a refund or a dispute; automatic corrections of reservations (reason, amounts) | Applying a granted plan, taking back refunded credits, closing a reservation left open | Granted plan: until it ends; credits taken back: as long as the account exists; corrections: 365 days |
| Auto top-up: the last payment error (the start of Stripe’s message) and each attempt (amount, status, invoice number, date) | Never charging twice, stopping after three failures | As long as the account exists |
| Developer subscription: the subscription’s id at Stripe, its status and its renewal date | Applying the developer plan’s rights | As long as the account exists |
| Missions, devices and notifications: for each device, its public keys, name, status and dates; the log of approvals and revocations; your browser’s notification subscription address | Encrypting results for your devices alone, notifying you without content | As long as the device or the subscription exists; a device never approved: 30 days; a revoked device leaves a trace without keys for 90 days; log: 90 days |
| Missions, connectors: the access to each connected service (encrypted with the missions server’s key, which can read it to act) and the date it was last used | Reading or acting in your services when a mission asks for it | Until you disconnect it or delete the account; we then ask the service (Google, Notion, Slack, GitHub) to revoke the authorization |
| Sync, account and keys: the wrapped data key, your passkeys, the approved devices; after you turn sync off or reset it, the date you turned it off, and the date, the device and the count of resets | Opening your data on your devices, and keeping an old device from reopening an erased copy | As long as sync is on; the off and reset markers: as long as the account exists |
| Current agents: for each personal agent you run, a keyed fingerprint of its id (never its name or its sheet), when it became the account’s agent, when it last ran and, if it was replaced, when | Applying the number of agents of your plan | The current agent: as long as the account exists; a replaced agent: 31 days, then erased at the next run |
| Queue for the Confessional’s voice: the account or visitor holding a line or waiting for one, its state, its priority and two timestamps | Staying under the number of simultaneous calls, and serving everyone in turn | For the length of the call or the wait; an abandoned line is removed at the next call, yours or someone else’s |
| Statistics tied to the account: its sign-up day, landing page, referring site, campaign tags, country, kind of device, language, whether it tried before signing up, its first paying day and first plan, and its totals of revenue, cost and credits; or, if you refuse them, only the date of that refusal | Measuring sign-ups and margin, and honoring your refusal | Until you turn them off (they are then erased, only the date of the refusal stays) or delete the account |
Service health: for each server error, the route template (for example /api/chat, never the real address nor its parameters), the HTTP status, the error class and the provider, counted per minute | Seeing a route that breaks, and being alerted | 30 days; no account, no id, no message |
| Provider spend: an amount in dollars per minute, per provider and per kind of action, with no account behind it | Being alerted when our costs spike | 35 days |
| Feature switches and alert log: which feature is paused, by whom (an administrator or the automatic cut-off) and the figures of each alert | Pausing one feature without a deploy, and keeping a trace of it | Switches: as long as the site exists; alerts: 90 days |