Account and authentication data
Examples: Supabase user ID, email address, display name if provided, authentication provider, session metadata, last login signals
Purpose: create accounts, keep sessions secure, support account recovery, and enforce user/admin access
Storage: Supabase Auth and Supabase Postgres. Service-role access is server-only.
Retention: kept while the account is active; removed through in-app deletion unless legally required to retain a minimal request/audit record
App preferences
Examples: favorite team, saved briefings, saved preferences, notification preferences, privacy choices
Purpose: personalize the app and honor user choices
Storage: Supabase Postgres tables protected by RLS and server-side authorization checks
Retention: kept until changed, withdrawn, expired by retention policy, or deleted with the account
Usage, telemetry, and diagnostics
Examples: screens visited, features used, session activity, API health, error metadata, performance signals, request metadata
Purpose: measure reliability, diagnose bugs, prevent abuse, and keep the service secure
Storage: Vercel/Sentry/internal logs only when enabled; payloads must be scrubbed before logging
Retention: short operational window only; no emails, OAuth codes, tokens, or raw provider payloads in logs
Notifications
Examples: push subscription IDs, device push token references, notification opt-in flags
Purpose: send requested alerts and daily briefings
Storage: Supabase and Apple/Google/OneSignal push infrastructure when enabled
Retention: kept only while push is enabled; removed on opt-out, disconnect, or account deletion
AI-generated baseball intelligence
Examples: AI-assisted analysis, AI-generated briefings, summaries, recommendations, explanations, saved output, redacted prompt previews
Purpose: provide explainable baseball insights and improve user-requested recommendations
Storage: Supabase for saved output; transient AI provider requests only after guardrails sanitize inputs
Retention: kept only while useful for the feature; deleted on account deletion or AI history deletion
Fantasy integrations
Examples: provider ID, league/team IDs, read-only roster/standings cache
Purpose: future fantasy decision support after explicit opt-in
Storage: not enabled for broad beta; future provider tokens must be encrypted server-side
Retention: cache expires automatically and is removed on disconnect or account deletion