Built to earn your trust.
Mavrick operates inside your Slack and touches your ad accounts. Here's exactly how we protect what you hand us.
All data moves over TLS 1.3. Credentials live in Supabase Vault with AES-256 + an isolated master key. The AI model never sees OAuth tokens — only sanitized tool descriptions.
Every API route resolves the workspace cookie-authoritatively. A logged-in user can't access another tenant's data even by appending ?workspace_id=<other> — the resolver returns 403 before the database query runs. Verified by pen-test, May 2026.
Every mutation touching your accounts (publish, send, post, schedule) requires explicit cleared-hot approval. No "always approve" preference, by design.
Output is scanned for fabricated success claims ("Published ✅", "Email sent ✅") before reaching you. Behavioral truth-check crons sample replies every 6h to catch quiet drift on numeric and identity claims.
Workspace admins can self-serve a full data export (Article 15 + 20) and workspace deletion (Article 17) from /settings/workspace. Export is synchronous (<60s, JSON). Deletion is typed-confirmation with a 7-day grace + CASCADE purge by a daily cron.
Hosted on Vercel + Modal + Supabase (all SOC 2 Type 2). Full subprocessor list with regions and compliance status maintained at /trust. Material changes notified to enterprise customers.
Policy is necessary. Implementation is what actually protects you.
Below are the runtime defenses backing the practices above. Each one resolves to a specific file path and commit hash in the Mavrick codebase. Procurement teams under MNDA can request a code-review walkthrough.
Idempotent payment webhooks
Stripe events pass through a PK-uniqueness gate before any side-effecting dispatch — duplicate retries return 200 received:true without re-firing.
Per-IP rate limiting
5 public endpoints (slack/events, stripe/webhook, connectors/webhook, meta-ads/callback, tiktok-ads/callback) sit behind Upstash sliding-window limits, with 429 + retry_after_seconds on cap-hit.
Per-workspace concurrency caps
Sliding 90-second window enforces max 5 simultaneous agent runs per workspace. Cap-hit returns an honest customer message + operator alert — no silent drops.
Operator-alert secret scrubbing
13-pattern regex redacts Bearer / sk- / xoxb- / ghp_ / Stripe / AWS / Meta / managed-connector / JWT shapes from every Telegram alert before send.
Backup + restore SLOs
Point-in-time database restore (7-day window). Documented runbook covers single-table corruption, full DB loss, R2 deletion, Vercel + Modal rollback. Quarterly paper drill.
Schema drift detection
CI gate parses applied migrations and walks every supabase() query to verify referenced columns exist. Catches "migration dropped column, code still references it" failures before deploy.
Cross-origin isolation
HSTS (2-year, preload), Content-Security-Policy with explicit allowlists, COOP same-origin + CORP same-site, X-Frame-Options + frame-ancestors 'none'. SOC 2 CC6.7 + CASA V8 alignment.
Full procurement-grade detail — compliance posture, subprocessor list, incident response process, continuous compliance logging, MNDA request paths — lives in our trust center. For uptime numbers, support response times, and incident SLAs, see the SLA commitments.
Need a security review, penetration test results, or a signed DPA? Reach out and we'll respond within one business day.