You'd need another relationship from People to your join table where (a global field) Type = "Candidate", and use a list of IDs via that relationship as filter.
If you have 12/13, you could use ExecuteSQL instead, along the lines of
Let ( [
pid = asn.PLP_People~Cartesian::__zkpPeopleID ;
ls = ExecuteSQL ( "SELECT \"_zkfPeopleID\" FROM asn.JPA_JoinPeopleAssignments WHERE Type = ?" ; "" ; "" ; "Candidate" )
FilterValues ( pid ; List ( asn.JPA_JoinPeopleAssignments::_zkfPeopleID ) )
FilterValues ( pid ; ls )
That triggered an idea, so thanks very much for taking the time. I made a new field in assignments (global and auto enter "Candidate") and made another relationship from Assignments to the join table with two predicates, one for the assignment and the other from the global to the Type field. I then based my conditional format on this. The relationship restricts the list to those that are added and the second predicate restricts it to those that are also tagged with Candidate. Seems to work based on quick testing. Would have been banging my head on my desk for a while without your help. Thanks again.