Skip to content

Roles & permissions

Maddict has three roles. Your role determines which surfaces you can open and which actions you can take. Permissions are enforced on the server, not just hidden in the interface.

Role Scope Primary surface
Dashboard user (analyst) One agency /dashboard
Agency admin One agency /dashboard (+ team management)
Platform admin (Maddict staff) The whole platform /admin
Capability Dashboard user Agency admin Platform admin
Browse the catalogue ✅ ✅ —
Build, save, compare, export audiences ✅ ✅ —
Use the AI draft assistant ✅ ✅ —
Manage own profile & password ✅ ✅ ✅
Invite / remove teammates — ✅ —
Assign roles within the agency — ✅ —
See the agency’s plan usage — ✅ —
Provision & suspend agencies — — ✅
Set tiers, seat caps, validity — — ✅
View the platform audit log — — ✅

Platform admins operate the platform; they don’t work inside an individual agency’s audiences. Building audiences is the job of dashboard users and agency admins.

The platform back-office is invisible to others

Section titled “The platform back-office is invisible to others”

The back-office at /admin is gated to the platform-admin claim. For anyone without it, the route returns a 404 — it doesn’t just deny access, it doesn’t reveal that the surface exists at all. See Platform back-office.

A valid login is not enough on its own. On each request Maddict verifies that you:

  • are an active member of the agency whose data you’re touching,
  • have a role that permits the action, and
  • are within your agency’s entitlements.

So a suspended user, a removed member, or an expired agency can’t reach tenant data even with working credentials. The database backs this up with row-level security — see Tenant data isolation.