Dueted is multi-tenant by design, and the guarantees that matter are enforced where they cannot be bypassed: in the database.
Every row belongs to a workspace, and row-level security in Postgres scopes every query to the workspaces you belong to. It is not an app-layer filter you can bypass — the database itself refuses to return another tenant's data.
You send through your own email. Credentials are encrypted before they are stored and decrypted only at send time. The platform never emails on a borrowed identity, and it says so loudly if a mailbox is offline rather than failing silently.
Owner, broker, researcher, and viewer are enforced in row-level security, not just hidden in the UI. A viewer is read-only, a researcher works leads but cannot send or touch domains, and sending is limited to owners and brokers, checked fail-closed on the server.
A lead on legal HOLD cannot be contacted, and taking it off HOLD is owner-only and enforced by a database trigger. Even a tampered client cannot send to a held lead.
A key's full secret is shown once and never stored. Only a sha256 hash and a short prefix are kept, so a database leak cannot reveal a usable key. Revoke any key instantly.
Every webhook delivery is signed with HMAC-SHA256 so you can verify it came from us. Failed deliveries retry with backoff instead of being lost.
Assignments, sends, replies, offers, status changes, and comments are recorded with who did what and when, giving every workspace an audit history.
The database is the only store. Nothing important lives in localStorage or a downloaded file, so work is never silently lost on a reload.
Found something? Responsible disclosure is welcome. Reach out from the address on your workspace and we will get back to you.