Legal
Privacy Policy
01Introduction
gameTheory Solutions Pte Ltd (“we”, “us”, “our”) is committed to protecting your privacy. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you use our products and services.
Products Covered
This policy applies to all gameTheory products:
| Product | Description |
|---|---|
| Rosie | AI-powered note capture and GTD triage assistant |
| Matrix | Course management and learning platform (LMS) |
| Crucible | Leadership simulation and coaching platform |
| Synapse | AI-powered structured ideation and brainstorming platform |
| Axon | Shared platform services (authentication, AI routing, analytics) |
All products share a common platform layer (Axon) for authentication, AI processing, and analytics. This policy covers data practices across all products collectively, with product-specific details noted where relevant.
02Information We Collect
2.1 Account & Profile Information
When you create an account, we collect:
| Data | Required? | Source |
|---|---|---|
| Email address | Yes | Provided at signup |
| Password | Yes | Managed by Supabase Auth (we never see raw passwords) |
| Display name | Yes | Provided by you or derived from email |
| Avatar image | No | Uploaded by you |
| Bio | No | Provided by you |
| LinkedIn URL | No | Provided by you |
Product-specific profile fields:
- Crucible: Seniority level (new-manager, mid-level, senior)
- Rosie: None beyond shared fields
2.2 Organization & Team Data
If you belong to an organization:
- Organization name, logo, industry
- Your membership role (member or org_admin)
- Organization profile text and default constraints (Synapse)
Users without an organization are “freelancers” — this is a first-class status, not an error.
2.3 User Content
We store content you create within our products. This varies by product:
Rosie
- Captures: Notes from multiple sources (text, email, calendar, health data, monitoring alerts)
- Triage results: GTD classification (inbox, next action, project, waiting, someday, reference) with AI reasoning
- Conversations: Chat messages with Rosie (text, audio transcripts, files)
- Threads: Processing lifecycle records linking captures to actions
- Email contacts: Cached contacts from connected Gmail account
- Voice recordings: Audio captured via Notetaker (temporary — cleared after transcription)
- Transcripts: Speech-to-text output from voice recordings
Matrix
- Course content: Programs, courses, modules, assets (slides, documents, videos, images)
- Enrollment data: Learner enrollments, attendance records
- Submissions: Assignment submissions (files, links, text)
- Session data: Scheduled Zoom meetings, session artifacts (recordings, transcripts, notes)
- Course completions: Instructor-awarded completion records
- Voice recordings: Audio captured via Notetaker (temporary — cleared after transcription)
- Transcripts: Speech-to-text output
Crucible
- Session transcripts: Full conversation transcripts from AI coaching sessions
- Coaching debriefs: AI-generated performance feedback
- Coaching nudges: In-session coaching with emotion/signal metadata
- Multi-conversation cases: Handoff summaries between case conversations
- Company interviews: Full interview transcripts with AI interviewer
- Company profiles: Structured intelligence extracted from interviews
- Generated scenarios: AI-generated training scenarios
- Performance data: Competency scores/levels, assessment answers, reflection text
- Voice recordings: Audio captured via Notetaker (temporary — cleared after transcription)
- Transcripts: Speech-to-text output
Synapse
- Sessions: Session title, topic, context, configuration, tags
- Rounds: Human direction/input per iteration, technique selection, AI-generated summaries
- Agent conversations: AI-generated text per agent role, user messages within agent conversation
- Artifacts: Ideas, lenses, conditions, questions (knowledge graph nodes) with user notes
- Constraints: User-defined design boundaries
- Conclusions: AI-generated session summaries
- Document uploads: PDF, text, Markdown, JSON, DOCX, CSV, HTML, RTF (max 50 MB per file)
- Voice recordings: Audio captured via Notetaker (temporary — cleared after transcription)
- Transcripts: Speech-to-text output
2.4 OAuth Connections & Encrypted Credentials
When you connect external accounts:
| Provider | Products | Data Stored | Encryption |
|---|---|---|---|
| Google (Gmail, Calendar, Contacts) | Rosie, Crucible | OAuth access/refresh tokens, provider user ID, granted scopes | AES-256-GCM encrypted |
| Rosie | OAuth access/refresh tokens, granted scopes | AES-256-GCM encrypted |
2.5 BYOK API Keys (Bring Your Own Key)
If you supply your own LLM API key:
- Provider name (e.g., anthropic, openai, gemini, groq, huggingface, openrouter)
- Encrypted API key (AES-256-GCM ciphertext)
- Non-reversible key hint for UI display (e.g., sk-...abc)
Master encryption key is stored in environment variables, never in the database.
2.6 Analytics & Usage Data
We operate privacy-first, first-party analytics. No third-party analytics services are used.
What we collect:
- Page paths visited
- Referring URLs
- Device type and browser (parsed, not raw User-Agent)
- Country-level location (no precise geolocation)
- Product-specific events
What we do NOT collect:
- Raw IP addresses (only a hashed prefix is used for visitor identification)
- Raw User-Agent strings
- Cookie-based tracking identifiers
- Third-party tracking pixels or beacons
Privacy-preserving visitor identification: Visitor IDs are computed using HMAC-SHA256 of the IP/24 prefix (first 3 octets) combined with a daily-rotating salt. Raw IP addresses are never stored, the hash cannot be reversed, and the salt rotates daily preventing long-term tracking.
2.7 Operational Logs
For system reliability and debugging:
- LLM usage logs: Token counts per model, session IDs (no user content)
- LLM failure logs: Error messages, models tried, recovery info (may contain up to 2KB of truncated LLM output)
03How We Use Your Information
| Purpose | Legal Basis | Data Used |
|---|---|---|
| Provide our services | Contract performance | Account data, user content, OAuth tokens |
| AI processing | Contract performance | User content sent to LLMs for triage, coaching, ideation, transcription |
| Authenticate users | Contract performance | Email, password (via Supabase Auth) |
| Enable integrations | Consent | OAuth tokens for Google, LinkedIn |
| Analytics | Legitimate interest | Privacy-first engagement events |
| System reliability | Legitimate interest | LLM usage/failure logs |
| Organizational features | Contract performance | Org membership, org profiles, org constraints |
| Security | Legitimate interest | Encrypted credentials, rate limiting |
04AI Processing & Large Language Models
All gameTheory products use AI extensively. This section explains how your data is processed by large language models.
4.1 LLM Providers
We route AI requests through a self-hosted LiteLLM proxy to the following providers:
| Provider | Models | Cost Tier |
|---|---|---|
| Anthropic | Claude Sonnet 5, Claude Haiku 4 | Paid |
| OpenAI | GPT-4o | Paid |
| Gemini 2.5 Flash | Free | |
| Groq | Llama 3.3 70B | Free |
| Hugging Face | Llama 3.1 8B | Free |
| OpenRouter | Llama 3.3 70B, Gemma 4 31B, Nemotron, Qwen3 | Free |
| Ollama | Llama 3.2 | Local (no data leaves infrastructure) |
4.2 What Data Is Sent to LLMs
| Product | Data Included in Prompts |
|---|---|
| Rosie | Captures, conversation messages, triage context, email content, intent classification context |
| Matrix | Course content, assignment context, notetaker transcripts |
| Crucible | Full session transcripts, scenario/character data, company profiles, competency frameworks, learner name/seniority, coaching nudge context |
| Synapse | Session topic/context, user constraints, human direction per round, uploaded document text, prior artifacts, organization profile/constraints |
Data NOT sent to LLMs:
- User email addresses
- User bio or LinkedIn URL
- User avatar images
- OAuth tokens or API keys
- Raw audio (sent to Deepgram for transcription, not to LLMs)
4.3 BYOK (Bring Your Own Key)
If you supply your own API key, your AI requests are routed to your own provider account. We do not have access to your key (it is encrypted and decrypted only in memory during request routing).
4.4 AI-Generated Content
| Product | AI Artifacts Stored |
|---|---|
| Rosie | Triage classifications, intent detection results, chat responses |
| Matrix | Not applicable (AI features dormant) |
| Crucible | Coaching debriefs, nudges, handoff summaries, company profiles, generated scenarios, competency scores |
| Synapse | Agent conversation turns, extracted artifacts, round summaries, conclusion outputs, constraint violation detections |
Watermarking: LLM outputs are watermarked using invisible zero-width Unicode characters containing session ID and timestamp. This does not affect readability but allows provenance tracking.
4.5 Voice Processing
| Step | Service | Data | Retention |
|---|---|---|---|
| 1. Audio capture | Client-side | Raw audio | Temporary (in-browser) |
| 2. Upload | gameTheory server | Audio blob | Temporary (database BYTEA column) |
| 3. Transcription | Deepgram (nova-3) | Audio streaming via WebSocket | Transcript stored; audio cleared |
| 4. Voice synthesis (optional) | ElevenLabs (turbo v2.5) | Text for playback | Synthesized audio returned to client |
Audio recordings are cleared from our database after transcription completes. Only transcripts are persisted.
05Third-Party Service Providers
5.1 Infrastructure
| Provider | Service | Data Processed | Location |
|---|---|---|---|
| Supabase | Database (PostgreSQL 17), Auth, Storage, Edge Functions, Realtime | All application data, auth tokens, file uploads | Supabase-managed cloud |
| Vercel | Application hosting, deployment, serverless functions | Application code, request metadata | Global edge network |
| Railway | LiteLLM proxy deployment | LLM API requests with prompts | Railway-managed |
| Upstash | Redis (rate limiting, optional) | Rate-limit counters (UUID + endpoint key) | Upstash-managed |
5.2 AI & Voice Services
| Provider | Service | Data Processed |
|---|---|---|
| Anthropic | LLM (via LiteLLM) | Prompts containing user content |
| OpenAI | LLM (via LiteLLM) | Prompts containing user content |
| LLM (via LiteLLM), OAuth | Prompts; OAuth tokens | |
| Groq | LLM (via LiteLLM) | Prompts containing user content |
| Hugging Face | LLM (via LiteLLM) | Prompts containing user content |
| OpenRouter | LLM (via LiteLLM) | Prompts containing user content |
| Deepgram | Speech-to-text | Audio recordings for transcription |
| ElevenLabs | Text-to-speech | Text for voice synthesis |
5.3 OAuth Providers (User-Initiated)
| Provider | Products | Data Accessed |
|---|---|---|
| Rosie, Crucible | Per-scoped OAuth access (email, calendar events, contacts) | |
| Rosie | Post creation, badge creation |
5.4 Product-Specific Integrations
| Provider | Product | Purpose | Data Exchanged |
|---|---|---|---|
| Zoom | Matrix | Video conferencing for course sessions | Meeting metadata, participant reports |
| Garmin | Rosie | Health data ingest (planned) | Health events |
| Ottai | Rosie | Diabetes/health data ingest (planned) | Health events |
| UptimeRobot | Rosie | Service monitoring alerts | Alert webhooks |
5.5 Services We Do NOT Use
- No third-party analytics: No PostHog, Mixpanel, Google Analytics, Segment, Amplitude, Plausible
- No advertising or tracking: No ad networks, no tracking pixels, no remarketing
- No payment processors: No Stripe, Paddle, PayPal
- No monitoring/APM: No Sentry, Datadog, LogRocket, New Relic
- No email marketing: No SendGrid, Resend, Postmark, Mailgun (beyond Supabase's built-in SMTP for auth emails)
06Cross-Product Data Sharing
All gameTheory products share a common platform layer (Axon). The following data is shared across products.
6.1 Shared Data (All Products)
| Data | Shared Via | Purpose |
|---|---|---|
| User identity (email, display name, role) | Shared users table | Single sign-on across products |
| Organization membership | Shared organizations table | Cross-product org federation |
| Usage tier (free/paid/byok) | Shared axon_user_tiers table | Consistent usage limits |
| Daily session counts | Shared axon_usage_counters table | Usage tracking |
| BYOK API keys (encrypted) | Shared axon_user_keys table | Reuse your keys across products |
| Analytics events | Shared engagement_events table | Unified analytics |
6.2 Product-Specific Data (NOT Shared)
Each product's content remains private to that product:
| Product | Private Data |
|---|---|
| Rosie | Captures, triage results, conversations, threads, email contacts, pending actions |
| Matrix | Courses, enrollments, submissions, attendance, session artifacts |
| Crucible | Session transcripts, debriefs, company profiles, generated scenarios, competency scores |
| Synapse | Sessions, rounds, artifacts, constraints, conclusions, uploaded documents |
6.3 Cross-Product Event Dispatch
Products can send events to each other via a persistent outbox pattern:
| Flow | Data |
|---|---|
| Rosie → Synapse | Delegate dispatch: trigger brainstorm rounds (no session content shared) |
| Rosie → Matrix | Delegate dispatch: send to LMS assistant (no course content shared) |
| Any product → others | Notetaker transcript finalized events (transcript text only) |
07Data Storage & Security
7.1 Storage Locations
| Data Type | Storage | Encryption |
|---|---|---|
| Application data | Supabase PostgreSQL | Supabase infrastructure encryption at rest |
| File uploads | Supabase Storage (S3-compatible) | Supabase infrastructure encryption |
| Avatar images | Supabase Storage (avatars bucket, public read) | Supabase infrastructure encryption |
| Audio recordings | PostgreSQL BYTEA column (temporary) | Cleared after transcription |
| OAuth tokens | PostgreSQL (encrypted columns) | AES-256-GCM application-level encryption |
| BYOK API keys | PostgreSQL (encrypted columns) | AES-256-GCM application-level encryption |
| Passwords | Supabase Auth (internal) | bcrypt hashing |
7.2 Encryption Details
| Data | Encryption Method | Key Management |
|---|---|---|
| OAuth access/refresh tokens | AES-256-GCM | Master key in environment variable (never in database) |
| BYOK API keys | AES-256-GCM | Master key in environment variable (never in database) |
| Ciphertext format | v1.<iv>.<ct+tag> | Versioned for future key rotation |
7.3 Access Control
- Row-Level Security (RLS): All data tables enforce RLS — users can only access their own data
- Owner-only access: User data is scoped to auth.uid() — only the data owner can read/write
- Admin access: Platform admins can read (not modify) user data for operational support
- Service role: Backend processes use a service role with explicit, audited access
7.4 Security Measures
- TLS/HTTPS for all data in transit
- bcrypt password hashing (managed by Supabase Auth)
- JWT session tokens (1-hour expiry, refresh token rotation)
- AES-256-GCM encryption for sensitive credentials
- HMAC-authenticated server-to-server webhooks
- Rate limiting (Upstash Redis in production)
08Cookies & Tracking
8.1 Cookies We Use
| Cookie | Provider | Purpose | Lifetime |
|---|---|---|---|
| Supabase auth session cookies | Supabase | JWT session management | 1 hour (refresh token rotation) |
| axon_invite_token | gameTheory | Temporary invite token during OAuth flow | Cleared after redemption |
8.2 What We Do NOT Use
- No third-party cookies
- No tracking cookies
- No advertising cookies
- No analytics cookies
- No tracking pixels or beacons
- No raw IP address storage (only hashed prefixes for privacy-first analytics)
09Data Retention
9.1 Account Data
| Data | Retention |
|---|---|
| Account (email, profile) | Retained while account is active |
| User content | Retained while account exists; cascade delete on account removal |
| OAuth tokens | Deleted on disconnect or account removal |
| BYOK API keys | Deleted on account removal |
| Organization membership | Deleted on membership removal or account removal |
9.2 Operational Data
| Data | Retention |
|---|---|
| Audio recordings | Cleared after transcription completes |
| Analytics events | Retained in-database (aggregate, privacy-first) |
| LLM usage logs | Retained per-session (operational) |
| LLM failure logs | Retained per-session (operational) |
| Invitation tokens | Retained until redeemed or expired (7 days) |
9.3 Data Deletion
You can request deletion of your account and all associated data by contacting us. Upon deletion:
- All user content is cascade-deleted from the database
- OAuth tokens are revoked and deleted
- BYOK API keys are deleted
- Avatar images are removed from storage
- Analytics events retain only the hashed visitor ID (no longer linked to your account)
10Your Rights
Depending on your jurisdiction, you may have the following rights:
| Right | Description |
|---|---|
| Access | Request a copy of your personal data |
| Rectification | Request correction of inaccurate data |
| Erasure | Request deletion of your account and data (“right to be forgotten”) |
| Portability | Request your data in a machine-readable format |
| Restriction | Request limitation of processing |
| Objection | Object to processing based on legitimate interests |
| Withdraw consent | Withdraw consent for OAuth connections or BYOK keys |
To exercise these rights, contact us at the address below.
Data Portability
You can export your data at any time:
- Rosie: Captures, triage results, conversations are accessible via API
- Matrix: Course content, submissions, attendance records are accessible via the application
- Crucible: Session transcripts, debriefs, company profiles are accessible via the application
- Synapse: Sessions, artifacts, constraints, conclusions are accessible via the application
11Children's Privacy
Our products are not directed to children under 16. We do not knowingly collect personal information from children. If you believe we have collected data from a child, please contact us.
12International Data Transfers
Our service providers may process data in jurisdictions outside your country. We ensure appropriate safeguards are in place:
- Supabase: Data stored in Supabase-managed infrastructure (region determined by project settings)
- Vercel: Global edge network (processing occurs at edge locations worldwide)
- LLM providers: Anthropic (US), OpenAI (US), Google (US), Groq (US), Hugging Face (US), OpenRouter (US)
- Deepgram: US-based
- ElevenLabs: US-based
Where transfers occur to countries without adequate data protection laws, we rely on standard contractual clauses or your explicit consent.
13Changes to This Policy
We may update this Privacy Policy from time to time. We will notify you of material changes by:
- Posting the updated policy on our website
- Updating the “Last updated” date at the top
Your continued use of our products after changes are posted constitutes acceptance of the updated policy.
14Contact
gameTheory Solutions Pte Ltd
For privacy inquiries or to exercise your rights:
- Email: privacy@gametheory.school
- Address: Registered office address
Appendix A: Complete Data Inventory by Product
Rosie — Data Summary
| Category | Data Elements |
|---|---|
| Account | Email, display name, avatar, bio, LinkedIn URL |
| Captures | Notes from 7 sources (UI, email, calendar, health, uptime, synapse, other), text, audio, files |
| Triage | GTD classification, confidence scores, LLM reasoning |
| Conversations | Chat messages with Rosie (text, audio, files) |
| Threads | Processing lifecycle (initiated → clarified → refined → actioned → closed) |
| Email contacts | Cached Gmail contacts for intent resolution |
| OAuth | Google (Gmail, Calendar, Contacts), LinkedIn (encrypted tokens) |
| Integrations | Deepgram, OpenRouter, Garmin/Ottai (planned), UptimeRobot |
Matrix — Data Summary
| Category | Data Elements |
|---|---|
| Account | Email, display name, avatar, bio, LinkedIn URL |
| Course content | Programs, courses, modules, assets (slides, docs, video, images) |
| Enrollments | Learner enrollments, attendance, completions |
| Submissions | Assignment submissions (files, links, text) |
| Sessions | Zoom meetings, artifacts (recordings, transcripts, notes) |
| OAuth | Google (encrypted tokens) |
| Integrations | Zoom, Deepgram, ElevenLabs, LiteLLM |
Crucible — Data Summary
| Category | Data Elements |
|---|---|
| Account | Email, display name, avatar, bio, LinkedIn URL, seniority |
| Sessions | Full AI coaching transcripts, debriefs, nudges |
| Cases | Multi-conversation cases with handoff summaries |
| Company interviews | Full interview transcripts, extracted company profiles |
| Generated scenarios | AI-generated training scenarios |
| Performance | Competency scores/levels, assessment answers, reflection text |
| OAuth | Google (encrypted tokens) |
| Integrations | Deepgram, ElevenLabs, LiteLLM, Upstash Redis |
Synapse — Data Summary
| Category | Data Elements |
|---|---|
| Account | Email, display name, avatar, bio, LinkedIn URL |
| Sessions | Topic, context, configuration, tags, curation state |
| Rounds | Human direction, technique selection, AI summaries, pipeline metadata |
| Agent turns | AI-generated text per role, user messages |
| Artifacts | Ideas, lenses, conditions, questions (knowledge graph), user notes, relationships, lineage |
| Constraints | User-defined boundaries, AI-detected violations |
| Conclusions | AI-generated session summaries |
| Documents | Uploaded files (PDF, DOCX, etc.) with extracted text |
| Organization | Org profiles, org-default constraints |
| OAuth | Google (encrypted tokens) |
| Integrations | Deepgram, ElevenLabs, LiteLLM |
Axon — Shared Platform Services
| Category | Data Elements |
|---|---|
| Identity | Email, display name, avatar, bio, LinkedIn URL (shared across products) |
| Organizations | Org name, logo, industry, settings, membership |
| Credentials | BYOK API keys (AES-256-GCM), OAuth tokens (AES-256-GCM) |
| Audio | Voice recordings (temporary — cleared after transcription) |
| Transcripts | Time-coded speech-to-text output |
| Analytics | Privacy-first engagement events (HMAC visitor IDs, no raw IP) |
| LLM usage | Token counts, model, role (operational) |
| LLM failures | Error messages, truncated output (operational) |
| Watermarks | Invisible Unicode in LLM outputs (session ID + timestamp) |
Appendix B: Sub-Processor List
| Sub-Processor | Service | Purpose | Location |
|---|---|---|---|
| Supabase | Database, Auth, Storage, Edge Functions | Primary infrastructure | US (AWS) |
| Vercel | Hosting, deployment | Application delivery | Global edge |
| Railway | LiteLLM proxy | LLM routing | US |
| Anthropic | Claude LLMs | AI processing | US |
| OpenAI | GPT-4o | AI processing | US |
| Gemini, OAuth | AI processing, identity | US | |
| Groq | Llama 3.3 70B | AI processing | US |
| Hugging Face | Llama 3.1 8B | AI processing | US |
| OpenRouter | Multiple models | AI processing (free tier) | US |
| Deepgram | Speech-to-text | Audio transcription | US |
| ElevenLabs | Text-to-speech | Voice synthesis | US |
| Upstash | Redis | Rate limiting (optional) | US |
| Zoom | Video conferencing | Course sessions (Matrix only) | US |
Appendix C: Technical Security Details
Encryption
| Data | Algorithm | Key Management |
|---|---|---|
| OAuth tokens | AES-256-GCM | BYOK_MASTER_KEY env var |
| BYOK API keys | AES-256-GCM | BYOK_MASTER_KEY env var |
| Passwords | bcrypt | Supabase Auth internal |
| Data in transit | TLS 1.2+ | Standard |
| Data at rest (DB) | Supabase infrastructure | Supabase-managed |
Ciphertext Format
All application-level encryption uses versioned ciphertext: v1.<iv>.<ct+tag>
This allows future key rotation without breaking existing encrypted data.
Row-Level Security (RLS)
All data tables enforce PostgreSQL Row-Level Security:
- Users can only access rows where user_id = auth.uid()
- Platform admins have read-only access for operational support
- Service role has explicit, audited access for backend processes
Analytics Privacy
Visitor identification uses HMAC-SHA256:
visitor_id = HMAC-SHA256(IP/24 + daily_salt)
- Only the first 3 octets of the IP address are used (IP/24 prefix)
- Daily salt rotation prevents long-term correlation
- The hash is one-way and cannot be reversed
- No raw IP addresses or User-Agent strings are stored