Gitlab runners selection

Is there any additional way to manage runner selection logic besides tags? Is it possible to customize this logic somehow by custom code for example? I’m asking just in case I missed something in the documentation.