Como Processar em Lote 50 Ordens de Compra de Construção
em uma Única Planilha de Custos de Obra
Uma construtora comercial de médio porte com oito obras ativas recebe ordens de compra de materiais de cerca de 40 fornecedores todo mês. A madeireira envia um PDF por e-mail. A distribuidora de drywall envia por fax uma confirmação de pedido manuscrita. O fabricante de vergalhões gera um relatório do sistema com 14 itens de barras #4, #5 e #6 — cada uma pertencente a uma sequência de concretagem diferente em um andar diferente. Até o dia 25, o contador da obra tem mais de 50 OCs na sua frente, e cada item precisa de três coisas antes de entrar no sistema de custos: um número de obra, um código de custo CSI MasterFormat e o tipo de custo correto. A extração em si não é a parte difícil. O desafio é evitar que 400 pontos de dados se desviem para o razão de custos da obra errada.
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 obra, um código de custo CSI e um tipo de custo — cinco campos por linha que nenhum PO de fornecedor imprime.
- Por volta da 200ª linha, a fadiga de alternância de contexto se instala — um parafuso de drywall vai parar 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 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 obra, descrição do item mapeia para código CSI — e o ImageToTable.ai as aplica em todos os POs, transformando 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.
Por que os Lotes de OPs de Construção Chegam de Uma Vez — e Por Que Isso é um Problema Estrutural, Não de Planejamento
Na maioria dos setores, você escolhe quando processar um lote. Você acumula faturas por uma semana e as processa juntas. Na construção, o momento do lote é escolhido para você — pelo ciclo mensal de saques e pelos prazos de entrega de materiais.
De acordo com a AIA A201 §9.3, o empreiteiro envia um pedido de pagamento consolidado ao proprietário a cada mês. Mas antes que esse pedido chegue ao proprietário, a construtora precisa conciliar cada custo de material que foi comprometido, recebido ou instalado em todos os projetos ativos. Isso significa que toda OP de material — do fornecedor de madeira, da concreteira, da siderúrgica, do distribuidor MEP — precisa estar no sistema de custos da obra, codificada com o código de custo e o projeto corretos, antes que o pacote de saque seja enviado.
Ao mesmo tempo, os pedidos de material não são distribuídos uniformemente ao longo do mês. Um pacote de estrutura para o Projeto A é pedido na semana 1 e a OP chega na semana 2. Os materiais de cobertura para o Projeto B são pedidos na semana 3 e a OP aparece na semana 4. Mas todos precisam ser conciliados antes do fechamento do mês — que é na mesma semana. Para uma construtora gerenciando de cinco a oito projetos, a janela de convergência é brutal: de 50 a 150 OPs de material chegam no mesmo período de 10 dias a cada mês.
A pergunta não é "quantas OPs processamos por mês". É "quantas chegam na semana anterior ao 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.
Isso é diferente do agrupamento de faturas de subcontratados, onde a dificuldade está em 30 formatos diferentes convergindo para o mesmo prazo. Aqui, a camada adicional é a codificação de custos: cada item de cada pedido de compra de material precisa ser mapeado para uma divisão, seção e tipo de custo do CSI MasterFormat antes de alimentar o razão de custos da obra. Esse mapeamento é uma tarefa cognitiva, não de entrada de dados — e é o que torna o processamento de POs na construção civil uma ordem de grandeza mais difícil do que a aquisição genérica.
O que o Fornecedor Envia vs. O que Seu Sistema de Custos da Obra Exige
A diferença entre o PO de um fornecedor e seu sistema de custos da obra é maior do que a maioria 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 do item e um total geral. Às vezes, um nome de obra rabiscado no campo "referência", se você tiver sorte. Quase nunca seu número interno de obra, código de custo ou tipo de custo — porque o ERP do fornecedor não fala CSI MasterFormat e não conhece sua estrutura contábil.
Seu sistema de custos da obra — seja Sage 100 Contractor, Sage Intacct, Viewpoint Vista, Foundation ou QuickBooks com um complemento para construção — exige: número da obra, código de custo (ex.: 06 11 00 para estrutura de madeira), tipo de custo (Material, Mão de Obra, Equipamento, Subcontratado, Outro), fase ou subobra, nome do fornecedor, número do PO, data, descrição do item, quantidade, preço unitário, total do item e se esse custo é comprometido ou real. Isso representa pelo menos cinco campos que o PO do fornecedor não possui — e são esses campos que determinam se seus relatórios de custos da obra são precisos ou fictícios.
Preencher essa lacuna é o que o contador do projeto faz, linha por linha: ler a descrição do item → determinar a qual divisão CSI ele pertence → consultar ou lembrar o código de custo de 6 dígitos → atribuir o número do serviço → inserir o tipo de custo → finalmente digitar a quantidade e o preço que já estavam impressos na página. Para um pedido com 12 itens, são 12 rodadas desse ciclo mental. Para 50 pedidos com média de 8 linhas cada, são 400 rodadas — em uma semana em que o prazo de fechamento já está se aproximando.
O Relatório Financeiro de 2025 da CFMA indica que construtoras bem administradas operam com margens de lucro líquido de 5 a 8%. Em um projeto de US$ 5 milhões, isso representa US$ 250 mil a US$ 400 mil de lucro líquido. Um único pacote de estruturação de US$ 30 mil classificado na divisão errada não distorce apenas 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 "Madeira Tratada 2×6" 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: a ordem de compra do seu fornecedor de madeira não diz "06 11 00". Ela diz "2×6 #2 SPF 16'" com o SKU interno deles. A OC do fornecedor de vergalhões lista "#4 Grade 60 rebar — 20' lengths." A OC do fornecedor de drywall diz "5/8″ Type X Gypsum Board." Nenhum desses itens contém um código CSI. Alguém precisa ler cada item, classificá-lo mentalmente e atribuir o código correto. E depois repetir o processo para os próximos 399 itens.
É aqui que o processo manual falha — não porque alguém é ruim no trabalho, mas porque a alternância de contexto é cara. Você alterna entre classificar um item de madeira para estrutura (06 11 00), um chumbador de concreto (03 16 00) e um suporte de duto de HVAC (23 31 00) no espaço de três itens. No item 200, a fadiga aparece, e um parafuso para drywall — que pertence a 09 29 00 (Chapas de Gesso) — acaba codificado como 06 11 00 porque seu cérebro ainda está no modo "madeira" da OC anterior. O erro só vai 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 perder uma tarde rastreando a origem.
As plataformas de software de construção estão cientes desse problema — é por isso que Procore, CMiC e Viewpoint Vista exigem a seleção do código de custo no momento do lançamento do compromisso. Mas esses mecanismos de controle só funcionam quando os dados já estão no sistema. Eles não resolvem o problema de colocar esses dados no sistema a partir de um PDF do fornecedor.
Para um olhar mais aprofundado sobre o mapeamento de códigos CSI MasterFormat durante a extração de uma única OC — incluindo a configuração de colunas de código de custo e hierarquias de fases de obra em vários níveis — veja nosso passo a passo sobre extração de código de custo em ordens de compra de construção.
O Fluxo em Lote: Defina Uma Vez, Extraia de Cada Fornecedor
A alternativa operacional é inverter o fluxo de trabalho: defina seu esquema de saída — as colunas exatas que seu sistema de custos de obra 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 os cabeçalhos das colunas — os mesmos cabeçalhos que seu sistema de custos de obra ou modelo de importação do ERP espera:
Nome do Fornecedor | Nº do PO | Data do PO | Obra # | Código de Custo | Tipo de Custo | Código do Item | Descrição do Item | Qtd. Pedida | Preço Unitário | Total da Linha | Total do PO
Em seguida, você carrega todos os 50 POs — o PDF da madeireira, o escaneamento do distribuidor de drywall, o relatório do sistema do fabricante de vergalhões, o formulário de pedido gerado pelo QuickBooks do fornecedor 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 o "Nº do PO" no formato da madeireira entendendo o que é um número de PO, não onde ele fica no canto do layout específico deles. Ela encontra o "Total da Linha" quer o fornecedor o coloque na coluna mais à direita de uma tabela ou diretamente abaixo da descrição do item, sem nenhum cabeçalho de coluna.
A diferença operacional que mais importa: você baixa um arquivo, não 50. Uma planilha com todos os itens de todas as ordens de compra, colunas idênticas, linhas prontas para classificar por número de obra 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 nada ter 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 tempo extra de configuração — não há modelo a criar, caixas delimitadoras a 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 Obra Interno
Aqui está um problema específico da construção civil que guias genéricos de extração de PO nunca abordam: a maioria dos fornecedores de materiais não tem seu número de obra interno no sistema deles. Eles têm o número do pedido deles. Podem ter um nome de projeto, se você pediu para colocarem no campo de referência. Mas "Obra 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 manual, isso significa que o contador do projeto precisa olhar o nome do fornecedor, associá-lo mentalmente ao projeto certo ("Builders FirstSource = Obra 24-005, Site Concrete Supply = Obra 24-003") e digitar manualmente o número da obra para cada item de linha naquele PO. Para 50 POs em 8 projetos, são 50 atribuições manuais de número de obra, 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 lugar nenhum do documento. Para números de obra, você define uma coluna chamada "Obra nº" com regras de inferência como:
Nº do 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 pedido da Builders FirstSource, ela lê o nome do fornecedor no documento, compara com sua regra e preenche a coluna Nº do Job com "24-005" — automaticamente, em cada item desse pedido. Um pedido da Site Concrete Supply recebe "24-003". Se um novo fornecedor aparecer sem estar na sua lista de regras, a célula fica em branco — sem suposições erradas, sem erro silencioso — e você percebe durante a 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 (Aço para Armadura), 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ê "OSB 7/16″" e mapeia para 06 16 00. Você define o mapeamento uma vez; ele roda automaticamente em todos os pedidos 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 verificação são os 30%: novos fornecedores, tipos de material incomuns ou descrições ambíguas que exigem 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 Extração à Conciliação de Custos da Obra
A planilha que você baixa não é a linha de chegada. É a entrada para as três verificações que transformam dados extraídos em um relatório confiável de custos da obra.
1. Classificar e subtotalizar por obra e código de custo. Com as colunas Nº da Obra e Código de Custo preenchidas, uma única classificação agrupa cada item de PO por projeto e, em seguida, por divisão CSI dentro de cada projeto. Subtotalize a coluna Total do Item por Nº da Obra 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. Comparar custos comprometidos com o orçamento do projeto. Cada obra tem um orçamento de custos detalhado por código de custo — seja no seu ERP (Sage, Viewpoint, Procore) ou em uma planilha mantida pelo gerente de projetos. Com a saída em lote subtotalizada por código de custo, um PROCV 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 medição sair, não depois que as quitações de ônus forem assinadas.
3. Separe custos comprometidos de 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 essas duas coisas distintas é fundamental na contabilidade da construção: custos comprometidos afetam sua previsão de orçamento versus real; custos reais afetam seu fluxo de caixa. A saída em lote, com uma coluna indicando se cada linha está "Comprometida" ou "Faturada", fornece ambos os números na mesma planilha. Classifique por status para separá-los; subtotalize ambos para ver a diferença entre comprometido e real por projeto.
Para empreiteiros cujo volume de PO cresceu além do que até mesmo um fluxo de trabalho em lote bem projetado pode lidar no tempo disponível, a estrutura de escalabilidade em nosso guia para escalar o processamento de documentos sem aumentar o quadro de funcionários aborda 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 Reexecução Completa
Em um lote de 50 POs, algo estará errado em pelo menos dois ou três. Uma digitalização borrada onde a IA lê R$ 4.200 como R$ 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 está parcialmente ilegível. A questão não é se os erros ocorrem — é se corrigi-los força você a reprocessar o lote inteiro.
A saída do lote é uma única planilha onde cada linha corresponde a um item de uma PO. Se a linha 37 (o quinto item da PO de madeira da Builders FirstSource) tiver uma quantidade errada, você não mexe nas linhas 1–36 nem 38–400. Você reprocessa apenas aquela PO específica, copia a linha corrigida sobre a errada e segue em frente. A estrutura da planilha permanece intacta. Não há cascata — nada de "re-extrair a PO #17, depois remesclar 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 que você confia o suficiente para executar na véspera do prazo final e um que você abandona na primeira vez que gera mais trabalho do que economizou. O fluxo em lote não precisa ser perfeito. Ele precisa ser contido — onde uma extração ruim não se transforma em 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 digitalização variável), o tempo de correção com reprocessamento parcial é de 5 minutos — 3 POs ruins extraídas individualmente, linhas corrigidas coladas — contra 45 minutos para refazer o lote inteiro. Essa é a métrica que determina se o fluxo sobrevive à pressão de fechamento do mês.
O fluxo em lote não precisa ser perfeito. Ele precisa ser contido — onde uma extração ruim não se transforma em duas horas de retrabalho. Essa é a diferença entre um processo em lote que você confia no fechamento do mês e um que você abandona após o primeiro ciclo de saque que te decepciona.
Perguntas Frequentes
Consegue lidar com POs que misturam tipos de material — por exemplo, um único fornecedor enviando madeira e fixadores no mesmo pedido?
Sim. Cada item da ordem de compra (PO) gera sua própria linha na saída, e cada linha recebe seu próprio código de custo baseado na descrição do item. Uma PO de uma fornecedora de materiais de construção com madeira para estrutura 2×6 (06 11 00), OSB para revestimento (06 16 00) e suportes para vigas (06 05 23) produz três linhas com três códigos de custo diferentes — tudo do mesmo documento, tudo no mesmo lote de saída. As regras de inferência cuidam da classificação por item; você não precisa dividir a PO antes do processamento.
E se eu receber POs como texto do corpo de e-mail ou fotos de pedidos manuscritos?
O mecanismo de extração lida com ambos no mesmo lote que PDFs e digitalizações. Para POs no corpo do e-mail, tire um print e faça o upload. Para fotos de pedidos manuscritos, a IA lê a caligrafia da mesma forma que lê texto impresso — a legibilidade é a principal variável que afeta a precisão. Uma anotação manuscrita clara em papel timbrado do fornecedor é extraída com aproximadamente a mesma precisão que uma PO impressa. Uma cópia carbono borrada, fotografada com pouca luz, terá menor precisão e deve ser sinalizada para a etapa 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 Job" — na sua coluna de inferência antes de processar. Isso é uma única edição de texto, não uma reconstrução de template. Para um novo projeto: você adiciona regras mapeando os fornecedores designados para aquele projeto ao novo número do job. Se você mover a Site Concrete Supply do Job 24-003 para o Job 24-008, atualiza uma linha na sua regra de inferência. A camada de extração por nome de coluna não muda — as mesmas colunas "Nome do Fornecedor / Nº da 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 especiais 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 "Valor Líquido" com a lógica Total da Linha × (1 − % de Retenção) 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 tipos de documento, 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 — obter dados de POs de materiais de PDFs de fornecedores para um formato estruturado e mapeado por código de custo. Não substitui o roteamento de aprovação do seu sistema contábil, a conciliação de três vias (PO-recebimento-fatura), o processamento de pagamentos, a gestão de renúncia de ônus ou os relatórios de WIP. Para um empreiteiro que usa QuickBooks + planilhas, a saída em lote alimenta diretamente sua planilha de custos de obra. Para um empreiteiro 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 é um humano lendo um PDF e digitando números em uma tela do ERP. Para processamento de PO individual — extraindo campos de um único PO de construção em vez de executar um lote completo — nosso guia de extração de PO único aborda 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 a coluna "Nº do Pedido". Faça upload de 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 de obra correto durante a extração. Após o download, classifique por "Nº do Pedido" para agrupar todos os itens por projeto. Um subtotal no Total por Item por "Nº do Pedido" 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.