v0.3.1: many-to-many contacts:profiles ProfileRepo.upsert no longer strips a contact key from other profiles when adding it here. A contact can now belong to any number of profiles simultaneously. The ScreeningService already walks profiles in list order and picks the first one whose contactKeys intersect the resolved buckets, so no service-side change is needed — list order is the tiebreaker. UI hint on the contact picker updated to reflect the new semantics. Bump 0.3.0 -> 0.3.1.