ESP32 start BLE after deep sleep
Does the loop function work after being woken up from deep sleep? YES
loop function isn't magical.  its just a function that gets called over and over.  In other words, if it gets called once, it can be called again except if

it did something to deactivate itself
never reached the end

during that first call.  Check that you are not activating some sort of state inside the loop or going into a blocking call awaiting a signal that is never sent.
For good measure, make sure to reset all your variables to their expected states - expecting something to be 0 or set via the original definition may be insufficient.  This is something that occurs on a power reset so if reset is making it work again, thats a likely culprit.  Use a bare minimum of code in the loop for debug so you can figure it out.