Exactly how Contact Scout is built, what data moves where, and why your IT Director might like it. Oh wait, they don't like anything...
Every request follows this path. No detours, no side channels, no data at rest.
Every layer is locked down. Here's exactly what protects your data.
No persistent background page. Ephemeral service worker with no long-running processes. Minimal permission set.
Contact data is processed in-transit only. Never written to disk, database, or logs on our servers.
Google tokens managed by Chrome (scoped to contacts only). Microsoft refresh tokens encrypted at rest in our database (AES-256-GCM, scoped to Contacts.ReadWrite only).
Unlike Google (where Chrome manages OAuth tokens locally), Microsoft requires server-side refresh tokens. These are encrypted with AES-256-GCM, scoped to Outlook Contacts only, and isolated from Google data via Supabase Row-Level Security. Users can disconnect or trigger emergency revocation at any time.
All traffic over TLS 1.2+. HSTS, X-Content-Type-Options, X-Frame-Options, and strict Referrer-Policy enforced.
Gemini API key stored in Vercel environment variables. Never bundled in the extension or exposed to the client.
Fail-closed quota enforcement (consumed before the AI call, not after). CORS origin restrictions, per-user rate limiting, and SSRF protections on all endpoints.
Zero tracking SDKs, pixel trackers, or fingerprinting. Scoped to activeTab only — no access to other tabs, history, or bookmarks.
The only personal data we store is an email address — for authentication, quotas, and billing. Nothing else.
Billing and quota data isolated per user via Postgres RLS policies.
The complete list. Copy this into your risk assessment.
| Data Type | Collected? | Where Stored |
|---|---|---|
| Email address | Yes | Supabase (auth, quotas, billing) |
| Contact data you extract | No | Ephemeral — passes through, never stored |
| Payment information | No | Handled entirely by Stripe (PCI DSS Level 1) |
| Browsing history | No | Not accessible — activeTab only |
| Other open tabs | No | Not accessible — activeTab only |
| Cookies / session tokens | No | None created — Chrome manages OAuth tokens |
| Microsoft refresh token (Outlook users only) | Yes | Supabase, encrypted with AES-256-GCM, scoped to Contacts.ReadWrite |
| Analytics / tracking | No | Zero tracking SDKs in the extension |
IT teams can reach us directly for security reviews, compliance documentation, or technical deep-dives.
[email protected]