I've managed to combine the girls meets/interactions/training into 1 system.

The training screen now filters out all one-off-event training.
The GM system now accepts a "mode" variable that currently can be one of 3 options. "girl_meets", "girl_interactions" and "girl_trainings". This is the basis for the action filtering.
In GT mode the one-off-event trainings are converted into actions that go "Training" > "[Course name]" > "[Lesson name]", so Training>Reward>Praise for instance.
The labels for the actions now follow a slightly different naming scheme. They can be any of:
- girl_meets_[label]_[girl]
- girl_meets_[label]
- girl_interactions_[label]_[girl]
- girl_interactions_[label]
- girl_trainings_[label]_[girl]
- girl_trainings_[label]
- interactions_[label]_[girl]
- interactions_[label]
The most generic label is "interactions" which the GM will default to if none of the others can be found. "girl_meets", "girl_interactions" and "girl_trainings" will override "interactions" with a mode specific variation. For instance "Chat">"About Her" has a "girl_meets" variant.
The one-off-training labels don't follow this pattern as they are specified solely by the training lesson, but they do now look for character specific labels.
The existing scenes have been updated, mainly the gm_variables they accessed and where they jump to. The biggest change is that all the scenes have been moved into menu-specific files. So everything under "chat" is now in the file "library/interactions/GM - chat.rpy".
Still playing with it a bit, so there's some time before any changes you've made to the GM labels will be scuppered.