Seria bom dizer onde o chatbot foi construído, se estiver utilizando Next.js não tem o pq da lentidão, se você colocar no lado do client-side.

Se estar colocando isso no lado do server-side acredito que não seja uma boa escolha, até daria para fazer, salvando um timestamp no banco de dados e verificar com o atual.

Estou desenvolvendo com Vue.js, mas preciso garantir que essa lógica não fique no lado do cliente para evitar qualquer possibilidade de manipulação pelo usuário.

Também preciso garantir que, se o servidor tiver algum problema, os dados dos usuários não se percam e eles possam ser redirecionados sem complicação depois de uma queda.

O que seria a manipulação que o usuário iria fazer? Você pode salvar o progresso no localstorage caso perca contato com o servidor, mesmo que ele atualize a página o progresso vai estar lá. Se entender o que realmente o que ele iria perder, não consigo pensar em algo.