ChatBuilder · Documento interno

Bíblia do Fluxo
Conversacional do
Chatbot de Reservas.

O caminho completo da primeira mensagem no WhatsApp até o PIX confirmado, o lembrete e o check-in. Mapeado ponta a ponta — sem caixas-pretas, sem suposições.

Canal principal
WhatsApp
Orquestração
LLM + Tools + Supabase + Asaas
Estado conversacional
Persistente com TTL
Multiunidade
Roteamento seguro
01 · Visão geral

Quatro pilares, um fluxo

Toda mensagem percorre estes quatro blocos — sempre nesta ordem.

01

WhatsApp

Entrada do cliente, via WE API.

02

Backend Orquestrador

process_message, dedup, regras e roteamento.

03

LLM

Condução conversacional e tom de vendedor.

04

Tools · DB · Asaas

Dados reais, transações e webhooks.

Regra inviolável

Nunca inventar preço, disponibilidade, promoção ou comodidade.

02 · Linha do tempo

As 19 etapas do funil

Da primeira mensagem ao pós-reserva, cada passo tem propósito e validação.

1

Primeira mensagem

Webhook recebe e deduplica.

2

Resolução de unidade

Lock por instância ou seleção do cliente.

3

Identificação de intenção

Reserva, dúvida, reabertura, cancelamento.

4

Fast track (urgência)

Pula descoberta e vai à disponibilidade.

5

Descoberta guiada

Pergunta gosto antes de data.

6

Data e hora

Validação de janela e antecedência.

7

Consultar disponibilidade

Tool real-time, nada inventado.

8

Exibir suítes

Foto, preço e amenities reais.

9

Escolha da suíte

Confirmação por contexto, não só nome.

10

Permanência ou pernoite

Sempre perguntar, nunca assumir.

11

Confirmação de dados

Resumo claro antes de prosseguir.

12

Coleta de nome

Apenas no fim, se necessário.

13

Criar reserva

Tool criar_reserva valida tudo.

14

Gerar pagamento

PIX via Asaas com link único.

15

Monitorar status

Polling + webhook de confirmação.

16

Confirmar reserva

Mensagem de sucesso e código.

17

Lembrete 30 min

Resumo + Maps + Uber.

18

Check-in com código

Cliente apresenta código na recepção.

19

Pós-reserva e recovery

Reengajamento contextual.

03 · Como o bot decide

Bifurcações que moldam a conversa

Cada decisão é um nó com regras explícitas — não é magia, é fluxo.

Decisão 1

Instância da WE API

  • 1 unidade → resolve direto
  • Múltiplas → pergunta qual unidade
Decisão 2

Sinal de urgência?

  • Sim → fast track
  • Não → descoberta guiada
Decisão 3

Suíte disponível?

  • Sim → segue para escolha
  • Não → oferece alternativas reais
Decisão 4

Status do pagamento

  • Pendente → mantém estado
  • Pago → confirma reserva
  • Cancelado → libera horário
Decisão 5

Pediu mais opções?

  • Sim → consulta com exclude_room_ids
  • Não → segue confirmação
Pseudo-lógica
if (tem_urgencia) → fast_track()
else → descoberta_guiada()
if (suite.disponivel) → confirmar_escolha()
else → consultar_disponibilidade(exclude_room_ids)
if (pagamento.status == 'pago') → confirmar_reserva()
elif (status == 'pendente') → manter_estado(ttl)
else → liberar_horario()
04 · Estado e memória

O que persiste em conversations

Pending actions guiam respostas curtas. TTL evita estado preso. Histórico mantém contexto sem quebrar tools.

unit_id

Unidade ativa da conversa.

awaiting_unit_selection

Flag para multi-unidade.

pending_action_type

Tipo da próxima ação esperada.

pending_action_data

Payload parcial da ação.

pending_action_expires_at

TTL para evitar estado preso.

messages

Histórico para contexto sem quebrar tools.

Pending actions

Quando o cliente responde só um número, o sistema sabe a qual pergunta se refere.

TTL configurável

Estados antigos expiram, evitando travas de fluxo entre sessões.

Histórico curado

Contexto suficiente para o LLM, sem inflar tool calls.

05 · Sem repetição

"Ver mais opções" sem mostrar o mesmo de novo

PASSO 1

Consulta inicial

Mostra Suíte A e B

PASSO 2

Sistema salva

shown_room_ids = [A, B]

PASSO 3

Cliente pede

"tem mais?"

PASSO 4

Nova consulta

exclude_room_ids = [A, B]

PASSO 5

Retorno limpo

Mostra C e D, sem repetir

Consistência por room_id — sem ambiguidade entre room_type_id e suite_id
06 · Fast track

Quando o cliente diz 'agora', a resposta é rápida

Gatilhos de urgência

"agora""tem livre?""estou chegando""na porta""""em 10 min"

Comportamento

  • Pula descoberta guiada
  • Consulta disponibilidade imediata
  • Mostra 2–3 melhores opções: luxo, custo-benefício e promo
07 · Permanência vs pernoite

São coisas diferentes — e o bot pergunta

Permanência

Tempo determinado em horas: 3h, 6h, 12h, 24h.

3h6h12h24h

Pernoite

Estadia até a manhã seguinte, quando aplicável à unidade.

Disponível só em unidades habilitadas

Nunca assumir pernoite automaticamente.

08 · Pagamentos

Asaas, PIX e webhooks

Da reserva ao link, do link ao status, do status à confirmação.

criar_reserva

Reserva validada e persistida.

gerar_link_pagamento

Cobrança PIX no Asaas.

webhook · status

Eventos de pago, cancelado, expirado.

mensagem ao cliente

Sem expor erro técnico cru.

Resiliência

verificar_status_pagamento aceita booking_id, phone ou transaction_ref.

09 · Lembrete e recovery

Voltar no momento certo, sem ser invasivo

Lembrete 30 minutos

  • Código da reserva
  • Link no Maps
  • Atalho do Uber

Cart recovery contextual

A retomada muda conforme o estágio onde o cliente parou — fotos, permanência, pagamento.

fotospermanênciapagamento
10 · Falhas e fallback

O cliente nunca vê erro técnico

Motivo técnico
Mensagem humanizada
horário ocupado
"Esse horário já foi reservado, mas tenho opções parecidas pra você."
reserva expirada
"Sua reserva expirou. Posso gerar uma nova rapidinho?"
pagamento pendente
"Ainda não recebi a confirmação do PIX. Quer que eu verifique de novo?"
timeout Asaas
"Tive um pequeno atraso pra gerar seu link. Já tento de novo."
erro temporário
"Tive um instante de instabilidade. Pode repetir, por favor?"
11 · Guardrails

Regras invioláveis do agente

01
Disponibilidade só via consultar_disponibilidade
02
Detalhes de suíte só via detalhar_suite
03
Promoções só via listar_promocoes_ativas
04
Reserva só via criar_reserva
05
Pagamento só via gerar_link_pagamento
06
Privacidade e discrição sempre na confirmação
07
unit_id sempre respeitado, nunca cruza unidades
08
Mensagens curtas, em formato WhatsApp
12 · Rodapé

Resumo executivo

Forças do fluxo atual

  • Multiunidade isolada por unit_id.
  • Estado conversacional com TTL.
  • Tools como única fonte da verdade.
  • Recovery e lembretes automatizados.

Gargalos técnicos

  • Cobertura parcial de testes de fluxo.
  • Latência de webhook em picos.
  • Padronização de logs por etapa.

Próximos passos

  • Painel de auditoria por conversa.
  • A/B de mensagens críticas.
  • Métricas de tempo entre etapas.
  • Replays de conversa para QA.
ChatBuilder · Bíblia do Fluxo
Documento interno · Não listado · Acesso por URL direta