Soluções · Serviços financeiros
Um agente que classifica movimentos de dinheiro escolhendo de uma lista fechada, e não escrevendo uma frase que depois alguém interpreta.
Numa organização financeira, um agente útil não dá conselhos e não aprova nada: lê documentos e transações, enquadra-os numa categoria de um conjunto fixo, diz quão seguro está e pode responder «não sei». O resto — a decisão, a aprovação, a política — fica com as pessoas.
Oferta, com condiçõesNão escrevemos «entregue», porque não temos um agente deste tipo em produção אצל um cliente do setor financeiro. O que temos, e mostramos exatamente como tal, é uma conduta própria de ingestão que corre com os nossos dados: cinco módulos Python, 1.526 linhas, que leem notificações bancárias por e-mail e extratos em PDF, classificam cada transação através de ferramentas e escrevem-na em PostgreSQL com deduplicação, além de quatro fluxos de automação para webhooks de três processadores de pagamentos. O estado real, dito na mesma frase: o repositório não está sob git, os diretórios `tests/` e `webhook-server/` estão vazios, e a correspondência aproximada de nomes de contrapartida usa uma heurística de n-gramas marcada no código como «a substituir por um serviço de embeddings antes da produção». A parte de plataforma financeira em produção — fluxo de pedido, contrato, gráfico de pagamentos, auditoria — é um trabalho separado, com as suas provas, e aí escrevemos «entregue».
Os pedidos de agentes AI em serviços financeiros vêm quase sempre na forma de «responder aos clientes a perguntas sobre os nossos produtos». É um pedido legítimo, mas não é aí que se ganha tempo. O tempo perde-se noutro lado: alguém abre diariamente dezenas de notificações bancárias e de extratos, olha para uma descrição do tipo uma cadeia de maiúsculas com um código e decide se é um recebimento de um cliente, um salário, um imposto, uma prestação a um credor ou uma despesa operacional. Esse trabalho é repetitivo, aborrecido e, precisamente por isso, cheio de erros.
Um modelo linguístico é bom nisso, com uma condição: não lhe ser pedido para escrever uma resposta em texto livre. Se lhe pedir uma frase, você vai fazer o parsing, e o parsing vai sair errado. No nosso pipeline, o modelo não escreve: recebe sete ferramentas e tem de chamar exatamente uma — recebimento de um cliente, salário, imposto, pagamento a um credor, despesa operacional, comissão bancária ou desconhecido. Cada ferramenta pede, além do nome da contraparte ou da categoria, um score de confiança entre 0 e 1. «Desconhecido» pede um motivo escrito. A saída é uma estrutura, não uma opinião.
A segunda regra é que nada entra duas vezes. Cada transação extraída de uma notificação ou de um extrato recebe um identificador externo calculado como um prefixo de 16 caracteres de uma impressão SHA-256 sobre os seus campos, a coluna é única na tabela, e a inserção faz-se com `ON CONFLICT (external_id) DO NOTHING`. A consequência prática: a caixa de correio pode ser lida quantas vezes quiser, e o saldo não duplica. Sem esta regra, qualquer pipeline de ingestão financeira acaba, na terceira semana, a produzir duplicados que alguém limpa manualmente.
O que um agente assim não faz, e por que é importante escrever isso na página: não aprova um pagamento, não toma uma decisão de crédito, não dá recomendações de investimento e não responde ao cliente em nome da instituição. O score de confiança que devolve é a avaliação do modelo sobre si próprio, não uma medição de exatidão feita por nós — essa distinção é a diferença entre uma ferramenta e uma ilusão de controlo.