This method requires quantifying potential matches. As we calculate scores, we can apply different weights to each factor - for example, weighting an operational role more heavily than a policy role. This weighting is the key to achieving high quality matches.
Each score is calculated independently and uniquely. Because of this fact, we are less able to influence individual pairings. We are in the sphere of the deeply complex.
This means we must think carefully about the way we generate these scores. Some are obvious - for example, someone who cannot move because of caring responsibilities ought not be matched with a role anywhere except where they live. Some, however, are more complicated - for example, should we encourage variety or deep specialism? These behaviours can be developed through applying this system, but in the wider context of the people being put through it perhaps consideration should be given to what they want too.
At the same time as deciding what we'll weight, we need to think about how much weight we give each factor. Should the ideal location be weighted more or less than the ideal skills? Should that weighting change depending on what the business needs, the candidate wants, or both? Remember that the approach here has to be the same for everyone - so inevitably there'll be people who disagree. Despite this, because it's part of your codebase, it'll be published. You'll need to be able to stand behind it.