I've had a sleep on it... so some thoughts on the tagging system:
Explanation first, so we're all on the same page:
Rudi's database works like this: Tag: ["pic1", "pic2, ..."]. It has a bunch of methods to access the data. Tags and pics are loaded in the game once on start.
Right now during jobs we do this:
When a job runs:
1) Check if girl has an image: "sex", "missionary" available. Is yes, "sex_missionary" event is added to a list.
2) After all events had been added, game randomly chooses one.
3) Corresponding text and pic are loaded into the NextDayList with all other info. When pic is loaded, data base is accessed twice. First to get all the images with "sex", "missionary" tags, than to get all tags with "excluded" tags (like "bdsm" and "group"). Then all pics in the first batch are being removed if they are also in the second.
This will not work (perfectly) either. Even if we exclude "bdsm" and "group" tags during 1) as well, it might still be flawed. Also database would have to be accessed four times to get one single event...
For now it seems to be working fast enough but I have not testing this with a lot of girls yet. One way to improve this approach is to do 1) once on the startup, but it's a code thing, I doubt we'll run into a speed problem even with how things are now. In order to improve current approach, we would have to exclude a whole bunch of tags, and even THEN it might not work

===========================
Basically, I currently see two options here:
1) Rudi's approach of running the event anyway, assign "weight" to tags and have the game pic the best matched pic.
2) Approach that I've originally intended. All "Main" categories, actually, become "Main" and cannot be used as sub descriptors. If you need sex as a sub tag, lets call WM sex category "normalsex" or "whorejob_sex". Basically, just like in WM, you would only tag an image you would conceder as acceptable for appearing during sex act of the whore job. Descriptors like "location", "mood", "outfit", "position" would all be secondary. I think this will work really well and that is actually how I assumed you were tagging.
What do you think?