Security
Built to protect your customers’ data
Benjamin handles support conversations, which means it handles sensitive data. Here’s exactly what we’ve built to keep it safe, and what we’re still working on.
What we’ve built
Encrypted credentials
Passwords are bcrypt-hashed with cost factor 10. API keys and secrets live in environment variables, required at startup. Never committed to source code.
Authentication on every request
JWT tokens are verified by middleware before any data is returned. No valid token means no data. There is no unauthenticated path to protected resources.
Role-based access control
Three permission tiers (master, super, user) with per-capability flags scoped to each tenant. Each user sees only what their role allows.
Tenant data isolation
Your organization's data is scoped at the API layer. Users cannot access another tenant's records. Isolation is enforced in code, not just configuration.
Secure integrations
All connections to OpenAI, AWS S3, Stripe, SendGrid, and Weaviate are encrypted in transit over HTTPS/TLS. No third-party credentials appear in source code.
Session audit trail
Every chat and voice session is logged in the database with a timestamped event trail. Runtime events are recorded throughout the session lifecycle.
What we’re actively adding
We believe transparency builds trust. These are the gaps we know about and the timeline we’re targeting.
- Rate limiting on authentication endpoints
- HTTP security headers (HSTS, Content Security Policy, X-Frame-Options)
- Structured security audit log for admin actions
- Third-party penetration testing (planned for H2 2026)
- SOC 2 Type II certification (planned for 2027)
Have a security question?
Have a security question before you evaluate Benjamin? Ask us directly.
Talk to our team