Catálogo, disponibilidade e histórico de mensagens
Só o que pode ser oferecido, por tenant e com escopo fechado
Tabela de consumo e índice de busca do agente
Resposta no WhatsApp e painel de atendimento
O que resolve
- A IA só oferece o que está disponível hoje, com o preço certo, e não inventa item.
- A mensagem escrita do jeito do cliente acha o item certo, mesmo com o cadastro abreviado.
- Fica medido quanto a IA resolveu sozinha, quanto passou para um atendente e quantas visitas marcou.
Perguntas de negócio que responde
Faça estas perguntas ao seu agente quando o caso estiver pronto.
O que você precisa
- O sistema que guarda o catálogo e a disponibilidade conectado na Nekt (CRM, ERP ou banco do site)
- A ferramenta de WhatsApp com o histórico de mensagens chegando ao lakehouse (conector ou webhook)
- A regra do negócio para o que pode ser oferecido e quando a conversa vai para um humano
O que você recebe
- Uma tabela de consumo por tenant, uma linha por item ofertável, com texto pronto para o agente
- Um índice de busca que traduz o jeito do cliente escrever para o código do cadastro
- Uma credencial do agente restrita às tabelas de consumo
- Um painel de atendimento: resolvido pela IA, transbordo, fora do horário e agendamentos
Onde ativar
Lê a tabela de consumo e o índice de busca com SQL fixo e token restrito.
Resolvido pela IA, transbordo, fora do horário e agendamentos por loja e dia fechado.
Cache sem atualizar, número de WhatsApp com qualidade baixa e pico de transbordo.
A tabela de consumo é simples. O trabalho está em fechar a regra de elegibilidade, o dicionário de termos e o escopo da credencial antes de abrir o canal. O detalhado traz as regras de negócio, as armadilhas e o teste de aceitação. Ou mande tudo direto para o seu agente com o MCP da Nekt.
O agente de WhatsApp lê o catálogo bruto do CRM: oferece imóvel já vendido, mostra preço zerado, não acha o produto porque o cadastro está abreviado e mistura os itens de dois clientes que usam o mesmo agente. Depois ninguém sabe dizer quanto a IA resolveu, porque conversa de um turno conta como atendimento e status de pré-agendamento conta como visita.
Como costuma ser feito, e a regra
Cada linha é um erro que já aconteceu na prática.
O agente não lê o catálogo bruto. Monte uma tabela de consumo com os itens elegíveis pela regra do negócio: imóvel marcado para exibição no site e com status de venda, venda e aluguel ou em negociação; lançamento separado de usado; locação com aluguel maior que zero e abaixo de um teto que corta valor digitado errado; produto ativo. Uma linha por item, com as colunas que o cliente pergunta: tipo, bairro, quartos, área, valor e link.
Campos aninhados (infraestrutura, características, fotos) viram texto legível, com um rótulo por campo. Valor sai no padrão brasileiro (R$ 1.250.000,00). Valor zero ou nulo vira uma frase fixa, como 'Entre em contato para informações de valores', nunca R$ 0,00. Lançamento mostra 'a partir de'; usado mostra o valor. A primeira foto vem com URL pública.
O motor SQL do lakehouse não tem função de similaridade de texto. Pré-compute um índice invertido com peso pela raridade do termo e um dicionário de apelidos validado pela área (qj para queijo, bov para bovino). Marque qual palavra do cadastro é a categoria: em muitos ERPs a primeira palavra da descrição é o produto e o resto é marca ou sabor. Sem isso, quem pede picanha recebe um empanado sabor picanha.
Canal externo é superfície de ataque. As consultas ficam fixas no backend; o texto do cliente entra só como parâmetro, validado por lista de caracteres permitidos. A credencial do agente é um token MCP com escopo nas tabelas de consumo, nunca uma chave de API com acesso total. O escopo é congelado na criação: incluir uma tabela exige gerar e trocar o token, e a data de vencimento do token entra no monitoramento.
Quando o mesmo agente atende vários clientes, cada linha leva o tenant_id e o agente filtra por ele sempre. O cache de itens e o cache de contatos ficam em tabelas separadas, cada uma com o seu tenant. Cliente novo entra por configuração, não copiando a transformação de outro.
Expor estoque, custo ou dado de outro cliente num canal externo exige aval escrito. Num caso real, foi aprovado responder se há estoque, não quanto há. Registre a condição junto da aprovação: se o agente passar a mostrar a quantidade, a aprovação deixa de valer. Dado pessoal de outros contatos nunca sai na resposta.
Se o item não existe no catálogo, o agente diz que não encontrou e oferece parecidos. Se existe e está sem estoque, vendido ou reservado, diz que está indisponível. Item vendido ou reservado nunca aparece como disponível.
Escreva quando a IA passa a conversa para um atendente: negociação de preço, reclamação, envio de documento, pergunta fora do catálogo ou pedido do cliente. Cada transferência fica registrada com motivo, fila e horário. O indicador é a parcela de atendimentos resolvidos sem transbordo, por fila e por dia fechado.
Conversa real tem mais de um turno; conversa de um turno é só a abordagem inicial. Agendamento conta só quando existe na tabela de agendamentos; status como pré-agendado ou em atendimento não é visita. Se cliente e IA gravam o mesmo horário em cada turno, o tempo de resposta não é calculável e não deve ser reportado.
A tabela de consumo roda por evento logo depois da fonte, nunca em gatilho manual. Cada linha guarda a data da última carga. Se a carga atrasou além do limite combinado, o agente não confirma disponibilidade e diz que um atendente vai confirmar.
Como medir o atendimento da IA
A partir do histórico de conversas, mensagens, transferências e agendamentos.
Definições
Armadilhas que já aconteceram
O agente lia o cadastro inteiro do CRM e oferecia imóveis que não estavam liberados para divulgação ou já estavam vendidos.
Aplique a regra de exibição na tabela de consumo, não no prompt.
A busca devolvia um empanado sabor picanha para quem pedia picanha, porque a descrição curta ganhava o ranking. Apertar o limiar para ter resposta única piorou.
Marque o termo de categoria e meça o acerto entre os N primeiros.
Dezenas de status livres do atendimento foram agrupados e o pré-agendado entrou como visita marcada pela IA.
Agendamento só existe na tabela de agendamentos.
Num retrato, boa parte das lojas tinha a IA ligada e nenhuma conversa real. O indicador de IA ligada vinha verdadeiro por padrão mesmo sem o módulo contratado.
Considere operante só quem tem o módulo contratado e a IA ligada, e meça conversa real.
Os links de áudio e imagem entregues pela ferramenta de WhatsApp expiram em cerca de 30 dias, e o histórico ficou sem o conteúdo.
Baixe a mídia e transcreva os áudios de forma incremental logo depois de cada carga.
A API da ferramenta de atendimento só devolvia as últimas semanas de tickets. A tabela era uma janela que andava e o mês anterior tinha menos da metade dos tickets reais.
Acumule numa tabela própria, um registro por id, com a versão mais recente vencendo.
Teste de aceitação
O caso está pronto quando todos os itens passam.
- Nenhum item da tabela de consumo está vendido, reservado, inativo ou fora da divulgação na fonte, na mesma data de carga.
- Para cada tenant, a contagem de itens da tabela de consumo bate com a contagem de itens elegíveis no CRM daquele cliente.
- Num conjunto de pelo menos 30 perguntas reais de clientes, o item certo aparece entre os 3 primeiros resultados em pelo menos 9 de cada 10.
- Uma consulta com o token do agente a qualquer tabela fora das de consumo devolve erro de acesso.
- Atendimentos resolvidos pela IA + atendimentos transferidos = total de atendimentos fechados no dia, sem sobra.
Pacote para o agente
Cole no Claude, ChatGPT ou outro cliente com o MCP da Nekt conectado.
Assistente de atendimento no WhatsApp - Responda só com dados das tabelas de consumo do agente: <tabela de itens>, <tabela de agendamentos>. Nunca use o catálogo bruto. - Filtre sempre pelo tenant_id <tenant>. Nunca mostre item ou contato de outro tenant. - Item disponível = item presente na tabela de consumo na última carga. Vendido, reservado ou inativo não é oferecido. - Se o item não existe, diga que não encontrou e ofereça até 3 parecidos. Se existe e está indisponível, diga que está indisponível. - Preço: use o campo formatado. Valor ausente: 'Entre em contato para informações de valores.' Lançamento: 'a partir de'. - Estoque: diga se há, não quanto há, salvo aprovação registrada. - Nunca informe dado pessoal de outros contatos, custo, margem ou comissão. - Passe para um atendente quando houver negociação de preço, reclamação, envio de documento, pergunta fora do catálogo ou pedido do cliente. Registre o motivo. - Se a última carga tiver mais de <n> horas, não confirme disponibilidade: diga que um atendente vai confirmar. - Fora do horário da loja, informe o horário de atendimento e ofereça agendamento. Exceções por cliente: - <cliente>: regra de exibição = <campo> igual a 'Sim' e status em <lista>. - <cliente>: dicionário de apelidos aprovado em <data> pela área <área>. - <cliente>: estoque pode ser informado em quantidade (aprovação de <data>).
Construa no meu workspace Nekt o caso "Assistente de IA no WhatsApp" seguindo as regras em https://academy.nekt.com/casos/assistente-whatsapp.md. 1) Encontre as tabelas de origem e confirme as colunas usadas pelas regras. 2) Crie uma transformação no grão indicado aplicando todas as regras. 3) Rode o teste de aceitação e me mostre o resultado de cada item. 4) Crie o context document do caso no workspace, com as exceções dos meus clientes em aberto para eu preencher.
Variações
A mesma tabela alimenta o site e o feed XML dos portais imobiliários, com URL pública das fotos.
Uma linha de texto por item enviada a um banco vetorial, com metadados para filtrar por tenant e status.
O mesmo índice atende o vendedor que pergunta no WhatsApp se há o produto no centro de distribuição, sem expor a quantidade.