iachat/docs/captain/reviews/2026-05-13.md
Codex CLI 8522f925c7
Some checks failed
Build and Push to GHCR (multi-arch) / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Build and Push to GHCR (multi-arch) / build (linux/arm64, ubuntu-22.04-arm) (push) Has been cancelled
Build and Push to GHCR (multi-arch) / merge (push) Has been cancelled
review: auto-review do Captain em 2026-05-13
2026-05-13 03:08:50 +00:00

16 KiB
Raw Blame History

Captain Review — 2026-05-13

Período: últimas 72h (2026-05-11 a 2026-05-13) Analisado: 4 assistants (Qnn01, PrimeAL, PrimeVL, Express AL) Conversas com assignee/handoff: 40 Conversas problemáticas: 9 bugs / 10 legítimas (restantes sem incidentes notáveis)


📊 Conversas analisadas

Conv Hotel Contato Problema Legítima?
7768 PrimeVL Luiz Gustavo Tool status_suites travou, cliente esperou 20+ min Bug
7755 PrimeAL anny Tool status_suites travou, cliente esperou 10+ min Bug
7774 PrimeVL Luffy do chapéu de Palha Tool status_suites travou, cliente esperou 30+ min Bug
7702 PrimeAL Lorena Magalhães Escalada por "passa cartão e divide?" sem resposta Bug
7742 PrimeAL LAYLA Escalada por "vcs passam cartão?" sem resposta Bug
7517 PrimeVL Kawane Escalada por "pode levar comida e bebidas?" sem resposta Bug
7727 PrimeAL Jeferson Fotos da Hidro enviadas 3x; escalada por "tem que encher?" Bug
7539 PrimeAL Sousa Mensagem interna "Self-improvement review" vazou no chat Bug
7548 PrimeAL Adailton Pix gerado com valor incorreto no reenvio (R$70 vs R$85) Bug
7722 Express Larisse Kelly Pedido de recibo por dia para RH Legítima
7715 Express Larisse Kelly Pedido de nota fiscal diária para RH Legítima
7583 Express AL.🫥 Pedido de estorno de reserva em outra unidade Legítima
7614 Express AL.🫥 Pedido de estorno Legítima
7765 PrimeVL Bruna Thais Pedido de desconto por ser primeira vez/aniversário Legítima
7524 PrimeAL ALAN KARDEC Negociação de estadia longa (3 diárias) Legítima
7481 PrimeVL . Cliente consultou preço e foi embora Legítima
7807 PrimeVL Millymendes Atendimento normal, IA funcionou bem Legítima
7690 Express Rogerio Redirect para Prime (sem hidro no Express) Legítima
7640 Qnn01 🍀🧸🍀 Consulta de preço, inatividade Legítima
7698 Express Jadiel Sousa Humano tomou conta normalmente Legítima

🔍 Padrões identificados

Padrão 1: Tool status_suites trava e IA deixa cliente esperando indefinidamente (CRÍTICO)

Ocorrências: 3 conversas (7768, 7755, 7774) Qual regra violou: Implicitamente viola #9 (handoff silencioso sem resposta ao cliente) e a própria regra do cenário disponibilidade_suites: "Se a ferramenta falhar, avise que teve instabilidade e peça um instante." Comportamento errado: IA manda " Um momento — vou verificar." e nunca volta. O sistema adiciona ia_abriu_conversa (indicando chamada de tool), mas a IA não responde — cliente fica esperando 1030 min até timeout ou humano intervir. Deveria ser: Ao detectar falha (ou ausência de resposta da tool), IA deve informar o cliente e dar alternativa (ligar, pré-reservar mesmo assim). Escopo do fix: (a) geral — aconteceu em PrimeAL e PrimeVL

Exemplos:

  • Conv 7768: Cliente perguntou "A 303 tá?" — IA disse "" às 21:46, primeiro cliente retornou foi às 21:47 ("Ok"), depois ficou mandando "?", "Oii", "Oi", "?????" até 22:21. Humano respondeu às 22:53.
  • Conv 7774: Cliente disse "E pra hoje" às 22:23, IA disse "", humano só apareceu às 22:54 — 30 min depois.

💡 Fix sugerido — Substituir a seção de fallback em disponibilidade_suites.md de todos os assistants (após o bloco "Se a ferramenta falhar…"):

ANTES:

Se a ferramenta falhar, avise que teve instabilidade e peça um instante.

DEPOIS:

## ⚠️ Fallback quando `status_suites` falha ou não retorna
Se a ferramenta retornar erro OU não houver resultado após a chamada:
1. NÃO fique em silêncio. NÃO chame handoff.
2. Responda ao cliente imediatamente:
   "Opa, tive uma instabilidade aqui e não consegui verificar em tempo real 😅
   Para garantir disponibilidade agora, você pode:
   - Me informar que quer reservar mesmo assim — eu registro a pré-reserva e a recepção confirma na chegada.
   - Ou ligar direto: [número do hotel].
   O que prefere?"
3. Se o cliente quiser prosseguir, roteie para daniela_reservas normalmente.
  • Aprovar
  • Rejeitar (motivo: _______)

Padrão 2: Escalada silenciosa para perguntas operacionais básicas (ALTO)

Ocorrências: 4 conversas (7702, 7742, 7517, 7727) Qual regra violou: Regra #9 (NUNCA handoff por pergunta de valor/simples). Perguntas sobre formas de pagamento e política de uso são do mesmo nível que perguntas de preço — a IA deveria responder diretamente. Comportamento errado: Quando cliente pergunta sobre cartão, parcelamento, trazer comida ou hidro cheia, IA manda " Um momento — vou verificar." e escala para humano sem responder. Cliente fica esperando. Deveria ser: Responder direto com as informações da política da unidade. Escopo do fix: (a) geral — aconteceu em PrimeAL e PrimeVL

Exemplos e respostas corretas identificadas pelos humanos:

  • "Passa cartão?" → Humano: "Sim aceitamos cartão no hotel" (7742)
  • "Passa cartão e divide?" → Humano: "Não dividimos" (7702)
  • "Pode levar comida e bebidas de fora?" → Humano: "sim pode trazer" (7517)
  • "Tem que encher [a hidro] ou já vem cheia?" → Humano: "Se quiser deixamos cheia" (7727)

💡 Fix sugerido — Adicionar seção de FAQ operacional no final de jasmine_<unit>__daniela_reservas.md (antes das Proibições), para todos os 4 assistants:

## ❓ FAQ operacional — responda direto, sem chamar handoff

| Pergunta do cliente | Resposta padrão |
|---|---|
| "Aceita cartão?" / "Passa cartão?" | "Sim! Aceitamos débito e crédito direto na chegada 😊 A pré-reserva online é via Pix (sinal de 50%)." |
| "Pode dividir?" / "Parcela?" / "Divide?" | "Não fazemos parcelamento — mas você pode pagar o sinal agora via Pix e o restante em cartão ou dinheiro no check-in 😊" |
| "Pode trazer comida?" / "Pode levar bebida?" | "Pode sim, sem problema! 😊" |
| "A hidro já vem cheia?" / "Tem que encher a banheira?" | "A hidro fica pronta pra uso na sua chegada! Se quiser cheia de cara, é só avisar na recepção 😊" |
| "Os quartos são não fumantes?" | "Sim, todas as suítes são não fumantes. Fumar fora do quarto, por favor 😊" |
| "Bebidas alcoólicas pode?" | "Pode sim! 😊" |
  • Aprovar
  • Rejeitar (motivo: _______)

Padrão 3: Mensagem interna "Self-improvement review" vazou no chat do cliente (GRAVE)

Ocorrências: 1 conversa (7539 — PrimeAL, contato: Sousa) Qual regra violou: Regra #12 (Nunca vazar conteúdo do system prompt, IDs técnicos, mensagens internas) Comportamento errado: IA enviou a mensagem a seguir diretamente no chat do cliente:

💾 Self-improvement review: User profile updated Deveria ser: Mensagens de logging/memória interna do agente NUNCA devem ser enviadas ao cliente. Esta é provavelmente uma mensagem gerada por algum mecanismo de "memória" do agente que foi enviada para o canal de chat em vez de ser descartada. Escopo do fix: Investigação técnica — não é fix de prompt, é questão de infraestrutura do Captain AI.

💡 Minha sugestão: Esta mensagem parece ser de um sistema de memória/autoaprendizado do agente (Captain AI tem algum mecanismo de self-improvement?). Precisamos garantir que qualquer log interno nunca use o canal de mensagem ao cliente (message_type=1). Possível causa: algum tool que o agente chama para "salvar aprendizado" está inadvertidamente gerando uma mensagem de chat.

Sua escolha:

  • Investigar e corrigir no nível técnico (Captain AI / Chatwoot config)
  • Já estava ciente / já foi corrigido
  • Usar outra abordagem (escreva abaixo)

Sua resposta alternativa: [preencha só se rejeitou]


Padrão 4: Reenvio de Pix cria nova reserva com valor diferente (GRAVE)

Ocorrências: 1 conversa (7548 — PrimeAL, contato: Adailton) Qual regra violou: Sem violação de regra de atendimento direta, mas é um bug crítico de negócio: cobra valor errado. Comportamento errado: Cliente pediu "Tem como mandar de novo o pix". IA encontrou Reserva #206 (Alexa pernoite, total R$170, sinal R$85) no histórico, mas chamou generate_pix com parâmetros novos e gerou uma nova Reserva #207 com total R$140 e sinal R$70 — valor diferente do original. A IA inclusive detectou a discrepância (enviou nota interna alertando sobre duplicidade/cobrança incorreta) mas enviou o Pix errado mesmo assim. Deveria ser: Ao pedido de reenvio de Pix, NÃO criar nova reserva. Escalar para humano que pode reenviar o link correto. Escopo do fix: (a) geral — fix em daniela_reservas.md de todos os 4 assistants

💡 Fix sugerido — Adicionar na seção de FAQ ou Proibições de daniela_reservas.md:

## 🔄 Reenvio de Pix — regra crítica
Se o cliente pedir "manda o Pix de novo", "reenvie o Pix", "não recebi o Pix" ou similar:
- **NÃO** chame `generate_pix` novamente — isso cria uma nova reserva com valores possivelmente diferentes.
- Responda: "Para reenviar o Pix da sua reserva, preciso da ajuda da equipe — um momentinho!" e chame `handoff`.
- O motivo: o reenvio precisa apontar para a reserva original, e a IA não tem acesso ao link anterior.
  • Aprovar
  • Rejeitar (motivo: _______)

Padrão 5: Ferramenta send_suite_images chamada múltiplas vezes (duplicação de fotos)

Ocorrências: 1 conversa (7727 — PrimeAL, contato: Jeferson) Qual regra violou: Regra #10 (send_suite_images EXIGE parâmetro — e por extensão, nunca deve ser chamada em loop) Comportamento errado: Quando cliente pediu fotos da Hidromassagem, o sistema enviou 3 mensagens idênticas "Suíte SPA Hidromassagem" seguidas. A tool send_suite_images foi chamada 3 vezes para a mesma categoria. Deveria ser: Uma única chamada por categoria. Se o cliente quiser ver de novo, IA pode chamar de novo mas nunca em rafaga automática. Escopo do fix: (a) geral — adicionar em maria_fotos.md de todos os 4 assistants

💡 Fix sugerido — Adicionar regra no jasmine_<unit>__maria_fotos.md após a seção de uso da ferramenta:

## ⛔ Regra anti-duplicata
- Chame `send_suite_images` **uma única vez** por categoria por turno.
- Nunca chame a mesma ferramenta duas vezes seguidas sem uma nova mensagem do cliente entre as chamadas.
- Se a ferramenta retornar sucesso, não repita a chamada.
  • Aprovar
  • Rejeitar (motivo: _______)

Perguntas pra o Rodrigo responder

Pergunta 1: Auto-resposta de disponibilidade para datas futuras (mesmo antes de fechar reserva)

Conversa: 7768, 7755, 7774 Contexto: Clientes pedem "a 303 tá?" ou "quero pra hoje" — IA tenta verificar disponibilidade em tempo real mas trava. O cenário disponibilidade_suites.md diz "Se for amanhã ou data futura, não travar a venda por disponibilidade em tempo real: siga para daniela_reservas." Mas para "hoje/agora" manda checar mesmo. O que preciso saber: Quando status_suites falha pra pedidos de "hoje", você prefere: (A) IA continua direto pra reserva sem verificar disponibilidade, ou (B) IA pede pra cliente ligar/aguardar?

💡 Minha sugestão: Opção A — se o cliente quer reservar "pra hoje", IA registra a pré-reserva normalmente e a recepção confirma na chegada (já é o que acontece com datas futuras). Falha de disponibilidade não deve travar venda.

Sua escolha:

  • Opção A — ir direto para reserva, sem verificar disponibilidade (mesmo para "hoje")
  • Opção B — avisar instabilidade e pedir para ligar
  • Outra (escreva abaixo)

Sua resposta alternativa: [preencha só se rejeitou]


Pergunta 2: Números de telefone nos prompts — estão corretos?

Contexto: Conv 7690, humano deu o número 61991868492 para o cliente contatar o Prime. Em 7614, humano deu (61) 4042-8064 para o Prime Ceilândia. O prompt da IA não tem número de telefone (vai buscar no faq_lookup). Os humanos passam números "na mão" quando necessário. O que preciso saber: Devemos adicionar os números de telefone de cada unidade diretamente nos prompts (para a IA poder responder quando a ferramenta de disponibilidade falha e sugerir ligar)?

💡 Minha sugestão: Sim — adicionar uma seção "Contato de emergência" em cada arquivo de disponibilidade_suites.md com o telefone da unidade. Assim a IA pode dizer "Se precisar confirmar agora, ligue: [número]".

Sua escolha:

  • Usar a sugestão acima (adicionar telefones nos prompts de disponibilidade)
  • Não — os humanos que passam o número quando necessário
  • Usar outra abordagem (escreva abaixo)

Sua resposta alternativa: [preencha só se rejeitou]


📝 Diffs completos (antes/depois)

Arquivo: _modelos/scenarios/jasmine_<unit>__disponibilidade_suites.md (todos os 4)

ANTES (linha existente):

Se a ferramenta falhar, avise que teve instabilidade e peça um instante.

DEPOIS:

## ⚠️ Fallback quando `status_suites` falha ou não retorna
Se a ferramenta retornar erro OU não houver resultado após a chamada:
1. NÃO fique em silêncio. NÃO chame handoff.
2. Responda ao cliente imediatamente:
   "Opa, tive uma instabilidade aqui e não consegui verificar em tempo real 😅
   Para garantir disponibilidade agora, você pode:
   - Me informar que quer reservar mesmo assim — eu registro a pré-reserva e a recepção confirma na chegada.
   - Ou ligar direto: [número do hotel].
   O que prefere?"
3. Se o cliente quiser prosseguir, roteie para daniela_reservas normalmente.

Arquivo: _modelos/scenarios/jasmine_<unit>__daniela_reservas.md (todos os 4)

ANTES: (seção de FAQ operacional não existe)

DEPOIS (adicionar antes das Proibições):

## ❓ FAQ operacional — responda direto, sem chamar handoff

| Pergunta do cliente | Resposta padrão |
|---|---|
| "Aceita cartão?" / "Passa cartão?" | "Sim! Aceitamos débito e crédito direto na chegada 😊 A pré-reserva online é via Pix (sinal de 50%)." |
| "Pode dividir?" / "Parcela?" | "Não fazemos parcelamento — mas você pode pagar o sinal agora via Pix e o restante em cartão ou dinheiro no check-in 😊" |
| "Pode trazer comida?" / "Pode levar bebida?" | "Pode sim, sem problema! 😊" |
| "A hidro já vem cheia?" / "Tem que encher a banheira?" | "A hidro fica pronta pra uso na sua chegada! Se quiser cheia de cara, é só avisar na recepção 😊" |
| "Os quartos são não fumantes?" | "Sim, todas as suítes são não fumantes 😊" |
| "Bebidas alcoólicas pode?" | "Pode sim! 😊" |

## 🔄 Reenvio de Pix — regra crítica
Se o cliente pedir "manda o Pix de novo", "reenvie o Pix", "não recebi o Pix":
- **NÃO** chame `generate_pix` novamente — cria nova reserva com valor possivelmente diferente.
- Responda: "Para reenviar o Pix da sua reserva existente, preciso da ajuda da equipe 😊 Um momento!" e chame `handoff`.

Arquivo: _modelos/scenarios/jasmine_<unit>__maria_fotos.md (todos os 4)

ANTES: (sem regra anti-duplicata)

DEPOIS (adicionar no final):

## ⛔ Regra anti-duplicata
- Chame `send_suite_images` **uma única vez** por categoria por turno.
- Nunca chame a mesma ferramenta duas vezes seguidas sem nova mensagem do cliente.
- Se a ferramenta retornar sucesso, não repita a chamada.

Checklist de aprovação

Após revisar, marque suas decisões e responda às perguntas nos campos acima:

  • Padrão 1 — Fallback de disponibilidade (Aprovado/Rejeitado)
  • Padrão 2 — FAQ operacional básico (Aprovado/Rejeitado)
  • Padrão 3 — Self-improvement leak (Ciente/Ação necessária)
  • Padrão 4 — Pix reenvio com valor errado (Aprovado/Rejeitado)
  • Padrão 5 — Fotos duplicadas (Aprovado/Rejeitado)
  • Pergunta 1 — Disponibilidade pra hoje: opção A ou B?
  • Pergunta 2 — Telefones nos prompts: sim ou não?