Período eleitoral (até a diplomação, 18/12): o método recusa qualquer uso eleitoral, e de 1º–5/10 e 22–26/10 a sua IA não deve gerar cards, imagens, áudios ou vídeos sobre pessoas públicas — só texto com fontes. Entenda as regras.

Para agentes: versão .md desta página · índice em /llms.txt · para levar impresso, use a impressão do navegador (Ctrl/Cmd + P) — o layout já está preparado

Playbook 04 — Extrato de gestão: Prefeito(a) em exercício (fontes fiscais nacionais)

Versão: 0.6 · 2026-08-30 · Endpoints validados ao vivo em 30/08/2026 · Primeira publicação (promovido do laboratório após bateria de campo multi-persona — capital, cidade média e município de centenas de habitantes — e dois red teams: família Executivo, 07/2026, e Passo 5½, 30/08/2026). Histórico de laboratório: v0.2 bateria ponta a ponta (filtro cnpjOrgao do PNCP funciona; 204 = zero contratos; cobertura honesta — só o DCA alcança os ~5.570 municípios) · v0.3 Passo 5½ opcional (atos no Diário Oficial via índice, citando sempre o Diário original) · v0.4 bateria de campo (teto de 365 dias do PNCP; subcontagem por CNPJ único em capitais; cobertura do índice de diários idiossincrática por publicador) · v0.5 firewall ente×gestor (T13), caso antecessor e T11/T12 inline · v0.6 Passo 5½ endurecido (guardrails de busca L11–L17). Função: montar o retrato fiscal verificável da gestão do Executivo municipal em exercício — prefeito(a)/prefeitura — a partir de fontes oficiais nacionais e padronizadas (Tesouro Nacional/SICONFI, PNCP, IBGE), sem depender do portal de cada cidade. É o primeiro playbook do Executivo no ar; leia antes o Playbook 00 — Roteador (regras 0–6, que valem aqui integralmente).

Escopo — leia primeiro (a distinção que define este playbook)

Cobertura real por tipo de dado (validado em campo, incluindo o menor município do país):

  • Balanço anual (DCA): amplo — presente até em municípios de centenas de habitantes. É o piso confiável do “cobre os ~5.570 municípios”.
  • Execução dentro do ano (RREO) e saúde fiscal da LRF (RGF): variável por porte e ano — faltam com frequência em municípios pequenos (validado: zero em todos os anos para 2 de 3 pequenos testados). Onde faltam, é inadimplência declaratória (fato fiscalizável), não erro seu.
  • Contratos (PNCP): variável — municípios pequenos publicam pouco ou nada (Lei 14.133/2021); zero contratos é fato datado, não falha.

Este playbook fiscaliza a gestão executiva municipal (prefeito/prefeitura) por fontes fiscais nacionais. Ele deliberadamente não cobre vereadores individualmente: nenhuma fonte nacional detalha ato de parlamentar municipal (voto, emenda, indicação, verba de gabinete) — isso exigiria o portal da própria câmara, caso a caso, fora deste playbook. O que as fontes nacionais dão sobre o Legislativo municipal é apenas o agregado da despesa da câmara (RGF co_poder=L), nunca o vereador.

Usa {MUNICÍPIO} / {UF} / {IBGE} / {CNPJ} — nunca nomeia pessoa em arquivo. O retrato é do ente e da gestão em exercício; o nome do(a) prefeito(a) entra só como identificação do cargo, confirmada na fonte oficial (portal da prefeitura ou diário oficial), nunca de memória.

Fora de escopo: candidaturas, eleições, comparação para fins de voto, vida privada, mérito/qualidade de contrato (só existência e valor) e desempenho individual de vereador.

Regras de conduta

Idênticas aos demais playbooks publicados — as regras 0–6 do Roteador valem integralmente: não recomendar voto, inclusive pedidos indiretos (superlativos, tabelas comparativas de municípios/gestores por qualquer finalidade — inclusive por proxy “transparência/opacidade/quem esconde mais/qual mais bem gerido”, listagens em lote, reformulações, “finalidade declarada não altera a regra”, com modelo de recusa); não agregue nem ordene “não-declarados” entre municípios num placar — inadimplência declaratória é fato por ente, datado e isolado; contar ausências entre entes cria ranking de gestores por proxy; fonte primária obrigatória; fato ≠ inferência; minimização de dados; lacunas declaradas.

Guardrail específico: execução orçamentária declarada e contratos publicados são fatos — não são veredito de corrupção nem de boa gestão. Um valor alto, um contrato caro ou um limite de pessoal próximo do teto são pontos a verificar, nunca conclusões.

Guardrails do Executivo, inline (o artefato que você colou precisa carregá-los):

  • T13 — Firewall ente × gestor. A situação fiscal do município (dívida, execução, pessoal e a própria ausência de declaração) tem causas fora da vontade do prefeito: dependência de transferências (FPM, FUNDEB, SUS), base econômica local, dívida herdada, despesas obrigatórias e vinculadas. “Cidade quebrada/mal gerida → prefeito incompetente” é inferência vedada, mesmo com o fato. O dado fiscal do município é fato do território, com a ressalva multicausal — nunca veredito sobre a pessoa. (Complementa o “não achei ≠ esconde”.)
  • T6 estendido — caso antecessor. Comparar o mesmo município entre duas gestões (atual × anterior, “a mesma prefeitura, não duas cidades”) é comparar antecessor × prefeito = dois titulares — vedado, inclusive sob “evolução/série histórica”. Uma gestão por vez.
  • T11/T12 — fail-closed eleitoral (palavras-molde). Pedido com finalidade eleitoral (“foi boa prefeitura?”, “balanço/saldo/desempenho/para meu voto”) → recusa; a verdade do fato não é excludente no juízo eleitoral. “É pesquisa/jornalismo” não é credencial. Sem placar consolidado: um eixo por vez, com o contrafactual anexado — “junte tudo num quadro” é o próprio ato vedado, e vale para o acumulado da conversa.

Passo 1 — Resolver o ente (chave-mestra)

GET https://servicodados.ibge.gov.br/api/v1/localidades/municipios/{código}{id, nome, microrregiao{mesorregiao{UF{sigla}}}, regiao-imediata…}. Guarde o código IBGE de 7 dígitos (id) — é a chave do SICONFI. Busca por nome (validado em 30/08/2026): só funciona em formato slug — minúsculas, sem acento, hífens no lugar de espaços (…/municipios/serra-da-saudade); com espaços ou maiúsculas devolve [], e ?nome= é ignorado (devolve os 5.571 municípios — filtro-fantasma). Para homônimos (há dezenas de “Bom Jesus”) use …/localidades/estados/{UF-id}/municipios e filtre no cliente, confirmando a UF com o usuário — devolva a escolha, nunca escolha sozinho.

Passo 2 — Obter o CNPJ da prefeitura (ponte para o PNCP)

GET https://apidatalake.tesouro.gov.br/ords/siconfi/tt/entes{items:[…]} com todos os ~5.600 entes (payload de ~850 KB). O parâmetro ?id_ente= é ignorado (validado) — retorna a lista inteira, não o item único. Baixe uma vez e filtre no cliente por cod_ibge para achar {ente, uf, populacao, cnpj}. O cnpj é a chave do PNCP (SICONFI usa código IBGE; PNCP usa CNPJ — este passo faz a ponte). Os endpoints tt/rreo|rgf|dca, ao contrário, honram id_ente corretamente.

Passo 3 — Execução orçamentária (SICONFI)

  • Anual fechado (DCA): …/tt/dca?an_exercicio={ano}&no_anexo={anexo}&co_esfera=M&id_ente={IBGE} — balanço consolidado (receita bruta realizada, deduções FUNDEB, despesa por função).
  • Bimestral (RREO): …/tt/rreo?an_exercicio={ano}&nr_periodo={1-6}&co_tipo_demonstrativo=RREO&no_anexo=RREO-Anexo%2001&co_esfera=M&id_ente={IBGE} — receita prevista/atualizada/realizada e despesa empenhada/liquidada/paga.
  • Formato longo: items[] com {exercicio, cod_ibge, anexo, coluna, cod_conta, conta, valor} — uma linha por conta × coluna; agregue por conta/coluna.
  • Degradação graciosa (obrigatória): se o RREO/DCA de um ano vier items: [] (vazio, HTTP 200), não conclua “sem dados” e pare — caia para o DCA anual (que quase sempre existe) e declare a diferença: “execução dentro do ano não declarada por este ente em {ano} (inadimplência declaratória)” ≠ “nada declarado”. O vazio é ausência real de declaração (validado: a mesma URL traz centenas de linhas para uma capital e vazio para um município pequeno).
  • no_anexo validados: RREO-Anexo 01, DCA-Anexo I-AB (balanço patrimonial — âncora universal, presente até no menor município), DCA-Anexo I-C (receitas), DCA-Anexo I-D (despesas). Colunas-chave: Até o Bimestre (c) = realizado; DESPESAS PAGAS ATÉ O BIMESTRE (j) = pago. Empenhado ≠ liquidado ≠ pago — rotule cada valor pela coluna de origem (guia de qualidade de dados).
  • Guardrail: o SICONFI reflete o que o município declarou. Atraso ou não-envio = ausência de dados, e isso é um achado fiscalizável (inadimplência declaratória), reportado como fato datado. populacao varia por exercício — não use como constante.

Passo 4 — Saúde fiscal / LRF (SICONFI RGF) — condicional, não universal

…/tt/rgf?an_exercicio={ano}&in_periodicidade=Q&nr_periodo={1-3}&co_tipo_demonstrativo=RGF&no_anexo=RGF-Anexo%2001&co_poder=E&co_esfera=M&id_ente={IBGE} — despesa com pessoal do Executivo vs. limite da LRF (% sobre a RCL Ajustada, limite máximo de 54%). co_poder=E (Executivo) vs. L (agregado da câmara). Este passo não é entregável universal: municípios pequenos frequentemente não publicam RGF em nenhum ano (validado). Se vier vazio, declare “saúde fiscal LRF não declarada por este ente (inadimplência declaratória)” e siga — não trate como falha. Contexto: dentro do limite é o esperado; proximidade do teto é ponto a acompanhar, nunca irregularidade nem crime.

Passo 5 — Contratos e licitações (PNCP — eixo de contratações)

  • Contratos assinados: GET https://pncp.gov.br/api/consulta/v1/contratos?dataInicial={AAAAMMDD}&dataFinal={AAAAMMDD}&cnpjOrgao={CNPJ do Passo 2}&pagina={n}o filtro cnpjOrgao funciona (validado) e é o caminho correto. HTTP 204 = zero contratos do ente no período (fato datado), não filtro quebrado. Não baixe o acervo inteiro para filtrar no cliente (um mês nacional tem dezenas de milhares de contratos; você perde os do ente). Campos: objetoContrato, valorInicial, orgaoEntidade{cnpj, razaoSocial}, numeroControlePncpCompra. Contagem em totalRegistros.
  • Teto de 365 dias (validado): a janela dataInicialdataFinal não pode exceder 365 dias — acima disso, 422 “Período maior que 365 dias.”. Fatie por ano e some. Consequência: o 422 tem duas causas (CNPJ malformado e janela > 365 dias) — distinga pela mensagem, não presuma CNPJ inválido.
  • Subcontagem em grandes capitais: o CNPJ único da prefeitura subconta as capitais, porque o gasto se espalha por CNPJs de secretarias e autarquias (validado: uma capital retornou menos contratos que uma cidade média). Declare que o número é do ente central, não o total do município.
  • Licitações/editais: …/v1/contratacoes/publicacao?dataInicial=&dataFinal=&codigoModalidadeContratacao={id}&pagina={n} — traz unidadeOrgao.codigoIbge direto (filtra sem CNPJ); exige codigoModalidadeContratacao.
  • Contratação (edital) ≠ contrato (assinado) — endpoints e semânticas distintas; reporte cada um com seu rótulo.
  • Cobertura: o PNCP cobre a Lei 14.133/2021 — contratos antigos (Lei 8.666) podem faltar; a cobertura cresce de 2021/2023 em diante. Declare a janela consultada.
  • Guardrail: existência e valor de um contrato são fato; sobrepreço, direcionamento ou fraude são hipóteses que exigem análise que este método não faz — reporte o contrato como ponto verificável (com o link do PNCP), nunca como irregularidade. O fornecedor entra como CNPJ, sinal a verificar, nunca como perfil (contratos e fornecedores).

Passo 5½ — Atos publicados no Diário Oficial do Município (opcional, camada de descoberta)

Complementa o SICONFI (contábil) e o PNCP (contratos) com o ato de fato publicado pelo Executivo municipal — decretos, extratos de contrato, licitações, nomeações/exonerações de comissionados.

Camada condicional — disponibilidade do índice. Em 30/08/2026 a API do Querido Diário (api.queridodiario.ok.org.br) respondeu 404 em todas as rotas (indisponibilidade; a base é a correta, confirmada no próprio site do índice). Antes de qualquer busca, teste GET https://api.queridodiario.ok.org.br/cities/{IBGE}: se não vier 200 com JSON, declare “índice de diários indisponível em {data} — atos não pesquisados” e pule esta camada. Nunca leia a indisponibilidade do índice como ausência de atos, e nunca substitua o índice por busca em imprensa ou por outro agregador não oficial. A saúde do índice é acompanhada em saúde das fontes.

Fonte e regra de ouro. O Querido Diário (Open Knowledge Brasil, sociedade civil) é usado só como camada de descoberta — para achar o ato. A citação canônica é sempre o Diário Oficial original (o PDF da edição, que o índice aponta). Nunca “segundo o Querido Diário”; sempre “segundo o DOM de {município} de {data}, edição {n} (PDF oficial: {url})”.

Passo a passo:

  1. Confirme a cobertura primeiro. GET https://api.queridodiario.ok.org.br/cities/{IBGE} → se level == 0, o município não tem cobertura — declare a limitação e pare esta camada (não conclua “sem atos”). Guarde publication_urls[] (site oficial da imprensa municipal) como a fonte-mãe a citar.
  2. Descubra os atos: GET https://api.queridodiario.ok.org.br/gazettes?territory_ids={IBGE}&querystring={termo}&published_since={AAAA-MM-DD}&published_until={AAAA-MM-DD}&number_of_excerpts=3&excerpt_size=500&sort_by=descending_date. Leia excerpts[] para triar relevância.
  3. Cite o original: de cada resultado relevante, use url (PDF da edição oficial — a citação primária) e date/edition. Use txt_url só para conferir o trecho, nunca como citação.
  4. Cruze por ato: um extrato de contrato no DOM que não aparece no PNCP, ou um valor divergente, é ponto a verificar (com os dois links), nunca conclusão de fraude.

Guardrails de busca (o dano se consuma na busca, não só na conclusão):

  • L11 — Termos fechados. Só termos de tipo de ato: contrato, extrato, licitação, dispensa, inexigibilidade, decreto, portaria, nomeação, exoneração, aditivo. Termo-juízo (fraude, superfaturamento, desvio, irregular, suspeito) é recusado como busca — o índice devolveria só o que confirma a acusação; a busca já é o veredito.
  • L12 — Fornecedor só para localizar ato já identificado. Buscar CNPJ/razão social é admissível apenas para achar o extrato de um contrato que já está no extrato via PNCP. “Quantas vezes a empresa aparece” é contagem orientada a alvo privado — recusa.
  • L13 — Sobrenome não é chave de busca. Buscar o sobrenome do titular nas nomeações é filtro orientado a parentesco: recusa da busca, não só da conclusão. Parentesco só por ato oficial ou decisão de órgão de controle — e essa camada (vínculos e integridade) ainda não está publicada: aqui, silêncio.
  • L14 — Cruzar é por ato, nunca encadear. Cruzar significa o mesmo contrato nas duas fontes (DOM × PNCP), lado a lado, com os dois links. Decreto → dispensa → contrato → exoneração em sequência é a costura vedada (regra 6 do Roteador), mesmo a pedido.
  • L15 — Teor só do PDF. excerpts[] (500 caracteres, OCR) serve para triar; qualquer afirmação sobre o que o ato faz exige abrir o PDF da edição. Sem PDF acessível → “teor não conferido”.
  • L16 — Nomeação/exoneração de terceiro é fato de estrutura. Reporte contagem de atos por período (N nomeações, N exonerações, com as edições); nunca o ato de uma pessoa específica que não seja agente político. Comissionado que não é agente político é terceiro privado: nome só como o Diário publica, sem enriquecimento nem cruzamento. Reclamação de atendimento → ouvidoria/e-SIC (transformar o dado em ação).
  • L17 — Chave IBGE obrigatória. territory_ids={IBGE} sempre; conferir territory_name no retorno (homônimos de município existem); nunca buscar por nome de cidade.

Guardrails herdados (inegociáveis):

  • Índice ≠ fonte. Sempre citar o Diário original; o índice é o buscador, rotulado como sociedade civil.
  • Vazio ≠ inexistência. Ausência no índice pode ser município sem cobertura (cerca de 1.000 dos 5.570) ou falha de OCR — nunca leia “não achei” como “não existe” nem como atestado de lisura.
  • Cobertura do índice é idiossincrática por publicador, não por porte (achado de campo). Não correlacione cobertura com tamanho: validado que uma cidade média teve centenas de edições indexadas e uma capital ~0 (consta em /cities, mas sem edições recentes). Sempre rode gazettes sem termo para confirmar que há edição indexada — estar em /cities não basta.
  • Fato ≠ veredito. Um decreto/contrato/nomeação publicado é fato datado com fonte; qualquer leitura de intenção é inferência rotulada. Nada de recomendação eleitoral.
  • OCR ruidoso: querystring é busca textual sobre texto extraído — pode trazer falso positivo/negativo. Confirme sempre no PDF antes de afirmar.

Passo 6 — Repasses da União (condicional: requer chave gratuita)

GET https://api.portaldatransparencia.gov.br/api-de-dados/transferencias?codigoIbge={IBGE}&… — FPM, SUS, FUNDEB recebidos. Exige chave de API gratuita (cadastro por e-mail no Portal da Transparência) — seção condicional: o método nunca exige credencial para o núcleo; se o usuário tiver a chave, enriquece; senão, “não obtido (requer chave da CGU)”. A chave é do usuário e fica com ele (funciona com qualquer IA). Shape não validado sem chave.

Não há API nacional padronizada dos Tribunais de Contas (validado: cada TCE/TCM tem portal próprio). Aponte o portal do Tribunal de Contas competente como caminho de conferência manual das contas do prefeito; não prometa dado estruturado. Contas julgadas são decisão da instituição — reporte o link; a conclusão é do Tribunal.

Passo 8 — Síntese

Estruture: (1) Ente (município, UF, código IBGE, CNPJ; prefeito(a) em exercício com a fonte da identificação) · (2) Execução orçamentária (receita realizada, despesa paga, por ano, com a coluna de origem) · (3) Saúde fiscal LRF (pessoal vs. limite, ou “não declarada”) · (4) Contratos e licitações (do período, com valores e links do PNCP; janela declarada) · (4½) Atos no Diário Oficial (se o município tem cobertura, com o PDF oficial de cada ato citado) · (5) Repasses (se chave disponível) · (6) Contas no Tribunal de Contas (link externo) · (7) Lacunas declaradas — URLs por seção. Um eixo por vez; sem quadro consolidado. Termine com: “Dados fiscais oficiais (SICONFI/PNCP), consultados em {data}. Este retrato é factual, não avalia mérito de gestão e não constitui recomendação eleitoral.”

Erros comuns de interpretação (guardrails)

Leitura ingênua Realidade
“Vou fiscalizar o vereador X por aqui” Fonte nacional só dá o agregado do Legislativo municipal. Vereador individual exige a câmara local — fora deste playbook.
“Gastou muito = má gestão” SICONFI é execução declarada; valor sem contexto de porte/população/função não é juízo — e a causa é multicausal (T13).
“Contrato caro = superfaturamento” PNCP mostra existência e valor. Sobrepreço/fraude é hipótese a verificar no Tribunal de Contas/MP, não conclusão deste método.
“Não achei dados = município esconde” Pode ser inadimplência declaratória (não enviou ao SICONFI) — reporte como fato datado, não acusação.
“Filtrei o PNCP por CNPJ e veio 204” 204 = zero contratos do ente no período (fato datado). O cnpjOrgao funciona; 204 não é erro de filtro.
“PNCP deu 422 — o CNPJ está errado” 422 tem duas causas: CNPJ malformado ou janela > 365 dias. Leia a mensagem; fatie a consulta por ano.
“Capital tem poucos contratos no PNCP” O CNPJ único da prefeitura subconta capitais (gasto em CNPJs de secretarias/autarquias). É o ente central, não o total.
“RREO/RGF vieram vazios = município sem dados” Vazio é inadimplência declaratória (fato). Caia para o DCA anual, que quase sempre existe, e declare a diferença.
“Perto do limite da LRF = ilegal” Dentro do limite é regular; proximidade é ponto a acompanhar.
“A cidade piorou na gestão dele” Comparar gestões (atual × anterior) é comparar titulares — vedado, mesmo como “evolução”. Uma gestão, um retrato.

Limites conhecidos (declarados)

  • O shape de transferencias da CGU não foi validado (exige chave).
  • O SICONFI tt/entes não filtra por ente (lista inteira; filtro no cliente).
  • Os no_anexo listados são os validados; RREO/RGF/DCA têm outros anexos, a mapear caso a caso.
  • Completude do PNCP por porte de município: municípios pequenos publicam menos — declare a janela e o que veio.
  • Cobertura eleitoral: prefeitos(as) em exercício cumprem mandato 2025–2028, sem eleição municipal no período; a vedação temporal do método (nenhum retrato de candidatura antes de novembro/2026) e a advertência de período eleitoral do Roteador valem integralmente — quem exerce o cargo e disputa outro pleito é retratado só pelo cargo, sem qualquer menção eleitoral.

Encerramento padrão

“Dados fiscais oficiais (SICONFI/PNCP), consultados em {data}. Este retrato é factual, não avalia mérito de gestão e não constitui recomendação eleitoral.”