/security
Security + data residency
Where customer data lives
Primary storage: Supabase Postgres in Zurich, Switzerland (eu-central-2). Lead + chat data is stored in Switzerland. LLM processing is disclosed separately on /privacy. Database security controls, encryption, TLS, RLS, and endpoint posture are documented after launch verification.
Approval-safe by default
No autonomous emails, payments, public posts, CRM writes, or security remediation. Every agent action lands as a draft in your inbox; humans approve or edit before the action ships. Read-only / draft-only is the default mode for every workflow until you explicitly flip authority.
Audit-ready evidence
Every agent tool-call is logged to an append-only audit table (chat_tool_calls) before execution — timestamp, target, action arguments, and result — giving an audit-ready evidence trail you can review. Cryptographically signed receipts and the full retention window are on the hardening roadmap.
Bot + injection defence
Chat widget gated by Cloudflare Turnstile (invisible challenge). Server-side refuse-pattern library short-circuits common jailbreak templates before any LLM call. Tool-call allow-list locks the chat agent to three operations (recordAnswer, requestConsent, finalizeIntake). Every tool invocation logged to a chat_tool_calls audit table BEFORE execution.
Cost circuit-breakers
A per-IP daily LLM cost cap and a per-session token cap are enforced in code; a project-level provider budget cap is configured in the OpenAI dashboard. Operator alerting (e.g. Telegram) is configurable.
Incident response
Cybersecurity Operations skill pack includes IR module: playbook templates, evidence-collection automation, communication drafts, post-incident report generation. Critical findings always escalate to DVN with an audit-ready evidence pack — no autonomous remediation.
Fully local LLM option
By default the chat assistant uses OpenAI (primary) with an Anthropic fallback, each under a data-processing agreement. For teams that require zero third-party processing, we can deploy a fully local, self-hosted open-weight model (e.g. Qwen, Llama) so conversations and workflow data never leave your Swiss environment. Available on request as part of the engagement scope.