The setup of "automatically adjusts lighting based on finishing brushing teeth before bed" could easily be "the bedroom lights do random and frustrating things when I'm trying to get ready for bed". The problem is complex interactions are hard to see, like what happens when someone does something out of order, or adjusts the lights to their liking before brushing teeth, or is brushing early after a late dinner or garlicky snack but not going to bed yet.
That said, if you can do it without annoying others, go nuts! It's super fun, and it's a great learning experience to spend weeks interacting with your software from the real (physical) world. You'll find tons of edge cases, and figure out how to deal with race conditions, less than 100% reliable signals, etc.
Some of my most useful automations are very subtle, like turning on a couple inside lights as it's starting to get dark outside but only if there aren't any lights already turned on. If we're home (and have manually adjusted lights), nothing happens. Yet we never come home to a dark house (There's a similar automation for front outside lights too). This is quite a bit more complicated than a simple timer, yet is so intuitive that you don't even realize you're interacting with it.