I think Regular Expressions would be useful in defining sexuality
sexuality* = attracted to none or many sexualities (including all)
sexuality+ = attracted to one or many sexualities (including all)
(male) | (female) = Attracted to male OR female
[^cismale] = Attracted to everything BUT CIS-male
You could add sub categories, for example
male* would mean "attracted to none or many male identifying people", so might be transgender male for example
We could use a current local variable $GENDER = your identified gender and $SEX equals your identified sex and $ALL = the set of all pronouns for gender and sex
Thus heterosexual on a cis person would be
/[^$SEX]/
Homosexual would be
/$SEX/
Bisexual would be
/(Male) | (Female)/
Poly sexual would be
/(gender+)/
Asexual would be
//
Pansexual would be
/$ALL/
Etc