Skip to content

Trust Center

The real controls protecting your documents.

What DocTalk actually does to keep your uploads private, isolated, and unused for model training. And — openly — what we haven't certified yet.

01 — Encryption & transit

AES-256 encryption at rest

Uploaded documents are written to MinIO with SSE-S3 server-side encryption by default. Production (Railway) runs MinIO with KMS enabled so SSE-S3 is always applied. In unsupported self-hosted deployments without KMS, MinIO may fall back to unencrypted writes — that is a deployment choice, not a silent downgrade in production.

backend/app/services/storage_service.py · upload_file()

TLS 1.2+ in transit

Every network hop — browser to Vercel edge, edge to Railway backend, backend to LLM providers — uses TLS. HSTS with max-age=63072000 and includeSubDomains is set on the apex domain.

No training on your data

DocTalk routes LLM calls through OpenRouter. Your documents and questions are never used by DocTalk to train models. Provider-side retention depends on the upstream model (DeepSeek / Mistral) — for guaranteed zero retention we rely on OpenRouter's account-level privacy setting (operational control, not yet code-enforced at the request level), and can tighten further with a provider allow-list on request.

02 — Ingest safety

Magic-byte file validation

Uploads are validated against file signature bytes, not file extensions. A .pdf with an executable payload inside is rejected at ingest — you cannot trick the parser by renaming a file.

backend/app/services/upload_service.py · magic-byte check

SSRF protection on URL ingestion

When you drop a URL to summarize, the backend validates the target against an allow-list of public hosts and rejects any request to private IP ranges, link-local addresses, or cloud metadata endpoints (169.254.169.254, etc).

backend/app/core/url_validator.py

Rate limits on anonymous endpoints

Public endpoints (shared views, anonymous reads) have per-IP rate limits with HMAC-signed IP trust chain via the Vercel edge — the real client IP cannot be spoofed. Authenticated users bypass.

backend/app/core/rate_limit.py · shared_view_limiter, anon_read_limiter

03 — Your data, your control

Full data export

From your Profile → Account you can export all your documents and session data. The export includes everything DocTalk stores about you, in portable formats.

Account deletion

You can delete your account from Profile → Account. All documents, sessions, chat history, embeddings, and billing records are removed; the account is not recoverable after deletion.

User isolation

Every document and session is scoped to its owner's user_id at the database and vector-store layer. There is no shared namespace, no org-wide collection by default, and the isolation is enforced at query time — not just at render time.

04 — What we don't have yet

SOC 2 Type II
Not audited

We are a small team without the engineering spend for a full SOC 2 audit yet. The underlying controls are in place; the certification is not.

HIPAA
Not compliant

DocTalk is not a HIPAA-covered business associate. If you handle Protected Health Information, do not upload PHI until we announce BAA support.

Enterprise SSO / SAML
Not available

Individual OAuth (Google, Microsoft) and magic-link email sign-in only. Enterprise SSO is on the roadmap but not shipped.

On-premise / air-gapped deployment
Not offered

DocTalk is SaaS only. Self-hosted is not currently supported.

Report a security issue

Responsible disclosure welcomed. We reply to every vulnerability report within 72 hours.