Encrypted, US-hosted, RLS-isolated, and audit-logged. Here's exactly what we do today and what we're working toward.
All traffic is HTTPS with HSTS preload. Database storage encrypted at rest by Supabase (AES-256). Webhook secrets stored encrypted with a per-deployment key.
App runs on Vercel (US regions). Database on Supabase (US). Compliance with US data residency requirements out of the box.
Database backed up daily with 7-day point-in-time recovery on production. Files in Supabase Storage are versioned.
Tenant isolation enforced at the database layer with PostgreSQL RLS policies. Cross-account reads physically impossible without service-role credentials, which only the server holds.
Sensitive columns (subscription status, seat caps, role, plan_type) are write-protected by triggers. Even an account_admin can't elevate themselves to platform_admin.
All admin actions, role changes, impersonation events, and data exports are recorded. Available to account admins on Elite.
Per-user and per-account rate limits on contact form, checkout, exports, and API. Origin checks on all cookie-authenticated mutations.
Anti-enumeration on signup errors, password requirements (8+, uppercase, number), and email-confirmation gating on suspicious patterns.
We're honest about what's in scope and what's on the roadmap.
| GDPR / CCPA | Full data export and account deletion supported by every customer. |
| SOC2 Type I | Targeting Q3 2026. Practices already aligned with SOC2 controls. |
| PCI-DSS | We never see card data - Stripe handles all PCI scope. |
| HIPAA | Not in scope. Don't store PHI in RoofKnockers. |
We take responsible disclosure seriously. Email security@roofknockers.com. We acknowledge within one business day.
Or contact us →Read the full controls, then start a 14-day trial. We're transparent because trust scales.