Privacy

Last updated: May 23, 2026

What we encrypt

Your module content, conversation history, extracted facts, project state, and assembled context are encrypted at rest by our database. Zero-knowledge client-side encryption is on the roadmap; until then, data is protected by database-level encryption and strict row-level access controls that scope every row to its owner.

What we see

We collect anonymous, structural product events — counts, types, token counts, latencies, and provider/model names. They never contain your module content, conversation text, fact text, or anything you typed. The complete list:

EventWhat it records
module_createdtype, token_count, has_description
module_updatedtype, token_count, fields_changed (field names only)
module_archivedtype, token_count
briefing_composedmodule_count, total_tokens, types_loaded
context_card_copiedmodule_count, total_tokens
module_touchedtype, days_since_last_referenced
apikey_savedprovider
apikey_testedprovider, ok
conversation_startedprovider, model_id, modules_loaded_count, context_tokens, has_state_block
chat_message_sentprovider, model_id, message_index
chat_message_receivedprovider, model_id, message_index, latency_ms, output_tokens
conversation_resumedprovider, model_id, prior_message_count
relevance_scoredprovider, model_id, input_tokens, output_tokens, latency_ms, modules_count, trimmed
relevance_skippedreason
gap_suggestion_shown / _accepted / _dismissedmatch_count
extraction_runprovider, model_id, token counts, latency_ms, message/module counts, facts_count, proposals_count, state_updates_applied, ok, skip_reason
fact_reviewedaction, edited
proposal_reviewedaction, edited, type
state_auto_updatedtype
onboarding_completed / onboarding_skipped(no properties)
data_exportedmodule_count, conversation_count, fact_count, proposal_count
account_deleted(no properties)
module_tier_changedto_tier
waitlist_joinedsource (landing | settings)
conversation_deletedmessage_count
message_copiedrole
message_editedmessages_truncated
onboarding_demo_startedsource (suggested | custom)
onboarding_message_sentmessage_index
onboarding_wrapped_upmessages_sent, reason
onboarding_modules_createdproposals_count
onboarding_apikey_prompt_shown(no properties)
module_auto_approvedcount
drag_tutorial_shown / drag_tutorial_completed(no properties)
drag_tutorial_dismissedreason (clicked_got_it | abandoned)
project_paired_with_styleaction (picked | created | skipped | removed)
style_suggestion_shown(no properties)
style_suggestion_resolvedaction (added | dismissed)
preload_createdmodule_count, has_provider, has_instructions, has_output_prefs
preload_appliedmodule_count, dropped_count
preload_deleted(no properties)
preload_suggestion_shown / _applied / _dismissedmatch_count
preload_renamed(no properties)
preload_updatedmodule_count
preload_instructions_setnow_has
preload_exported / preload_importedmodule_count
chat_output_saved_as_modulesource (entry point tag, e.g., assistant_message)
starter_preload_appliedstarter_id (public build-time constant)
onboarding_starter_pickedstarter_id (public build-time constant)
preload_output_prefs_setnow_has
share_link_created / share_link_importedmodule_count
prompt_reviewedgrade (sharp/decent/vague), findings_count, modules_count, has_posture, provider, model_id, token counts, latency_ms
mcp_token_created / mcp_token_revoked(no properties)

What we never do

  • Read your module content.
  • Use your data to train AI models.
  • Sell data to third parties.
  • Show ads.
  • Retain data after you delete your account.

What you control

  • Per-module privacy tier. cloud_sync is the default. local_only and open_contribution are reserved schema values and coming in a future release.
  • Full JSON export, available anytime from Settings.
  • Full account deletion — immediate and irreversible, available from Settings.
  • Choice of which AI provider sees your context (bring your own key).

MCP access tokens

If you connect an MCP client (Claude Code, Cursor, Claude Desktop), you create a personal access token. We store only a SHA-256 hash of it — the token itself is shown once and never again, and is never logged. Requests made with a token can read your modules and preloads and create new modules, scoped to your account only. Revoke any token instantly from Settings.

Your API keys

API keys are stored in your browser only. They are never sent to our servers for storage. For built-in chat they are passed through transiently to your chosen AI provider, then discarded. We never see your AI provider billing or usage.

Waitlist

If you join our launch waitlist (from the landing page or from Settings), we store your email address in a separate table not linked to your app account. Deleting your account does not automatically remove you from the waitlist. To be removed, email us at hi@warpspeedtech.com and we'll delete your row.

Cookies and tracking

We use Supabase session cookies for authentication and PostHog analytics cookies (only after you have logged in). There are no third-party advertising trackers.

Contact

Questions about privacy? Email hi@warpspeedtech.com.