Aberto a posições de AI Engineer remoto ou híbrido
Competência

Visão com modelos multimodais: ler notas fiscais e romaneios sem inventar

No AgendaGo, que está em produção, um modelo multimodal lê as notas fiscais e os romaneios de fornecedores para atualizar o estoque. O importante é o que o modelo decide e o que o código decide.

Onde a apliquei

O que é e qual é o problema

Um modelo multimodal recebe imagens além de texto. Aplicado a documentos, pode extrair dados de uma nota fiscal ou de um romaneio sem um template por fornecedor. O problema é que ele pode errar ou inventar um dado com total confiança, e um dado mal lido que movimenta estoque é um erro de negócio.

Como fiz no AgendaGo

O modelo extrai fornecedor, número, data, total e itens de cada nota fiscal ou romaneio, e é instruído a usar null e nunca inventar um valor. Todo o resto é feito pelo código:

  • Uma validação determinística limita itens e tamanhos e exige uma janela de datas.
  • O cruzamento dos itens com o catálogo é feito por código determinístico, não pelo modelo.
  • O que foi lido vai para uma área de preparação. O estoque só se move quando uma pessoa confirma.
  • Um bloqueio por sha256 impede enviar o mesmo arquivo duas vezes.
  • PDFs que têm camada de texto usam extração de texto em vez de visão.

Decisões e compromissos

Deixei para o modelo apenas a extração, que é o que o código não consegue fazer. A interpretação, o cruzamento com o catálogo e a decisão de movimentar estoque ficam em código determinístico e com uma pessoa. Paga-se um passo de confirmação por documento; em troca, um erro de leitura não chega ao estoque sem que alguém veja.

O texto que vem dentro de um arquivo é tratado como dado, não como instrução. É a defesa contra prompt injection: um romaneio que diga “ignore o que veio antes” continua sendo um romaneio.

Stack relacionado

  • OpenAI
  • Supabase
  • PostgreSQL