Todo distribuidor conhece o ritual: abrir o PDF do fornecedor, alternar para a planilha, começar a digitar tudo de novo. Linha por linha. Durante anos a regra foi que a entrada de cotação come metade da tarde de um vendedor. Não precisa ser assim.
O Bureau of Labor Statistics dos EUA registra que o comércio atacadista sozinho emprega mais de 6 milhões de pessoas. Uma fatia grande dessas horas vai para redigitação de dados — lendo o documento do fornecedor numa tela e digitando em outra. Isso não é trabalho especializado. Não é trabalho de julgamento. É copiar e colar em velocidade humana, e é o maior gargalo no pipeline de vendas do distribuidor.
O que a IA faz de verdade
O importador do Quotery normaliza o documento fonte (PDF, XLSX, XLS ou CSV) em texto estruturado, depois pede ao gpt-4.1-mini para extrair itens de linha, grupos e preços num schema JSON estrito. Sem parsing de texto livre — o modelo devolve um payload que corresponde exatamente ao que o importador espera. Um objeto QuoteSection envolve itens QuoteLine, cada um com código de produto, descrição, unidade, quantidade, preço unitário e campos de desconto. O modelo nunca vê seu catálogo, nunca toca seus níveis de estoque, e nunca interage com os dados do seu tenant. Ele só vê o documento que você fez upload.
O input que chega ao modelo é texto normalizado — a gente extrai os formatos binários proprietários primeiro. Para PDFs, isso significa extrair streams de texto página por página usando pypdf. Para Excel, leitura de células linha a linha produzindo uma representação tabular em texto. Para CSVs, validação da estrutura de colunas. Só a representação em texto sai do perímetro do seu tenant.
Determinístico primeiro, IA depois
Com as linhas candidatas, batemos os códigos de produto deterministicamente contra as quatro colunas de código do catálogo: SKU, import_code, internal_code e export_code. Um match exato de string em qualquer coluna é acerto. Só as linhas sem match determinístico vão para o gpt-4.1-mini, junto com uma lista curta de candidatos do seu catálogo. O modelo escolhe um ou rejeita todos.
Match determinístico de código é gratuito, instantâneo e nunca erra. O passo de IA custa latência e tokens, então a gente só paga quando precisa. Na prática, cerca de 60-70% das linhas resolvem deterministicamente — a IA cuida do resto, mais as linhas em que a descrição do fornecedor não bate com suas convenções internas de nomenclatura.
Três classificações, zero scores de confiança Cada linha importada cai com um de três rótulos: match exato, decisão da IA ou não encontrado. Não tem porcentagem de confiança, não tem caixa de 'talvez', não tem threshold difuso para calibrar. O método é o rótulo. Se você vê 'match exato', um código bateu. Se vê 'decisão da IA', o modelo escolheu do seu catálogo. Se vê 'não encontrado', você precisa cadastrar um produto ou corrigir um código de fornecedor.
Esse sistema de classificação significa que a experiência de revisão é uma triagem, não uma maratona de validação. Você escaneia as linhas 'não encontrado' e resolve. Todo o resto está pronto para precificar. Uma redigitação de 30 minutos vira uma revisão de 60 segundos.
Por que isso vence o OCR Pipelines de OCR tradicionais extraem texto de imagens e depois aplicam padrões de regex. Eles quebram em PDFs com múltiplas colunas, tabelas rotacionadas, células mescladas, e documentos de fornecedor que mudam de layout todo mês. Nossa abordagem pula completamente o parsing de layout — a gente entrega o texto bruto para um modelo que entende estrutura, não pixels. O mesmo pipeline processa uma planilha Excel limpa e um PDF bagunçado de fornecedor sem configuração por fornecedor.
Para mais detalhes sobre como lemos PDFs (e por que rejeitamos arquivos scaneados só de imagem), veja nosso post sobre os internals da extração de PDF.
