there are only going to be 3 groups ... client/staff/admin
and each user belongs to a particular group
Nope, this sounds to me like it's just a way to use NAMES to accomplish the same limited, hard-coded heirarchy you would have with access levels as NUMBERS.
To have complete flexibility, you need to do this:
(1) Each user has a unique id.
(2) You can create arbitrary named groups.
(3) Each user can be a member of as many groups as is appropriate.
(4) Each item that requires access restrictions has an Access Control List: each row in the ACL references a single group (good) or user (not so good) and specifies what rights that group or user will have.
Now, you may not need all the flexibility such a scheme offers, but as soon a straight heirarchy of increasing access rights doesn't do what you need, then you do need this!