Extract person search logic from PersonSearchViewModel