Everything your customer-comms operation needs
Built for US B2B teams with privacy at the center of the design.
SMS messaging
- One canonical conversation per (contact, channel)
- Inbound via Twilio webhook with signature verification
- Delivery status (QUEUED → SENT → DELIVERED / FAILED)
- Outbound always sent from the tenant's number
Bridged calls
- Agent is dialed first, then the contact
- Customer sees the company's caller ID — not the agent's phone
- Status callbacks update duration and recordings
- Full history per contact and per agent
Privacy and ACL
- realPhoneNumber never returned without ACL
- Mask returns only the last four digits
- Per-contact ACL with user IDs and roles
- Auditable and reversible by an admin
Multi-tenant
- Prisma-level isolation with AsyncLocalStorage
- Tenants can never read each other's data
- Webhooks resolve the tenant by phone number / Stripe ID
- Cross-tenant access blocked by default
Team and RBAC
- Roles: OWNER, ADMIN, MANAGER, AGENT
- Email invitations with expiring tokens
- Departments per agent
- Granular permissions in both API and UI
B2B onboarding
- Collects legal name, EIN, address, industry
- One-click Twilio number setup
- Stripe Checkout with instant activation
- Self-service Billing Portal
Webhooks and integrations
- Twilio: SMS in, voice in, status callbacks
- Stripe: subscription lifecycle
- Signature verification on both
- Cloudflare Tunnel ready for dev
History and auditing
- All messages persisted with timestamps
- CallLog with start, end and duration
- Soft delete on every key entity
- Filters by agent, contact, or period