LQVDTY ("we," "us") operates a session and execution analytics trading journal. This policy describes exactly what data the app collects, where it's stored, and who else sees it. It's written to match the running codebase, not a generic template. If a data point isn't listed here, we don't collect it.
LQVDTY is in active alpha/beta development. Database schemas, tables, and features change frequently, and your data may be reset, migrated, or wipedwithout advance notice as part of that development. Do not treat this app as durable, long-term storage for records you can't reconstruct from another source. If you want a copy of your data before that happens, or want it deleted, contact us at lqvdty@gmail.com.
Handled by Supabase Auth. Depending on how you sign in:
linkIdentity) rather than creating a new one, so trial data isn't lost.We store a profiles row per account: display name, email, referral source, years trading, selected asset classes, default currency, an onboarding timestamp, and account created/updated timestamps.
A Health View, connecting a Google Health account (e.g. via a Fitbit device), is currently available only to the app owner's own account, not to general users. If it's ever opened up more broadly, this section will be updated first. It's described here anyway so this page stays accurate about everything the app is capable of collecting.
Connecting it is a separate Google OAuth grant from "Continue with Google" sign-in, using its own consent screen and requesting read-only access to sleep, activity/fitness, and health-metrics/measurement scopes. From that, we sync: sleep sessions (including sleep stages), heart rate, heart-rate variability, resting heart rate, respiratory rate, blood oxygen (SpO2), steps, and active minutes. We don't pull calorie, floor-climbed, or heart-rate-zone data even though Google Health can provide them.
From that raw data we compute and store: a daily sleep score and sleep efficiency, a readiness score, and a "fog index." The fog index is explicitly a prediction based on sleep/HRV patterns, not a measurement — there is no sensor that detects cognitive fog. We also compute per-trade heart-rate-response metrics (heart rate before/at entry, peak, at exit, time-to-peak, recovery time, and similar) framed as heart-rate-derived autonomic arousal, never as "stress," since there's no way to rule out confounds like caffeine or physical movement. None of this is a medical or diagnostic measurement; see the Terms of Service for the corresponding disclaimer.
This data is stored in the same Supabase database as the rest of the app, protected by the same row-level security described in section 8. A daily sync runs automatically in addition to any manual sync. Disconnecting the Google Health connection (available in Settings) deletes the stored access/refresh tokens and stops future syncing, but does not itself delete health data already synced from prior runs — email us (section 12) to have that removed.
We use Mixpanel to understand how the app is used during the alpha. Every tracked event includes: the event name, a timestamp, an environment label (dev/preview/production), and a distinct_id: your real account ID once you're signed in, or a randomly generated ID stored in your browser's local storage before that. Once you're identified, your email is attached to your Mixpanel profile and to each event so we can look up a session without cross-referencing a separate table.
The specific events we track:
Mixpanel's ingestion API derives coarse geolocation (e.g. country/city) from the request's IP address at send time; we don't separately log or store your IP address ourselves.
We use Vercel Web Analytics for aggregate pageview/visitor counts. It's cookieless and doesn't collect personal information. It's a separate, coarser signal from the Mixpanel product-event tracking described above.
We don't sell your data. It's shared only with the infrastructure providers that run the app:
Your core account, trading, and analytics data is processed and stored within the EU across all three providers above. Google's OAuth handshake and any broker/exchange or market-data provider you connect to are separate services operating under their own data-location terms, which we don't control.
Every table that stores your trading data or notes is protected by Postgres row-level security scoped to your account. The application queries as you, not as an administrator, so one user's rows are not reachable through another user's session. A small number of specific server routes (account deletion, the demo-mode seeding/graduation flow, broker candle syncing, and public shared-calendar lookups by token) use elevated database access to do something RLS structurally can't. Each is scoped narrowly to the signed-in user's own ID or an unguessable share token, never to arbitrary user-supplied IDs.
You can permanently delete your account from Settings. This deletes your Supabase auth record and cascades to every table that references it: profile, accounts, trades, fills, notes, chart drawings, commitments, broker connections, and any wearable health connection/data are all removed, with nothing left orphaned. Disconnecting a wearable health connection on its own (without deleting the account) stops future syncing but doesn't itself remove previously synced health data — email us for that. You can also email lqvdty@gmail.com to request deletion manually.
You can review and correct your profile details in Settings, disconnect a broker/exchange or wearable health connection at any time, and revoke a shared calendar link at any time. Because this is an alpha product, we don't yet have a self-serve data export tool. Email us if you want a copy of your data.
If what we collect changes, we'll update this page and the "Effective" date above. Material changes will be called out in the app for signed-in users where practical.
Questions, data-access, or deletion requests: lqvdty@gmail.com.