> ## Documentation Index
> Fetch the complete documentation index at: https://security.tryswell.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Security Overview

> Architecture, authentication, encryption, retention, and compliance posture for Swell, for IT and security reviewers.

**Last updated:** July 24, 2026\
**Contact:** [hello@tryswell.co](mailto:hello@tryswell.co)

<Info>
  Swell is early access. San Gregorio Labs Inc. does not currently hold SOC 2 Type II or ISO 27001. This portal documents how the product works so design-partner IT and security teams can evaluate a pilot.
</Info>

## Start here

<CardGroup cols={3}>
  <Card title="I'm IT / network" icon="network-wired" href="/network">
    Domains to allowlist, SSL inspection, macOS permissions, MDM notes
  </Card>

  <Card title="I'm security" icon="lock" href="/#model-training-and-subprocessors">
    Auth, encryption, retention, AI training posture, vulnerability reporting
  </Card>

  <Card title="I'm legal / privacy" icon="scale-balanced" href="/privacy">
    Privacy Policy, Terms, subprocessors, data rights
  </Card>
</CardGroup>

## Clear in 60 seconds

| Question                                                         | Answer                                                                                                                                                                                                                                                                                                                                                                                                           |
| ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Do AI or STT vendors train on our call transcripts or audio?** | **No**, not for model training. Swell does not train its own models on call content. Deepgram, OpenAI, and Anthropic process data only to provide the service under their standard API/commercial terms and do **not** use it to train their models by default. See [Model training and subprocessors](#model-training-and-subprocessors) for provider-specific retention caveats (abuse-monitoring logs, etc.). |
| Do you store call recordings?                                    | No. Raw audio is not retained by Swell.                                                                                                                                                                                                                                                                                                                                                                          |
| How long are transcripts kept?                                   | 24 hours (default), then auto-purged.                                                                                                                                                                                                                                                                                                                                                                            |
| Where does audio go from the Mac?                                | Only to Swell (`coach.tryswell.co` / `api.tryswell.co`). STT and LLMs run server-side.                                                                                                                                                                                                                                                                                                                           |
| How do users sign in?                                            | Google via WorkOS AuthKit (PKCE; system browser).                                                                                                                                                                                                                                                                                                                                                                |
| SOC 2?                                                           | Not yet. Subprocessors publish their own certifications. Contact us for a DPA.                                                                                                                                                                                                                                                                                                                                   |

## Model training and subprocessors

This is the question most IT and security reviewers ask first. Short answer: **your call content is not used to train Swell's models or our AI vendors' public models** under standard API use.

| Provider                          | Role                         | Trains on your call content? | What to know                                                                                                                                                                                                                                                                                                                                            |
| --------------------------------- | ---------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Swell**                         | Operator                     | **No**                       | We do not use call transcripts or audio to train Swell models.                                                                                                                                                                                                                                                                                          |
| **Deepgram**                      | Speech-to-text               | **No** (default)             | Audio and transcripts are processed to return transcription only. Deepgram does not use customer content to train base models unless a customer explicitly opts into model-improvement programs ([Deepgram trust & privacy](https://developers.deepgram.com/trust-security/data-privacy-compliance)).                                                   |
| **OpenAI**                        | Ear (Realtime coaching)      | **No**                       | OpenAI API data, including Realtime, is not used to train OpenAI models ([OpenAI data controls](https://developers.openai.com/api/docs/guides/your-data)). On Swell's standard account, OpenAI may retain session content in abuse-monitoring logs for up to **30 days**; `tracing: null` in our code excludes sessions from the Traces dashboard only. |
| **Vercel AI Gateway → Anthropic** | Brain (coaching suggestions) | **No**                       | Anthropic commercial/API terms prohibit training on customer content ([Anthropic commercial terms](https://www.anthropic.com/legal/commercial-terms)). Swell sets `zeroDataRetention: true` on every Brain request.                                                                                                                                     |

<Note>
  **Training vs. retention:** "Not used for training" does not mean "never stored." Some providers retain API inputs briefly for abuse monitoring or service delivery. Swell's application retention for transcripts is **24 hours**, then purge. Details: [Privacy Policy §2](/privacy#ai-processing) and [Subprocessors](/subprocessors).
</Note>

## Product summary

Swell is a native macOS application that provides real-time coaching during sales discovery calls. During an active coaching session, the app:

1. Captures the user's microphone and system audio (meeting audio from Zoom, Google Meet, etc.) with explicit user permission
2. Streams audio to Swell's coaching relay over an authenticated WebSocket
3. Receives AI-generated coaching suggestions (flash prompts and instruction cards) during the call

The relay transcribes speech server-side and runs coaching models; the Mac app is a thin capture client and does not connect directly to speech-to-text or LLM providers. The Mac app does not call Convex directly; only Swell's API and coaching relay do.

Swell is designed for individual account executives evaluating the product on company-managed Macs. The Service is currently offered as an early access release.

**Operator:** San Gregorio Labs Inc.

## Architecture and data flow

**Mac App (Swell)**

* Mic and system audio (local; macOS permissions)
* `wss://coach.tryswell.co`: real-time coaching (authenticated WebSocket; streams split mic/system PCM upstream, receives coaching events downstream)
* `https://api.tryswell.co`: auth, profile, session APIs, app updates

**Swell Backend**

* Vercel (`api.tryswell.co`): REST API, WorkOS auth proxy, transcript purge cron, Sparkle appcast
* Railway (`coach.tryswell.co`): WebSocket coaching relay for audio ingress, speech-to-text, Ear (flash), Brain (suggestions), and session finalize
* Convex: user profiles and session storage (accessed only by Swell servers, not the Mac)

**AI subprocessors (server-side only; not invoked directly from the Mac)**

* Deepgram: speech-to-text (invoked from coach-relay)
* OpenAI: real-time coaching trigger ("Ear")
* Vercel AI Gateway: LLM request routing for Brain suggestions (coach-relay → Gateway → Anthropic)
* Anthropic: coaching suggestion generation ("Brain")

**Key points for reviewers:**

* **Call content is not used to train Swell's or our AI vendors' models** under standard API use; see [Model training and subprocessors](#model-training-and-subprocessors).
* Raw audio is not stored by Swell. Audio is streamed for real-time transcription and coaching only.
* Transcript text and coaching metadata are stored temporarily (default 24 hours), then automatically purged.
* Authentication tokens are stored in the macOS Keychain on the user's device.
* The Mac does not hold Deepgram or LLM API keys; coaching infrastructure runs on Swell servers.

For firewall allowlists, see [IT Network Requirements](/network).

## macOS permissions

| Permission             | Why required                                        |
| ---------------------- | --------------------------------------------------- |
| Microphone             | Capture the account executive's speech for coaching |
| System Audio Recording | Capture meeting and prospect audio (macOS 14.2+)    |

Permissions are requested during onboarding. The app cannot capture audio without explicit user consent.

**Distribution note:** App Sandbox is disabled, which is required for system audio capture. Swell is distributed as a notarized DMG outside the Mac App Store, signed with an Apple Developer ID certificate.

**Minimum OS:** macOS 15.0

## Authentication and access control

| Control                  | Implementation                                                                                        |
| ------------------------ | ----------------------------------------------------------------------------------------------------- |
| Identity                 | WorkOS AuthKit (Google OAuth)                                                                         |
| OAuth flow               | PKCE; authorization in the user's default system browser                                              |
| Terms acceptance         | Sign-in screen displays Terms of Service and Privacy Policy links before authentication               |
| Session tokens           | Stored in macOS Keychain (`kSecAttrAccessibleWhenUnlockedThisDeviceOnly`)                             |
| API access               | WorkOS JWT required on protected REST endpoints and coaching WebSocket                                |
| Convex reads             | User-scoped queries validate the WorkOS JWT; `userId` is derived from the token, not caller arguments |
| Convex writes            | Server-only mutations gated by per-service sync secrets (`web`, `relay`, `cron` scopes)               |
| Third-party AI keys      | Server-side only on Railway and Vercel; never embedded in the Mac app                                 |
| Rate limiting            | Upstash Redis on auth and LLM-cost paths; deployed environments fail closed if Redis is unavailable   |
| WebSocket abuse controls | Per-connection message and bandwidth limits on the coaching relay                                     |

### Internal access to your data

Swell is an early-stage company. Production systems (Convex database, Vercel API, Railway coach-relay) are accessible only to San Gregorio Labs engineering operators who hold dashboard credentials for those platforms; today, the founding engineering team. We do not yet operate a formal least-privilege access program or a separate production-support role.

Customer call content in Convex is accessed only as needed for support, debugging, or legal compliance, not for model training. Application code enforces user-scoped database reads (WorkOS JWT) and server-only writes (per-service sync secrets); dashboard access is a separate, human-controlled layer.

## Encryption

| Layer         | Method                                                                                                     |
| ------------- | ---------------------------------------------------------------------------------------------------------- |
| In transit    | TLS 1.2+ on all client and server connections                                                              |
| At rest       | Convex and cloud provider-managed encryption                                                               |
| Local secrets | macOS Keychain for auth tokens                                                                             |
| API hardening | HSTS, `X-Frame-Options: DENY`, `X-Content-Type-Options: nosniff`, and related headers on `api.tryswell.co` |

**TLS certificate pinning:** Not used. Swell relies on the macOS system trust store so the app works on corporate-managed Macs with SSL/TLS inspection (Zscaler, Netskope, etc.).

## Data retention

| Data type                                                         | Retention                                                                                                                                                                                                                                                                                                    |
| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Raw audio                                                         | Not retained by Swell                                                                                                                                                                                                                                                                                        |
| Call transcripts and coaching suggestions (live application data) | 24 hours (default), then automatically purged via hourly scheduled job                                                                                                                                                                                                                                       |
| Stale abandoned sessions (never finalized)                        | Purged on the same schedule as finalized transcripts                                                                                                                                                                                                                                                         |
| Convex platform backups                                           | **Not enabled** on the production deployment. Manual backups, if taken, would follow Convex platform defaults (up to 7 days for manual/daily; up to 14 days for weekly; see [Convex backup docs](https://docs.convex.dev/database/backup-restore)). Application purge runs independently on live table data. |
| Vercel runtime logs (API)                                         | **1 day** on Pro plan ([Vercel runtime log retention](https://vercel.com/docs/logs/runtime)). Production logging avoids transcript text, tokens, and full user identifiers.                                                                                                                                  |
| Railway runtime logs (coach-relay)                                | **7 days** on Hobby plan ([Railway log retention](https://docs.railway.com/observability/logs)). Production logging avoids transcript text, tokens, and full user identifiers.                                                                                                                               |
| Account information (email, user ID)                              | Until account deletion is requested                                                                                                                                                                                                                                                                          |
| Optional sales framework preferences                              | Until user deletes or account is closed                                                                                                                                                                                                                                                                      |
| Crash and error diagnostics (Sentry)                              | Mac app, web API, and coach-relay; default PII collection disabled                                                                                                                                                                                                                                           |
| Server logs                                                       | Operational retention per hosting provider defaults; production logs avoid transcript text, tokens, and full user identifiers                                                                                                                                                                                |

Transcript retention is configurable server-side (default 24 hours via `TRANSCRIPT_RETENTION_HOURS`).

## Application distribution and updates

| Item           | Detail                                                 |
| -------------- | ------------------------------------------------------ |
| Package format | Notarized DMG                                          |
| Code signing   | Apple Developer ID Application                         |
| Updates        | Sparkle framework; appcast hosted at `api.tryswell.co` |
| Runtime        | Hardened Runtime enabled                               |

## Subprocessors

Swell uses third-party services to operate the product. A full list with purposes and security links is in our [Subprocessor list](/subprocessors).

## Certifications and compliance posture

San Gregorio Labs Inc. is an early-stage company and does not currently hold SOC 2 Type II or ISO 27001 certification.

We select subprocessors with established security programs (e.g. Deepgram SOC 2, WorkOS security documentation). Enterprise customers requiring a DPA or security questionnaire should contact [hello@tryswell.co](mailto:hello@tryswell.co).

## Privacy and terms

* [Privacy Policy](/privacy)
* [Terms of Service](/terms)

## Reporting security issues

See [Contact](/contact) for vulnerability reporting and privacy request SLAs.

## Document history

| Date          | Change                                                                                                                                                                                                                                         |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| July 24, 2026 | Model training and subprocessors section on overview; founder-confirmed retention; Brain/Ear AI posture; internal access statement.                                                                                                            |
| July 14, 2026 | Auth: Google OAuth only; default-browser sign-in; terms acceptance on login; Convex JWT-bound reads and per-service sync secrets; Upstash fail-closed rate limiting; API security headers; server-side Sentry; split mic/system audio upstream |
| July 6, 2026  | Updated for relay-centric architecture: Mac streams audio to coach-relay; STT and LLM processing server-side only; `coach.tryswell.co` hostname                                                                                                |
| June 15, 2026 | Initial public security overview                                                                                                                                                                                                               |
