Mapeamento de Dados

Issues de diagnóstico e extração de indicadores

Sistema Nacional de Cultura · Plano Nacional de Cultura

Mapeamento de Dados para Monitoramento do PNC

Este painel documenta, por política e por meta, quais dados existem, onde estão, como se conectam e o que já é possível responder para o Ministério da Cultura. Cada aba é um diagnóstico de viabilidade analítica — não um dashboard final.

PNAB Lei Paulo Gustavo Lei Rouanet transferegov_fundo_a_fundo SALIC

Atualizado em 30/07/2026 — o que mudou desde a publicação

Este painel foi publicado em 22/06/2026 como diagnóstico de viabilidade, propondo nominalmente os pipelines que ainda não existiam. De lá para cá, duas PRs implementaram parte do que estava proposto — e os nomes reais divergiram da previsão. Esta revisão alinha o painel ao código que está na main:

  • Meta 3 implementada (PR #16, 18/07): domínio cotas_dbt com 21 models. O que o painel chamava de agg_cotas_anuais virou distribuicao_cotas_lpg e distribuicao_cotas_pnab.
  • Meta 5 implementada (PR #15, 15/07): domínio agentes_dbt com primeiro_acesso_contemplados e primeiro_acesso_resumo.
  • Veredito de cota é binário, não ternário: 'alcancada' / 'descumprida' em status_sobre_com_perfil. A categoria "superada" não foi implementada.
  • Saída em formato longo: 1 linha por (ano, grupo), não uma coluna por cota. Nomes de coluna corrigidos ao longo das abas.
  • bbágil bloqueado: 4 models escritos mas desabilitados — a API do BSC só resolve via VPN do governo.
  • Meta 2 e Meta 4 seguem sem models dbt. A Meta 4 é exclusivamente Rouanet, e o SALIC ainda não tem ingestão.
Veja a aba 🕓 Histórico para a linha do tempo completa, o placar por meta e a lista de bloqueios abertos.

As três políticas mapeadas

Fomento federativo direto

PNAB — Política Nacional Aldir Blanc

A União repassa recursos do Fundo Nacional da Cultura (FNC) diretamente a estados, DF e municípios (fundo a fundo), sem convênios. Os entes elaboram Planos de Ação no Transferegov, executam via editais locais e prestam contas por Relatórios de Gestão. Os pagamentos transitam por contas bancárias dedicadas gerenciadas pelo BB Gestão Ágil.

transferegov_fundo_a_fundo
Lei nº 14.399/2022 · Decreto nº 11.740/2023 · Lei nº 15.132/2025
Meta: R$3bi/ano → R$6bi em 10 anos (União + entes)
Fomento federativo direto · emergencial

LPG — Lei Paulo Gustavo

Mecanismo emergencial de repasse fundo a fundo para mitigar os impactos da pandemia no setor cultural. Estrutura análoga à PNAB: entes federados recebem a verba, lançam seleções públicas simplificadas (editais, prêmios, chamamentos) e os agentes culturais se inscrevem como proponentes. O monitoramento ocorre via Relatório Final de Gestão no Transferegov.

transferegov_fundo_a_fundo
Lei Complementar nº 195/2022
Ciclo único · cotas para negros, indígenas, PCD
Fomento indireto · renúncia fiscal

Lei Rouanet (Pronac)

Mecanismo de renúncia fiscal em que incentivadores (PF/PJ) destinam parte do IR devido para financiar projetos culturais aprovados pelo MinC. Proponentes se cadastram no SALIC, recebem um número de PRONAC e ficam autorizados a captar. Os recursos transitam por Contas Captação no Banco do Brasil. Funciona predominantemente por fluxo contínuo, não por editais.

SALIC — Sistema de Apoio às Leis de Incentivo à Cultura
Lei nº 8.313/1991 · Decreto nº 11.453/2023 · IN MinC nº 29/2026

Metas do PNC mapeadas neste painel

Meta Objetivo Políticas Indicador principal Status
Meta 2 Garantir destinação anual de R$3bi para a PNAB com aumento gradual até R$6bi em 10 anos, com 60% para programas nacionais do SNC PNAB Valor total executado anualmente (federal + estadual + municipal) ✓ Parcial
Meta 3 Assegurar que as ações culturais fomentadas destinem anualmente ≥25% para negros, ≥10% para indígenas, ≥5% para PCD e ≥20% para territórios vulnerabilizados LPG PNAB Rouanet % de recursos pagos por grupo (negros, indígenas, PCD, territórios) ✓ LPG ok ◑ PNAB/Rouanet
Meta 4 Desconcentrar a execução dos recursos de fomento indireto — garantir que x% dos recursos de renúncia fiscal sejam executados fora das capitais e em regiões historicamente excluídas Rouanet % de recursos executados fora das capitais ◑ Depende SALIC
Meta 5 Garantir % anuais de novos entrantes (primeiro acesso) na política de fomento LPG PNAB Rouanet % de proponentes contemplados sem histórico anterior de fomento ✓ LPG: 39,11% ◑ PNAB/Rouanet

Fontes de dados

transferegov_fundo_a_fundo

Planos de Ação, Planos de Aplicação de Recursos (PAR), Relatórios de Gestão e monitoramento da execução informados pelos entes no Transferegov. Fonte principal para PNAB e LPG.

BB Gestão Ágil / BB Digital

Lançamentos bancários reais (crédito/débito) das contas específicas da PNAB e LPG. Registra saídas efetivas de caixa com categorização obrigatória de despesas. Usado para aferir o critério de 60% de execução mínima.

CultBR

Portal do MinC para gestores culturais submeterem o Plano de Aplicação dos Recursos da PNAB. Contém dados de perfil sociodemográfico dos proponentes (raça, etnia, deficiência) via "Planilha de Coleta de Dados".

SALIC

Sistema de Apoio às Leis de Incentivo à Cultura. Principal base da Lei Rouanet: concentra cadastro de proponentes, projetos (PRONAC), valores autorizados/captados/executados, localização e incentivadores.

SICONFI

Sistema de Informações Contábeis e Fiscais do Setor Público. Necessário para verificar o aporte próprio de estados e municípios à cultura (Meta 2 PNAB — lado "recursos próprios dos entes").

IBGE · fcu_setores_2022

Censo 2022 — Favelas e Comunidades Urbanas. Usado para classificar territórios vulnerabilizados e enriquecer dados de localização de proponentes (cruzamento por CEP → setor censitário ou município + UF).

Como ler os status deste painel

✓ Respondido

Dados existem, chaves de integração validadas, cálculo viável com as fontes atuais.

◑ Parcial

Resposta possível com ressalvas: dado existe mas incompleto, ou requer fonte externa ainda não integrada.

⏳ Bloqueado

Dado não disponível ou requer definição de negócio pelo MinC antes de prosseguir.

Mapeamentos SNC · LPG / PNAB / Rouanet · Diagnóstico de viabilidade analítica

Meta 2 — Execução Financeira e Distribuição

Issue 6 · Exploração

PNAB · Distribuição dos repasses e execução financeira por nível federativo, ciclo e porte de ente

Contexto e objetivo desta aba

A PNAB (Política Nacional Aldir Blanc) e a LPG (Lei Paulo Gustavo) são duas políticas de fomento direto com estrutura parecida: a União repassa recursos do Fundo Nacional da Cultura para estados, DF e municípios — sem necessidade de convênios —, e esses entes executam os recursos localmente por meio de editais, chamadas públicas e premiações para agentes culturais. A diferença principal é que a LPG foi uma política emergencial e de ciclo único, criada para compensar os prejuízos da pandemia no setor cultural, enquanto a PNAB é uma política permanente, com repasses anuais previstos em lei.

A Meta 2 do PNC é exclusiva da PNAB e quer garantir que pelo menos R$3 bilhões por ano sejam efetivamente gastos com cultura, com aumento gradual até R$6 bilhões em 10 anos (somando recursos federais e aportes próprios dos entes) — sendo 60% desse valor destinado a programas nacionais do Sistema Nacional de Cultura (SNC). A partir de 2025, o recebimento de novos repasses fica condicionado à comprovação de que o ente executou pelo menos 60% do repasse anterior.

Esta aba documenta quais dados existem no sistema para responder a essa meta: quanto foi repassado, quanto foi efetivamente pago (saída real de caixa registrada no BB Gestão Ágil), como esse valor se distribui por estado/município, e se os entes estão contribuindo com recursos próprios além do repasse federal.

Objetivo da aba: mapear as tabelas disponíveis no schema transferegov_fundo_a_fundo, identificar as chaves de cruzamento entre elas e apontar o que já é possível calcular, o que está parcialmente disponível e o que ainda depende de fontes externas (como o SICONFI para os aportes próprios dos entes).

Checklist de validação

Como se distribui a execução financeira da PNAB por nível federativo (estados, DF, municípios) e por território (UF, região, municípios) em cada ciclo?

Qual o percentual do recurso executado foi destinado a programas nacionais estruturantes do SNC? Bloqueado — aguarda validação do MinC sobre quais categorias contam como "estruturantes".

Qual é o valor total executado anualmente na PNAB somando recursos da União e aporte próprio dos entes? Lado União respondido; recursos próprios dependem do SICONFI (fonte externa).

Blocos de dados — schema transferegov_fundo_a_fundo

Bloco A — Delimitação do Programa

raw_programas · dim_programa_pnab
raw_programas
Chave: id_programa
Cadastro dos 3 programas PNAB: 60 (Estados), 61 (Municípios ≥R$360k), 62 (Municípios <R$360k). Não usar codigo_programa para filtro.
dim_programa_pnab
Chave: id_programa
Traduz 60/61/62 em porte_ente: ESTADO_DF / MUNICIPIO_GE_360K / MUNICIPIO_LT_360K.

Bloco B — Plano de Ação / Repasse Planejado

raw_planos_acao
raw_planos_acao
Chave: id_plano_acao, id_programa, cnpj_ente_recebedor
Valor planejado de repasse, recursos próprios declarados (universalmente zerado — ver higienização), datas de vigência, UF/município do ente.

Bloco C — Execução Declarada

relatorios_gestao
relatorios_gestao
Chave: id_relatorio_gestao, id_plano_acao
Valor executado/pendente autodeclarado pelo ente (valor_executado_relatorio_gestao).

Bloco D — Fluxo de Caixa Real (BB Gestão Ágil)

raw_gestao_financeira_lancamentos · dim_tipo_operacao_financeira
raw_gestao_financeira_lancamentos
Chave: cnpj_ente_solicitante_gestao_financeira
Lançamentos bancários reais (crédito/débito). 100% dos registros pertencem à PNAB (codigo_programa_agil = 165, fixo). Ligação com planos via CNPJ do ente.
dim_tipo_operacao_financeira ✦
Chave: (tipo_operacao, descricao)
Classifica cada extrato em ENTRADA_REPASSE, RENDIMENTO_APLICACAO, SAIDA_EFETIVA_PAGAMENTO ou ENCARGO_TARIFA.

Bloco E — Classificação SNC (pendente)

categorias_programa_governo_bbgestao_agil
categorias_programa_governo_bbgestao_agil
Chave: codigo
Estrutura pronta para classificar categorias como "estruturantes do SNC" — colunas flag_estruturante_snc, validado_em, validado_por ficam NULL até validação com o MinC.

Fluxo de cruzamento

raw_programas ──(id_programa = 60/61/62)──▶ dim_programa_pnab
       │
       └──(id_programa)──▶ raw_planos_acao ──(id_plano_acao)──▶ relatorios_gestao
                               │
                               └──(CNPJ do ente)──▶ raw_gestao_financeira_lancamentos ──▶ dim_tipo_operacao_financeira

Tratamento e higienização

!

Datas corrompidas: ~0,09% dos planos de ação (5 de 5.484) têm anos inválidos (ex: 0230). Tratado com extração defensiva de ano (LEFT(coluna, 4)) e bucket ANO_INVALIDO.

!

Bug de conversão numérica: campos monetários de raw_planos_acao já estão em formato decimal simples — aplicar lógica de formato BR (REPLACE('.','') + REPLACE(',','.')) infla os valores em 100×. Cast correto: direto para numeric.

!

Código de programa fixo no barramento (165): não serve para segmentar por porte de ente. Segmentação correta via CNPJ, cruzando com raw_planos_acao.

!

Recursos próprios zerados: valor_recursos_proprios_plano_acao = 0 em 100% dos 5.484 planos — ausência real de preenchimento pelos entes, não erro de processamento.

Veredicto

✅ Pergunta 1 — Distribuição federativa por ciclo

Viável e respondida. Repasse por porte/UF/município/ano, validado contra duas fontes independentes (plano de ação e fluxo de caixa real).

🔴 Pergunta 2 — % destinado a programas estruturantes SNC

Bloqueada por definição de negócio, não por dado. A estrutura existe (flag_estruturante_snc), mas depende de validação do MinC sobre quais categorias contam.

◑ Pergunta 3 — Total anual União + aporte próprio

Parcial. Lado União: respondido via BB Gestão Ágil — repasse concentrado em 2023 (~R$2,9bi); caixa da PNAB praticamente esgotado em meados de 2026 (saldo ≈ R$150 mil). Recursos próprios dos entes: não capturados internamente — depende do SICONFI.

O que estamos respondendo

PNAB · Meta 2 — Execução Financeira e Distribuição

PNAB
✓ Respondido

Como se distribui a execução financeira da PNAB por nível federativo (estados, DF, municípios) e por território (UF, região, municípios) em cada ciclo?

raw_planos_acao × raw_gestao_financeira_lancamentos
Cruzamento por CNPJ do ente + dim_programa_pnab (porte)

Validado contra duas fontes independentes: plano de ação e fluxo de caixa real (BB Gestão Ágil).

PNAB
⏳ Bloqueado

Qual o percentual do recurso executado que foi destinado a programas nacionais estruturantes do SNC?

categorias_programa_governo_bbgestao_agil
+ flag_estruturante_snc (a preencher)

Estrutura de dados pronta. Bloqueado por definição de negócio: o MinC precisa validar quais categorias contam como "estruturantes do SNC" (Plano Nacional de Cultura).

PNAB
◑ Parcial

Qual é o valor total executado anualmente na PNAB somando recursos da União e aporte próprio dos entes? O aporte local está evoluindo rumo aos R$6 bilhões?

raw_gestao_financeira_lancamentos (lado União)
SICONFI — fonte externa (lado entes)

Lado União respondido: repasse concentrado em 2023 (~R$2,9bi); caixa praticamente esgotado em 2026. Aporte próprio dos entes depende do SICONFI, fora do escopo atual.

✦ tabela criada nesta análise (não existe no schema original)

Meta 3 — Ações Afirmativas

Issue 1 · Diagnóstico de viabilidade

LPG / PNAB · Raça · PCD · Territórios vulnerabilizados

Contexto e objetivo desta aba

A LPG (Lei Paulo Gustavo) e a PNAB (Política Nacional Aldir Blanc) são políticas de fomento direto em que a União repassa recursos para estados, DF e municípios, que os distribuem localmente via editais para agentes culturais — pessoas físicas, coletivos e organizações. No momento da inscrição nesses editais, os agentes preenchem formulários autodeclaratórios informando raça/cor, se têm deficiência e onde moram.

A Meta 3 do PNC determina que uma parcela mínima dos recursos efetivamente pagos deve chegar a grupos historicamente sub-representados: ≥25% para pessoas negras, ≥10% para indígenas, ≥5% para pessoas com deficiência (PCD) e ≥20% para agentes de territórios vulnerabilizados (periferias, zonas rurais, territórios tradicionais). Essas cotas se aplicam tanto à LPG quanto à PNAB.

O desafio central desta meta está no cruzamento de dados: as informações de perfil (raça, PCD, localização) ficam nas tabelas de inscrição, enquanto os valores pagos ficam nas tabelas de contemplados. Para saber quanto do dinheiro foi para pessoas negras, por exemplo, é preciso ligar cada pagamento ao perfil de quem o recebeu — e a chave dessa ligação é o CPF ou CNPJ do beneficiário.

Objetivo da aba: mostrar quais tabelas guardam o perfil dos agentes, quais guardam os pagamentos, e como conectá-las pelo CPF/CNPJ. Para a LPG esse cruzamento já é viável. Para a PNAB há um obstáculo: o CPF das pessoas físicas vem anonimizado nas listas de contemplados, impedindo o cruzamento com os dados de raça — esse ponto está sinalizado como "fase 2".

Checklist de validação

Do total de recursos efetivamente pagos anualmente, qual o percentual destinado a agentes culturais de territórios vulnerabilizados, pessoas negras, povos indígenas e pessoas com deficiência?

Os percentuais mínimos previstos nas cotas e reservas de recursos (25% negras · 10% indígenas · 5% PCD · 20% territórios vulnerabilizados) estão sendo alcançados, superados ou descumpridos na prática?

Veredicto por política

LPG ✔ Viável

Lei Paulo Gustavo

Responde os três grupos (negras/indígenas via coluna de raça, PCD) + território (cidade/cep → fcu_setores_2022). A ponte CPF/CNPJ entre perfil e contemplados funciona.

PNAB ◑ Parcial

Política Nacional Aldir Blanc

PCD e território disponíveis. Raça/etnia ainda não concludível: tabelas de contemplados trazem CPF anonimizado, quebrando a ponte de demografia por valor. Resolver o elo é fase 2.

Fluxo de cruzamento

JOIN cpf/cnpj

JOIN nome_edital

cidade / cep

enriquece PERFIL

A - PERFIL
Inscritos / Autodeclaracao
raca/etnia - PCD - cidade - cep
JOIN: cpf / cnpj

B - CONTEMPLADOS
Resultado / Repasses
valor pago
JOIN: nome_edital

C - EDITAIS
Programas / Chamadas
valor total - ano
nome_programa

EXT - fcu_setores_2022
IBGE Censo 2022
territorio vulnerabilizado

Resultado: PERFIL + territorio
classificacao territorial ok

A PERFIL Inscritos / Autodeclaração raça/etnia PCD cidade cep 🔑 cpf / cnpj JOIN · cpf/cnpj B CONTEMPLADOS Resultado / Repasses valor pago cpf / cnpj nome_edital 🔑 nome_edital JOIN · nome_edital C EDITAIS Programas / Chamadas valor total ano nome_programa cidade / cep EXT fcu_setores_2022 IBGE Censo 2022 território vulnerabilizado enriquece PERFIL ✓ PERFIL + território classificação territorial ok

Bloco A — Perfil / Inscritos (autodeclaração)

LPG — Pessoa Física

lpg_dados_pessoa_fisica · _audiovisual · _multicultur
Chave
nº do cpf · CPF · ✓
Raça
raça/cor/etnia · negrasindígenas · ✓
PCD
é pcd? · PCD · ✓
Local
cidade · cep · território · ✓

LPG — Pessoa Jurídica

lpg_dados_pessoa_juridica · _audiovisu · _multicult
Chave
nº do cnpj · CNPJ · ✓
Raça diretivo
raça (corpo diretivo) · negrasindígenas · ✓
PCD diretivo
pcd no corpo diretivo? · PCD · ✓
Local
cidade · cep · território · ✓

LPG — Coletivos

lpg_dados_coletivos · lpg_dados_grupo_coletivo · _multicultu
Chave
nº cpf do representante · CPF · ✓
Raça grupo
raça (maioria do grupo) · negrasindígenas · ✓
PCD grupo
pcd no grupo? · PCD · ✓
Local
cep · território · ✓

PNAB — Pessoas

pnab_pessoas
Chave
nº do cpf · CPF · ✓
Raça
raça/cor/etnia · negrasindígenas · ◑ fase 2
PCD
é pcd? · PCD · ✓
Local
cidade/uf · cep · território · ✓

PNAB — Organizações

pnab_organizacoes
Chave
nº do cnpj · CNPJ · ✓
Raça repr.
raça do representante · negrasindígenas · ◑ fase 2
PCD
é pcd? · PCD · ✓

Bloco B — Contemplados (valor pago)

Tabelas de contemplados (LPG)

lpg_contemplados · tabelas LPG equivalentes
CPF/CNPJ
nº do cpf/cnpj · Chave de junção com Perfil · ✓
Valor pago
valor · Formatos mistos — requer parsing · ◑
Nome edital
nome do edital · JOIN com Editais · ✓

Tabelas de contemplados (PNAB)

raw_pnab_lista_contemplados_geral · _pncv
CPF/CNPJ
cpf (anonimizado) · cnpj/cpf · CPF mascarado — quebra ponte com Perfil · ◑ fase 2
Valor pago
valor · Formatos mistos — requer parsing · ◑
Nome edital
nome do edital · nº do edital · JOIN com Editais · ✓

Bloco C — Editais / Programas

lpg_editais e equivalentes

particionado por nome_programa
Nome edital
nome do edital · JOIN com Contemplados · ✓
Valor total
valor total do edital · denominador do % · ✓
Ano
ano · recorte temporal · ✓
Programa
nome_programa · LPG vs PNAB · ✓

Mapeamento de colunas-chave · variações de grafia

CPF / CNPJ — chave de junção
cpf ou cnpj nº do cpf/cnpj nº do cpf nº do cpf do representante cpf (anonimizado) cnpj/cpf

Normalizar com regexp_replace removendo pontuação antes de qualquer join.

Raça / Cor / Etnia
raça/cor/etnia raça (corpo diretivo) raça (maioria do grupo) raça do representante percentual de etnia do contemplado

Indígena é um valor dentro da coluna de raça, não coluna separada.

PCD — Pessoa com Deficiência
é pcd? pcd no corpo diretivo? pcd no grupo?

Tratar NULL e 'nan' como ausência — manter apenas respostas válidas.

Localização → Território
cidade cep cidade/uf

Cruzar com fcu_setores_2022 (IBGE Censo 2022) para classificar território vulnerabilizado.

Valor Pago
valor

Formatos mistos: BR (1.500,00), US (14084.18), strings de fórmula. Requer parsing dedicado.

Nome / Nº do Edital
nome do edital nº do edital

Junção Contemplados ↔ Editais. Atenção a variações de grafia do nome entre tabelas.

Tratamento e higienização (base desta issue)

Limpeza de caracteres — normalização de strings (acentos, caixa, espaços).

Unificação de grafias — mapear variações do mesmo conceito para um nome canônico.

NULL / 'nan' → ausência — manter apenas respostas válidas; não imputar.

Pré-requisito issue 2: normalização consistente de valores de autodeclaração; reconciliação de cabeçalhos não parseados (posição canônica da coluna CPF/CNPJ); parsing do valor pago em formatos mistos; padronização de CPF/CNPJ com regexp_replace antes dos joins.

LPG · PNAB · Meta 3 — Ações Afirmativas

LPG
✓ Respondido

Do total pago anualmente, qual % foi para pessoas negras (≥25%), indígenas (≥10%), PCD (≥5%) e territórios vulnerabilizados (≥20%)?

lpg_dados_pessoa_fisica/pj/coletivos × lpg_contemplados
Chave: CPF/CNPJ normalizado

Enriquecimento territorial via fcu_setores_2022 (IBGE Censo 2022). Nível atual: município (superestima). CEP → setor censitário na fase 2.

LPG
✓ Respondido

As cotas mínimas (25% negras, 10% indígenas, 5% PCD, 20% territórios) estão sendo alcançadas, superadas ou descumpridas por ano?

distribuicao_cotas_lpg ← fct_pagamentos_elegiveis
status_sobre_com_perfil por (ano, grupo)

Veredito binário: 'alcancada' / 'descumprida' — o painel previa uma terceira categoria "superada", que não foi implementada.

PNAB
◑ Parcial (fase 2)

Do total pago anualmente pela PNAB, qual % foi para pessoas negras, indígenas, PCD e territórios vulnerabilizados?

pnab_pessoas / pnab_organizacoes × raw_pnab_lista_contemplados
Chave: CNPJ (PJ casável) · CPF PF anonimizado (não casável)

PJ da PNAB já é respondível. PF fica fora do numerador de raça porque o CPF vem anonimizado — resolve na fase 2 com acesso ao dado completo.

Meta 3 · Issue 1 · Diagnóstico de viabilidade — LPG / PNAB · schema: transferegov_fundo_a_fundo · Fontes: tabelas raw/base (vw_contemplados fora de escopo)

Como os dados se conectam — visão de negócio

Bronze → Silver → Gold

Quem pagamos? Quem é essa pessoa? Ela está numa área vulnerável? A cota foi cumprida?

Pergunta que o pipeline responde
Do valor total pago em cada ano, qual % foi para pessoas negras (≥25%), indígenas (≥10%), PCD (≥5%) e territórios vulnerabilizados (≥20%)?
A unidade de medida é valor pago, não contagem de beneficiários. A cota legal é sobre o montante financeiro.
Bronze — O que chegou bruto
uma linha por fonte, sem transformar lógica de negócio

Quem se inscreveu? (Perfil)

stg_agentes_pf · stg_agentes_pj · stg_agentes_coletivos · stg_agentes_pnab_pf · stg_agentes_pnab_pj
CPF / CNPJ
Chave: identificador_unico
É o elo que liga "quem se inscreveu" a "quem foi pago"
Raça/cor/etnia
Chave:
Determina se o pagamento conta para a cota de negras (≥25%) ou indígenas (≥10%)
PCD
Chave:
Determina se o pagamento conta para a cota de PCD (≥5%)
Cidade / CEP
Chave: → JOIN com IBGE
Ponto de partida para classificar território vulnerabilizado (≥20%)
⚠ PNAB: CPF de pessoa física vem anonimizado — a ponte com raça/etnia fica quebrada para PF da PNAB até fase 2.

Quem foi pago e quanto? (Contemplados)

stg_contemplados_lpg · stg_contemplados_pnab
CPF / CNPJ
Chave: identificador_unico
Liga o pagamento de volta ao perfil demográfico do beneficiário
Valor pago
Chave:
É o numerador e o denominador do cálculo de cota. Formatos mistos (BR/US/fórmula) — requer normalização
Nome do edital
Chave: nome_edital
Liga o pagamento ao edital para extrair o ano de referência

Qual edital e de que ano? (Editais)

stg_editais (lpg_editais · lpg_dados_instrumentos · …)
Nome do edital
Chave: nome_edital
Chave de junção para trazer o ano ao pagamento quando não há ano no link
Ano (extraído do nº ou nome)
Chave:
Permite agrupar cotas por ciclo anual
Valor total do edital
Chave:
Denominador alternativo para reconciliação quando há divergência de valor

O endereço é território vulnerável? (IBGE)

seed fcu_setores_2022 (IBGE Censo 2022)
Município + UF
Chave: cidade + uf
Fallback atual: classifica o município inteiro como vulnerável (superestima)
CEP → setor censitário
Chave: cep (fase 2)
Classificação precisa no nível do setor — bloqueado: crosswalk CEP→setor pendente
flag_vulneravel
Chave:
Diz se aquele território qualifica o pagamento para a cota de 20%
Silver — As junções de negócio
aqui estão as chaves de integração e o motivo de cada cruzamento

Três junções resolvem a pergunta de negócio. Cada uma tem uma chave de integração e um risco:

JunçãoChave de integraçãoPor que fazerRisco
Contemplados ↔ Perfil identificador_unico (CPF/CNPJ normalizado) Trazer raça, PCD e localização de quem foi pago. Sem isso, não temos como saber se o pagamento conta para uma cota. ⚠ CPF PNAB anonimizado — PF da PNAB fica sem perfil (fase 2)
Contemplados ↔ Editais nome_edital Extrair o ano de referência do pagamento. Sem ano não é possível agregar por ciclo e medir cumprimento anual das cotas. ⚠ Variações de grafia do nome entre tabelas exigem normalização
Perfil ↔ IBGE cidade + uf ou cep → setor Classificar se o beneficiário mora em território vulnerabilizado (cota de 20%). Dado de localização vem do perfil, classificação vem do Censo. ⚠ Nível município superestima — cruzamento por setor censitário bloqueado até crosswalk CEP

perfil_agentes_normalizado

stg_agentes_* (todos os tipos e políticas unificados)
flag_negra
Unifica "Preta", "Parda", variantes → booleano único para a cota de 25%
flag_indigena
Indígena é valor dentro da coluna raça — extração por LIKE
flag_pcd
Unifica "Sim"/"sim"/"S"/NULL → booleano; NULL ≠ false (ausência de dado ≠ não-PCD)
flag_nao_declarada
Separa quem optou por não declarar — impacta denominador da cota de raça
Dedup por identificador_unico: quando o mesmo CPF/CNPJ aparece em mais de uma tabela de perfil, mantém o registro com menos NULLs.

contemplados_unif

stg_contemplados_lpg + stg_contemplados_pnab
valor_pago_num
Normaliza formatos mistos (R$1.500,00 / 14084.18 / fórmula) → decimal
ano_final
Extrai ano do link/URL do pagamento; fallback: JOIN com editais pelo nome
chave_anonimizada
Flag que sinaliza CPF PNAB não casável — pagamento vai ao denominador mas não ao numerador de raça
origem
'lpg' ou 'pnab' — permite cortes por política

territorio_municipio

perfil_agentes_normalizado × fcu_setores_2022
flag_territorio_vulneravel
Booleano final para a cota de 20% de territórios
nivel_match
'municipio' (atual, superestima) ou 'setor' (fase 2, preciso) — preserva transparência do dado
Chave de integração: sem_acento(cidade) + ufnm_mun + nm_uf da tabela IBGE.
Gold — O que o MinC vai ver
tabelas finais para análise e dashboard

fct_pagamentos_elegiveis

contemplados_unif × perfil_agentes_normalizado × territorio_municipio
identificador_unico · valor_pago_num · ano_final
Grão: 1 linha por pagamento
flag_negra · flag_indigena · flag_pcd
Vem do perfil via JOIN por identificador_unico
flag_territorio_vulneravel
Vem do cruzamento com IBGE
tem_perfil
False quando CPF não casou — pagamento permanece no denominador (nunca descartado)
Regra central: LEFT JOIN — o pagamento nunca some. Se não tem perfil, ainda conta no total pago. Isso evita distorcer o denominador da cota.

cobertura_pagamentos

fct_pagamentos_elegiveis agrupado por ano_final
cobertura_valor_pct
% do valor total que tem perfil linkado — mede qualidade dos dados antes das cotas
cobertura_pessoas_pct
% de pessoas (documentos distintos) com perfil — CPF mascarado já entra como NULL, então mede o gap da PNAB
cobertura_temporal_pct
% do valor com ano identificado — lido antes de tirar conclusões por ciclo. 61,6% na última execução
qtd_pagamentos · qtd_pessoas · valor_total
Volumetria bruta por ano. Ano nulo é rotulado 'sem_ano' para leitura direta.
Leitura obrigatória antes do painel de cotas: se cobertura_valor_pct for baixo, os percentuais de cota não são confiáveis.

distribuicao_cotas_lpg · distribuicao_cotas_pnab

fct_pagamentos_elegiveis agrupado por ano_final · um model por política
grupo
Grupo prioritário da linha: negra · indígena · PCD · território. Saída em formato longo — 1 linha por (ano, grupo), não uma coluna por cota
meta_minima_pct
Piso legal do grupo: 25% negra · 10% indígena · 5% PCD · 20% território
pct_sobre_total · pct_sobre_com_perfil
Dois denominadores: sobre todo o valor pago, e sobre a fatia com perfil conhecido. O veredito usa o segundo
status_sobre_com_perfil
'alcancada' ou 'descumprida' — veredito binário. Não há categoria "superada"
valor_grupo · valor_total_ano · qtd_agentes_grupo
Numerador, denominador e headcount — para auditar o percentual sem recalcular
Grão: 1 linha por (ano, grupo). As políticas não se misturam: LPG tem 4 cotas (com território), PNAB tem 3. Ambos saem da macro distribuicao_cotas(programa, incluir_territorio). Este é o indicador final da Meta 3.

LPG · PNAB · Meta 3 — Pipeline dbt: o que cada camada entrega

Bronze
✓ Staging

Quem se inscreveu, com qual perfil, e de onde?

stg_agentes_pf · stg_agentes_pj · stg_agentes_coletivos
stg_agentes_pnab_pf · stg_agentes_pnab_pj

Normaliza CPF/CNPJ, raça, PCD e localização. Mantém uma linha por fonte, sem lógica de negócio.

Bronze
✓ Staging

Quem foi pago, quanto, e em qual edital?

stg_contemplados_lpg · stg_contemplados_pnab
stg_editais (para extrair o ano)

Normaliza formatos de valor mistos (BR/US/fórmula). Chave de junção com perfil: identificador_unico (CPF/CNPJ).

Silver
✓ Junções de negócio

Qual é o perfil demográfico de quem foi pago? O endereço é território vulnerável?

perfil_agentes_normalizado (flags booleanas)
contemplados_unif (valor + ano)
territorio_municipio (crosswalk IBGE)

3 junções: Contemplados ↔ Perfil (identificador_unico), Contemplados ↔ Editais (nome_edital), Perfil ↔ IBGE (chave_municipio_uf). O crosswalk vem de territorio_fcu_setores (33.273 setores do Censo 2022) colapsado a município.

Gold
✓ Indicadores finais

A cota foi cumprida? Qual a qualidade dos dados para afirmar isso?

fct_pagamentos_elegiveis → cobertura_pagamentos → distribuicao_cotas_lpg / _pnab
status_sobre_com_perfil por (ano, grupo)

cobertura_pagamentos deve ser lida primeiro: se cobertura_valor_pct for baixo, os percentuais de cota não são confiáveis.

Meta 3 · Issue 1 · Diagnóstico de viabilidade + Plano dbt — LPG / PNAB · schema: transferegov_fundo_a_fundo

Meta 5 — Primeiro Acesso (Novos Entrantes)

Issue 2 · Extração de indicadores

LPG · Percentual de proponentes contemplados sem registro anterior de fomento

Contexto e objetivo desta aba

A LPG (Lei Paulo Gustavo) e a PNAB (Política Nacional Aldir Blanc) distribuem recursos para agentes culturais por meio de editais locais conduzidos pelos estados e municípios. Em cada edital, os agentes se inscrevem e, se selecionados, recebem o pagamento. A Meta 5 do PNC quer saber: esses editais estão chegando a pessoas novas ou sempre aos mesmos?

O indicador é o percentual de proponentes "de primeira vez" — agentes culturais contemplados em um ciclo que nunca haviam recebido recursos de fomento público antes. Isso mede se a política está ampliando o acesso à cultura ou apenas redistribuindo recursos dentro de um grupo já estabelecido.

Para calcular isso é simples em teoria: verificar, para cada CPF/CNPJ contemplado num ciclo, se esse mesmo documento aparece em ciclos anteriores. Na prática, requer uma série histórica completa e uma definição clara do que conta como "primeiro acesso" — só dentro da LPG, só dentro da PNAB, ou em qualquer mecanismo federal (PNAB, LPG, Rouanet, FSA)?

Objetivo da aba: documentar como foi calculado o indicador de novos entrantes para a LPG (resultado: 39,11% de primeiro acesso), quais campos são necessários para replicar esse cálculo na PNAB e o que ainda precisa ser definido — especialmente a questão de o que constitui "histórico de fomento" para fins desta meta.

Checklist de validação

Qual o percentual dos agentes culturais (proponentes contemplados) que acessaram recursos da política em cada ciclo e que não possuem registro anterior de recebimento de fomento?

39,11%
Novos entrantes (público-alvo Meta 5)
3.730 proponentes únicos nunca haviam recebido fomento público à cultura antes da LPG.

Resultado obtido

# Já acessou fomento antes? Total de Proponentes Únicos Percentual (%) Distribuição
1 Sim 4.187 43,9%
43,9%
2 Não ← público-alvo Meta 5 3.730 39,11%
39,11%
3 Não sabe / Não informou 1.621 17%
17%

Origem dos dados

Tabelas unificadas (LPG)

schema: transferegov_fundo_a_fundo
lpg_dados_pessoa_fisica
Chave: nº do cpf
Pessoa Física
lpg_dados_pessoa_juridica
Chave: nº do cnpj
Pessoa Jurídica
lpg_dados_coletivos
Chave: nº do cpf do representante do grupo/coletivo
Grupo / Coletivo

Fluxo de cruzamento

GOLD - Regras de Negocio Meta 5

SILVER - Unificacao e Padronizacao

BRONZE - Ingestao e Limpeza

Origens PNAB

Origens LPG

lpg_dados_pessoa_fisica

lpg_dados_pessoa_juridica

lpg_dados_coletivos

lpg_contemplados

pnab_organizacoes

raw_pnab_lista_contemplados_geral

raw_pnab_lista_contemplados_pncv

lpg_agentes_pf

lpg_agentes_pj

lpg_agentes_coletivos

pnab_agentes_pf

pnab_agentes_pj

identificadores_agentes UNION ALL dos 5 modelos Bronze

perfil_agentes_historico

perfil_acesso_fomento Padroniza Sim Nao Nao Informou

perfil_agentes_completo Inferencia de Veterania Window Function Proxy Temporal

primeiro_acesso_contemplados

primeiro_acesso_resumo

Descoberta Dinamica Schema Drift

Match Parcial CPFs mascarados

Match Parcial CPFs mascarados PNCV

Mapeamento de colunas-chave

Histórico de acesso ao fomento
já acessou recursos públicos do fomento à cultura anteriorme

Nome truncado no banco — corte da string na palavra "anteriormente". Usar como está na extração bruta.

Chaves únicas (deduplicação)
nº do cpf nº do cnpj nº do cpf do representante do grupo/coletivo

Cada chave usada conforme o tipo de proponente para evitar duplicidade na contagem.

Tratamento e higienização aplicados

Remoção de nulos — NULL (SQL) e nan (Pandas) excluídos do cálculo; mantidos apenas formulários com respostas válidas.

Limpeza de caracteres especiais — remoção de pontuações indesejadas (ex: ponto e vírgula ; no final das respostas).

Padronização de categorias via CASE WHEN — 3 grupos canônicos:

Sim agrupa: "Sim", "sim"

Não (público-alvo Meta 5) — agrupa: "Não", "nao", "nâo"

Não sabe/Não informou agrupa: "Não sei informar", "Nao informado", "nao_declarar", etc.

LPG · Meta 5 — Primeiro Acesso (Novos Entrantes)

LPG
✓ Respondido

Do total de proponentes contemplados anualmente pela LPG, qual o percentual daqueles que nunca haviam sido contemplados anteriormente em editais da própria LPG?

lpg_contemplados (CPF/CNPJ únicos por ciclo)
Chave: CPF/CNPJ — cruzamento histórico entre ciclos

Resultado atual: 39,11% de novos entrantes (3.730 proponentes únicos sem histórico anterior de fomento público à cultura).

LPG + outros
◑ Parcial — 1 de 3 mecanismos

Qual o percentual daqueles que nunca acessaram fomento federal em outros mecanismos (Rouanet, PNAB, FSA)?

perfil_acesso_fomento.sequencia_fomento
← identificadores_agentes (UNION de LPG + PNAB por CPF/CNPJ normalizado)

A perna PNAB já está implementada. identificadores_agentes unifica as 5 fontes de perfil (3 LPG + 2 PNAB) na mesma chave identificador_unico, e perfil_acesso_fomento aplica ROW_NUMBER() OVER (PARTITION BY identificador_unico) — então sequencia_fomento > 1 já identifica quem aparece nos dois programas. Rouanet e FSA seguem impossíveis: nenhuma ingestão implementada (o SALIC não tem model nem DAG; o FSA não está em sources.yml).

Três ressalvas antes de usar sequencia_fomento como resposta:
  1. A ordenação é alfabética, não cronológica. O ORDER BY programa_fomento ASC coloca 'LPG' antes de 'PNAB', então quem está nos dois programas sempre recebe sequencia_fomento = 1 na linha LPG. A coluna mede co-presença nos dois cadastros, não qual veio primeiro. Para ordem temporal seria preciso datar a inscrição.
  2. A base são fichas de cadastro, não contemplação. Os models partem de lpg_dados_pessoa_fisica e pnab_pessoas — quem se inscreveu. Estar cadastrado não é o mesmo que ter acessado fomento (recebido recurso). Para a pergunta no sentido estrito, falta juntar com os contemplados.
  3. CPF anonimizado na PNAB PF não casa com o cadastro LPG, então parte dos cruzamentos é invisível — o mesmo teto de dado que limita a Meta 3.
Meta 5 · Issue 2 · Extração de indicadores — LPG · Novos entrantes · Formulários de inscrição

Meta 3 — Ações Afirmativas · Lei Rouanet

SALIC · Diversidade de proponentes e profissionais

Rouanet · % de recursos captados/pagos para negros, indígenas, PCD e territórios vulnerabilizados

Contexto e objetivo desta aba

A Lei Rouanet é um mecanismo de renúncia fiscal: empresas e pessoas físicas podem direcionar parte do imposto de renda que pagariam ao governo para financiar projetos culturais aprovados pelo MinC. Diferente da PNAB e da LPG, o dinheiro não passa pelo governo — vai diretamente dos incentivadores para contas bancárias dos proponentes. O sistema de registro é o SALIC.

A Meta 3 aqui tem uma diferença importante em relação à PNAB/LPG: o foco prioritário são os profissionais efetivamente contratados pelos projetos (prestadores de serviço na fase de prestação de contas), não apenas os proponentes. Isso porque o proponente da Rouanet é frequentemente uma produtora ou organização que age como intermediária — quem materializa a ação cultural na prática são os artistas e técnicos contratados.

Objetivo da aba: mapear as tabelas do SALIC que permitem identificar (1) o perfil dos profissionais contratados em projetos em prestação de contas e (2) o perfil dos proponentes em projetos em execução — e mostrar como cruzar esses dados com informações de raça, PCD e territórios vulnerabilizados para calcular as cotas da meta.

Checklist de validação

P1

Prestação de contas: Qual o percentual de recursos captados que foi efetivamente pago a profissionais (contratados) de grupos minoritários — negros, indígenas, PCD e territórios vulnerabilizados?

P2

Execução: Qual o percentual de recursos captados anualmente via Lei Rouanet por proponentes autodeclarados negros, indígenas, PCD e de territórios vulnerabilizados?

P3

Secundária: Os percentuais mínimos (25% negras, 10% indígenas, 5% PCD, x% territórios) estão sendo alcançados, superados ou descumpridos?

Prioridade 1 (prestação de contas)

Diversidade dos profissionais contratados

O foco são os profissionais efetivamente contratados (prestadores de serviço), não os proponentes. O proponente é frequentemente um intermediário; quem materializa a ação cultural é o profissional na ponta. Propostas em captação são desconsideradas.

Prioridade 2 (execução)

Diversidade dos proponentes autodeclarados

Proponentes em execução (não apenas em captação) com autodeclaração de raça, etnia, PCD e localização. Verifica se os recursos captados chegam a grupos sub-representados como proponentes.

Blocos de dados — SALIC (P1 — Prestação de contas)

Projetos

Projetos
idPRONAC
Chave: PK
Identificador único do projeto
Situacao
Chave:
Filtrar projetos em prestação de contas

PlanilhaAprovacao

PlanilhaAprovacao
idPRONAC
Chave: FK → Projetos
Ligação ao projeto
idPlanilhaAprovacao
Chave: PK
Linha de orçamento aprovado

GComprovPagFisica

GComprovPagFisica
idPlanilhaAprovacao
Chave: FK
Liga pagamento à linha de orçamento
tpDocumento
Chave:
Tipo de documento comprobatório
vlComprovacao
Chave:
Valor pago ao profissional

GComprovantesPagamento

GComprovantesPagamento
idComprovacao
Chave: FK → GComprovPagFisica
Liga ao comprovante de pagamento
idComprovante
Chave:
Identificador único do comprovante
dsPagamento
Chave:
Descrição do pagamento

Agentes

Agentes
idAgente
Chave: PK
Identificador do profissional/prestador
Agente
Chave:
Nome do profissional

EnderecoNacional

EnderecoNacional
idAgente
Chave: FK → Agentes
Liga endereço ao profissional
Cidade
Chave: → cruzamento IBGE
Localização → classificação territorial

tbAgenteFisico

tbAgenteFisico
idAgente
Chave: FK → Agentes
Liga perfil ao agente físico
dtCelRaca
Chave: negras · indígenas
Autodeclaração de raça/cor
efNecessidadeEspecial
Chave: PCD
Autodeclaração de deficiência

base_territorio_vulneravel

base_territorio_vulneravel (externa)
cod_municipio_ibge
Chave: cidade → IBGE
Chave de cruzamento com município do agente
flag_vulneravel
Chave:
Classifica território como vulnerabilizado
⚠ Definição de "território vulnerabilizado" não está nos normativos da Rouanet. Requer cruzamento com base externa (IBGE/FCU).

Situacao (referência)

Situacao
Codigo
Código de situação do projeto
Descricao
Ex: "Em Prestação de Contas", "Aprovado"

SdEncaminhamentoPrestContas

SdEncaminhamentoPrestContas · SdSituacaoEmPrestContas
idPronac
Liga ao projeto
dsSituacaoEmPrestContas
Status granular da prestação de contas

Fluxo de cruzamento — P1 (Prestação de contas)

Projetos ──(Situacao = prestação de contas)──▶ filtra projetos elegíveis
    │
    └──(idPRONAC)──▶ PlanilhaAprovacao ──(idPlanilhaAprovacao)──▶ GComprovPagFisica
                                                          │
                                                          └──(idComprovacao)──▶ GComprovantesPagamento ──(idAgente)──▶ Agentes
                                                                                                           │
                                                                                                           ├──(idAgente)──▶ tbAgenteFisico ── dtCelRaca · efNecessidadeEspecial
                                                                                                           └──(idAgente)──▶ EnderecoNacional ── Cidade ──▶ base_territorio_vulneravel

Blocos de dados — SALIC (P2 — Execução, proponentes autodeclarados)

tbApIncentivos

tbApIncentivos
idPronac
Chave: FK → Projetos
Liga ao projeto
vlCaptado
Chave:
Valor efetivamente captado (denominador)
adIncentivo
Chave:
Indicador de incentivo aplicado

Projetos

Projetos
idPRONAC
Chave: PK
Identificador do projeto
idProjeto
Chave: FK → PreProjeto
Link ao pré-projeto
Situacao
Chave:
Filtrar projetos em execução

PreProjeto

PreProjeto
idPreProjeto
Chave: PK
Identificador do pré-projeto
idProjeto
Chave: FK → Projetos
Liga ao projeto aprovado
idAgente
Chave: FK → Agentes
Quem submeteu (o proponente)

Agentes + tbAgenteFisico

Agentes · tbAgenteFisico · Perfil · Verificacao
idAgente
Chave: PK
Identificador do proponente
dtCelRaca
Chave: negras · indígenas
Raça autodeclarada do proponente
efNecessidadeEspecial
Chave: PCD
PCD autodeclarado
Perfil / Caracteristicas
Chave:
Dados adicionais de perfil
Verificacao / dsVerificam
Chave:
Heteroidentificação (quando aplicável)

EnderecoNacional + Território

EnderecoNacional · base_territorio_vulneravel
Cidade
Chave: cidade → IBGE
Localização do proponente
cod_municipio_ibge
Chave:
Cruzamento com base territorial
TipoPessoa
Chave:
PF ou PJ (determina como ler o perfil)

Fluxo de cruzamento — P2 (Execução, proponentes)

tbApIncentivos ──(idPronac)──▶ Projetos ──(Situacao = em execução)──▶ filtra elegíveis
                              │
                              └──(idProjeto)──▶ PreProjeto ──(idAgente)──▶ Agentes
                                                                             │
                                                                             ├──(idAgente)──▶ tbAgenteFisico ── dtCelRaca · efNecessidadeEspecial
                                                                             └──(idAgente)──▶ EnderecoNacional ── Cidade ──▶ base_territorio_vulneravel

Rouanet · Meta 3 — O que estamos respondendo

Rouanet · Prestação de contas
◑ Depende do SALIC

Qual % dos recursos captados foi efetivamente pago a profissionais de grupos minoritários (negros, indígenas, PCD, territórios vulnerabilizados)?

GComprovPagFisica × GComprovantesPagamento × Agentes × tbAgenteFisico
Chave: idAgente (profissional contratado)

Depende de: (1) o SALIC conter autodeclaração de raça/PCD para prestadores de serviço; (2) definição de "território vulnerabilizado" — não está nos normativos da Rouanet.

Rouanet · Execução
◑ Depende do SALIC

Qual % dos recursos captados anualmente é de proponentes autodeclarados negros, indígenas, PCD e de territórios vulnerabilizados?

tbApIncentivos × Projetos × PreProjeto × Agentes × tbAgenteFisico
Chave: idAgente (proponente)

Depende de: (1) autodeclaração disponível no SALIC para proponentes; (2) variável de uso de ação afirmativa (cota/bônus/edital específico) disponível.

Rouanet · Síntese
⏳ Pendente — definição normativa

As cotas mínimas (25% negras, 10% indígenas, 5% PCD, x% territórios) estão sendo alcançadas?

agg_cotas_rouanet ✦ ← fct_captacao_elegiveis ✦

Os percentuais de 25%/10%/5% não estão fixados nos normativos da Rouanet — o Decreto delega a atos ministeriais específicos. "x%" de territórios também indefinido.

✦ model proposto nesta análise — não existe no projeto dbt. O domínio Rouanet/SALIC ainda não tem nenhum model nem DAG de ingestão implementada.

Meta 3 · Rouanet · SALIC — Diversidade de proponentes e profissionais contratados

Meta 4 — Desconcentração Territorial · Lei Rouanet

SALIC · Execução por território

Rouanet · % de recursos executados fora das capitais e nas regiões Norte, Nordeste e Centro-Oeste

Contexto e objetivo desta aba

Historicamente, a Lei Rouanet concentra seus recursos em grandes centros urbanos — especialmente São Paulo e Rio de Janeiro. A Meta 4 do PNC quer reverter isso: garantir que uma parcela crescente dos recursos de renúncia fiscal seja executada fora das capitais e nas regiões Norte, Nordeste e Centro-Oeste, historicamente sub-financiadas.

O dado-chave aqui é o local de execução do projeto, não o endereço do proponente. Um projeto pode ter sede em São Paulo mas ser executado no interior do Pará — e é o local de execução que importa para a meta. O SALIC registra isso nas tabelas Abrangencia e tbAplComprovacoes, que precisam ser cruzadas com a hierarquia geográfica do IBGE (Municipios → UF → Região) para classificar capital vs. interior e identificar a macrorregião.

Objetivo da aba: mostrar as três perguntas desta meta (fora das capitais, por macrorregião, em territórios vulnerabilizados), as tabelas do SALIC que respondem cada uma e os pontos de atenção — especialmente projetos itinerantes que percorrem múltiplos municípios e dificultam o rateio do valor por localidade.

Checklist de validação

P1

Prioritária: Qual o percentual dos recursos captados via Lei Rouanet (Pronac) é executado, anualmente, em projetos realizados fora das capitais?

P2

Do total de recursos executados anualmente, qual percentual foi executado nas regiões Norte, Nordeste e Centro-Oeste?

P3

Complementar: Qual o valor total de recursos captados por projetos executados em periferias ou territórios vulnerabilizados?

Prioridade · Desconcentração

Recursos saindo das capitais

Evidenciar o fluxo de recursos das capitais para o interior é o indicador central. Valor executado por município cruzado com tabela de capitais e hierarquia IBGE: Abrangencia → Municipios → UF → Regiao.

Complementar · Territórios

Periferias e territórios vulnerabilizados

Requer base externa de classificação territorial (flag_vulneravel / flag_periferia). A Rouanet define "Territórios Criativos", não "vulnerabilizados". Projetos itinerantes (asAbrangencia) complicam o rateio.

P1 — Percentual executado fora das capitais

Grão: pagamento em município não-capital · 1 pago total · dimensão IBGE agora via Agentes.Municipios

Projetos

Projetos
idPRONAC
Chave: PK
Identificador do projeto
idProjeto
Chave: FK → Abrangencia
Liga ao pré-projeto / abrangência

tbAplComprovacoes

tbAplComprovacoes
idPronac
Chave: FK → Projetos
Liga ao projeto
vlPagamento
Chave:
Valor executado (numerador e denominador)
aaAnoComprovacao
Chave:
Ano de referência do pagamento
sgUF
Chave:
UF do pagamento
nmMunicipio
Chave: → JOIN #capitais
Município do pagamento

#capitais

#capitais (referência)
sgUF
Chave: JOIN sgUF + nmMunicipio
UF da capital
nmMunicipio
Chave:
Nome da capital — LEFT JOIN: NULL = não-capital
Flag de desconcentração: pagamentos onde #capitais.nmMunicipio IS NULL → executado fora das capitais.

Abrangencia

Abrangencia
idProjeto
Chave: FK → Projetos
Liga ao projeto
idMunicipioBGE
Chave: FK → Municipios
Município IBGE de execução

Municipios

Municipios
idMunicipioBGE
Chave: PK
Código IBGE do município
idUFIBGE
Chave: FK → UF
Liga à UF

UF

UF
idUF
Chave: PK
Código da UF
Regiao
Chave:
Norte / Nordeste / Sul / Sudeste / CO

PopulacaoMunicipio

PopulacaoMunicipio
idMunicipio
Chave: FK → Municipios
Código do município
Populacao
Chave:
Porte do município — análise complementar

Fluxo de cruzamento — P1 (fora das capitais)

Projetos ──(idPRONAC)──▶ tbAplComprovacoes ── vlPagamento · aaAnoComprovacao · sgUF · nmMunicipio
                                         │
                                         └──(sgUF + nmMunicipio)──▶ LEFT JOIN #capitais
                                                                        NULL = fora da capital ✓
Projetos ──(idProjeto)──▶ Abrangencia ──(idMunicipioBGE)──▶ Municipios ──(idUFIBGE)──▶ UF (Regiao)
                                                                           └──(idMunicipioBGE)──▶ PopulacaoMunicipio

P2 — Percentual executado no Norte, Nordeste e Centro-Oeste

Grão: pagamento em N/NE/CO · 1 pago total · região por dsRegiao ou cadeia IBGE Municipios → UF.Regiao

tbAplComprovacoes (com dsRegiao)

tbAplComprovacoes
idPronac
Chave: FK → Projetos
Liga ao projeto
vlPagamento
Chave:
Valor executado
dsRegiao
Chave:
Região diretamente no comprovante (atalho)
sgUF
Chave: → JOIN UF
Alternativa para derivar região via UF
aaAnoComprovacao
Chave:
Ano de referência

Abrangencia → Municipios → UF

Abrangencia · Municipios · UF
Abrangencia.idMunicipioBGE
Chave: FK → Municipios
Município IBGE de execução
Municipios.idUFIBGE
Chave: FK → UF
UF do município
UF.Regiao
Chave:
Norte / Nordeste / CO / Sul / Sudeste
Dois caminhos para a região: (1) direto em dsRegiao da comprovação; (2) cadeia Abrangencia → Municipios → UF.Regiao. Priorizar o (2) para consistência IBGE.

P3 — Captado por projetos executados em periferias / territórios vulneráveis

Grão: captado dos projetos executados em território vulnerável · classificação externa; execução a nível município

tbApIncentivos

tbApIncentivos
idPronac
Chave: FK → Projetos
Liga ao projeto
vlCaptado
Chave:
Valor captado — base do cálculo P3
asIncentivo
Chave:
Indicador de tipo de incentivo

Projetos → Abrangencia

Projetos · Abrangencia
Projetos.idProjeto
Chave: FK → Abrangencia
Liga ao pré-projeto
Abrangencia.idMunicipioBGE
Chave: FK → Municipios
Município IBGE de execução
Abrangencia.asAbrangencia
Chave:
Tipo de abrangência (nacional/regional/local) — itinerância
⚠ asAbrangencia = 'N' (nacional/itinerante) dificulta rateio por município. Tratar separadamente.

Municipios → PopulacaoMunicipio

Municipios · PopulacaoMunicipio
idMunicipioBGE
Chave: PK
Código IBGE do município
idUFIBGE
Chave:
Liga à UF / Região
PopulacaoMunicipio.Populacao
Chave:
Porte do município (complementar)

base_territorio_vulnerave (externa)

base_territorio_vulnerave
cod_municipio_ibge
Chave: IBGE
Chave de cruzamento com Municipios.idMunicipioBGE
flag_vulneravel
Chave:
Município é território vulnerabilizado
flag_periferia
Chave:
Município tem áreas periféricas identificadas
Classificação externa — não existe no SALIC. Cruzamento: Abrangencia.idMunicipioBGE → base_territorio.cod_municipio_ibge.

Fluxo de cruzamento — P3 (periferias)

tbApIncentivos ──(idPronac)──▶ Projetos ──(idProjeto)──▶ Abrangencia ──(idMunicipioBGE)──▶ Municipios
                                                                                                  │
                                                                                                  ├──(idMunicipioBGE)──▶ PopulacaoMunicipio
                                                                                                  └──(cod_municipio_ibge)──▶ base_territorio_vulnerave ── flag_vulneravel · flag_periferia

Rouanet · Meta 4 — O que estamos respondendo

Rouanet · P1 · Prioridade
◑ Depende do SALIC

Qual % dos recursos captados via Rouanet é executado anualmente fora das capitais?

tbAplComprovacoes × #capitais (LEFT JOIN sgUF + nmMunicipio)
NULL no JOIN = fora da capital

Depende de verificar se SALIC registra capital vs. interior diretamente em nmMunicipio ou se requer normalização de nomes.

Rouanet · P2 · Regiões
◑ Viável via cadeia IBGE

Qual % do total executado foi nas regiões Norte, Nordeste e Centro-Oeste?

tbAplComprovacoes.dsRegiao (atalho)
ou Abrangencia → Municipios → UF.Regiao (cadeia IBGE)

Centro-Oeste é prioritário nos normativos mas não consta explicitamente na meta — reportar junto para completude.

Rouanet · P3 · Periferias
⏳ Pendente — dados externos

Qual o valor total captado por projetos em periferias ou territórios vulnerabilizados?

Abrangencia.idMunicipioBGE → base_territorio_vulnerave
Chave: cod_municipio_ibge · flag_vulneravel · flag_periferia

Rouanet define "Territórios Criativos", não "vulnerabilizados". Projetos com asAbrangencia nacional complicam o rateio. Tratar como complementar.

Meta 4 · Rouanet · SALIC — Desconcentração territorial dos recursos captados e executados

Meta 5 — Primeiro Acesso · Lei Rouanet

SALIC · Novos proponentes no Pronac

Rouanet · % de proponentes sem histórico prévio de aprovação ou captação no Pronac

Contexto e objetivo desta aba

Assim como na PNAB/LPG, a Meta 5 para a Rouanet quer saber se a política está abrindo espaço para novos agentes culturais ou se os mesmos proponentes de sempre captam recursos ano após ano. O indicador é o percentual de proponentes que, no ano de referência, nunca haviam registrado um projeto no Pronac antes.

Na Rouanet, isso tem uma particularidade: a lei funciona por fluxo contínuo (o proponente apresenta o projeto quando quiser, sem aguardar um edital), o que torna a definição de "ciclo" menos óbvia. Além disso, a própria normativa (IN MinC nº 29/2026) define "série histórica de captação" como os últimos 3 exercícios — o que levanta a dúvida: um proponente que captou há 5 anos e parou, volta a ser "novo entrante" hoje?

Objetivo da aba: mapear as tabelas do SALIC necessárias para identificar o histórico de projetos por proponente (idAgente × AnoProjeto), mostrar como detectar o "primeiro acesso" e apontar as definições que ainda precisam ser tomadas antes de calcular o indicador.

Checklist de validação

P1

Prioritária: Qual o percentual de proponentes que, no ano de referência, tiveram projetos aprovados ou captaram recursos pela Lei Rouanet e não possuíam nenhum projeto registrado previamente no Pronac?

P2

Depende de ingestão: Qual o percentual daqueles que nunca acessaram fomento federal em outros mecanismos (LPG, PNAB, FSA)? O lado Transferegov deste cruzamento já existe (identificadores_agentes, LPG + PNAB unificados por CPF/CNPJ). Falta o lado SALIC.

Blocos de dados — SALIC (Meta 5)

Projetos

Projetos
idPRONAC
Chave: PK
Identificador do projeto
idAgente
Chave: FK → Agentes
Proponente do projeto
Situacao
Chave:
Aprovado / em captação / em execução
AnoProjeto
Chave:
Ano de referência — base para identificar "primeiro acesso" no ciclo

Agentes (histórico)

Agentes
idAgente
Chave: PK
Identificador único do proponente
CPF / CNPJ
Chave: cross-policy
Chave para cruzamento com LPG/PNAB/FSA (cenário avançado)
Primeiro acesso = idAgente sem nenhum Projeto.AnoProjeto < ano de referência. Requer série histórica completa do Pronac — atenção ao re-entrante (parou >3 anos).

tbApIncentivos

tbApIncentivos
idPronac
Chave: FK → Projetos
Liga ao projeto com captação efetiva
vlCaptado
Chave:
Valida se o acesso ao recurso foi concretizado (não só aprovação)

Fluxo de cruzamento — Meta 5

Projetos ──(AnoProjeto = ano_ref, Situacao = aprovado/captando)──▶ proponentes do ciclo
    │
    └──(idAgente)──▶ Agentes ──(CPF/CNPJ)──▶ histórico multi-política [cenário avançado]
                    │
                    └──(idAgente)──▶ Projetos históricos (AnoProjeto < ano_ref)
                                              IS NULL → primeiro acesso no Pronac ✓
Projetos ──(idPRONAC)──▶ tbApIncentivos ── vlCaptado (confirma captação efetiva)

Rouanet · Meta 5 — O que estamos respondendo

Rouanet · P1
◑ Depende do SALIC

Qual % dos proponentes do ano de referência não possuía nenhum projeto registrado anteriormente no Pronac?

Projetos × Agentes (histórico de AnoProjeto)
Chave: idAgente — ausência de projetos em anos anteriores

A Rouanet opera principalmente por fluxo contínuo (não editais). Requer definição de "primeiro acesso": só Pronac ou todo o histórico federal? Atenção ao re-entrante (>3 anos sem captar).

Rouanet + outros · P2
⏳ Bloqueado — falta ingestão do SALIC

Qual % nunca acessou fomento federal em LPG, PNAB ou FSA?

SALIC (ausente) × identificadores_agentes (pronto)
Cruzamento: CPF/CNPJ (Agentes) entre bases

Metade do cruzamento já está construída. identificadores_agentes unifica LPG + PNAB na chave identificador_unico (CPF/CNPJ normalizado) — é exatamente a contraparte que este indicador precisa. O que falta é o lado Rouanet: o repositório não tem nenhuma referência a SALIC, PRONAC ou FSA — zero models, zero DAGs, e sources.yml declara apenas dois schemas (transferegov_fundo_a_fundo e bsc_pnab). Não é uma questão de prioridade: sem ingestão, o indicador é inexequível. Definição pendente em paralelo: a IN MinC nº 29/2026 fixa "série histórica" em 3 exercícios — precisa decidir se o escopo temporal segue isso ou o histórico completo.

Meta 5 · Rouanet · SALIC — Novos proponentes (primeiro acesso ao Pronac)

Visão das Metas

Síntese comparativa · PNC 2030

Para cada meta do PNC, o que o objetivo exige, o que cada política entrega e onde estão os bloqueios.

Como ler esta tela

Cada meta tem um objetivo normativo (o que o PNC exige até 2030) e um indicador de acompanhamento (como medimos o avanço). Abaixo do objetivo, cada política é avaliada contra o que está de fato no código da main — não contra o que foi planejado.

✓ Pipeline implementado — existe model dbt rodando  ·  ◑ Mapeado — tabelas levantadas, nada construído  ·  ◑ Ressalva — implementado, mas com limitação que afeta o número  ·  ⏳ Pendente / Bloqueio — impedimento de dado, acesso, normativa ou escopo

Onde cada meta está, por política

LPG
Transferegov
PNAB
Transferegov
Lei Rouanet
SALIC · sem ingestão
Meta 2
Execução Financeira
Meta 3
Ações Afirmativas
Meta 4
Desconcentração Territorial
Meta 5
Primeiro Acesso
pipeline implementado implementado com ressalva, ou apenas mapeado parado — dado, acesso, norma ou escopo ▸ clique numa célula para ir ao detalhe
Leia a coluna Rouanet com cuidado: ela é uniformemente amarela porque todas as suas células compartilham um único bloqueio — o SALIC não tem nenhuma ingestão no projeto (zero models, zero DAGs). Um "◑" na PNAB/LPG significa implementado com limitação; na Rouanet significa apenas mapeado no papel. Não são o mesmo grau de avanço.
Meta 2
Execução Financeira e Distribuição de Recursos
Objetivo PNC 2030 Ampliar em 100% o volume de recursos financeiros aplicados na cultura em todas as regiões do país até 2030.
Indicador Volume total de recursos executados por política, por ente federativo e por região — comparado à linha de base de 2023.
PNAB / LPG Transferegov
◑ Parcial — dado bruto sim, indicador não
Distribuição por território e nível federativo
Ingestão implementada (PRs #1 e #9): DAGs encadeadas programas → planos_acao → relatorios_gestao → anexos → download → extração alimentam raw_planos_acao e raw_gestao_financeira_lancamentos. Mas nenhum model dbt calcula a distribuição. A Meta 2 não tem domínio próprio — só cotas_dbt (Meta 3) e agentes_dbt (Meta 5) existem. O dado está no banco; o indicador precisa ser construído.
◑ Parcial
Volume total União + aporte dos entes
Lado União: ~R$2,9bi de repasse em 2023 — número do diagnóstico de junho, não reproduzido por nenhum model (não aparece em nenhum SQL, teste ou doc do projeto). Aporte próprio dos entes depende do SICONFI, fora do escopo atual.
⏳ Pendente
Validação contra o caixa real (BB Gestão Ágil)
O cruzamento contra duas fontes independentes — plano de ação vs. extrato bancário — depende do bbágil, que está bloqueado: a API do BSC (bsc.cultura.gov.br) só resolve via VPN do governo. Sem isso, a execução declarada não tem contraprova.
⏳ Pendente
% destinado a programas estruturantes do SNC
Duplamente bloqueado: pelo bbágil (é de onde vêm as categorias) e por definição de negócio — o MinC precisa validar quais categorias contam como "estruturantes do SNC".
Lei Rouanet SALIC · não avaliado
⏳ Fora do escopo mapeado
Renúncia fiscal não entra no volume de recursos aplicados
O objetivo da Meta 2 fala de "recursos financeiros aplicados na cultura", e a Rouanet move volume relevante por renúncia fiscal — mas este painel não mapeou a Meta 2 pelo lado Rouanet: não há aba correspondente nem tabelas do SALIC levantadas para execução financeira. Some-se a isso que o SALIC não tem nenhuma ingestão no projeto. Decisão de escopo a tomar: a captação via renúncia conta para a linha de base de 2023 da Meta 2?
Meta 3
Ações Afirmativas e Diversidade Cultural
Objetivo PNC 2030 Garantir cotas mínimas anuais sobre o total de recursos pagos: ≥25% pessoas negras · ≥10% indígenas · ≥5% PCD · ≥20% territórios vulnerabilizados.
Indicador % do valor total pago no ano destinado a cada grupo prioritário — medido sobre o montante financeiro, não sobre contagem de beneficiários.
LPG Transferegov
✓ Pipeline implementado
% pago por grupo prioritário — cotas de raça, etnia e PCD
Perfil cruzado com pagamentos via CPF/CNPJ. Pipeline completo e implementado (PR #16): 5 stg_agentes_*perfil_agentes_normalizadofct_pagamentos_elegiveisdistribuicao_cotas_lpg. Vale para as cotas negra (25%), indígena (10%) e PCD (5%).
◑ Parcial
Cota de território vulnerabilizado (20%) — subestimada
A 4ª cota está implementada, mas o casamento é por nome de município + UF (chave_municipio_uf), e só ~47,5% dos pagamentos com perfil casam hoje. Grafias divergentes de município derrubam o numerador, então o percentual apurado é um piso, não a medida real. O crosswalk vem de territorio_fcu_setores (33.273 setores do Censo 2022) colapsado em territorio_municipio.
✓ Pipeline implementado
Status de cumprimento das cotas por ano
distribuicao_cotas_lpg e distribuicao_cotas_pnab entregam status_sobre_com_perfil ('alcancada' / 'descumprida') por (ano, grupo) — veredito binário, sem categoria "superada".
◑ Ressalva metodológica
O veredito não usa o denominador que o PNC exige
O indicador normativo é o % sobre o valor total pago. O veredito implementado usa pct_sobre_com_perfil — só a fatia cujo perfil é conhecido. Os dois números divergem, e a diferença cresce quanto menor a cobertura. Hoje: cobertura temporal de 61,6% (38,4% do valor sem ano identificado, então não entra em nenhum ciclo) e cobertura de perfil limitada por teto de dado — nem todo contemplado preencheu ficha de raça/PCD. cobertura_pagamentos deve ser lida antes de qualquer conclusão.
PNAB Transferegov
◑ Parcial
% pago por grupo prioritário
3 cotas (negra, indígena, PCD) implementadas em distribuicao_cotas_pnab — sem território, que é só LPG. PJ (CNPJ) casa via pnab_organizacoes. PF segue bloqueado: CPF vem anonimizado e entra como NULL, virando "órfão" no denominador.
⏳ Pendente
Denominador correto: valor pago, não valor repassado
Hoje a PNAB usa as listas de contemplados (~R$2,7bi), que medem repasse a entes federados — não pagamento a pessoas. O correto para cota é o valor pago (bbágil, ~R$447mi). Trocar o denominador depende de liberar o bbágil.
⏳ Pendente
bbágil (valor pago real) — 4 models prontos e desabilitados
stg_bbagil, bbagil_ente_ano, fct_pagamentos_bbagil e comparativo_recebido_vs_pago estão escritos com enabled=false, aguardando bsc_pnab.fato_bbagil. Bloqueio: a API do BSC (bsc.cultura.gov.br) só resolve via VPN do governo.
Lei Rouanet SALIC · sem ingestão
⏳ Bloqueio comum a toda a Rouanet
Nenhuma ingestão do SALIC implementada
Os itens abaixo estão marcados como "parcial" no sentido de mapeados e viáveis em princípio — as tabelas do SALIC foram levantadas neste painel. Mas sources.yml declara apenas transferegov_fundo_a_fundo e bsc_pnab, e o repositório não tem uma única referência a SALIC, PRONAC ou FSA: zero models, zero DAGs. Todos os itens Rouanet compartilham este mesmo bloqueio único — não são frentes independentes de progresso.
◑ Mapeado
% pago a profissionais de grupos prioritários (prestação de contas)
Estrutura mapeada: GComprovPagFisica × GComprovantesPagamento × tbAgenteFisico. Dependência adicional, além da ingestão: o SALIC precisa conter autodeclaração de raça/PCD para prestadores de serviço.
◑ Mapeado
% captado por proponentes autodeclarados
tbApIncentivos × Projetos × tbAgenteFisico. Mesma dependência: campo de autodeclaração de raça e PCD disponível no cadastro de proponentes.
⏳ Pendente
Percentuais mínimos da Rouanet ainda não definidos
Os limiares 25%/10%/5% não estão fixados nos normativos da Rouanet — Decreto delega a atos ministeriais. Sem meta numérica não é possível calcular cumprimento.
Meta 4
Desconcentração Territorial
Objetivo PNC 2030 Garantir que ≥30% dos recursos das políticas públicas de cultura sejam destinados a projetos realizados fora das capitais estaduais, priorizando regiões Norte, Nordeste e Centro-Oeste.
Indicador % do valor total executado/captado no ano em municípios não-capitais · % por região geográfica · % em territórios vulnerabilizados.
PNAB / LPG Transferegov · não mapeado
⏳ Lacuna de escopo
A meta vale para todas as políticas, mas só a Rouanet foi mapeada
O objetivo fala de "recursos das políticas públicas de cultura" — inclui PNAB e LPG. Este painel, porém, só abriu aba de Meta 4 para a Rouanet, e a Visão das Metas herdou essa lacuna. Não é falta de dado: a infraestrutura territorial existe e está em uso na Meta 3 — territorio_municipio (crosswalk IBGE), chave_municipio_uf no perfil do agente, e raw_planos_acao com o ente federado e seu codigo_ibge. Falta construir o indicador de não-capitais e de região para PNAB/LPG, e decidir se ele mede o ente que recebeu ou o agente que foi pago — que dão respostas diferentes.
Lei Rouanet SALIC · sem ingestão
⏳ Bloqueio comum a toda a Rouanet
Nenhuma ingestão do SALIC implementada
Como a Meta 4 é avaliada apenas pelo lado Rouanet neste painel, e a Rouanet não tem ingestão alguma, esta meta está integralmente parada — é a única nessa situação. Os itens abaixo são mapeamento de tabelas, não implementação.
◑ Mapeado
% executado fora das capitais
tbAplComprovacoes traz sgUF + nmMunicipio por comprovação. LEFT JOIN com lista #capitais identifica interior vs. capital. Requer normalização de nomes de municípios — o mesmo problema de grafia que hoje limita a cota territorial da LPG a ~47,5% de casamento.
◑ Mapeado
% por região geográfica
Atalho: tbAplComprovacoes.dsRegiao. Caminho robusto: Abrangencia → Municipios → UF → Regiao (cadeia IBGE). Norte, Nordeste e Centro-Oeste são as regiões prioritárias nos normativos.
⏳ Pendente
% em periferias e territórios vulnerabilizados
A base externa que este painel propunha já existe no projeto. O painel previa uma base_territorio_vulnerave com flag_vulneravel e flag_periferia — nomes que nunca existiram. O que a PR #16 ingeriu (via ingest_territorio_fcu_dag) é territorio_fcu_setores: 33.273 setores censitários periféricos do Censo 2022, colapsados a município em territorio_municipio, expondo flag_territorio_vulneravel. Não há flag_periferia separada — periferia e vulnerabilidade vêm na mesma flag. Esse ativo é reutilizável para a Rouanet assim que houver ingestão do SALIC. Complicador que permanece: projetos com asAbrangencia="Nacional" não têm município definido — rateio indefinido.
Meta 5
Primeiro Acesso — Novos Entrantes
Objetivo PNC 2030 Garantir que ≥30% dos beneficiários anuais sejam agentes culturais que nunca acessaram fomento público federal à cultura anteriormente.
Indicador % de beneficiários do ano de referência sem histórico de contemplação em qualquer política federal de fomento cultural — medido sobre contagem de CPF/CNPJ únicos.
LPG Transferegov · PNAB pelo mesmo domínio
✓ Pipeline implementado
% de contemplados sem histórico anterior na LPG
Pipeline implementado no domínio agentes_dbt: perfil_acesso_fomentoprimeiro_acesso_contemplados / primeiro_acesso_resumo. A saída é uma tabulação cruzada por programa_fomento × contemplado (sim/não) × categoria_primeiro_acesso (Sim · Não · Não sabe/Não informou), com status_dado separando o que é autodeclarado (Confirmado) do que é inferido pela ausência na base (Inferido).
⏳ Número do painel não reproduzido
Os 39,11% vêm do diagnóstico, não do pipeline
O painel afirmava "39,11% de novos entrantes (3.730 proponentes)". Esse número não é produzido por nenhum model, teste ou doc do projeto — só aparece no próprio painel. E o método divergiu: o diagnóstico media contemplação cruzada entre ciclos de lpg_contemplados; o pipeline implementado combina autodeclaração do formulário com flag de contemplação. São definições diferentes de "primeiro acesso", então o número precisa ser reapurado rodando o dbt antes de ser reportado.
◑ Ressalva metodológica
O match de CPF mascarado usa 6 dígitos e pode colidir
Documentado no próprio primeiro_acesso_contemplados: o cadastro de proponentes LPG traz o CPF anonimizado como ***.NNN.NNN-**, enquanto lpg_contemplados traz o CPF completo — match exato nunca ocorre, gerando falso negativo sistemático. A solução foi casar pelo "miolo" (6 dígitos centrais), o que tem risco de colisão entre CPFs distintos com miolo igual. Some-se: na lista geral da PNAB só o CNPJ é utilizável, então PJ contemplada sem registro no PNCV fica de fora.
◑ Ressalva de ingestão
Colunas "fantasma" nas planilhas de contemplados
A ingestão dinâmica (extracao_planilhas.py) não normaliza caracteres invisíveis nos nomes de coluna, então o cabeçalho "CPF ou CNPJ" de arquivos diferentes virou colunas distintas no Postgres (ex.: com e sem NBSP), cada uma com parte dos dados. O model contorna resolvendo a coluna dinamicamente via information_schema — sem isso, a maior parte dos contemplados ficaria invisível ao JOIN. É contorno, não correção: a causa segue na ingestão.
◑ Parcial
% sem histórico em outros mecanismos federais
A perna LPG × PNAB já está implementada: identificadores_agentes unifica os 5 cadastros na chave identificador_unico e perfil_acesso_fomento.sequencia_fomento marca quem aparece nos dois programas. Ressalva: a ordenação é alfabética (não cronológica) e a base são fichas de inscrição, não contemplação. Rouanet e FSA seguem impossíveis — sem nenhuma ingestão implementada.
Lei Rouanet SALIC · sem ingestão
⏳ Bloqueio comum a toda a Rouanet
Nenhuma ingestão do SALIC implementada
Mesmo bloqueio das Metas 3 e 4: zero models, zero DAGs, nenhuma referência a SALIC/PRONAC/FSA no repositório. O item abaixo é mapeamento de tabelas, não implementação.
◑ Mapeado
% de proponentes sem histórico no Pronac
Estrutura: Projetos × Agentes (AnoProjeto) — ausência em anos anteriores = primeiro acesso. Complicador: a Rouanet opera por fluxo contínuo (sem editais), então "ciclo" não é óbvio. IN MinC 29/2026 define série histórica como últimos 3 exercícios.
⏳ Pendente
% sem histórico em LPG, PNAB ou FSA
A contraparte Transferegov já existe: identificadores_agentes unifica LPG + PNAB por CPF/CNPJ normalizado. Falta o lado SALIC — o repositório não tem nenhum model, DAG ou source de SALIC/PRONAC/FSA. Não é despriorização: sem ingestão, é inexequível. Em paralelo, definir escopo temporal (IN MinC 29/2026 fixa 3 exercícios vs. histórico completo).
Visão das Metas · Síntese comparativa · PNC 2030 — LPG · PNAB · Lei Rouanet

Histórico

Abr–Jul 2026 · 5 PRs

O que foi construído, em que ordem, e quanto cada entrega avançou nas metas do PNC.

Como ler esta tela

Cada entrada é um Pull Request efetivamente mergeado na main, descrito a partir do próprio corpo do PR e dos commits. As etiquetas ao pé de cada entrada dizem qual meta do PNC aquilo destravou — e o que continuou parado. O repositório foi criado a partir de uma base GovHub em abril de 2026; o histórico anterior a isso pertence a outro projeto (emendas parlamentares) e não é contado aqui.

■ Avança — entrega direta na meta  ·  ■ Viabiliza — cria a base para a meta  ·  ■ Infra — não mexe em meta  ·  ■ Bloqueio — abre ou mantém impedimento

Onde cada meta está hoje

Meta 2
Execução Financeira
0 models dbt
Ingestão pronta (raw_planos_acao, raw_gestao_financeira_lancamentos), mas nenhum domínio dbt construído. A validação contra caixa real depende do bbágil.
Meta 3
Ações Afirmativas
21 models · 6 macros
Domínio cotas_dbt completo para LPG (4 cotas) e PNAB (3 cotas). Cobertura temporal 61,6%. Único domínio com veredito de cota funcionando.
Meta 5
Primeiro Acesso
4 golds
Domínio agentes_dbt entrega primeiro_acesso_resumo por programa. Restringe-se a LPG/PNAB — cruzamento federal (SALIC, FSA) não iniciado.
Meta 4
Desconcentração Territorial
0 models · 0 DAGs
Avaliada só pelo lado Rouanet, que não tem ingestão alguma — por isso está integralmente parada. Mas a meta vale para PNAB/LPG também, e ali a infraestrutura territorial já existe (territorio_municipio): é lacuna de escopo, não de dado.

Linha do tempo

15/04/2026 PR #1 CaioMelo25
Pipeline de ingestão fundo a fundo (Transferegov)
Estabelece o pipeline completo de rastreabilidade do MinC. Quatro DAGs encadeadas extraem da API do Transferegov e pousam na camada bruta.
  • minc_api_programas_dagraw_programas: programas-alvo (PNAB 46/47 · LPG 60/61/62)
  • minc_api_planos_acao_dagraw_planos_acao: itera sobre os IDs dos programas
  • minc_api_relatorios_gestao_dagrelatorios_gestao: filtra apenas tipo_relatorio_gestao == "FINAL"
  • minc_api_anexos_relatorios_daganexos_relatorios: metadata dos PDFs, preservando a FK id_relatorio_gestao
  • Fail-fast: cada DAG valida no banco se a dependência upstream existe antes de rodar, evitando queries vazias
  • Arquitetura event-driven: cron substituído por TriggerDagRunOperator em cascata — elimina race conditions com a API do governo
Meta 2 · viabiliza — cria a base bruta da execução financeira Metas 3/4/5 · sem efeito ainda
09/06/2026 PR #9 CaioMelo25
Resiliência do pipeline e extração de planilhas
Refatora as DAGs para que falhas em arquivos individuais não travem o pipeline inteiro. É o PR que efetivamente destrava os dados de contemplados — sem ele, nem Meta 3 nem Meta 5 teriam insumo.
  • Fluxo contínuo: API → Download → Extração, encadeado com TriggerRule.ALL_DONE — a etapa seguinte roda mesmo se a anterior falhar parcialmente
  • Isolamento por arquivo: Dynamic Task Mapping com max_active_tis_per_dag=3 (evita HTTP 429), lotes de 50 arquivos e try-except individual — um anexo corrompido não mata a task
  • extracao_planilhas.py: extrator unificado PNAB (roteamento aba → tabela) e LPG (3 templates: Editais, Contemplados, Dados Básicos)
  • Proteção contra OOM: rejeição de .ods, engine calamine prioritária e timeout SIGALRM de 120s por arquivo — elimina as causas de OOM Kill nos workers
  • Schema evolution: _evolve_schema() adiciona colunas novas via ALTER TABLE; chaves em lowercase resolvem UndefinedColumn por case-folding do Postgres
Meta 3 · viabiliza — as listas de contemplados passam a chegar ao banco Meta 5 · viabiliza — histórico de contemplação por CPF/CNPJ
18/06/2026 PR #13 Arthrok
Refatoração de arquitetura e bump do Airflow
PR sem descrição — o conteúdo foi reconstruído a partir dos commits.
  • 640270a altera a estrutura de pastas do projeto
  • 9e4fed2 adapta as DAGs para o bump do Airflow 2.8.1 → 3.2.2
  • d8cdcc6 atualiza o CI/CD para a nova estrutura
Infra · nenhuma meta afetada diretamente
22/06/2026 f7898ea LuizaMaluf
Publicação deste painel de mapeamento
Diagnóstico de viabilidade analítica das três políticas, publicado como GitHub Pages na branch órfã gh-pages. Seis commits em ~48 minutos, incluindo o redesenho da Visão das Metas com objetivo normativo e comparativo por política.
  • Mapeamento por meta e por política: o que existe, onde está, como se conecta
  • Propôs nominalmente o pipeline dbt da Meta 3 — antes de ele existir no repositório
  • Marcou com as tabelas propostas que não existiam no schema original
Documentação · define o alvo das Metas 2, 3, 4 e 5
15/07/2026 PR #15 devwallyson · Caio Melo Borges
Reestruturação dbt, domínio agentes_dbt e extração bancária
PR maior do que o corpo indica: além da reestruturação de diretórios e do data quality, traz o primeiro domínio dbt de negócio do projeto e a extração dos dados bancários.
  • a77d1d0 (01/07) cria o domínio agentes_dbt — 4 golds: perfil_agentes_completo, perfil_acesso_fomento, primeiro_acesso_contemplados, primeiro_acesso_resumo
  • 2112b07 (08/07) implementa a extração de dados bancários do Transferegov
  • 3df7716 (09/07) corrige autenticação SCA, rotas do BB Ágil e bugs de consolidação do fato_bbagil
  • Macros de data quality: row_count_match, verificacao_tipagem
  • Efeito colateral: deixou sources.yml na main com marcadores de conflito não resolvidos (<<<<<<< / ======= / >>>>>>>) — corrigido depois pela PR #16
Meta 5 · avança — primeiro acesso passa a ser calculável (LPG/PNAB) Meta 2/3 · viabiliza — abre caminho para o valor pago real Bloqueio · API do BSC só resolve via VPN do governo
18/07/2026 PR #16 ananunesv
Domínio cotas_dbt — auditoria das cotas de ações afirmativas
A entrega mais substantiva do período: 21 models e 6 macros em arquitetura medalhão, no schema cotas. É o primeiro domínio que produz um veredito de meta do PNC.
  • Grão payment-first: fct_pagamentos_elegiveis tem 1 linha por pagamento — todo pagamento é preservado, mesmo sem perfil ou sem ano, para o denominador da cota ser fiel e os órfãos ficarem visíveis
  • Cotas LPG completas: negra 25% · indígena 10% · PCD 5% · território vulnerabilizado 20%, em distribuicao_cotas_lpg
  • Cotas PNAB: 3 grupos em distribuicao_cotas_pnab. Golds separadas por programa — LPG e PNAB não se misturam, via a macro distribuicao_cotas(programa, incluir_territorio)
  • Cobertura de ano: 56,2% → 61,6% com a 3ª camada de datação por nome de arquivo (edital_ano_por_arquivo) — +28.950 pagamentos datados
  • Território: crosswalk IBGE de setores periféricos ingerido (territorio_fcu_setores, 33.273 setores), colapsado a município em territorio_municipio
  • Limpeza: subtotais ("TOTAL DE RECURSOS") e instruções de template filtrados em contemplados_unif para não vazarem ao fato
  • Corrigiu incidentalmente o sources.yml quebrado pela PR #15
Meta 3 · avança — veredito de cota funcionando por (ano, grupo) Bloqueio · 4 models bbágil entram desabilitados (enabled=false) Bloqueio · denominador PNAB mede repasse, não pagamento

Bloqueios abertos

Bloqueio Metas afetadas Natureza O que destrava
bbágil indisponível
4 models escritos e enabled=false: stg_bbagil, bbagil_ente_ano, fct_pagamentos_bbagil, comparativo_recebido_vs_pago
Meta 2 · Meta 3 Acesso — a API do BSC (bsc.cultura.gov.br) só resolve via VPN do governo Rodar a extração em ambiente autorizado (ou obter dump) para gerar bsc_pnab.fato_bbagil, depois virar enabled=true nos 4 models e reativar no gold/schema.yml
Denominador PNAB incorreto
as cotas usam listas de contemplados (~R$2,7bi)
Meta 3 Semântica de dado — as listas medem repasse a entes federados, não pagamento a pessoas. Para cota, o correto é o pago (~R$447mi) Depende do bbágil. Trocar a base do fato PNAB de valor-recebido para valor-pago
Rouanet / SALIC sem ingestão
nenhum model, nenhuma DAG
Meta 3 · Meta 4 · Meta 5 Escopo — o domínio existe apenas como diagnóstico neste painel Implementar a ingestão do SALIC. A Meta 4 é exclusivamente Rouanet, então hoje está integralmente parada
Cobertura de perfil
nem todo contemplado preencheu ficha de raça/PCD
Meta 3 Teto de dado — não é bug, é ausência na origem Backfill de fichas PNAB. Ler cobertura_pagamentos antes de qualquer conclusão de cota
Casamento territorial por nome
~47,5% dos com-perfil casam hoje
Meta 3 (cota de 20%) Qualidade — grafias divergentes de município subestimam a cota Refinar o casamento; o IBGE do município viria do bbágil (ente_bbagil = id_plano_acaoraw_planos_acao.codigo_ibge)
Cobertura temporal em 61,6%
38,4% do valor sem ano identificado
Meta 3 Derivação — ano vem de 3 camadas (nome do edital, anexo, nome do arquivo) Datação via Querido Diário (ano + IBGE por diário oficial) — planejada e documentada
CPF anonimizado na PNAB PF Meta 3 Acesso — CPF mascarado entra como NULL e vira órfão no denominador Acesso ao dado completo. PJ (CNPJ) já casa normalmente

Uma ressalva sobre os vereditos "✓ Respondido"

O veredito de cota (status_sobre_com_perfil) é binário'alcancada' ou 'descumprida' — e é calculado sobre pct_sobre_com_perfil, ou seja, sobre a fatia de pagamentos cujo perfil é conhecido. Isso é coerente com o desenho do pipeline, que expõe a cobertura antes das cotas. Mas não é a mesma coisa que o indicador normativo do PNC, que fala do percentual sobre o valor total pago. Com cobertura de perfil abaixo de 100%, os dois números divergem — e a diferença é maior quanto menor a cobertura.