Caixa · SINAPI · Insumos · Composições · 27 UFs · desde 2015

PulseSINAPI

// Inteligência em Custos da Construção Civil

Preços de insumos, materiais, mão de obra e fichas técnicas de composições estruturadas e consolidadas via pipeline de dados automático. Prontos para BI, simulações ou download imediato.

27Estados Cobertos (UFs)
2015Início da Série Histórica
MensalFrequência de Atualização
SQLite + CSVFormatos de Distribuição
Sobre

Por que PulseSINAPI?

O SINAPI da Caixa é público, mas os dados estão ocultos em milhares de planilhas zipadas com layouts instáveis. O PulseSINAPI unifica e consolida essas informações.

📦

Série histórica consolidada (10+ anos)

Preços medianos de insumos e mão de obra de 2015 a 2026 em uma única base de dados de alta performance.

🛠️

Códigos padronizados em 8 dígitos

Códigos numéricos limpos (ex: 00001379) preenchidos com zeros à esquerda para garantir joins e chaves consistentes.

📊

Mapeamento de Composições de Custos

Coeficientes de consumo de materiais e mão de obra para cada tipo de serviço, permitindo cálculo recursivo de orçamentos.

🛡️

Resiliência a bloqueios (HTTP 403/429)

Pipeline robusto de download com curl-cffi (impersonate Chrome) e gerador de contingência determinístico integrado.

⚠️

Limitação: downloads legados da Caixa

A Caixa alterou a estrutura de links a partir de 2025. Arquivos de 2024 e anteriores são descobertos dinamicamente via REST API do SharePoint.

🔄

Tabelas Desoneradas vs Não-Desoneradas

Tabelas históricas com e sem desoneração de encargos sociais sobre a folha de pagamento da mão de obra (horista).

Pipeline

Como funciona o fluxo

Pipeline estruturado em Python que descobre, baixa, limpa e sincroniza dados das planilhas mensais do SINAPI.

01

Detecção de novos relatórios

O scraper monitora o site da Caixa em busca de novas planilhas publicadas para o ano corrente, rodando via automação agendada.

sinapi_insumos.py · Caixa Scraping
02

Download resiliente e extração

Fórmulas de download com cabeçalhos realistas baixam os arquivos ZIP e extraem as planilhas xlsx e xls em diretórios de cache temporários.

ZIP extraction · curl_cffi
03

Limpeza estrutural de planilhas

Desloca cabeçalhos vazios, identifica as colunas corretas de código, descrição, unidade e preços medianos de forma adaptativa.

pandas · Excel parser
04

Deduplicação incremental e gravação CSV

As novas linhas são combinadas com as tabelas flat já existentes e gravadas com deduplicação rigorosa baseada em chaves compostas.

salvar_csv · deduplication
05

Sincronização SQLite em lote

Sincronização de altíssima velocidade (bulk insert mappings) com o banco de dados relacional sinapi.db para consumo da API FastAPI.

sync_csv_to_db.py · SQLite bulk
Downloads

Datasets de Distribuição Flat

Bases flat CSV compiladas pelo pipeline. Atualizadas periodicamente e versionadas.

Dataset Descrição Frequência Fonte Download
Schema

Dicionário de dados

Estrutura das tabelas CSV compiladas (UTF-8, ponto decimal, datas YYYY-MM-DD).

Insumos (Preços)
Composições
CampoTipoDescrição
data_capturadatetimeData e hora do processamento do registro
codigo_insumostringCódigo único de 8 dígitos do insumo (ex: 00001379)
descricao_insumostringDescrição completa do material ou serviço de mão de obra
unidadestringUnidade de medida (KG, M3, H, UN, etc.)
preco_medianofloatValor mediano cobrado pelo insumo naquele estado/período (R$)
ufstringSigla do estado brasileiro de referência (ex: SP, AC, RJ)
data_referenciastringMês e ano da referência no formato YYYY-MM
desoneradobooleanIndica se a tabela considera desoneração de encargos sociais (True/False)
CampoTipoDescrição
data_capturadatetimeData e hora do processamento do registro
codigo_composicaostringCódigo único de 8 dígitos da composição principal (ex: 00088316)
descricao_composicaostringDescrição do serviço composto de engenharia civil
unidade_composicaostringUnidade de medida da composição (M3, M2, UN, etc.)
codigo_itemstringCódigo do item constituinte (seja insumo ou subcomposição)
descricao_itemstringDescrição do item constituinte
unidade_itemstringUnidade de medida do item constituinte
tipo_itemstringTipo de item: INSUMO ou COMPOSICAO
coeficientefloatCoeficiente/consumo do item para produzir uma unidade da composição
Instalação

Como rodar o projeto localmente

Clone, configure e execute os scripts de automação do SINAPI.

1

Clone o repositório

git clone https://github.com/PulseDataLabs/PulseSINAPI.git

2

Instale dependências Python

Instale os requerimentos do pipeline: pip install -r requirements.txt

3

Rode o pipeline flat

Colete dados novos rodando python run_all.py ou importe dados históricos com python scripts/import_historical_caixa.py --all-ufs --month 2023-12

4

Rode o painel web interativo

Digite python run.py para inicializar o dashboard localmente (API FastAPI + React SPA).

terminal
# Clone e entre na pasta
git clone https://github.com/PulseDataLabs/PulseSINAPI.git
cd PulseSINAPI

# Instale dependências
pip install -r requirements.txt

# Execute o pipeline e colete
python run_all.py

# Sincronize com o banco e inicialize app local
python run.py