Todos os projetos
Case corporativoProjeto em equipe

Triagem documental com IA multimodal

Robô de Documentação

IA multimodal que reconhece 26 tipos de documento, arquiva cada um na pasta certa e devolve ao CRM o checklist do que falta.

Papel
Autor principal · com 1 colaborador
Período
jun a out 2026
Stack
  • Python
  • FastAPI
  • Gemini
  • Claude
  • SharePoint
  • CRM
  • SQLite
  • SSE
  • Docker
tipos de documento reconhecidos
26
por documento, em média
6,1 s
de acerto no tipo (89 de 95)
94%
testes automatizados
860+

Números medidos no repositório.

Execução · Empresa Exemplo Ltda12 arquivos · 41 s · mostrando 5
  1. Extração
  2. Classificação
  3. Revisão
  4. SharePoint
  5. CRM
Arquivo recebidoNovo nomePastaSituação
scan_0012.pdfBALANCETE EMPRESA EXEMPLO 08.2026Contábilok
IMG_4471.jpgCONTRATO SOCIAL EMPRESA EXEMPLOSocietáriook
faturamento (2).xlsxFATURAMENTO EMPRESA EXEMPLO 12.2025 A 08.2026Faturamentook
doc socio.pdfRG SOCIO ANA EXEMPLOSóciosok
extrato.pdfENDIVIDAMENTO BANCARIO EMPRESA EXEMPLOEndividamentoConferir: período não identificado

Conferir: período não identificado (extrato.pdf)

Recriação ilustrativa com arquivos e empresa fictícios. A interface real fica atrás do login corporativo.

Contexto e problema

Para analisar crédito, o time comercial recebe do cliente um pacote com dezenas de arquivos (balancetes, contratos, extratos, documentos de sócios) em ZIP, RAR, fotos e PDFs escaneados. Alguém abria arquivo por arquivo, dava um nome, guardava na pasta certa do SharePoint e depois preenchia no CRM o link da pasta e o que ainda faltava para a análise.

O robô faz esse caminho sozinho: recebe o pacote a partir do card do CRM, classifica cada documento com IA, renomeia no padrão TIPO ENTIDADE MM.AAAA, arquiva na pasta certa e devolve ao CRM o link e um checklist das pendências.

Restrições do projeto

  • Na dúvida, quem decide é uma pessoa. A automação marca o que precisa de conferência e nunca reescreve tipo, período ou nome por conta própria.
  • Nada se perde. O modo de substituição não apaga a pasta anterior, e um arquivo com extração falha não conta como documento entregue.
  • Uma execução por cliente. Dois processamentos do mesmo cliente ao mesmo tempo são bloqueados na entrada.
  • Arquivos hostis existem. Extração recursiva com limites contra bombas de compressão, e links simbólicos em RAR são recusados.
  • Custo e latência importam. Cada documento passa por um modelo; escolher a configuração é uma decisão de engenharia, não de gosto.

Decisões que definiram o produto

Medir antes de escolher

Tipo e período corretos (de 95)

maior é melhor

  • Sem raciocínio (0)71
  • 512 tokens74
  • 1024 tokens73
  • Dinâmico (média de 2 rodadas)72

Latência média por documento

menor é melhor

  • Sem raciocínio (0)3,9 s
  • 512 tokens6,1 s
  • 1024 tokens7,3 s
  • Dinâmico (média de 2 rodadas)8,6 s

Custo para 95 documentos

menor é melhor

  • Sem raciocínio (0)US$ 0,18
  • 512 tokensUS$ 0,29
  • 1024 tokensUS$ 0,36
  • Dinâmico (média de 2 rodadas)US$ 0,44
Medido em 95 documentos reais contra uma classificação humana, sem cache. Acerto conta tipo e período juntos (só o tipo: 89 de 95). Duas rodadas iguais variaram cerca de 2 documentos, então as diferenças de acerto estão dentro do ruído. A escolha de 512 se apoia em latência e custo.

Arquitetura

Card do CRMPacote do clienteAPI de entradaUpload + rota por áreaTrava1 execução por clienteExtraçãoZIP, RAR, 7Z · limitesIA multimodalTipo, entidade, períodoRevisão por regrasSem IA · determinísticaNome padrãoTIPO ENTIDADE MM.AAAASharePointPasta certa · em blocosCRM atualizadoLink e checklistConferência humanaMarcado no checklistRetry com backoffDisjuntor após 5 erros

O analista envia o pacote a partir do card. A API identifica a área e o cliente e garante uma única execução por cliente. Os arquivos são extraídos com limites contra arquivos maliciosos, e cada documento é classificado por um modelo multimodal com saída em JSON. Depois de uma revisão por regras fixas, o documento é renomeado no padrão, enviado à pasta certa do SharePoint, e o CRM recebe o link e o checklist do que ainda falta.

Lições de operação

  • A extensão mente. Um vídeo salvo como .pdf quebrou a classificação. Hoje o tipo real do arquivo é detectado antes de qualquer outra etapa.
  • Teste nunca toca produção. Uma execução de testes contra o banco real cancelou um trabalho de verdade e gerou 97 cópias. Agora um teste e uma guarda na configuração impedem isso.
  • Sucesso precisa ser confirmado. Zero escritas confirmadas no CRM viram erro, nunca sucesso. O checklist fica salvo no banco, e um comando reenvia só a parte do CRM, sem repetir o upload.
  • Arquivos grandes têm caminho próprio. Acima de 20 MB, o documento vai para a API de arquivos do modelo, e no SharePoint o envio é em blocos acima de 100 MB.
  • Limite de requisição é esperado. Chamadas ao SharePoint têm retry com backoff e um disjuntor que abre após 5 bloqueios seguidos.

Meu papel

Concebi o robô e construí a base ao longo de quatro meses: o pipeline de ponta a ponta, as integrações com CRM e SharePoint, o padrão de nomes e pastas, o checklist, a idempotência e a operação. Em outubro, um colaborador conduziu uma rodada de endurecimento do classificador: o experimento de orçamento de raciocínio, a classificação em paralelo, a revisão por regras, o caminho para arquivos grandes e a proteção contra arquivos RAR maliciosos.

O que o produto entrega

  • Classificação de 26 tipos de documento, inclusive fotos e PDFs escaneados, com entidade, período de competência e sinalização de documentos de dívida.
  • Nomes e pastas padronizados, com pastas separadas para sócios e empresas do mesmo grupo.
  • Checklist de pendências no CRM, calculado sobre a pasta inteira, alinhado às regras da equipe de análise de crédito.
  • Acompanhamento ao vivo de cada execução e histórico completo.

O que eu faria diferente

  • Um conjunto de referência anonimizado no CI. Hoje a amostra rotulada tem documentos reais e não pode viver no repositório, então a regressão de acerto ainda é medida fora da esteira.
  • Pedir ao modelo um grau de confiança. Sem ele, a revisão depende só de regras; um score permitiria priorizar a conferência humana.
  • Planejar a saída do processo único antes. Banco simples e um worker atendem bem o volume atual, mas são o limite de escala conhecido.

Quer algo parecido no seu time?

Falar comigo