When I drag and drop an item into a content area and then I click on personalize it'll display a pop-up with all visitor groups in the system. My question is, is there a way to filter these groups during runtime? I want to filter based on a property in a page.
Yes, it is possible.
You would have to register and intercept your own decorator for IVisitorGroupRepository that would first call the base IVisitorGroupRepository.List method and then run custom filtering on the result.
Example of an interceptor here: https://github.com/episerver/EPiServer.Labs.BlockEnhancements/blob/b3b73eafa1da662f2c7ac2ba0f0870307cf1e6f3/src/EPiServer.Labs.BlockEnhancements/ContentDraftView/ContentDraftViewInitializer.cs#L14
Thank you @Bartosz!