Como processar em lote 50 POs de construção
em uma única planilha de custos do trabalho
Uma GC comercial de médio porte com oito projetos ativos recebe pedidos de compra de materiais de cerca de 40 fornecedores todos os meses. A madeireira envia um PDF por e-mail. O distribuidor de drywall envia uma confirmação de pedido manuscrita por fax. O fabricante de vergalhões gera um relatório do sistema com 14 itens de linha de barra #4, #5 e #6 — cada um pertencente a uma sequência de concretagem diferente em um andar diferente. Até o dia 25, o contador do projeto tem mais de 50 POs na frente dele, e cada item de linha precisa de três coisas antes de entrar no sistema de custos do trabalho: um número de trabalho, um código de custo CSI MasterFormat e o tipo de custo correto. A extração em si não é a parte difícil. É manter 400 pontos de dados longe do razão de custos do projeto errado.
Principais conclusões
- Todo fim de mês, o contador do projeto abre 50 POs de fornecedores e atribui manualmente a 400 itens de linha um número de trabalho, um código de custo CSI e um tipo de custo — cinco campos por linha que nenhum PO de fornecedor imprime.
- Na linha 200, a fadiga de alternância de contexto se instala — um parafuso de drywall cai na Divisão 06 (estrutura de madeira) porque seu cérebro ainda não saiu do modo madeira — e um pacote de estruturação de US$ 30.000 classificado incorretamente na divisão errada esconde um estouro de custo que consome 10% do lucro do projeto.
- Crie regras de inferência uma vez — nome do fornecedor mapeia para número de trabalho, descrição do item mapeia para código CSI — e o ImageToTable.ai as aplica em todos os POs, mudando seu fim de mês de 400 decisões manuais de entrada de dados para 120 revisões de exceção em uma única planilha unificada.
A pergunta não é "quantos POs processamos por mês". É "quantos chegam na semana antes do prazo do saque". Esse número — não o total mensal — determina se o fechamento do mês é um processo controlado ou uma correria de 14 horas.
O Que o Fornecedor Envia vs. O Que Seu Sistema de Custo de Obra Exige
A diferença entre o PO de um fornecedor e o seu sistema de custo de obra é maior do que a maioria das pessoas imagina — e começa pelos próprios campos.
Um PO típico de fornecedor de materiais contém: nome do fornecedor, data do PO, número do PO, código do item (SKU deles), descrição do item ("2×6 #2 SPF 16'"), quantidade pedida, preço unitário, total da linha e um total geral. Às vezes, um nome de obra rabiscado no campo "referência", se você tiver sorte. Quase nunca o seu número interno do trabalho, código de custo ou tipo de custo — porque o ERP do fornecedor não fala CSI MasterFormat e não conhece a sua estrutura contábil.
O seu sistema de custo de obra — seja Sage 100 Contractor, Sage Intacct, Viewpoint Vista, Foundation ou QuickBooks com um add-on de construção — exige: número do trabalho, código de custo (ex.: 06 11 00 para estrutura de madeira), tipo de custo (Material, Mão de Obra, Equipamento, Subempreiteiro, Outro), fase ou sub-trabalho, nome do fornecedor, número do PO, data, descrição do item, quantidade, preço unitário, total da linha e se esse custo é comprometido ou real. São pelo menos cinco campos que o PO do fornecedor não traz — e são esses campos que determinam se os seus relatórios de custo de obra são precisos ou ficção.
Preencher essa lacuna é o que o contador do projeto faz, item de linha por item de linha: ler a descrição do item → determinar a qual divisão da CSI ela pertence → consultar ou lembrar o código de custo de 6 dígitos → atribuir o número do trabalho → inserir o tipo de custo → finalmente digitar a quantidade e o preço que já estavam impressos na página. Para um PO com 12 itens de linha, são 12 rodadas desse ciclo mental. Para 50 POs com média de 8 linhas cada, são 400 rodadas — ao longo de uma semana em que o prazo do saque já está se aproximando.
O Financial Benchmarker 2025 da CFMA relata que GCs bem administrados operam com margens de lucro líquido de 5–8%. Em um projeto de $5 milhões, isso representa $250.000 a $400.000 de lucro líquido. Um único pacote de estruturação de $30.000 classificado erroneamente na divisão errada não apenas distorce um relatório — ele esconde um estouro de custo que pode consumir 10% de toda a margem de lucro do projeto antes que alguém perceba.
O Problema do Código de Custo: Quando "2×6 Tratado sob Pressão" Não é o Mesmo que 06 11 00
O CSI MasterFormat organiza o trabalho de construção em 50 divisões, cada uma subdividida em seções e subseções identificadas por códigos de 6 dígitos. A Divisão 03 é Concreto. A Divisão 04 é Alvenaria. A Divisão 06 é Madeira, Plásticos e Compósitos. Dentro da Divisão 06, 06 11 00 é Estrutura de Madeira, enquanto 06 16 00 é Revestimento. A diferença entre 06 11 00 e 06 16 00 não é trivial — é a diferença entre estrutural e fechamento, e um gerente de projeto que vê um alerta de custo acima do orçamento em 06 11 00 precisa saber que o número é real.
O problema: o PO do seu fornecedor de madeira não diz "06 11 00." Ele diz "2×6 #2 SPF 16'" com o SKU interno deles. O PO do fabricante de vergalhões lista "#4 Grade 60 rebar — 20' lengths." O PO do fornecedor de drywall diz "5/8″ Type X Gypsum Board." Nenhum deles contém um código CSI. Alguém precisa ler cada item de linha, classificá-lo mentalmente e atribuir o código correto. E depois fazer isso de novo para os próximos 399 itens de linha.
É aqui que o processo manual falha — não porque alguém é ruim no trabalho, mas porque a alternância de contexto é cara. Você alterna de classificar um item de madeira para estrutura (06 11 00) para um parafuso de ancoragem de concreto (03 16 00) para um suporte de duto de HVAC (23 31 00) no espaço de três itens de linha. No item 200, a fadiga se instala, e um parafuso de drywall — que pertence a 09 29 00 (Placa de Gesso) — é codificado como 06 11 00 porque seu cérebro ainda está no "modo madeira" do PO anterior. O erro só aparecerá no fechamento do mês, quando a divisão 06 mostrar um custo que não corresponde a nenhuma atividade de estrutura, e alguém passa uma tarde rastreando-o.
As plataformas de software de construção estão cientes desse problema — é por isso que Procore, CMiC e Viewpoint Vista impõem a seleção do código de custo no ponto de entrada do compromisso. Mas esses mecanismos de imposição só funcionam quando os dados já estão no sistema. Eles não resolvem o problema de colocá-los no sistema a partir do PDF de um fornecedor.
Para uma análise mais aprofundada do mapeamento de códigos CSI MasterFormat durante a extração de um único PO — incluindo a configuração de colunas de código de custo e hierarquias de fase de trabalho em vários níveis — consulte nosso passo a passo sobre extração de código de custo em ordens de compra de construção.
O Fluxo de Trabalho em Lote: Defina uma Vez, Extraia de Todos os Fornecedores
A alternativa operacional é inverter o fluxo de trabalho: defina seu esquema de saída — as colunas exatas que seu sistema de custos de trabalho espera — uma vez, e então alimente cada PO de fornecedor pelo mesmo pipeline de extração. Em vez de processar um PO por vez (extrair, baixar, copiar e colar na planilha mestre, repetir), você processa 50 POs como uma unidade e obtém uma saída unificada.
Você começa definindo seus cabeçalhos de coluna — os mesmos cabeçalhos que seu sistema de custos de trabalho ou modelo de importação do ERP espera:
Supplier Name | PO Number | PO Date | Job # | Cost Code | Cost Type | Item Code | Item Description | Qty Ordered | Unit Price | Line Total | PO Total
Em seguida, você envia todos os 50 POs — o PDF do depósito de madeira, o scan do distribuidor de drywall, o printout do sistema do fabricante de vergalhões, o formulário de pedido gerado pelo QuickBooks do fornecedor de MEP — como um único lote. Isso é extração por nome de coluna: em vez de dizer à ferramenta onde cada campo está em cada documento (o que exigiria 50 modelos), você diz a ela o que cada campo significa. A IA localiza "PO Number" no formato do depósito de madeira entendendo o que é um número de PO, não onde ele fica no canto do layout específico deles. Ela encontra "Line Total" esteja o fornecedor colocando-o na coluna mais à direita de uma tabela ou diretamente abaixo da descrição do item, sem cabeçalho de coluna algum.
A diferença operacional que mais importa: você baixa um arquivo, não 50. Uma planilha com cada item de linha de cada PO, todas as colunas idênticas, todas as linhas prontas para classificar por número do trabalho ou filtrar por código de custo. Não há etapa de consolidação — nada de abrir 50 exportações individuais, copiar linhas para uma planilha mestre e torcer para que nada tenha se deslocado. A mesclagem acontece no momento da extração, não depois.
Os arquivos são processados com segurança e não são armazenados.
A vantagem de escalabilidade aparece quando o número de fornecedores cresce. Adicionar um 41º fornecedor com mais um formato de PO não custa nenhum tempo extra de configuração — não há modelo para criar, caixas delimitadoras para desenhar, nem configuração por fornecedor. As definições de colunas são independentes de formato. O PO do 41º fornecedor flui pelo mesmo pipeline que os primeiros 40, e a saída é a mesma planilha unificada com as mesmas colunas. Essa é a diferença entre um processo que fica mais difícil conforme você escala e um que permanece constante.
Quando o PO Não Imprime Seu Número de Trabalho Interno
Aqui está um problema específico da construção que os guias genéricos de extração de PO nunca abordam: a maioria dos fornecedores de materiais não tem seu número de trabalho interno no sistema deles. Eles têm o número do pedido deles. Eles podem ter um nome de projeto se você pediu para colocarem no campo de referência. Mas "Job 24-005" — a chave que vincula cada custo ao projeto certo no seu sistema contábil — está ausente do próprio documento.
Em um fluxo de trabalho manual, isso significa que o contador do projeto precisa olhar o nome do fornecedor, mapear mentalmente para o projeto certo ("Builders FirstSource = Job 24-005, Site Concrete Supply = Job 24-003") e inserir manualmente o número do trabalho para cada item de linha naquele PO. Para 50 POs em 8 projetos, são 50 atribuições manuais de número de trabalho, cada uma uma chance de colocar os materiais da Site Concrete no projeto errado.
É aqui que as colunas inferidas mudam a equação. Uma coluna inferida não apenas extrai o que está na página — ela aplica uma regra que você define para determinar um valor que não está impresso em nenhum lugar do documento. Para números de trabalho, você define uma coluna chamada "Job #" com regras de inferência como:
Job # (inferir do Nome do Fornecedor):
Builders FirstSource → 24-005 | ABC Supply → 24-005 | Site Concrete Supply → 24-003 | Rinker Materials → 24-003 | Gerdau Rebar → 24-003 | HD Supply → 24-006 | Ferguson → 24-006
Quando a IA processa um PO da Builders FirstSource, ela lê o nome do fornecedor no documento, compara com sua regra e preenche a coluna Job # com "24-005" — automaticamente, em cada item de linha daquele PO. Um PO da Site Concrete Supply recebe "24-003." Se um novo fornecedor aparecer cujo nome não está na sua lista de regras, a célula fica em branco — sem suposições erradas, sem erro silencioso — e você percebe durante a passada de verificação.
O mesmo padrão de inferência funciona para códigos de custo. Se todo pedido da Gerdau Rebar vai para 03 21 00 (Reinforcing Steel), você adiciona essa regra. Se a Builders FirstSource entrega tanto madeira para estrutura (06 11 00) quanto revestimento (06 16 00), a inferência é por descrição do item, não por fornecedor — a IA lê "2×6 #2 SPF" e mapeia para 06 11 00, lê "7/16″ OSB" e mapeia para 06 16 00. Você define o mapeamento uma vez; ele roda automaticamente em cada PO do lote.
O efeito líquido: dessas 400 decisões manuais de classificação em 50 POs, uma grande parte — normalmente 70% ou mais para um contratante com relacionamentos consistentes com fornecedores — é tratada por regras de inferência. O que resta para a passada de verificação são os 30%: novos fornecedores, tipos de materiais incomuns ou descrições ambíguas que exigem um julgamento humano. São 120 decisões em vez de 400 — e as 120 restantes têm uma célula em branco sinalizando-as para você, em vez de um código errado silenciosamente embutido nos dados.
Da Saída do Lote à Conciliação de Custos do Trabalho
A planilha que você baixa não é a linha de chegada. É a entrada para as três verificações que transformam os dados extraídos em um relatório confiável de custos do trabalho.
1. Classifique e subtotalize por trabalho e código de custo. Com as colunas Nº do Trabalho e Código de Custo preenchidas, uma única classificação agrupa cada item de linha do PO por projeto e, em seguida, por divisão CSI dentro de cada projeto. Subtotalize a coluna Total do Item de Linha por Nº do Trabalho para obter o custo de material comprometido por projeto. Subtotalize por Código de Custo para ver exatamente quanto foi comprometido com a Divisão 03 (Concreto) vs. Divisão 06 (Madeira) vs. Divisão 09 (Acabamentos). O que antes exigia somar 50 arquivos de PO separados agora é uma única tabela dinâmica em uma planilha.
2. Compare os custos comprometidos com o orçamento do projeto. Cada trabalho tem um orçamento de custos dividido por código de custo — seja no seu ERP (Sage, Viewpoint, Procore) ou em uma planilha mantida pelo gerente de projeto. Com sua saída do lote subtotalizada por código de custo, um VLOOKUP contra o orçamento revela a variação imediatamente: a Divisão 06 está 12% acima do orçamento comprometido porque os preços da madeira dispararam. A Divisão 03 está 5% abaixo porque a concretagem foi menor que o estimado. Essas são as conversas que você quer ter antes de o pacote de saque sair, não depois que as renúncias de privilégio forem assinadas.
3. Separe os custos comprometidos dos custos reais. Um PO representa um custo comprometido — dinheiro que você obrigou, mas não necessariamente gastou. A fatura que chega quando os materiais são entregues representa um custo real. Manter esses dois distintos é fundamental para a contabilidade da construção: os custos comprometidos afetam sua previsão de orçamento versus real; os custos reais afetam seu fluxo de caixa. A saída do lote, com uma coluna que rastreia se cada linha está "Comprometida" ou "Faturada", dá a você os dois números na mesma planilha. Classifique por status para separá-los; subtotalize ambos para ver a lacuna entre comprometido e real por projeto.
Para contratantes cujo volume de POs cresceu além do que até mesmo um fluxo de trabalho em lote bem projetado pode lidar no tempo disponível, a estrutura de escalonamento em nosso guia para escalar o processamento de documentos sem adicionar pessoal cobre o lado organizacional — desde o design do processo até a estrutura da equipe em diferentes limites de volume.
Quando uma Extração Dá Errado: Reprocessamento Parcial em vez de Refazer Tudo
Em um lote de 50 POs, algo vai estar errado em pelo menos dois ou três. Um scan borrado onde a IA lê $4.200 como $4.800. Um PO de fornecedor que usou um layout de duas colunas que a IA interpretou como uma tabela. Uma nota de entrega manuscrita misturada em um lote de POs impressos, onde a caligrafia é parcialmente ilegível. A questão não é se erros ocorrem — é se corrigi-los força você a reprocessar o lote inteiro.
A saída do lote é uma única planilha onde cada linha pertence a um item de linha de um PO. Se a linha 37 (o quinto item do PO de madeira da Builders FirstSource) tem uma quantidade errada, você não toca nas linhas 1–36 ou 38–400. Você reprocessa apenas aquele PO específico, copia a linha corrigida por cima da errada e segue em frente. A estrutura da planilha permanece intacta. Não há efeito cascata — nada de "re-extrair o PO #17, depois re-mesclar todos os arquivos, depois reconstruir as tabelas dinâmicas." O erro fica contido na sua linha, e a correção fica contida na mesma linha.
Essa é a diferença entre um processo em lote em que você confia o suficiente para rodar na noite anterior ao prazo do saque e um que você abandona na primeira vez que ele gera mais trabalho do que economizou. O fluxo de trabalho em lote não precisa ser perfeito. Ele precisa ser contido — onde uma extração ruim não vira duas horas de reconstrução de arquivos. Se a taxa de erro é de 4–6% (típica para documentos de construção com formatos mistos e qualidade de scan variável), o tempo de correção no reprocessamento parcial é de 5 minutos — 3 POs ruins re-extraídos individualmente, linhas corrigidas coladas — vs. 45 minutos para refazer o lote inteiro. Essa é a métrica que determina se o fluxo de trabalho sobrevive à pressão de fim de mês.
O fluxo de trabalho em lote não precisa ser perfeito. Ele precisa ser contido — onde uma extração ruim não vira duas horas de retrabalho. Essa é a diferença entre um processo em lote em que você confia no fim do mês e um que você abandona após o primeiro ciclo de saque que o decepciona.
Perguntas Frequentes
Esta ferramenta consegue lidar com POs que misturam tipos de materiais — por exemplo, um único fornecedor enviando madeira e fixadores no mesmo pedido?
Sim. Cada item de linha do PO recebe sua própria linha na saída, e cada linha recebe seu próprio código de custo com base na descrição do item. Um PO de uma empresa de materiais de construção com madeira de estruturação 2×6 (06 11 00), revestimento OSB (06 16 00) e suportes de viga (06 05 23) gera três linhas com três códigos de custo diferentes — tudo do mesmo documento, tudo na mesma saída de lote. As regras de inferência lidam com a classificação por item; você não precisa dividir o PO antes do processamento.
E se eu receber POs como texto no corpo de e-mails ou fotos de pedidos manuscritos tiradas pelo celular?
O mecanismo de extração lida com ambos no mesmo lote que PDFs e digitalizações. Para POs no corpo de e-mails, tire uma captura de tela e envie-a. Para fotos de pedidos manuscritos tiradas pelo celular, a IA lê a caligrafia da mesma forma que lê texto impresso — a legibilidade é a principal variável que afeta a precisão. Uma nota manuscrita clara no papel timbrado do fornecedor é extraída com aproximadamente a mesma precisão que um PO impresso. Uma cópia carbono borrada fotografada em condições de pouca luz terá menor precisão e deve ser sinalizada para a passada de verificação.
Preciso atualizar minhas regras de inferência toda vez que adiciono um novo fornecedor ou inicio um novo projeto?
Para um novo fornecedor: sim, você adiciona uma regra — "Nome do Novo Fornecedor → Nº do Trabalho" — à sua coluna de inferência antes de processar. Isso é uma única edição de texto, não uma reconstrução de modelo. Para um novo projeto: você adiciona regras mapeando os fornecedores designados àquele projeto para o novo número do trabalho. Se você mover a Site Concrete Supply do Trabalho 24-003 para o Trabalho 24-008, atualiza uma linha na sua regra de inferência. A camada de extração de nomes de colunas não muda — as mesmas colunas "Nome do Fornecedor / Número do PO / Descrição do Item / Qtd / Preço Unitário" funcionam independentemente de quais projetos estão ativos.
Como o processamento em lote lida com a retenção em POs de materiais?
A maioria dos POs de materiais não inclui retenção — a retenção normalmente se aplica a subcontratos, não a compras de materiais. No entanto, para os casos em que isso ocorre (materiais sob encomenda com pagamentos progressivos, ou contratos de fornecedores que incluem cláusula de retenção), você pode adicionar uma coluna calculada — uma coluna que calcula um valor durante a extração em vez de apenas lê-lo da página. Defina "Net Due" com a lógica Line Total × (1 − Retainage %) e a IA calcula por item de linha, por PO. A taxa de retenção pode ser extraída do PO se estiver impressa, ou especificada como um parâmetro fixo na definição da coluna. Para um tratamento mais detalhado de colunas calculadas em diferentes tipos de documentos, consulte nossa introdução a colunas calculadas na extração de documentos.
Isso substitui meu ERP de construção?
Não. Isso resolve a camada de captura de dados — extrair dados de POs de materiais de PDFs de fornecedores e transformá-los em um formato estruturado e mapeado por código de custo. Não substitui o roteamento de aprovação do seu sistema contábil, a correspondência de três vias (PO-recebimento-fatura), o processamento de pagamentos, o gerenciamento de renúncia de garantia ou o relatório de WIP. Para um contratante que usa QuickBooks + planilhas, a saída do lote alimenta diretamente sua pasta de trabalho de custos do trabalho. Para um contratante no Sage 100, Sage Intacct ou Viewpoint Vista, substitui a etapa entre "PO de fornecedor recebido" e "dados importados para o ERP" — que, em muitas empresas, ainda é uma pessoa lendo um PDF e digitando números em uma tela do ERP. Para processamento individual de PO — extraindo campos de um único PO de construção em vez de executar um lote completo — nosso guia de extração de PO individual cobre o fluxo de trabalho em detalhes.
Posso processar POs de vários projetos em um único lote?
Sim — e essa é a vantagem operacional de incluir o Nº do Trabalho como coluna. Carregue POs de todos os oito projetos ativos em um único lote. As regras de inferência atribuem os POs de cada fornecedor ao número do trabalho correto durante a extração. Após o download, classifique por Nº do Trabalho para agrupar todos os itens de linha por projeto. Um subtotal do Total da Linha por Nº do Trabalho fornece o custo de material comprometido por projeto em segundos. A alternativa — executar oito lotes separados, um por projeto, e depois consolidar — é exatamente o tipo de fragmentação que o fluxo de trabalho em lote elimina.