the only way to take the human factor out is to take the humans out of the equation and that means time profile.
You cannot expect the system to be psychic I am afraid but you could make an overflow group that comes into service after hours and put the bosses extension in there (twinned to the bosses cellphone) and then I am sure that they will only forget once or twice

and rather call around to check if someone is still working than getting fired.
You could of course also use that time profile on the overflow group to send the calls to vm instead but that is boring.
basic setup
have your regular group and routing when out of service untouched
create a time profile for after hours times and use that to set a newly created group into service when after hours times are reached.
put that new group into the overflow for the regular group which will only work when the group is still in service and if so and all agents are logged out (or busy) then it will go to the new group and from there you can send the vm to wherever you wish (easy with vm pro "leave Point"; harder with embedded)
Joe W.
FHandw, ACSS (SME), ACIS (SME)
Give a tech a solution and he will be back tomorrow to ask you the next question, teach a tech how to read the manual and he will be able to solve the problems for a life time.