I’ve created something similar, as a pool/billiards training app, where I pulled youtube videos together into a training schedule. This is sequential, not filter based like you are saying ,but just thought I’d share. https://pool-training.glideapp.io/
It’s just a matter of matching the user’s profile (duration, workouts, equipment) to the “attributes” or columns of your workouts, in a different table.
We recently did that in an app that has dozens of attributes, it matches veterans to resources.
Veterans fill out a huge profile, and then we match them with the appropriate resources.