Permissions systems have a bad habit of becoming their own product — a maze of custom roles, exceptions, and overrides that eventually needs a manual just to explain who can see what.
Three axes, not three hundred roles
Nuclear Software's permission model is built on three axes: role, location, and team. Most access decisions fall out of a combination of these three without needing a bespoke rule.
- Role — what someone's job function allows them to do (approve, schedule, view reports).
- Location — which sites or regions that access applies to.
- Team — which specific group within a location it's scoped to.
A regional manager gets a role that spans every location in their region automatically — no need to add them individually to each site's team. A location gets a new manager, and their access follows the role, not a manually maintained list.
Where we drew the line
We deliberately didn't build a fully custom permissions engine with arbitrary boolean logic. It's tempting, but every team we watched try to build one ended up with a permissions system nobody fully understood a year later. Three axes cover the overwhelming majority of real org structures without that cost.