Your business context. Your decisions.
Review data access and action controls, or get in touch with the team.
Your data and your decisions
Contact the team
Review the draft, then open it in your email app. Nothing is sent from this page.
Data handling, security and policy details
Policy details last updated .
Security at a glance
The one-pager for a security review, every claim below is expanded in this page and true today, not aspirational.
Server-side, opaque random id in an HttpOnly, SameSite=Lax, Secure cookie. Revoke = one row deleted; no token in the browser.
HTTPS everywhere. OAuth tokens encrypted at rest with AES-256-GCM. Database encrypted at rest by the provider.
Every row is keyed to your account or team and every query is scoped to the authenticated session, one tenant can't read another's runs, keys, or brain.
Processed to do the work, encrypted, isolated to your account, never sold, never used to train models. You connect each tool and can revoke it anytime.
Stored only as a SHA-256 hash, scoped, rate-limited per key; every control-plane call is logged.
SOC 2 is on the roadmap, not yet certified. We'll tell you honestly what we can provide today.
The short version
Your roles run on our servers on a schedule. To do the work, they process the data you connect: the CRM records, emails, and calendar you link, plus the context you provide. That data is encrypted, isolated to your account, used only to produce your drafts and reports, never sold, and never used to train models. Everything is draft-first: nothing reaches a person without your approval. Below is exactly how we secure it, who we share data with, and the controls you have.
How your data is handled
Because the work runs on our servers, we process the data a scheduled run needs to produce your drafts and rollups. We are deliberate about what we keep and how it is protected.
- What we process: the tools you connect (CRM records, email, calendar) and the company context you provide, read by a run to research an account and draft the work.
- What the first launch reads, writes and sends: it reads your public website and web search results to draft the brief and the market research; it writes companies and contacts to your workspace and, if you connect Attio, to your CRM; it places drafts in your Gmail when you connect it with draft permission; it sends nothing. Contact enrichment through your own Apollo account runs only when you turn it on.
- What we store: the drafts and reports we generate for you (these contain content, and live in your account until you dismiss them), plus run telemetry that is metadata only (counts, skill names, outcomes, timing, error categories).
- What we never do: we do not sell your data, share it with advertisers, or use it to train models. You connect each tool with your own permission and can revoke it at any time.
- Isolation: every record is keyed to your account or team, and every query is scoped to the authenticated session, so one tenant cannot read another's data.
- Credential custody, your choice: with managed connectors we custody your OAuth token encrypted and revocable; with the self-hosted lane (your own n8n) we never hold your credentials at all, the connectors run on your infrastructure and we only receive the drafts you send back. The self-hosted lane is the enterprise choice when you cannot let a vendor hold a token.
You can export or delete your data at any time (see below), and revoking a connected tool stops any further processing of it.
Security practices
- Encryption in transit and at rest. All traffic is HTTPS. OAuth tokens are encrypted at rest with AES-256-GCM. The database is encrypted at rest by our provider.
- Sessions. Server-side sessions with an opaque, random id in an HttpOnly, SameSite=Lax, Secure cookie. Revoking a session deletes one row, no token lives in the browser.
- API keys. The Sales as Code keys your integrations authenticate with are stored only as a SHA-256 hash, are scoped, and are rate-limited per key. Every control-plane call is logged.
- Your AI provider key. Your scheduled runs happen with no browser open, so the provider key they run on is held on our servers rather than in your browser: encrypted at rest with AES-256-GCM under a key derived from our session secret, never read back to a browser, never logged, and used only to make your own runs. Inference is billed to you by your provider. Replace or delete it at any time from your console's Settings tab, and deleting your account deletes it with everything else.
- Tenant isolation. Every record (runs, entitlements, keys, brain state) is keyed to your account or team, and every control-plane query is scoped to the authenticated session before it reads. One tenant cannot see another tenant's data; team-scoped views are additionally limited to the members of that team.
- Single sign-on (SAML). Teams can route sign-in through their own identity provider with just-in-time provisioning and group-to-role mapping. See /login/sso.
- Audit log. Every admin-relevant action is written to an append-only audit log. You can retrieve your own entries (the actions you took, and the actions taken on your account) as JSON from
/api/me/audit. Entries are never edited in place; they are retained for 18 months and then pruned. A team-scoped view and CSV export for team admins is on the roadmap and is not available today. - You control publishing. Your roles are tool-agnostic and draft-first: by default they draft and stage for your review. They publish automatically only on channels you connect and explicitly enable for automation, and only after a brand-safety check; anything that reaches a person, or any channel where automation is disallowed, is always held for your approval. You set the mode per channel and can revert to draft-only at any time.
- You choose where output goes. Each role's output lands where you pick: an in-app draft queue, your Google Drive, or your own mailbox as a draft. Nothing is sent for you.
Compliance posture & SOC 2 roadmap
We want to be straight with you about where we are. Sales as Code is an actively developed product. We follow the security practices above as a matter of course, but we do not yet hold a SOC 2 or ISO 27001 certification: treat SOC 2 as on the roadmap, not as something we've achieved. We won't imply a certification we don't have. If your procurement process requires a specific certification, a data processing agreement (DPA), a security questionnaire, or a penetration-test summary: the DPA is published and already in force, the questionnaire is answered below, and for anything else contact us and we'll tell you honestly what we can provide today and what's planned.
The security questionnaire, already answered
Rather than ask you to send a spreadsheet, here are the 21 questions a security review asks, answered. Every answer states what is true today. Three of them are no, and they are at the top rather than buried, because those are the ones that end a procurement conversation and you should find them before you spend a week on us.
Do you hold a SOC 2 Type II report?
Is customer data used to train models?
Can the system contact our customers without a human?
Certifications and compliance
- no Do you hold a SOC 2 Type II report?
- No. We do not hold SOC 2 or ISO 27001, and we will not imply a certification we have not earned. If your process requires one, tell us before you buy rather than after. Detail.
- no Do you have a recent third-party penetration test?
- No third-party test has been commissioned. Security review is internal and continuous, and there is a disclosure route for external researchers. Detail.
- yes Will you sign a Data Processing Agreement?
- A DPA is published and forms part of the Terms of Service, so it is already in force for every customer. Email us for a countersigned copy on your paper or ours. Detail.
- yes Do you support GDPR data subject rights?
- Access, export and deletion are self-serve in the product rather than a support request. Transfers outside the EEA and UK rely on Standard Contractual Clauses. Detail.
Data handling
- no Is customer data used to train models?
- No, and it is enforced rather than promised. Inference runs on your own provider key under your contract, and where a request routes through OpenRouter we send its no-data-collection policy, which makes any provider that would retain the prompt ineligible to serve it. Detail.
- n/a Where is customer data stored?
- Primary database in a U.S. region; application servers distributed with U.S. compute. AI inference goes to the provider you chose, under their regions and retention terms, not ours. Detail.
- yes How is one tenant isolated from another?
- Every record is keyed to an account or team and every query is scoped to the authenticated session. One tenant cannot read the runs, keys or stored context of another. Detail.
- yes What is your deletion timeline?
- Deletion is requested in Settings and hard-deletes within 7 days. The admin audit log is retained 18 months and then pruned. Payment records are held by our payment processor under its own statutory obligations. Detail.
- yes Can we export our data if we leave?
- Full JSON export from Settings at any time, with no request and no waiting period. Detail.
- yes Do you publish your subprocessors?
- The full list is published with what each one processes and where. A vendor appears when we send it your data on our own initiative; a tool you connect and direct with your own credential is not a subprocessor of ours. Detail.
Access control and authentication
- yes Do you support SAML single sign-on?
- SAML SSO is available and configured per team by a team owner. Detail.
- no Do you support SCIM directory provisioning?
- No. Membership is managed in Team admin, where an owner invites, removes and changes roles, and every one of those changes is recorded in the audit trail. Detail.
- yes How are sessions handled?
- Server-side sessions with an opaque random id in an HttpOnly, SameSite=Lax, Secure cookie. No token is readable by browser script, and revoking a session deletes one row. Detail.
- yes How are API keys stored?
- Stored only as a SHA-256 hash, scoped, and rate-limited per key. A key is shown once at creation and cannot be recovered afterwards. Detail.
- partial Do you hold our third-party credentials?
- With managed connectors we custody an OAuth token, encrypted with AES-256-GCM and revocable by you at any time. With the self-hosted connector lane we hold nothing: those run on your infrastructure. Detail.
- yes Is there an audit trail of administrative actions?
- Append-only, retained 18 months, covering invites, removals, role changes, seat changes and control-plane API calls. A team owner can read their own entries. Detail.
Operations and outbound risk
- no Can the system contact our customers without a human?
- No. Sending is off by default and every draft waits for an explicit approval. This is a central design constraint of the product rather than a setting an administrator has to find. Detail.
- yes Is data encrypted in transit and at rest?
- TLS in transit. At rest the database is encrypted by the provider, and OAuth tokens and provider keys carry a second layer of AES-256-GCM encryption held by us. Detail.
- partial Do you offer an uptime commitment?
- Enterprise order forms carry a 99.9% standard SLA. Self-serve plans carry no contractual uptime commitment. A public status page reports availability either way. Detail.
- yes What is your breach notification commitment?
- Notification without undue delay after becoming aware, with the detail we hold at the time, per the DPA. Detail.
- yes How do we report a vulnerability?
- Email the address on the trust page. We acknowledge reports and will not pursue researchers acting in good faith. Detail.
Need it on your own form, or a countersigned DPA? Email admin@salesascode.com and quote this page. If your process requires a certification we do not hold, say so before you buy rather than after.
Subprocessors
We use the following vendors to run the service. We don't sell your data or share it with advertisers. Several are conditional. They only process your data when you connect or enable the feature that uses them. This list is kept in sync with the privacy policy from one shared registry.
| Subprocessor | What they process | Region |
|---|---|---|
| Anthropic | AI inference (Claude). Scheduled runs call the Claude API to research and draft your work; prompts include the subset of your data needed and are not retained for training. | United States |
| OpenRouter | AI inference routing, when a run is configured to use it instead of the Claude API directly. Sees the same prompt content: the subset of your data the run needs. | United States |
| Amazon Web Services (Bedrock) | AI inference, when a run is routed through Bedrock rather than the Claude API. Same prompt content as above. | United States |
| Neon | Primary Postgres database, accounts, entitlements, telemetry, brain sync. | United States |
| Vercel | Application hosting and edge delivery. | Global edge, U.S. compute |
| Stripe | Payments, subscriptions, invoices. We never see full card numbers. | United States |
| Resend | Transactional and digest email delivery. | United States |
| Google sign-in (OpenID) and, if a deployment enables the first-party connectors, Gmail / Calendar / Drive data within the scopes you grant. | United States | |
| Recall.ai | Meeting-bot recording and transcription when you enable call recording, audio, video, and transcripts of the meetings you point it at. | United States |
| Dropbox Sign | Electronic signature for enterprise contracts, signer name, email, and the executed contract document. | United States |
| Apollo | Contact and company enrichment when you connect the Apollo integration. The identifiers you look up and the firmographic results. | United States |
| ZoomInfo | B2B contact and company data when you connect the ZoomInfo integration (partner-gated). The identifiers you look up and the results. | United States |
| PostHog | Product analytics on marketing pages, page views and click events, only after you consent via the cookie banner. | United States |
| Voyage AI | Text embeddings for in-product semantic matching. The text snippets being matched are sent for vectorization. | United States |
| ElevenLabs | Text-to-speech for the audio weekly recap. The recap text you generate audio for. | United States |
| GDELT Project | Public news search for the company news in Studio and for closed-lost revival. The names of your target accounts, recently lost accounts and competitors go in the search query. No key is used. | United States |
| Hacker News Search (Algolia) | Public search of Hacker News for the weekly market list in Studio. Your topic keywords and your competitors' names go in the search query. No key is used. | European Union and United States |
| Cloudflare Turnstile | Bot protection on public forms. A browser challenge token and IP metadata, no tracking cookies. | Global (U.S. company) |
Where your data lives
Primary database: Neon (Postgres), U.S. region. Application servers: Vercel, distributed globally with U.S. compute. If you're outside the U.S., your data is processed in the U.S.
AI inference is yours, not ours. You supply the provider key (Anthropic, OpenAI, OpenRouter or Amazon Bedrock) and your prompts go to the provider you chose, under your contract with them and their region and retention terms, not ours. We custody the key encrypted and call the endpoint on your schedule. This page used to name Anthropic here as though the choice were ours, which under bring-your-own-key it is not.
Your data and retention
- Access. Everything the control plane holds about you is visible in the product.
- Export. Download all of your data as JSON at any time from Settings → Data, or export your synced brain, see how export works.
- Delete. Request account deletion from Settings → Data. We hard-delete within 7 days. Stripe retains billing records per its own policy for tax and accounting.
- Disconnect. Revoke any connected tool (CRM, inbox, calendar) at any time to stop processing it. Any API key you issued for advanced access can be revoked from Settings → Advanced.
Reporting a vulnerability
If you find a security issue, email admin@salesascode.com with the details and steps to reproduce. We'll acknowledge and work the fix. Please don't publicly disclose until we've had a chance to remediate. (Our contact page also lists security@salesascode.com for responsible-disclosure reports. Both addresses route to the same inbox, so use whichever you find first.)
Questions
For DPAs, security questionnaires, or anything not covered here, reach us at our contact page or admin@salesascode.com. See also our Privacy Policy and Terms.
Questions people ask
Do you use my data to train models?
No. We do not sell your data, share it with advertisers, or use it to train models. This is enforced, not just promised: the Anthropic API is contractually zero-retention for training, and where a request is routed through OpenRouter we send its no-data-collection policy, which makes any provider that would store or train on the prompt ineligible to serve it.
Where does my data live?
Primary database: Neon (Postgres) in their default U.S. region. Application servers: Vercel, distributed globally. AI inference and embeddings run in U.S. regions. If you are outside the U.S., your data is processed in the U.S. The subprocessor table on this page names where each vendor processes it.
Can another customer see my data?
No. Every record is keyed to your account or team, and every query is scoped to the authenticated session, so one tenant cannot read another tenant data.
Who are your subprocessors?
We publish the full list on this page: Anthropic, OpenRouter, Amazon Web Services (Bedrock), Neon, Vercel, Stripe, Resend, Google, Recall.ai, Dropbox Sign, Apollo, ZoomInfo, PostHog, Voyage AI, ElevenLabs, GDELT Project, Hacker News Search (Algolia), Cloudflare Turnstile. Each entry names what it processes. A vendor is on the list when we send it your data on our own initiative, with our credentials. A service you connect and direct is not: when you link a CRM, a call recorder or a Slack workspace, we read and write there with your credential, on your instruction, and you can revoke it in Settings.
Do you hold my credentials?
With managed connectors we custody your OAuth token encrypted and revocable. With the self-hosted lane we never hold your credentials at all: the connectors run on your infrastructure.
Are you SOC 2 certified?
Not yet. This page states the compliance posture as it is today rather than as a roadmap claim.
How do I report a vulnerability?
Email the address in the "Reporting a vulnerability" section of this page. We acknowledge reports and will not pursue researchers acting in good faith.