Durante um teste de 23 de abril à tarde, um contato com 15 empresas vinculadas enviou um pedido em PDF para a AVIENT. Três sintomas sérios apareceram em sequência:
- O assistente listou, ao pedir desambiguação, 3 empresas AVIENT que não existem (AVIENT BRASIL LTDA, AVIENT INDUSTRIA QUIMICA, AVIENT BRASIL S.A.). A única AVIENT vinculada é AVIENT COLORANTS BRASIL LTDA.
- Ao consultar as observações recorrentes do cliente, o assistente trouxe observações de outro cliente (da ULTRAOIL) e apresentou como se fossem da AVIENT — incluindo um e-mail pessoal de terceiro.
- Na hora de criar o pedido, o sistema detectou divergência e despejou 15 códigos técnicos na tela do cliente, exigindo que ele escolhesse um — situação embaraçosa só resolvida quando o cliente digitou o CNPJ manualmente.
Confirmamos que AVIENT e ULTRAOIL são clientes completamente independentes (CNPJ, cidade, limite de crédito, condições de pagamento — tudo diferente). O sintoma 2 era uma quase-violação de confidencialidade; se não fosse o erro em cascata que parou o pedido, observações e um e-mail de terceiro teriam ido para o SAP no pedido errado.
Internamente, o assistente recebe a lista de empresas vinculadas ao contato junto com um identificador técnico (card_code) de cada empresa — necessário para chamar o SAP. A convenção anterior entregava essa lista em dois blocos separados: primeiro os nomes numerados, depois uma segunda lista numerada com os identificadores em um bloco marcado como "uso interno".
Esse formato funciona bem com 2 ou 3 empresas. Com 15 empresas, o assistente precisa contar até a posição certa em duas listas paralelas, e cruzar mentalmente que o nome da posição 9 corresponde ao identificador da posição 9 na outra lista. Nessa contagem, o assistente pegou o identificador da posição 14 (que pertence à ULTRAOIL) pensando que era o da posição 9 (AVIENT).
Quando o assistente foi buscar as observações do último pedido desse cliente, usou o identificador errado — recebeu as observações da ULTRAOIL e, sem desconfiar, apresentou como se fossem da AVIENT.
Em paralelo, ao ter dúvida sobre qual AVIENT (só 1 vinculada, mas o assistente entrou em modo "desambiguação"), o modelo decidiu "ser prestativo" e listou três variantes AVIENT plausíveis do mercado — nenhuma delas de fato vinculada ao contato. Puro palpite do assistente.
1. Identificador ao lado do nome, na mesma entrada. A lista interna passa a entregar o identificador técnico logo abaixo do nome da empresa correspondente, marcado como "uso interno, não exibir". Elimina a necessidade de cruzar posição entre listas paralelas — tornando impossível acoplar o identificador de uma empresa ao nome de outra.
2. Proibição dura de inventar empresas. Uma regra agora diz: "só mencione empresas que estejam LITERALMENTE na lista do contexto. Não deduza, não complete, não ofereça variações plausíveis." Se houver dúvida sobre o nome que o cliente usou, o assistente consulta uma ferramenta de busca aproximada que devolve só as empresas que de fato combinam — nunca nomes "plausíveis no mercado".
3. Validação obrigatória antes de qualquer ação concreta. O assistente foi instruído a nunca avançar para buscar itens, verificar preços, criar pedido ou consultar observações sem ter o identificador correto resolvido a partir da lista. Se o nome extraído de um PDF não bater direto, usa a busca aproximada; se ainda assim não resolver, pede o CNPJ.
Foram adicionados testes específicos para prevenir a volta desse comportamento. Entre eles:
- Teste de regressão AVIENT × ULTRAOIL: monta exatamente a lista de 15 empresas vinculadas observada no teste e verifica, para cada empresa, que o identificador técnico está fisicamente colado ao seu nome — e nunca ao de outra empresa;
- Proibição de vazamento do identificador interno: nenhum teste permite que um código de cliente apareça em uma linha da resposta sem estar marcado como "uso interno";
- Busca por nome "AVIENT": verifica que a comparação aproximada casa com AVIENT COLORANTS (score positivo) e não casa com LUIS GUSTAVO MISSAGLIA / ULTRAOIL (score zero — eliminando o vetor do erro).
A suíte automatizada do projeto passou para 813 testes nesta rodada de correções.
Situacao: Um contato com 15 empresas vinculadas
enviou pedido da AVIENT. O assistente errou o cruzamento entre
nome e identificador técnico, pegou o identificador da ULTRAOIL
e trouxe as observações de pedidos antigos da ULTRAOIL para
dentro da conversa da AVIENT — incluindo um e-mail pessoal de
terceiro. Em paralelo, ofereceu ao cliente 3 variantes AVIENT
inexistentes. Por pouco observações de um cliente não foram
gravadas no pedido de outro.
Correcao: O formato interno da lista de
empresas agora coloca o identificador técnico imediatamente ao
lado do nome da empresa correspondente — fim do cruzamento por
posição em duas listas paralelas. Regras explícitas proíbem o
assistente de inventar nomes de empresas (só usa o que está
literalmente na lista) e de avançar para qualquer ação sem ter
resolvido o identificador correto. Uma busca aproximada por
nome desambigua quando necessário, mostrando apenas as
candidatas reais.
Impacto: Contatos com muitas empresas vinculadas
— cenário comum em representantes comerciais — passam a ter
pedidos processados corretamente de primeira, com
confidencialidade garantida entre clientes distintos. Nomes e
dados de um cliente nunca mais aparecerão em conversa de outro.
Códigos técnicos internos continuam sendo invisíveis para o
cliente final.