I may be wrong as I have not implemented this, but you could achieve this with Groups instead, no?
It would mean a bit of set up for each Branch (sub) category but you could create one for each branch and make it only visible (in its security settings) to members of the appropriate Group. Then you create a list of groups and get members to subscribe to their branch (and any others they are interested in). These could, in theory, each have their own sign-up rules.
I guess you could achieve this by making all other content visible to members of some generic group that gets assigned automatically the moment they select a branch (i.e become members of Group:BranchX and Group:AllQualifiedMembers).
It would mean that there would be little content to show unless you registered with a branch, but that would make the instructions clearer.
However, if you are managing the migration using SSO it might be possible to them pre-assign groups to each user depending on their source, skipping the initial step at least, see:
Would that work?