booking algorithm