diff --git a/docs/captain/reviews/2026-04-23.md b/docs/captain/reviews/2026-04-23.md index d6bff8c9c..5e6ede1f4 100644 --- a/docs/captain/reviews/2026-04-23.md +++ b/docs/captain/reviews/2026-04-23.md @@ -2,7 +2,7 @@ **Período:** últimas 72h (20/04 a 23/04/2026) **Analisado:** 4 assistants (Qnn01, PrimeAL, PrimeVL, Express) -**Conversas problemáticas:** 4 bugs / 11 legítimas +**Conversas problemáticas:** 7 padrões de bug identificados --- @@ -10,30 +10,112 @@ | Conv | Hotel | Contato | Problema | Legítima? | |---|---|---|---|---| -| 4094 | Qnn01 | rf | [FERRAMENTAS] block vazado + categorias erradas em send_suite_images | ❌ Bug | +| 4094 | Qnn01 | rf | [FERRAMENTAS] block vazado + loop infinito em send_suite_images | ❌ Bug | | 4070 | Express | Lauriana | [Identidade] block vazado quando cliente enviou dados de reserva | ❌ Bug | | 4075 | Express | Estefani | [Informações outras unidades] vazado + promoção expirada anunciada | ❌ Bug | | 4114 | Qnn01 | Guilherme | Pix não gerado, IA expôs erro interno; preço corrigido pelo humano (R$130 → R$160) | ❌ Bug | | 4229 | PrimeAL | Davi Lima | IA disparou transfer enquanto humano já estava atendendo | ❌ Bug | +| 4213 | PrimeAL | . | Transferiu em "Quanto está a pernoite?" às 20h21 (dentro do horário comercial) | ❌ Bug | +| 4240 | Qnn01 | ❤️ | Transferiu em "Está quando 2 horas?" — cliente saiu e achou info em outro lugar | ❌ Bug | +| 4253 | PrimeAL | Matheus | Transferiu em "Como funciona a Spa/Hidromassagem?" | ❌ Bug | +| 4254 | PrimeAL | Clayton | Transferiu em "Quanto que ta 2 horas" — humano depois perguntou suíte, cliente sumiu | ❌ Bug | +| 4241 | PrimeAL | Kelson | Lead Meta: transferiu imediatamente, humano abriu com "Como posso ajudar", lead sumiu | ❌ Bug | +| 4246 | PrimeAL | Yasmim | Lead Meta: transferiu, humano respondeu genérico, sem conversão | ❌ Bug | +| 4247 | PrimeAL | reforma | Lead Meta: transferiu, cliente abandonou | ❌ Bug | +| 4249 | PrimeAL | Eduarda | Lead Meta: transferiu imediatamente, lead frio | ❌ Bug | +| 4252 | PrimeVL | Francisco | Lead Meta: transferiu, sem resposta humana, marcado resolvido por inatividade | ❌ Bug | +| 4266 | PrimeVL | sam | Lead Meta: transferiu, marcado resolvido por inatividade | ❌ Bug | +| 4236 | PrimeAL | Marcia | Transferiu em "Boa noite" (23h49) — humano respondeu os preços | ❌ Bug (noturno) | +| 4238 | PrimeAL | Belzinha | Transferiu em "Boa noite / saber sobre a diária" (23h56) | ❌ Bug (noturno) | +| 4243 | Express | Bruno | Transferiu em "boa noite!" (01h) — cliente pediu preço diária casal | ❌ Bug (noturno) | +| 4248 | PrimeVL | Kaylane | Transferiu em "Oi / Boa noite" (01h41) | ❌ Bug (noturno) | | 4268 | PrimeAL | ldoriane28 | Pedido de vaga de camareira | ✅ Legítima | | 4267 | PrimeAL | Tony | Nota fiscal perdida após check-out | ✅ Legítima | | 4228 | PrimeAL | Lucas Bouwman | Emissão de nota fiscal (CNPJ) | ✅ Legítima | -| 4238 | PrimeAL | Belzinha | Cardápio in-hotel (hóspede já no quarto) | ✅ Legítima | -| 4258 | PrimeAL | Jr | Room service / café da manhã in-hotel | ✅ Legítima | +| 4256 | PrimeAL | Manu | Cardápio in-hotel (hóspede já no quarto pedindo cardápio) | ✅ Legítima | +| 4258 | PrimeAL | Jr | Room service / pedidos in-hotel (já hospedado) | ✅ Legítima | | 4259 | Express | Estefani | Pedido de porções (hóspede in-hotel) | ✅ Legítima | -| 4236, 4253, 4256, 4242, 4243, 4248 | PrimeAL/VL/Express | vários | Transfers noturnos (pós ~23h) — provavelmente business hours | ✅ Possivelmente legítima | | 4280 | PrimeAL | Érica | Imagens enviadas, VALERIA assumiu — não houve bug da IA | ✅ Legítima | +| 4290 | Qnn01 | Gabriela | Cliente perguntou sobre promoção de outra unidade — IA redirecionou corretamente | ✅ Legítima | +| 4242 | PrimeAL | 🫠 | Cliente disse "Vou aguardar" — contexto de conversa anterior, transfer ok | ✅ Legítima | --- ## 🔍 Padrões identificados -### Padrão 1: Blocos internos do sistema sendo enviados como mensagem ao cliente +### Padrão 1: Handoff prematuro — IA transfere para humano em perguntas básicas de preço/informação +**Ocorrências:** 8+ conversas — 4213, 4240, 4253, 4254, 4236, 4238, 4243, 4248 (e mais) +**Qual regra violou:** #9 — NUNCA handoff por pergunta de valor / #6 — Pergunta de permanência = todas as categorias +**Comportamento errado:** +A IA está transferindo para humano imediatamente em situações onde deveria responder autonomamente: +- Cliente diz apenas "Boa noite" → IA transfere sem esperar a pergunta (4236, 4238, 4248) +- Cliente pergunta "Quanto que ta 2 horas?" → IA transfere em vez de dar os preços (4254, 4240) +- Cliente pergunta "Como funciona a Spa/Hidromassagem?" → IA transfere em vez de explicar (4253) +- Cliente pergunta "Quanto está a pernoite?" às 20h21 → IA transfere (4213) + +Resultado: Humano assume e responde exatamente o que a IA poderia ter respondido (preços, categorias). Em alguns casos o cliente já tinha saído (4240: "Já consegui a informação tá bom, Obrigado!!"). Em outros o humano não estava disponível e o lead esfriou. + +**Deveria ser:** A IA deve responder qualquer pergunta de preço, disponibilidade ou informação sobre o hotel, 24/7, sem transferir. Handoff só para: (a) hóspede com problema operacional, (b) cancelamento, (c) assuntos não-reserva (RH, nota fiscal). + +**Escopo do fix:** (a) geral — afeta PrimeAL, PrimeVL, Express e Qnn01. + +**💡 Fix sugerido** — revisar o critério de handoff nos scenarios. Adicionar instrução explícita: +``` +REGRA DE HANDOFF: +Você NUNCA deve transferir para humano apenas porque o cliente perguntou preço, disponibilidade, +como funciona uma categoria de suíte, ou qualquer dúvida informativa sobre o hotel. +Transferir SOMENTE em: +1. Hóspede JÁ no hotel com problema operacional (quarto, pedido de item, manutenção) +2. Solicitação de cancelamento de reserva já confirmada +3. Assuntos claramente não-reserva: RH, nota fiscal, comprovante, CNPJ + +Pergunta de preço (qualquer hora do dia ou da noite) = VOCÊ RESPONDE. +Pergunta de disponibilidade = VOCÊ RESPONDE. +Cliente que disse apenas "Boa noite" = aguarde a pergunta, NÃO transfira. +``` + +- [ ] Aprovar +- [ ] Rejeitar (motivo: _______) + +--- + +### Padrão 2: Leads Meta/WhatsApp Ads — handoff imediato sem engajamento +**Ocorrências:** 6 conversas — 4241 (PrimeAL), 4246 (PrimeAL), 4247 (PrimeAL), 4249 (PrimeAL), 4252 (PrimeVL), 4266 (PrimeVL) +**Qual regra violou:** #9 (handoff indevido) — lead que veio de anúncio perguntando informações, não é caso de handoff +**Comportamento errado:** +Todos os leads vindos de anúncio do Meta WhatsApp chegam com a mensagem padrão: +*"Olá! Tenho interesse e queria mais informações, por favor."* +A IA (PrimeAL e PrimeVL) transfere **imediatamente** para humano sem sequer perguntar o que o cliente quer. + +Resultado: +- O humano responde "Ola boa noite / Como posso ajudar" — genérico, sem proposta de valor +- O lead some na maioria dos casos (4247, 4252, 4266 encerrados por inatividade) +- 6 leads de anúncio perdidos nas últimas 72h + +**Deveria ser:** A IA deve engajar o lead, apresentar as opções e conduzir à reserva. Ex: *"Oi! Sou a Jasmine do Prime – Águas Lindas 😊 Que bom que você se interessou! Posso te mostrar nossas suítes e preços. Você está pensando em qual tipo de hospedagem: horas, pernoite ou diária?"* + +**Escopo do fix:** (a) geral — verificar em PrimeAL e PrimeVL, possivelmente Express também. + +**💡 Fix sugerido** — adicionar scenario específico para leads do Meta: +``` +Quando receber mensagem "Olá! Tenho interesse e queria mais informações, por favor." ou similar +(vinda de lead_meta_whatsapp), NÃO transfira para humano. Engaje imediatamente: +"Oi! 😊 Aqui é a Jasmine do [Hotel]. Que ótimo que você se interessou! +Posso te apresentar nossas opções rapidinho. Você prefere passar algumas horas, um pernoite +ou uma diária completa? Tenho suítes disponíveis pra hoje!" +``` + +- [ ] Aprovar +- [ ] Rejeitar (motivo: _______) + +--- + +### Padrão 3: Blocos internos do sistema sendo enviados como mensagem ao cliente **Ocorrências:** 3 conversas — 4094 (Qnn01), 4070 (Express), 4075 (Express) **Qual regra violou:** #12 — Preservar dados não expostos **Comportamento errado:** - **4094**: IA enviou o bloco `[FERRAMENTAS]` inteiro (com os gatilhos de `daniela_reservas`, `jamile_disponibilidade_imediata`, etc.) como mensagem ao cliente enquanto tentava responder "pernoite sem café". -- **4070**: IA enviou o bloco `[Identidade]` completo (nome, função, hotel, missão, restrições) logo após o cliente enviar dados de reserva (CPF, datas). O bloco saiu antes de qualquer resposta processada. +- **4070**: IA enviou o bloco `[Identidade]` completo (nome, função, hotel, missão, restrições) logo após o cliente enviar dados de reserva (CPF mascarado, datas). O bloco saiu antes de qualquer resposta processada. - **4075**: IA enviou o bloco `[Informações outras unidades]` duas vezes consecutivas quando cliente perguntou sobre a promoção do Instagram. **Deveria ser:** Nunca enviar conteúdo de blocos internos. Se a IA não sabe a resposta, deve pedir mais contexto ou transferir — mas nunca exibir o prompt cru. @@ -43,10 +125,11 @@ **💡 Fix sugerido** — em todos os arquivos de scenario (`jasmine_*__daniela_reservas.md` e base), logo após a seção de ferramentas/instruções: ``` -IMPORTANTE: Você NUNCA deve enviar para o cliente o conteúdo de blocos internos do sistema como -[Identidade], [FERRAMENTAS], [Informações outras unidades] ou qualquer marcador entre colchetes. -Esses blocos são configuração interna e devem ser tratados como invisíveis ao cliente. -Se sentir necessidade de citar uma regra interna, reformule naturalmente sem revelar o bloco. +REGRA CRÍTICA — BLOCOS INTERNOS: +Jamais envie ao cliente o conteúdo de blocos delimitados por colchetes como [Identidade], +[FERRAMENTAS], [Informações outras unidades] ou similares. Esses blocos são configuração +interna e devem ser tratados como invisíveis. Se precisar informar algo desses blocos, +reformule naturalmente sem reproduzir o marcador ou o JSON/lista interno. ``` - [ ] Aprovar @@ -54,7 +137,7 @@ Se sentir necessidade de citar uma regra interna, reformule naturalmente sem rev --- -### Padrão 2: IA anunciou promoção expirada (Express) +### Padrão 4: IA anunciou promoção expirada (Express) **Ocorrências:** 1 conversa — 4075 (Express, Estefani, 21/04/2026) **Qual regra violou:** Preço errado / informação desatualizada (implícito em #1 e #3) **Comportamento errado:** IA disse: "Estamos com uma promoção especial de pernoite para casal por R$79,90 (sem café da manhã incluso), **válida até 31 de março de 2026**". A conversa foi em 21 de abril — promoção havia expirado 21 dias antes. @@ -70,15 +153,19 @@ Se sentir necessidade de citar uma regra interna, reformule naturalmente sem rev --- -### Padrão 3: send_suite_images usa categorias do Prime no Qnn01 -**Ocorrências:** 1 conversa — 4094 (Qnn01, rf) +### Padrão 5: send_suite_images em loop — categorias erradas e recusa em chamar a tool +**Ocorrências:** 1 conversa — 4094 (Qnn01, rf) — mas loop foi extenso (10+ trocas) **Qual regra violou:** #10 — Tool `send_suite_images` EXIGE parâmetro correto **Comportamento errado:** -Cliente pediu: "Manda foto da suite master" → IA respondeu: *"preciso que você me confirme a categoria dela, como por exemplo **Alexa, Stilo ou Spa-Hidromassagem**"*. Mas Alexa/Stilo são categorias do Prime, não do Qnn01. O Qnn01 tem: **Standard, Master, Pole Dance, Hidromassagem**. O cliente já havia dito "Master" — a IA deveria ter chamado `send_suite_images({suite_category: "Master"})` diretamente. +1. Cliente pediu "Manda foto da suite master" → IA respondeu: *"preciso que você me confirme a categoria: Alexa, Stilo ou Spa-Hidromassagem"* — categorias do Prime, não do Qnn01 +2. Cliente disse "Suite master" (categoria real do Qnn01) → IA continuou pedindo confirmação em loop +3. Cliente disse "Alexa e stilo" → IA disse "não temos fotos disponíveis" (correto, mas cliente frustrado) +4. Cliente disse "Todas" → IA exigiu categoria específica +5. Total: ~6 pedidos de confirmação sem a IA nenhuma vez chamar a tool -Quando cliente insistiu em "Alexa e Stilo" (categorias que ele conhecia do Prime), a IA disse *"não temos fotos disponíveis das suítes Alexa e Stilo"* — correto nesse caso, mas o problema raiz é que a IA desconhece as categorias locais. +O Qnn01 tem: **Standard, Master, Pole Dance, Hidromassagem** — a IA desconhecia essas categorias. -**Deveria ser:** Reconhecer "Standard", "Master", "Pole Dance" e "Hidromassagem" como categorias válidas para `send_suite_images` no Qnn01 e chamar a tool diretamente quando o cliente nomear uma delas. +**Deveria ser:** Reconhecer "Master" como categoria válida no Qnn01 e chamar `send_suite_images({suite_category: "Master"})` na primeira vez que o cliente nomeou. **Escopo do fix:** (c) só Qnn01. @@ -86,8 +173,9 @@ Quando cliente insistiu em "Alexa e Stilo" (categorias que ele conhecia do Prime ``` Categorias válidas para send_suite_images nesta unidade: Standard, Master, Pole Dance, Hidromassagem. -Se o cliente pedir fotos de "suite master", chame send_suite_images({suite_category: "Master"}). +Se o cliente pedir foto de "suite master", chame send_suite_images({suite_category: "Master"}). Nunca peça confirmação de categoria se o cliente já nomeou uma das categorias acima. +Se cliente pedir "todas", chame a tool para cada categoria em sequência. ``` - [ ] Aprovar @@ -95,7 +183,7 @@ Nunca peça confirmação de categoria se o cliente já nomeou uma das categoria --- -### Padrão 4: Falha na geração de Pix expõe mensagem técnica +### Padrão 6: Falha na geração de Pix expõe mensagem técnica **Ocorrências:** 1 conversa — 4114 (Qnn01, Guilherme) **Qual regra violou:** #3 (IA deve calcular e gerar Pix diretamente) + parcialmente #12 **Comportamento errado:** @@ -108,7 +196,7 @@ Essa mensagem: A IA então sugeriu pagar o sinal na recepção — o que pode ser aceitável como fallback, mas requer confirmação do Rodrigo. -**Deveria ser:** Se Pix falhar, a IA deve ter um fallback sem expor detalhes técnicos. Ex: *"No momento estou com uma instabilidade para gerar o Pix automaticamente. Para confirmar sua reserva, você pode pagar o sinal de R$65 ao chegar, ou me diga se prefere tentar novamente."* +**Deveria ser:** Se Pix falhar, a IA deve ter um fallback sem expor detalhes técnicos. **Escopo do fix:** (c) Qnn01 (mas verificar se outras unidades têm mesmo problema). @@ -125,7 +213,7 @@ você pode pagar o sinal de [valor] diretamente na recepção ao chegar. Posso a --- -### Padrão 5: IA disparou transfer enquanto humano já estava atendendo +### Padrão 7: IA disparou transfer enquanto humano já estava atendendo **Ocorrências:** 1 conversa — 4229 (PrimeAL, Davi Lima, 22/04 21:47) **Qual regra violou:** Nenhuma diretamente do gabarito — mas é comportamento anômalo e confuso **Comportamento errado:** @@ -181,24 +269,60 @@ Atualizar a tabela de preços no prompt do Qnn01 com o valor correto. Sugiro ver --- -### Pergunta 3: Business hours — IA deve responder fora do horário comercial? -**Conversas:** 4236, 4248, 4253, 4256, 4242, 4243 (entre 23h e 4h) -**Contexto:** Nas unidades PrimeAL, PrimeVL e Express, qualquer mensagem recebida após ~22h-23h aciona transfer imediato. Em Qnn01, a IA continua respondendo normalmente a qualquer hora (veja 4114 às 22:12). -**O que preciso saber:** Essa diferença de comportamento é intencional? A IA deveria continuar respondendo perguntas de preço/disponibilidade à noite mesmo sem humano disponível? +### Pergunta 3: Business hours — os transfers noturnos são configuração intencional? +**Conversas:** 4236, 4238, 4243, 4248 (entre 23h e 02h) e 4213, 4253, 4254 (entre 20h e 03h) +**Contexto:** Há dois sub-cenários: +- **A) Transfers de madrugada (23h–04h)** em PrimeAL, PrimeVL, Express: IA transfere qualquer pergunta. Pode ser configuração de business hours intencional. +- **B) Transfers no horário de pico noturno (20h–23h)**: 4213 (PrimeAL, 20h21) e 4253 (PrimeAL, 02h38). Se há business hours configurado, que horas são? + +**O que preciso saber:** Existe configuração de business hours para essas unidades? Se sim, qual o horário? E a intenção é a IA NÃO responder fora desse horário, ou apenas não processar reservas? **💡 Minha sugestão:** -Manter a IA respondendo perguntas de informação (preço, disponibilidade) 24/7. Transferir para humano apenas quando for reserva que exige ação operacional (ex: check-in imediato, problema in-hotel). Isso garante que leads noturnos não se percam. +Manter a IA respondendo perguntas de **informação** (preço, disponibilidade, como funciona) 24/7, mesmo fora do business hours. Transferir para humano apenas quando for reserva que exige ação operacional imediata. Isso garante que leads noturnos recebam pelo menos a informação que precisam. **Sua escolha:** -- [ ] Usar a sugestão (IA responde 24/7 no nível de info/preço) +- [ ] Usar a sugestão (IA responde info 24/7, só reservas têm horário) - [ ] Manter business hours — IA só responde das __h às __h - [ ] Usar outra (escreva abaixo) +**Sua resposta alternativa:** _[preencha só se rejeitou]_ + --- ## 📝 Diffs completos (antes/depois) -### Fix 1 — Todos os scenarios: instrução anti-leak de blocos internos +### Fix 1 — Todos os scenarios: regra de handoff corrigida + +**ANTES:** (critério de handoff não está explícito — IA está interpretando qualquer pergunta como motivo de transfer) + +**DEPOIS:** adicionar ao início ou instrução principal de cada `jasmine_*`: +``` +REGRA DE HANDOFF (CRÍTICA): +Você responde autonomamente: preço, disponibilidade, categorias, como funciona, fotos de suítes. +Transfere para humano SOMENTE em: +1. Hóspede JÁ no hotel com problema operacional (quarto, pedido, manutenção) +2. Cancelamento de reserva já confirmada +3. Assuntos não-reserva: RH, nota fiscal, comprovante, CNPJ +Pergunta de preço ou "Boa noite" = você responde, nunca transfira. +``` + +--- + +### Fix 2 — Todos os scenarios: engajamento de leads Meta + +**ANTES:** (sem instrução específica para lead_meta_whatsapp — IA trata como qualquer outra mensagem e transfere) + +**DEPOIS:** +``` +Quando receber mensagem de lead_meta_whatsapp com "Tenho interesse e queria mais informações": +NÃO transfira. Responda imediatamente com apresentação + pergunta de qualificação: +"Oi! 😊 Aqui é a Jasmine do [Hotel]. Que ótimo que você veio pelo nosso anúncio! +Você prefere algumas horas, um pernoite ou uma diária? Tenho opções disponíveis pra hoje!" +``` + +--- + +### Fix 3 — Todos os scenarios: instrução anti-leak de blocos internos **ANTES:** (sem instrução explícita sobre vazamento de blocos) @@ -213,7 +337,7 @@ reformule naturalmente sem reproduzir o marcador ou o JSON/lista interno. --- -### Fix 2 — jasmine_express: remover promoção expirada +### Fix 4 — jasmine_express: remover promoção expirada **ANTES:** (linha ou bloco com) `promoção especial de pernoite para casal por R$79,90 [...] válida até 31 de março de 2026` @@ -221,9 +345,9 @@ reformule naturalmente sem reproduzir o marcador ou o JSON/lista interno. --- -### Fix 3 — jasmine_qnn01: categorias válidas para send_suite_images +### Fix 5 — jasmine_qnn01: categorias válidas para send_suite_images -**ANTES:** (provavelmente usando nomes genéricos ou herdando do Prime) +**ANTES:** (provavelmente usando nomes genéricos ou herdando do Prime — Alexa/Stilo) **DEPOIS:** ``` @@ -235,11 +359,12 @@ Categorias de suítes válidas para send_suite_images no Qnn01: Quando cliente pedir foto e já nomear uma dessas categorias, chame send_suite_images({suite_category: ""}) diretamente sem pedir confirmação. +Se cliente pedir "todas" ou não especificar, ofereça as opções e envie a da escolhida. ``` --- -### Fix 4 — jasmine_qnn01: fallback de Pix sem expor erro técnico +### Fix 6 — jasmine_qnn01: fallback de Pix sem expor erro técnico **ANTES:** (sem tratamento de fallback — IA exibe mensagem de erro técnico) @@ -258,11 +383,13 @@ Nunca mencione "configuração interna", "sistema ainda não configurado" ou det Após revisar, marque e rode `claude /captain-apply-review 2026-04-23` no Mac: -- [ ] Padrão 1 — Blocos internos vazados — Aprovado -- [ ] Padrão 2 — Promoção expirada Express — Aprovado -- [ ] Padrão 3 — Categorias Qnn01 send_suite_images — Aprovado -- [ ] Padrão 4 — Fallback Pix sem expor erro — Aprovado -- [ ] Padrão 5 — IA interrompeu humano ativo — Aprovado (fix Chatwoot) +- [ ] Padrão 1 — Handoff prematuro generalizado — Aprovado +- [ ] Padrão 2 — Leads Meta sem engajamento — Aprovado +- [ ] Padrão 3 — Blocos internos vazados — Aprovado +- [ ] Padrão 4 — Promoção expirada Express — Aprovado +- [ ] Padrão 5 — Loop send_suite_images Qnn01 — Aprovado +- [ ] Padrão 6 — Fallback Pix sem expor erro — Aprovado +- [ ] Padrão 7 — IA interrompeu humano ativo — Aprovado (fix Chatwoot) - [ ] Pergunta 1 — Pernoite sem café Qnn01 — Respondida - [ ] Pergunta 2 — Preço Suite Master Qnn01 — Respondida - [ ] Pergunta 3 — Business hours PrimeAL/VL/Express — Respondida