BOQ -> esboço de cronograma (Primavera P6)
Um planejador que inicia uma linha de base digita cada atividade, vincula e carrega os custos manualmente a partir da BOQ. Esta skill elabora esse primeiro esboço: uma atividade por especialidade por localização, lógica extraída de cronogramas reais, dinheiro da BOQ em cada atividade, em um XER que o P6 importa. O planejador controla as datas – o esboço é o esqueleto que eles corrigem, não uma previsão.
O que é necessário
- Uma BOQ com preços: .xlsx ou .csv com descrição + quantidade + montante (ou taxa). Cabeçalhos como coluna ou como linhas de texto acima das linhas de dados, números de item (1, 1.2, 1.2.3) são aceitáveis. Cabeçalhos em inglês, português ou espanhol.
- Python 3 e
data/rates.json(taxas e lógica extraídas). Nada mais.
Fluxo de trabalho (Claude executa cada etapa; o planejador aprova a classificação e responde às perguntas)
1. Ler a BOQ
py scripts/read_boq.py <boq.xlsx|.csv> --out outputs/<job>
Gera brief.csv (cada linha com seu caminho de capítulo e um palpite de palavra-chave) e types.md (os tipos de trabalho
e as regras para a etapa 2). Informe ao usuário a contagem de linhas, o total e a aba/colunas que foram usadas.
Se o total não corresponder ao total da própria BOQ, pare e descubra o motivo antes de classificar qualquer coisa.
2. Classificar cada linha (esta é a tarefa do Claude, não o palpite de palavra-chave)
Leia types.md, depois leia TODO o brief.csv – capítulo por capítulo, em páginas se for longo. Escreva
outputs/<job>/decisions.csv com as colunas key,type,locations,reason:
chapter=<início do caminho do capítulo>cobre um capítulo (maiúsculas/minúsculas e acentos ignorados);id~=<regex>cobre uma seção da BOQ por número de item quando os nomes dos capítulos se repetem (ex.: dois capítulos ambos chamados "TUBULAÇÕES E CONEXÕES"); um id de linha cobre uma única linha.- Regras gerais primeiro, exceções depois: uma regra posterior sobrepõe uma anterior; uma regra de linha sempre vence.
- Concreto armado: dobre fôrma, vergalhão e concretagem de um elemento no tipo do elemento (sapata, pilar, viga_baldrame, laje), a menos que a BOQ os precifique como serviços gerais.
- Localizações: sempre defina-as (em branco espalha uma linha sobre cada localização, incluindo o canteiro). Pisos do edifício do mais baixo para o mais alto; canteiro de obras, obras externas, muro de divisa, tanques externos -> a localização canteiro.
skipapenas para dinheiro que não é trabalho de obra, e diga o motivo. Capítulos mistos ou duvidosos: escolha o melhor tipo e escreva "planejador pode dividir" no motivo – esses voltarão como perguntas.- Não confie no palpite de palavra-chave: ele interpreta mal ("tapume com telha" -> telhado, "cabeamento" -> laje, "alumínio" -> luz).
py scripts/apply_types.py outputs/<job> --locations "Canteiro|Térreo|1º Andar"
Para em qualquer tipo desconhecido, localização desconhecida ou linha não decidida. Verificação de dinheiro: classificado + ignorado = total da BOQ.
Gera lines.csv e typing.md (dinheiro por especialidade, quem decidiu cada linha, avisos de unidade). Mostre ao
usuário a tabela de dinheiro por especialidade e os avisos; corrija e execute novamente até que esteja limpo.
3. Perguntar ao planejador
py scripts/questions.py outputs/<job> --start 2026-01-05
Constrói um primeiro esboço não calibrado e escreve questions.md + answers.json com respostas sugeridas.
Coloque as perguntas ao usuário em palavras simples (AskUserQuestion funciona bem para as de sim/não), depois
preencha answers.json:
| Pergunta | Por que é importante |
|---|---|
| Data de início, semana de trabalho (5/6/7), moeda | Calendário e a moeda do dinheiro no P6 |
| Localizações, canteiro, layout (pisos empilhados / blocos separados), quais executam lado a lado | A sequência. Testado: a própria estratégia de sequenciamento do esboço é a principal razão pela qual os trabalhos reais diferem |
| Período do contrato (meses) | Sem ele a duração era correta (0,75-1,33x) para 4-6 de 17 trabalhos reais; com ele, 17 de 17 |
| Três durações que conhecem (uma estrutura, um envelope/acabamento, um serviço de instalações) | As durações do esboço erram ~2,25x em uma linha; três âncoras as trazem para ~1,76x e escalam o resto |
| Obras de canteiro no início ou após a estrutura (muro de divisa, drenagem, tanques, pavimentação) | Move dinheiro real; os empreiteiros geralmente constroem o muro primeiro |
| Pontos de classificação sinalizados como "planejador pode dividir" | Linhas que o Claude colocou, mas um planejador pode querer dividir |
Respostas em branco mantêm o padrão e o relatório informa isso – nunca invente uma resposta para o planejador.
4. Construir
py scripts/build.py outputs/<job>
Executa plan.py + export.py: schedule.json/.csv, report.md, schedule.xer.
Cada atividade carrega seus ids de linha da BOQ e a razão para sua duração; cada vínculo diz de onde veio
(cronogramas reais: n links A->B, ordem padrão, resposta do planejador).
Importar
- P6: Arquivo > Importar > Primavera PM (XER) > Criar Novo Projeto, depois Ferramentas > Programar (F9). As despesas aparecem por atividade como " BOQ " com quantidade, unidade e preço unitário.
Evidência (todos em dados reais, leave-one-out)
- Classificação: Hassan BOQ 22/22 linhas = a atividade do próprio planejador por linha (palpite de palavra-chave 15/22). Aracaju 643 linhas e Januária 628 linhas classificadas, dinheiro ao centavo.
- Lógica: 75-80% dos vínculos reais se mantêm em 17 cronogramas retidos; Hassan 18/18.
- P6: o XER do esboço importa para o Primavera P6 Professional 25 e programa para as mesmas datas que o motor.
- Durações: erro mediano de x2,25, x1,76 com três durações do planejador.
- Não é uma previsão de fluxo de caixa: a curva mensal do esboço não se aproximou mais da real do que uma curva S de livro-texto. Diga isso sempre que alguém perguntar sobre fluxo de caixa ou prazos a partir do esboço.
Limitações
- Apenas BOQs em texto (não PDFs escaneados). Uma atividade por especialidade por localização: o planejador divide de forma mais refinada.
- Taxas e lógica provêm de 73 cronogramas, a maioria de edifícios; obras civis/infraestrutura não foram testadas.
data/é extraído de 73 cronogramas P6 publicamente disponíveis (os XERs brutos não estão incluídos).
Testes
py tests/smoke.py – o exemplo incluído (BOQ de licitação pública de Januária, 628 linhas) através da classificação, perguntas, construção e
XER do P6: linhas, dinheiro ao centavo, tabelas, tarefas, despesas, vínculos, calendário do projeto. Execute após qualquer alteração.
Os testes de desenvolvimento (3 BOQs reais, 17 cronogramas retidos, a verificação de importação do P6) usaram arquivos que não estão incluídos.