Sofia didn't fuck anybody, relax. She just wants to make you feel jealous.
As BTLD stated she probably did fuck someone to become a full fledged witch, but that's not my main gripe and I don't want to see yet another NTR discussion occur.
My main issue is just about how the narrative progresses forward, I know it's probably really hard to make branching paths due to development time etc but having a game with a focus on single LI's instead of harem kind of requires a form of branching to occur, the best way would be to have the player choose between what characters he wants to spend time with and thus befriend/romance. You can either choose to branch early or have an introductory story where we meet/befriend everyone and get to decide who to pick, so that the dev can keep the story mostly aligned in the beginning saving on scene development time, then branch off afterwards.
An example of good early branching opportunities would have been the art /mma class, choosing one should block the other, which leads to the player making a conscious decision as to which group of LI's he likes the best and choosing accordingly, having sofia's ritual take place at the same time as Rachels parental visit and setting it up so the player is informed beforehand so he can make a definite decision between them and then locking them into said LI's path would have worked too, though I would have set that up a little later in the story and I wouldn't have made Sofia's story progression be linked to having sex, but that's just me.
I don't know, I also feel like we didn't get enough time to get to fully know the characters before fucking them as we don't really get enough time to care about their issues (except for maybe Rachel, but she's a sweetheart and maybe Nina also, sofia is close but needed a little more imo) which I think is really important for romance focused single LI games.