I’ve done this (minus the search for clients name but I just have to build this out).
Combination of custom state on the RG
Combined with conditionals on the RG
That change the constraints depending on the custom state
When I implement the search function I will use this plugin
(buildcamp have a great tutorial on youtube)
And add a new constraint for each of my conditionals for the contact type = search&automcomplete’s matches then tick the ‘ignore empty constraints’
The reason I do it this way is because my invoice contact is a user not just text so I have to set the fuzzy search to be search users not invoices. If your contact name field is a text field you can set it up the same way as the youtube tutorial based on custom states. You may have to have a few plugin elements on the page and the conditionals will tell it which element to match based on the custom state.
I use fizzy search as much faster than regular search constraints on an RG.