Register campaign intelligence discovery and E8–E15 roadmap program.

Embeds approved literature→persona→interview research in docs/research/, adds inteligencia-campanha master plan with child specs, updates roadmap/PRODUCT/AGENTS, and extends roadmap skills with data-presentation guidance.
This commit is contained in:
Francisco Ignácio Fontoura Solla 2026-07-22 00:04:50 -03:00
parent 0cb83bdfa6
commit a5ab2c238c
27 changed files with 2302 additions and 31 deletions

View file

@ -7,6 +7,7 @@ alwaysApply: false
## Status
- **Discovery "Inteligência de campanha" aprovado (2026-07-21):** ciclo literatura→persona→entrevista sintética concluído e colaborado; embasamento canônico em [`docs/research/`](../../../docs/research/) (compêndio ~67 fontes, persona, relatório com kernel Rumelt + playbook de 25 padrões dado→decisão P/T/I/J/K + anti-goals). Programa de produto registrado no roadmap como **E8–E15 + B13 + C12** ([plano-mestre `inteligencia-campanha.md`](../../../docs/plans/inteligencia-campanha.md)) — conta da cadeira, fila de alocação, registro-fundação (trajetória de pledge/sinais/decisões), classificação relativa, escala relativa no mapa, níveis N0–N4, motor de sugestões (humano no loop), camada TI, planejador de giros, backtest. Decisões de produto travadas: % estadual absoluto é anti-métrica; denominadores usam válidos projetados (nunca aptos); sugestão nunca decide sozinha; nível de envolvimento não vaza para fora do staff.
- **B12 entregue em código (2026-07-21; deploy pendente com remodelagem):** `fitToKeys` + `interactiveKeys` no Mapa das Praças (`plazasByIbgeCode`); `canonicalMapKeysKey`; hover stroke-only (fill inalterado); clear síncrono no mouseout; fit ao footprint filtrado sem re-zoom em Ano/Escala. Plano: [`aproximar-mapa-pracas.md`](../../../docs/plans/aproximar-mapa-pracas.md).
- **B6 entregue em código (2026-07-21; deploy pendente com remodelagem):** `BahiaMap` setStyle incremental — layer GeoJSON estável entre troca de ano/métrica/escala; `pathByKeyRef` + restyle O(2) no hover/select; `fitBounds` só em `mode`/`highlightKeys`; helpers puros em `bahiaMapStyle.ts` + unit `bahiaMapStyle.unit.spec.ts`. Plano: [`escala-dry-pos-b3.md`](../../../docs/plans/escala-dry-pos-b3.md). Fecha débitos de perf de **B10** e **B11**.
- **B8 F1 entregue em código (2026-07-21; deploy pendente com remodelagem):** catálogo estático `plazaZoneNeighborhoods` (21 Praças-zona SSA/CMS; Salvador = TRE-BA RA 02/2017; Camaçari = locais de votação + curadoria) + fixture `plaza-zone-neighborhoods.official.json` + int `plazaZoneNeighborhoods.int.spec.ts`; card **Bairros desta Praça** na aba Visão geral de `/campanha/pracas/[slug]` quando `kind === 'zona'` (staff e líder). Plano: [`poligonos-pracas-zona.md`](../../../docs/plans/poligonos-pracas-zona.md). **F2 pendente** (dissolve IBGE → TopoJSON + mapa).
@ -65,6 +66,7 @@ alwaysApply: false
## Decisões
- Em 2026-07-21, **embasamento de produto/domínio via `docs/research/`:** decisões de análise territorial e mapa citam o relatório de discovery (aprovado 2026-07-21) antes de inventar métrica nova. Regras derivadas: leitura relativa (quantis/LQ/rank/captura) sobre % absoluto; limiares defesa/ataque 35/20/10 degeneram para DF e serão recalibrados com âncoras relativas (E10); roll-off (brancos+nulos DF − majoritária) é o headroom de orientação; abstenção estrutural corrige denominador (válidos projetados) e não é mercado; agregação regional default = Território de Identidade com salvaguardas MAUP (praça manda no voto, TI na logística). **Rejeitado:** cartogramas; pesquisa estadual de intenção para DF; persuasão de território hostil como funcionalidade.
- Em 2026-07-21, **toolchain TypeScript dual:** `typescript` → `@typescript/typescript6@6.0.2` (API/editor/ESLint + `tsc6`); `typescript-7` → `typescript@7.0.2` (Go `tsc` para `pnpm typecheck`). Motivo: typescript-eslint peer `<6.1.0` e API estável só em TS ~7.1. Não usar `@typescript/native-preview`/`tsgo` (canal nightly). `typecheck:tsc6` existe para paridade. Ambient CSS/SCSS em `src/css-modules.d.ts` (TS6 `noUncheckedSideEffectImports`).
- Em 2026-07-21, **decisão de produto (Field Desk):** em `/campanha`, superfícies staff de visualização que mostram dados mutáveis devem oferecer edição no contexto quando o access permitir (“edit where you see”) — princípio 3 de [`PRODUCT.md`](../../../PRODUCT.md); regra Cursor [`.cursor/rules/campanha-edit-where-you-see.mdc`](../campanha-edit-where-you-see.mdc). Precedente: **B9** ([`edicao-rapida-lista-pracas.md`](../../../docs/plans/edicao-rapida-lista-pracas.md) — `PlazaList*Control` + `plazaStaffFormActions`). **Rejeitado:** lista/detalhe só-leitura com toda mutação em `/editar`; data-grid / planilha full-row; service genérico de “quick edit”. `/editar` e Sheets longos ficam para formulários multi-campo, campos raros e fluxos com nota/confirmação. Liderança continua no escopo já definido (sem campos staff-only).
- Núcleo Eleitoral é a unidade operacional; Zona TSE é uma referência oficial adicional.

View file

@ -7,17 +7,19 @@ description: Recebe o código (ex. A4, C2, D2) ou a descrição de um item do do
Esta skill transforma um item do `docs/roadmap.md` em um plano de implementação confiável e, quando autorizado, em entrega. O ponto central: **o plano em `docs/plans/` foi escrito no passado e o repositório andou desde então** — a skill existe para auditar o plano contra o código real antes de qualquer implementação, não para reescrevê-lo cegamente nem para segui-lo cegamente.
Superfícies de UI deste item passam pelo fluxo **`/impeccable`** (skill anexada ou em `~/.claude/skills/impeccable`): shape → craft → critique → polish, alinhado a `PRODUCT.md` / `DESIGN.md` e aos design-refs do roadmap. Itens só de schema/server/utilitário **não** inventam UI via Impeccable — veja Passo 8.
Superfícies de UI deste item passam pelo fluxo **`/impeccable`** (skill anexada ou em `~/.claude/skills/impeccable`): **shape → craft → critique → polish** (obrigatório em B/C/D), alinhado a `PRODUCT.md` / `DESIGN.md` e aos design-refs do roadmap. **`harden` e `optimize` não entram no pipeline fixo** — só sob gatilho (Passo 8). Itens só de schema/server/utilitário **não** inventam UI via Impeccable — veja Passo 8.
**Qualidade de decisão:** ao auditar e fatiar, aplique [decision-quality.md](../roadmap-item/decision-quality.md) — caro vs barato, Opções+Recomendação+rejeitadas, appetite do plano, rabbit holes, depth/classitis, tracer bullet cedo. Sem jornada de `design-code-architecture`.
**Dados → decisão → apresentação:** ao auditar o plano e antes de craft de UI com métricas/mapas/listas analíticas, aplique [data-presentation.md](../roadmap-item/data-presentation.md). Se o plano omite a seção e o item claramente apresenta dados → marque **defasado** e complete no Passo 7. A forma escolhida (número / tabela / mapa / chart) é input do Impeccable — não trocar no polish sem reabrir a decisão.
## Checklist do fluxo
```
- [ ] 1. Localizar o item no roadmap e capturar seu estado completo
- [ ] 2. Verificar o estado real das dependências (roadmap E código)
- [ ] 3. Ler o plano detalhado linkado + fontes satélites
- [ ] 4. Auditar o plano contra o repositório, afirmação por afirmação
- [ ] 4. Auditar o plano contra o repositório, afirmação por afirmação (incl. Dados → decisão → apresentação)
- [ ] 5. Fechar as questões em aberto com evidência ou recomendação
- [ ] 6. Escrever o plano de implementação em fases verificáveis (incl. fases Impeccable se houver UI; última fase = documentação da sessão)
- [ ] 7. Atualizar docs/plans/ e roadmap se a auditoria achou divergência
@ -79,8 +81,9 @@ Leia, nesta ordem:
4. **`PRODUCT.md` + `DESIGN.md`** (raiz do repo) — registro (`product`/`brand`), princípios e tokens já commitados. São âncoras do `/impeccable`; leia-os antes de qualquer fase de UI.
5. **AGENTS.md** — seções relevantes ao domínio do item (Campaign auth, Posts & Tags, migrations, convenções de naming).
6. **Planos vizinhos** citados nas seções "Dependências" e "Não escopo" — para saber onde o escopo deste item termina e o dos outros começa.
7. **Seção Dados → decisão → apresentação** do plano (ou ausência dela) — se o item toca KPI/mapa/série/ranking, e a seção falta ou está `N/A` indevido, trate como defasagem no Passo 4. Se preenche, use como contrato da fase de UI (forma + decisão + anti-goals). Inteligência territorial: cruzar com `docs/research/` quando o plano citar padrões dado→decisão.
Item sem plano detalhado (ex.: só design, como C5; ou fill-in "sem plano detalhado ainda"): primeiro crie o plano seguindo a skill `roadmap-item` (template em `.cursor/skills/roadmap-item/plan-template.md` — inclui classificação Impeccable A–D e brief compacto se B/C/D), depois continue esta skill a partir do Passo 4. Se o plano já trouxer classe + brief, reutilize no Passo 8 em vez de reclassificar do zero; só reabra se o código/roadmap mostrar que a classe mudou.
Item sem plano detalhado (ex.: só design, como C5; ou fill-in "sem plano detalhado ainda"): primeiro crie o plano seguindo a skill `roadmap-item` (template em `.cursor/skills/roadmap-item/plan-template.md` — inclui classificação Impeccable A–D, brief compacto se B/C/D, e seção Dados), depois continue esta skill a partir do Passo 4. Se o plano já trouxer classe + brief, reutilize no Passo 8 em vez de reclassificar do zero; só reabra se o código/roadmap mostrar que a classe mudou.
## Passo 4 — Auditar o plano contra o repositório
@ -105,7 +108,8 @@ Classifique cada achado e reporte-os ao usuário:
- inventa **cerimônia de boundary** (layers/adapters) sem volatilidade real;
- propõe **classitis** (pass-through raso) em vez de reusar módulo profundo existente;
- omite **Appetite** / **Rabbit holes** ou estoura o appetite sem corte;
- trata como cortável algo **caro de reverter** (access, Consent, unicidade).
- trata como cortável algo **caro de reverter** (access, Consent, unicidade);
- **apresenta dados** (KPI, mapa, série, ranking) mas omite [data-presentation.md](../roadmap-item/data-presentation.md) / seção no plano, ou escolhe chart/mapa sem decisão nomeável, ou viola anti-goals (`PRODUCT.md` §5: % estadual absoluto, vanity count, gauge SaaS).
## Passo 5 — Fechar as questões em aberto
@ -124,11 +128,11 @@ Para cada fase:
- **Quota do appetite**: quanto desta fase consome (ex. `~0,5 dia` / `só server`).
- **Migration** (se houver mudança de schema): nome proposto para `pnpm migrate:create <nome>`, o que adiciona, se tem backfill. Seguir a skill `payload-migrations`; `push` é `false` sempre.
- **Como verificar a fase**: teste, tela, ou query específica — fase sem critério de verificação não é fase.
- **Fase de UI**: marque explicitamente `Impeccable: shape|craft|critique|polish` (ver Passo 8). Não misture schema e layout na mesma fase.
- **Fase de UI**: marque explicitamente `Impeccable: shape|craft|critique|polish` e, se o Passo 8 acionar, `+ harden` / `+ optimize` (ver Passo 8). Não misture schema e layout na mesma fase. Se a seção **Dados → decisão → apresentação** do plano ≠ N/A, a fase de UI **cita a forma escolhida** (número / tabela / mapa / chart) e verifica que a tela responde à decisão nomeada — não “adicionar um gráfico” no polish.
**Tracer bullet:** se o item for grande, a primeira fatia vertical real (schema mínimo → uma action → uma superfície UI) vem cedo — prova o wiring antes de polish paralelo ou fases cosméticas.
**Depth:** novas utilities/componentes só se esconderem complexidade; preferir estender `campaign*` / shells existentes a criar wrappers rasos.
**Depth:** novas utilities/componentes só se esconderem complexidade; preferir estender `campaign*` / shells existentes a criar wrappers rasos. Para dados: preferir `CampaignMetricStrip` / lista / `BahiaMap` / tabela ao chart novo ([data-presentation.md](../roadmap-item/data-presentation.md)).
Guardrails que TODO plano de implementação deste repo inclui (cheque um a um contra o item):
@ -137,6 +141,7 @@ Guardrails que TODO plano de implementação deste repo inclui (cheque um a um c
- Local API com `user` → `overrideAccess: false`; escrita multi-collection → transação com `req: { transactionID }`; hooks propagam `req`.
- Collection nova → `admin.group` consistente + hook de revalidação se backing de página pública.
- Identificadores em inglês; strings visíveis em pt-BR; valores de slug/enum em português são dados, não se traduzem.
- Superfície com métricas/mapa/série: três perguntas de [data-presentation.md](../roadmap-item/data-presentation.md) respondidas; anti-goals `PRODUCT.md` §5; sem chart por default.
- Verificação final = checklist do AGENTS.md: `pnpm generate:types`, `generate:importmap` (se componentes), `tsc --noEmit`, `lint`, `test`, `test:e2e`, `build` contra o banco local, scan Aikido dos arquivos editados.
- **Última fase obrigatória — Documentação da sessão:** todo plano gerado termina com uma fase explícita de atualizar a documentação do projeto com o que a sessão fez (não opcional; não misturar com schema/UI). Ver bloco abaixo.
@ -157,7 +162,7 @@ Sempre inclua como **última fase** do plano (após verificação AGENTS.md + Ai
**Pedidos só de planejamento (Passos 1–8):** a fase entra no plano gerado como item futuro; **não** execute a documentação de entrega até haver trabalho real na sessão (exceto correções do Passo 7 por divergência de auditoria).
Termine o plano com: dependências assumidas (e o que foi verificado no Passo 2), decisões assumidas _(validar com produto)_ no formato Opções+Recomendação+rejeitadas, classificação Impeccable do Passo 8, rabbit holes / adiados com gatilho, self-score ≥4/5, o que fica explicitamente de fora (com o plano/item para onde vai), e a **fase final de documentação da sessão** (checklist das superfícies acima).
Termine o plano com: dependências assumidas (e o que foi verificado no Passo 2), decisões assumidas _(validar com produto)_ no formato Opções+Recomendação+rejeitadas, classificação Impeccable do Passo 8, `Dados: N/A | <forma + decisão>` ([data-presentation.md](../roadmap-item/data-presentation.md)), rabbit holes / adiados com gatilho, self-score ≥4/5, o que fica explicitamente de fora (com o plano/item para onde vai), e a **fase final de documentação da sessão** (checklist das superfícies acima).
## Passo 7 — Atualizar a documentação se houve divergência
@ -178,20 +183,32 @@ Antes de implementar (e já no plano do Passo 6), classifique o item:
| **C — UI nova / ambígua** | Rota nova, fluxo multi-tela, ou sem design-ref claro | Sim — shape obrigatório, depois craft |
| **D — Design-ref já existe** | Par em `docs/design-refs/latest/` (tabela do roadmap) | Sim — shape **compacto** (estrutura do ref + tokens `campaign`); não redesenhar a paleta do HTML/PNG |
**Pipeline Impeccable (B/C/D) — obrigatório vs gatilho:**
| Passo | Obrigatório? | Quando |
| --------------------------------------------- | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `shape` → `craft` → `critique` → **`polish`** | Sim (shape conforme classe) | Toda superfície UI deste item |
| `/impeccable harden <alvo>` | **Só sob gatilho** | Form/action nova; empty state novo; critique com P0/P1 de resiliência (overflow, erro, rede, permissão). Em `/campanha` **não** abrir rabbit hole de i18n/RTL — o produto é pt-BR; reusar shells/`mapCampaignFormActionError`/feedback existente |
| `/impeccable optimize <alvo>` | **Só sob gatilho** | Mapa/lista pesada, bundle client novo, appetite do item é perf, ou critique/`/simplify` com sinal de lentidão. **Medir antes** (o próprio comando exige); sem evidência → não rodar. Perf estrutural vira item de escala (não engorde este delivery) |
Ordem quando os gatilhos disparam: `critique` → (`harden` se gatilho) → (`optimize` se gatilho) → **`polish` por último**. Nunca rode `harden`/`optimize` no pipeline fixo “por completude”.
**Regras Teqo (não negociáveis no fluxo Impeccable):**
1. Carregue a skill `/impeccable` (Setup: `context.mjs` com `--target` na rota/componente concreto; register `product` → `reference/product.md` para `/campanha` e ferramentas; `reference/brand.md` só se o item for superfície de marketing do site público).
2. **Paleta:** tokens `data-theme='campaign'` / site existente. A paleta do UX Pilot (vermelho escuro / navy / dourado) é **anti-referência de cor** — só UX/estrutura do `.html`/`.png`.
3. **Componentes:** reusar `src/components/ui` (shadcn) e `src/components/campaign/*`; não introduzir segundo design system.
4. **Gates do craft:** se shape for obrigatório (classe C, ou B/D sem brief confirmado), apresente o brief e **pare** até o usuário confirmar — não comprima shape → código numa única resposta.
5. **Pós-UI:** após a fase de UI funcional, rode `/impeccable critique <alvo>` (path sob `src/app/(campaign)/...` ou frontend). Trate P0/P1 como bloqueadores de merge; depois `/impeccable polish <alvo>` no mesmo escopo. Snapshot em `.impeccable/critique/` é artefato útil — não substitua o checklist AGENTS.md.
6. **Itens classe A:** declare no resumo "Impeccable: N/A (sem superfície UI)" e siga só engenharia + Aikido.
4. **Dados na UI:** se Dados ≠ N/A, craft/critique validam a forma contratada no plano (escada de pobreza + decisão nomeável). Critique P0 se a tela mostrar métrica sem “vs quê” / sem próximo passo possível, ou se violar anti-goals (% estadual absoluto, gauge SaaS). Não “melhorar” trocando tabela por chart no polish sem reabrir Opções+Recomendação.
5. **Gates do craft:** se shape for obrigatório (classe C, ou B/D sem brief confirmado), apresente o brief e **pare** até o usuário confirmar — não comprima shape → código numa única resposta.
6. **Pós-UI:** após a fase de UI funcional, rode `/impeccable critique <alvo>` (path sob `src/app/(campaign)/...` ou frontend). Trate P0/P1 como bloqueadores de merge; aplique `harden`/`optimize` só se a tabela de gatilhos acima bater; feche com `/impeccable polish <alvo>` no mesmo escopo. Snapshot em `.impeccable/critique/` é artefato útil — não substitua o checklist AGENTS.md.
7. **Itens classe A:** declare no resumo "Impeccable: N/A (sem superfície UI)" e siga só engenharia + Aikido. Se a classe A só entrega aggregate para UI futura, ainda assim a seção Dados do plano deve dizer quem consome e qual forma esperada (ou Adiado com gatilho).
No plano de implementação, cada fase de UI deve citar o comando Impeccable e o **alvo** (path ou rota), por exemplo:
No plano de implementação, cada fase de UI deve citar o comando Impeccable e o **alvo** (path ou rota), e declarar explicitamente se harden/optimize estão **in** ou **out** (com o gatilho, se in), por exemplo:
```text
Fase 3 — UI lista GOTV
Impeccable: shape (compacto; ref Dia-D-GOTV) → craft → critique → polish
Impeccable: shape (compacto; ref Dia-D-GOTV) → craft → critique → harden (form/CSV novo) → polish
optimize: out (sem sinal de perf)
Alvo: src/app/(campaign)/campanha/(app)/apoiadores/...
```
@ -219,7 +236,9 @@ Execute as fases de migration, collections, utilities, server actions e testes d
2. **Shape** (obrigatório em C; compacto em D; em B só se a direção visual ainda for ambígua): siga `reference/shape.md`. Design-ref do roadmap + princípios do PRODUCT.md respondem a maior parte — não repita entrevista longa. Pare para confirmação do brief.
3. **Craft**: siga `reference/craft.md` — implementar no código real do Next.js/Payload, não num sandbox paralelo. Respeite o pipeline do repo (`pnpm` scripts). Anuncie se o harness não tem geração nativa de imagem e siga com o brief + design-ref.
4. **Critique** no alvo entregue: `reference/critique.md`. Persista snapshot; feche P0/P1 antes de declarar a fase de UI pronta.
5. **Polish**: `reference/polish.md` alinhado ao design system existente (`DESIGN.md`, tokens `campaign`, padrões de lista/detalhe/form já no `/campanha`).
5. **Harden** (só se o Passo 8 acionou o gatilho): `reference/harden.md` — empty/erro/overflow/permissão no alvo; em `/campanha` não abrir i18n/RTL; preferir shells e padrões de feedback já no repo.
6. **Optimize** (só se o Passo 8 acionou o gatilho): `reference/optimize.md` — medir bottleneck neste alvo, corrigir o que importa, medir de novo; sem evidência, pule. Débito de escala maior que o appetite → `capture-review-debts`, não estique a fase.
7. **Polish** (sempre, por último entre os passos Impeccable): `reference/polish.md` alinhado ao design system existente (`DESIGN.md`, tokens `campaign`, padrões de lista/detalhe/form já no `/campanha`).
Se o item misturar backend + UI, intercale: complete o mínimo de server necessário para a tela funcionar, craft a UI, volte a server se o critique revelar gap de dados — não adie o Impeccable para "no final depois de tudo".
@ -242,9 +261,9 @@ Não declare a implementação completa sem 10d.
## Resumo final ao usuário
**Após planejamento (Passos 1–8):** (1) item e estado no roadmap (janela, appetite, dependências, bloqueios); (2) veredito da auditoria — confirmado / defasado / conflitante / awaiting-evidence, incl. achados de desenho; (3) o plano de implementação em fases (quota de appetite + tracer bullet), com fases Impeccable marcadas e **última fase = documentação da sessão**; (4) classificação A/B/C/D, `Qualidade de decisão: N/5`, e decisões assumidas que merecem validação de produto.
**Após planejamento (Passos 1–8):** (1) item e estado no roadmap (janela, appetite, dependências, bloqueios); (2) veredito da auditoria — confirmado / defasado / conflitante / awaiting-evidence, incl. achados de desenho e de **Dados → decisão → apresentação**; (3) o plano de implementação em fases (quota de appetite + tracer bullet), com fases Impeccable marcadas (`polish` obrigatório; `harden`/`optimize` in|out com gatilho) e **última fase = documentação da sessão**; (4) classificação A/B/C/D, `Dados: N/A | <forma>`, `Qualidade de decisão: N/5`, e decisões assumidas que merecem validação de produto.
**Após implementação (Passo 10):** o que entrou em cada fase, resultado do critique/polish (score/P0–P1 se houver), checklist AGENTS.md + Aikido, superfícies de doc atualizadas no 10d, e o que ficou de fora.
**Após implementação (Passo 10):** o que entrou em cada fase, resultado do critique/polish (score/P0–P1 se houver), se harden/optimize rodaram (gatilho + resultado) ou por que ficaram out, checklist AGENTS.md + Aikido, superfícies de doc atualizadas no 10d, e o que ficou de fora.
Se `/simplify` ou `/impeccable critique` deixaram follow-ups **maiores que o cleanup da sessão**, ofereça a skill `capture-review-debts` (triage → confirmação → `roadmap-item`) em vez de registrar débitos ad hoc ou abandoná-los no chat.

View file

@ -13,6 +13,8 @@ Esta skill transforma uma ideia solta em: (1) um item posicionado corretamente n
**Qualidade de decisão (não é tour):** aplique [decision-quality.md](decision-quality.md) em silêncio — filtro caro vs barato, Opções+Recomendação+rejeitadas, appetite, rabbit holes, depth check, self-score ≥4 antes de gravar. Não abra fases de `design-code-architecture`; só o sistema de decisão.
**Dados → decisão → apresentação:** se o item produz, agrega ou exibe números/séries/mapas/KPIs, aplique [data-presentation.md](data-presentation.md) em silêncio **antes** de travar a Abordagem — as três perguntas (vou apresentar dados? quais decisões? qual forma mais pobre que auxilia?). Se não há superfície de dados, `Dados: N/A` no plano. Não abra tour de `visualization-choice-reporting`; use só o filtro + tabela de famílias nesse arquivo (e `docs/research/` quando for inteligência territorial).
## Checklist do fluxo
```
@ -20,8 +22,9 @@ Esta skill transforma uma ideia solta em: (1) um item posicionado corretamente n
- [ ] 2. Classificar a ideia e checar duplicidade/absorção
- [ ] 3. Explorar o código relevante para fundamentar o plano
- [ ] 4. Classificar superfície UI (A–D) e semear Impeccable no plano se B/C/D
- [ ] 4b. Dados → decisão → apresentação (ou Dados: N/A) — ver data-presentation.md
- [ ] 5. Decidir posicionamento: seção, ID, dependências, janela, paralelismo, appetite
- [ ] 6. Criar docs/plans/<slug>.md a partir do template (incl. rabbit holes / adiados)
- [ ] 6. Criar docs/plans/<slug>.md a partir do template (incl. rabbit holes / adiados / dados)
- [ ] 7. Editar o roadmap em TODOS os pontos de consistência
- [ ] 8. Verificar links, mermaid, consistência cruzada e self-score de decisão (≥4/5)
```
@ -94,7 +97,7 @@ Não rode a entrevista longa de `/impeccable shape` nem craft. No plano (seção
- Um job principal da superfície (uma frase).
- Estratégia de cor desta superfície: Restrained (default de produto) salvo exceção justificada.
- Anti-goals (ex.: não hero-metric SaaS; não segundo sistema de cards).
- Na implementação: `Impeccable: shape → craft → critique → polish` (C) ou `craft compacto → critique → polish` (B/D).
- Na implementação: `Impeccable: shape → craft → critique → polish` (C) ou `craft compacto → critique → polish` (B/D). `harden`/`optimize` só sob gatilho do `implement-roadmap-item` (Passo 8) — não no pipeline fixo.
**Proibido neste passo:**
@ -102,6 +105,18 @@ Não rode a entrevista longa de `/impeccable shape` nem craft. No plano (seção
- Entrevista shape de várias rodadas que bloqueia o registro no roadmap. Se C estiver **demasiado** ambíguo para até um brief compacto, pergunte **2–3** perguntas ao usuário (assert-then-confirm), registre as respostas como decisões travadas, e siga — não abra um ciclo Impeccable completo.
- Inventar paleta ou tipografia novas quando `DESIGN.md` / tokens `data-theme='campaign'` já existem.
## Passo 4b — Dados → decisão → apresentação
Antes de posicionar e escrever a Abordagem, rode o filtro de [data-presentation.md](data-presentation.md):
1. **Vou apresentar dados?** Não → `Dados: N/A` no plano e vá ao Passo 5. Sim (neste item ou só como aggregate para outra superfície) → continue.
2. **Quais decisões** (ator + escolha) estes dados desbloqueiam? Sem decisão nomeável → corte vaidade ou rebaixe a contexto secundário.
3. **Como apresentar** na escada de pobreza (número → tabela/lista → série → mapa → chart → dashboard)? Escolha + rejeitadas. Preferir reuso (`CampaignMetricStrip`, lista ranqueada, `BahiaMap`) a lib/chart novos.
Se o item for inteligência/mapa/metas/fila: leia o trecho relevante de `docs/research/` (playbook dado→decisão) **antes** de inventar métrica ou escala — anti-goals de `PRODUCT.md` §5 valem como Decisões travadas quando a métrica for canônica.
Registre no plano na seção **Dados → decisão → apresentação** do template. Self-check do arquivo de dados (≥3/5) além do self-score de decisão.
## Passo 5 — Decidir o posicionamento
Responda explicitamente, nesta ordem. Para cada escolha não óbvia use **Opções | Recomendação | Alternativas rejeitadas** ([decision-quality.md](decision-quality.md)) — decisão silenciosa é defeito.
@ -130,8 +145,9 @@ Se a priorização depender de decisão de produto que você não tem como infer
- "Não escopo" cita destino (outro plano/ID); "Rabbit holes" nomeia explosões se tocadas de passagem; "Adiado com gatilho" usa evidência concreta de revisitação (ou `Nenhum neste item.`).
- "Referências" lista os arquivos-fonte reais que o implementador vai abrir.
- Classe Impeccable **A/B/C/D** aparece no plano (cabeçalho ou seção Design); se B/C/D, a seção "Design (Impeccable)" está preenchida.
- Seção **Dados → decisão → apresentação** preenchida ou `Dados: N/A` ([data-presentation.md](data-presentation.md)); se há dados, decisões nomeáveis + forma com rejeitadas.
- Se existir design em `docs/design-refs/latest/`, inclua a subseção de referência visual (UX Pilot) com o aviso padrão de paleta (a estrutura vale, a paleta não — usar tokens do tema `data-theme='campaign'`).
- **Self-score** ([decision-quality.md](decision-quality.md)): ≥4/5 antes de gravar; se &lt;4, corrija o plano — não peça tour ao usuário.
- **Self-score** ([decision-quality.md](decision-quality.md)): ≥4/5 antes de gravar; se &lt;4, corrija o plano — não peça tour ao usuário. Se Dados ≠ N/A, self-check de [data-presentation.md](data-presentation.md) ≥3/5.
## Passo 7 — Editar o roadmap (todos os pontos de consistência)
@ -155,6 +171,7 @@ Para itens fora das trilhas (site público, admin, fill-in, bloqueador, fora de
- O plano referencia o roadmap (`Item do roadmap:` no cabeçalho) e o roadmap referencia o plano (link na tabela).
- Não inventou ID duplicado nem quebrou a numeração de "Ordem".
- Classe Impeccable do Passo 4 está no plano; se B/C/D, há âncoras (`PRODUCT.md`/`DESIGN.md` e/ou design-ref) citadas — não só "fazer uma tela bonita".
- Dados: seção preenchida ou `N/A`; se há dados, forma de apresentação alinhada à decisão (não chart por default).
- Appetite + Rabbit holes presentes; Decisões travadas caras têm alternativas rejeitadas; self-score ≥4/5.
Ao final, resuma para o usuário: ID atribuído, janela, **appetite**, dependências assumidas, **classe Impeccable (A–D)**, `Qualidade de decisão: N/5`, e as decisões de posicionamento que merecem validação de produto.
Ao final, resuma para o usuário: ID atribuído, janela, **appetite**, dependências assumidas, **classe Impeccable (A–D)**, `Dados: N/A | <forma escolhida>`, `Qualidade de decisão: N/5`, e as decisões de posicionamento que merecem validação de produto.

View file

@ -0,0 +1,112 @@
# Dados → decisão → apresentação
Filtro obrigatório quando um item do roadmap **produz, agrega ou exibe** números, séries, rankings, mapas ou KPIs. Inspirado em `visualization-choice-reporting` (pergunta → tipo de chart → narrativa acionável) e no kernel Teqo (`PRODUCT.md` §5 + `docs/research/`). **Não** é um tour de dashboard design — são três perguntas com resposta registrada no plano. Decisão silenciosa (“só coloca um gráfico”) é defeito.
Aplique em silêncio em `roadmap-item` (ao semear o plano) e em `implement-roadmap-item` (ao auditar e fatiar UI). Se o item **não** apresenta dados (ex.: migration de Consent, invite WhatsApp, form CRUD sem métrica), escreva `Dados: N/A` no plano e pule o resto.
## As três perguntas (ordem fixa)
Responda nesta ordem. Pular para “qual chart?” antes de fechar (1)–(2) é o erro clássico.
```text
1. Vou apresentar dados?
2. Quais decisões serão tomadas a partir destes dados?
3. Como apresentar estes dados para auxiliar essa decisão de forma efetiva?
```
### 1. Vou apresentar dados?
| Resposta | Critério | Ação no plano |
| ------------------------------ | ---------------------------------------------------------------------- | ------------------------------------------------- |
| **Não** | Só schema/action/access; nenhum número lido por humano nesta entrega | `Dados: N/A` — fim |
| **Sim, derivado / API só** | Utility/aggregate que **outra** superfície já consome (ou item futuro) | Registrar payload + quem consome; UI fica no dono |
| **Sim, superfície neste item** | Lista, detalhe, dashboard, mapa, CSV export legível, card de insight | Preencher seção completa abaixo |
Se “sim”: profile rápido do dado — tipo (categórico / numérico / temporal / geo), granularidade (praça / município / TI / estado), tamanho típico (1 KPI vs 436 linhas vs série 3 anos), e se é **absoluto ou relativo** (no `/campanha` electoral, preferir relativo/local — ver anti-goals).
### 2. Quais decisões serão tomadas a partir destes dados?
Uma frase por decisão, no formato **ator + escolha**. Sem decisão nomeável → o dado é vaidade; corte ou rebaixe a “contexto secundário”.
Exemplos Teqo bons:
- Coordenador: “nesta semana, atacar déficit descoberto em quais Praças?”
- Assessor: “minha meta fecha? se não, renegociar pledge ou abrir demanda?”
- Staff: “comparar candidato X vs Solla neste município — manter ou pivotar discurso?”
Exemplos ruins (rejeitar):
- “Ter visibilidade do % estadual” (anti-goal; não decide alocação)
- “Ver quantos apoiadores cadastrados” sem vínculo a cobertura/meta
- “Dashboard bonito para impressionar”
Se o item toca inteligência de campanha / mapa / metas / fila: consulte **antes** o playbook em `docs/research/relatorio-entrevista-persona-campanha.md` (§6 padrões dado→decisão) e o anti-catálogo do plano-mestre `docs/plans/inteligencia-campanha.md`. Não invente métrica que o research vetou.
### 3. Como apresentar para auxiliar essa decisão?
Escolha a **forma mais pobre que ainda responde a decisão** (depth: reusar shell existente > chart novo > lib de charts). Registre no plano: forma + racional + o que foi rejeitado.
**Escada de pobreza (preferir o degrau mais baixo que resolve):**
| Degrau | Quando usar | Reuso Teqo típico |
| ------------------------------ | ----------------------------------------------------------------- | ----------------------------------------------------- |
| **Número + contexto** | 1–2 valores, “fecha / não fecha”, delta vs meta/semana | `CampaignMetricStrip`, linha no overview |
| **Tabela / lista ranqueada** | Comparar muitas entidades (Praças), ordenar por déficit/cobertura | `PlazaList` + colunas; fila de alocação |
| **Série temporal simples** | Evolução curta (3–5 pontos: 2014/2018/2022 ou delta semanal) | sparkline / tabela ano×valor; não multi-eixo |
| **Mapa (cor / símbolo)** | Decisão é **onde** agir; geo é central à pergunta | `BahiaMap` + escala relativa (quantil/LQ), não % est. |
| **Chart (barra / linha)** | Comparação de poucas categorias ou tendência com >~5 pontos | shadcn/`src/components/ui`; tokens `campaign` |
| **Chart composto / dashboard** | Só se appetite e research pedirem; senão rabbit hole | Adiar com gatilho |
**Família de pergunta → forma** (resumo de visualization-choice-reporting, calibrado ao Field Desk):
| Pergunta que o dado responde | Preferir | Evitar neste produto |
| ---------------------------------- | -------------------------------- | ----------------------------------- |
| Quanto falta / cobre a meta? | Número + % cobertura + delta | Gauge/velocímetro SaaS, hero-metric |
| Onde está o buraco / oportunidade? | Mapa relativo ou lista ranqueada | Choropleth de % estadual absoluto |
| Como evoluiu no tempo? | Linha/sparkline ou tabela anos | Pie; dual Y-axis |
| Como A se compara a B (poucos)? | Barra horizontal ou tabela | Pie com muitas fatias; 3D |
| Qual a composição do todo? | Stacked bar ou tabela | Donut decorativo |
| Correlação / nuvem de pontos? | Quase nunca em v1 `/campanha` | Scatter exploratório sem decisão |
**Narrativa mínima na UI** (mesmo sem relatório formal): o bloco de dados deve permitir ler, nesta ordem — **insight → padrão → contexto (vs meta/histórico) → implicação → próxima ação possível**. Título descritivo (“Votos por mês”) sem insight é falha. Em `/campanha`, a “ação” é menu para julgamento humano (nunca auto-decisão) — alinhado ao research.
## Anti-goals Teqo (não negociar sem fonte nova)
- KPI de **% estadual absoluto** como escala principal (achatamento; DF ≠ majoritária).
- Contagem bruta de cadastros / “vanity metrics” sem vínculo a cobertura/meta/fila.
- Cartograma, gauge, rainbow choropleth, dual-axis enganoso.
- Mapa bonito com pergunta errada (visualização serve à análise; análise serve à decisão — research § ordem Brewer/Pickle).
- Segunda lib de charts / design system paralelo; inventar paleta fora de `data-theme='campaign'`.
- Sugestão automática sem registro de decisão humana (C12 / motor de sugestões).
## Quando NÃO usar gráfico
- Um único número decisivo → número tipográfico + unidade + vs quê.
- Dois números → lado a lado com delta %.
- Poucas linhas densas de auditoria → tabela.
- Export/CSV para operação → tabela; chart é opcional depois.
## Caro vs barato nesta superfície
| Caro (Decisão travada + rejeitadas) | Barato (Não escopo / Adiado) |
| ------------------------------------------------ | ----------------------------------------- |
| Métrica canônica (fórmula, denominador, quem vê) | Cor da barra, ordem de colunas |
| Escala do mapa (absoluta vs % vs quantil/LQ) | Tooltip copy |
| Staff-only vs leader-visible | Sparkline vs número só |
| Persistência de derivado vs compute on read | Biblioteca de chart (se já há shadcn/SVG) |
## Self-check (30s, só se Dados ≠ N/A)
Antes de gravar o plano ou declarar a fase de UI pronta — 1 ponto cada; **&lt;3 → corrigir**:
1. As três perguntas estão respondidas por escrito?
2. Há pelo menos uma **decisão nomeável** (ator + escolha)?
3. A forma escolhida é o degrau mais pobre que resolve — com alternativas rejeitadas?
4. Anti-goals do research/`PRODUCT.md` §5 não foram violados?
5. Depth: reusa `CampaignMetricStrip` / lista / `BahiaMap` / tabela existente quando bastam?
## Onde registrar
- **`roadmap-item`:** seção **Dados → decisão → apresentação** no `docs/plans/<slug>.md` (template). Se N/A, uma linha basta.
- **`implement-roadmap-item`:** auditar essa seção no Passo 4; se ausente e o item claramente apresenta dados → defasado (completar no Passo 7). Nas fases de UI, a escolha de forma é input do craft/critique — não reinventar no meio do polish.
- Skills externas (opcional, leitura sob demanda): `visualization-choice-reporting` (famílias de chart + narrativa); `.agents/skills/refactoring-ui/references/data-visualization.md` (quando NÃO chartar); Mapbox patterns só se o item for mapa Mapbox (hoje o mapa Teqo é Leaflet/`BahiaMap`).

View file

@ -77,6 +77,7 @@ Quando o tipo de decisão bater, aplicar o princípio — **não** abrir fases d
| Escopo de v1 do item | 37signals: build less, YAGNI, cortar abstração especulativa; **nunca** cortar o caro de reverter |
| Depth / leakage na abordagem | software-design-philosophy: deep modules, um lugar por conhecimento |
| Outbound / lista / import | Timeouts, paginação, fail-closed (já em AGENTS.md) — nomear como decisão se o item toca |
| KPI / mapa / série / ranking na UI | [data-presentation.md](data-presentation.md): dado → decisão nomeável → forma mais pobre |
## Self-score (gate de 30s)

View file

@ -1,8 +1,9 @@
# Template de plano (`docs/plans/<slug>.md`)
Estrutura extraída dos planos existentes (`overview-lista-nucleos.md`, `visitados-recentemente.md`, etc.). Manter as seções nesta ordem; omitir "Design (Impeccable)" apenas na classe **A** (só backend); omitir a subseção "Referência visual (UX Pilot)" quando não houver design-ref.
Estrutura extraída dos planos existentes (`overview-lista-nucleos.md`, `visitados-recentemente.md`, etc.). Manter as seções nesta ordem; omitir "Design (Impeccable)" apenas na classe **A** (só backend); **sempre** incluir "Dados → decisão → apresentação" (`N/A` se não houver superfície de dados); omitir a subseção "Referência visual (UX Pilot)" quando não houver design-ref.
Filtros de decisão (caro vs barato, appetite, rabbit holes, depth): [decision-quality.md](decision-quality.md).
Filtro de dados (apresentar? decisão? forma?): [data-presentation.md](data-presentation.md) — obrigatório se houver KPI/mapa/série/ranking; senão `Dados: N/A`.
````markdown
# <Título do item em pt-BR>
@ -20,7 +21,7 @@ Responsável: —
Âncoras: `PRODUCT.md` / `DESIGN.md` (register <product|brand>) · tema `data-theme='campaign'` (ou tokens do site público).
Na implementação (`implement-roadmap-item`): <shape → craft → critique → polish | craft compacto → critique → polish | shape compacto (ref) → craft → …>.
Na implementação (`implement-roadmap-item`): <shape → craft → critique → polish | craft compacto → critique → polish | shape compacto (ref) → craft → …>. Declarar `harden`/`optimize` só se o Passo 8 do implement acionar gatilho (não pipeline fixo).
Brief compacto (obrigatório em C; se B ambíguo):
@ -46,6 +47,16 @@ Como usar:
<!-- Se o item nasce de critique: cite `.impeccable/critique/<snapshot>.md` aqui; não rode critique novo neste fluxo. -->
## Dados → decisão → apresentação
<!-- Obrigatório em todo plano (também na classe A). Sem métrica/mapa/série/ranking nesta entrega: uma linha "Dados: N/A — <por quê>". Caso contrário as três perguntas. Ver data-presentation.md. -->
- **Vou apresentar dados?** <Não (N/A) | Sim, só aggregate para &lt;consumidor&gt; | Sim, superfície neste item>
- **Decisões desbloqueadas:** <ator + escolha; uma por bullet. Sem decisão nomeável → corte vaidade.>
- **Forma escolhida:** <degrau da escada: número+contexto | tabela/lista | série | mapa | chart | …> — **por quê.** **Rejeitado:** <chart/mapa/KPI alternativos e por quê>.
- **Profile (se Sim):** tipo / granularidade / tamanho típico / absoluto vs relativo.
- **Anti-goals de dado:** <ex.: sem % estadual absoluto; sem gauge SaaS — ou "N/A">.
## Contexto
<Estado atual do sistema (com caminhos de arquivo reais), o problema/oportunidade, e a decisão
@ -124,5 +135,6 @@ Notas:
- No bloco mermaid acima, remover as barras invertidas dos fences internos (`\``` → ` ``` `).
- Nível de detalhe alvo: ~100–130 linhas, como os planos existentes. Menos que isso costuma significar que o Passo 3 (exploração do código) foi pulado.
- Classe **A**: omita a seção "Design (Impeccable)" e use no cabeçalho `Impeccable: A — N/A (sem superfície UI)`.
- Seção **Dados → decisão → apresentação** é sempre presente (preenchida ou `Dados: N/A`); não omita.
- Não rode `/impeccable craft|critique|polish` ao criar o plano — só classifique e semeie; a skill `implement-roadmap-item` executa o ciclo.
- Self-score de qualidade de decisão (0–5) antes de gravar: ver [decision-quality.md](decision-quality.md). Se Rabbit holes ou Adiado com gatilho estiverem vazios de propósito, escreva `Nenhum neste item.` — não omita a seção.
- Self-score de qualidade de decisão (0–5) antes de gravar: ver [decision-quality.md](decision-quality.md). Se Dados ≠ N/A, self-check em [data-presentation.md](data-presentation.md) (≥3/5). Se Rabbit holes ou Adiado com gatilho estiverem vazios de propósito, escreva `Nenhum neste item.` — não omita a seção.

6
.gitignore vendored
View file

@ -45,6 +45,12 @@ next-env.d.ts
# TSE open-data zip cache (pnpm db:seed:tse)
/data/tse/
# Research source deposits (paywalled books/papers obtained legally) — keep only README/NOTES
/docs/research/sources/**
!/docs/research/sources/**/
!/docs/research/sources/README.md
!/docs/research/sources/**/NOTES.md
# IBGE geometry download cache (pnpm build:geometries)
/data/geometries/
# IBGE demographics download cache (pnpm build:demographics)

View file

@ -13,6 +13,8 @@ Teqo is the digital platform for deputado federal Jorge Solla (PT-BA): public si
- Hosting stays on Vercel for now. No self-host/Coolify migration in progress.
- Donations are NOT handled in this app — they run through QueroApoiar (`apoiar.me/jorgesolla`, TSE-homologated). The site only needs a "Doar" link/CTA out to that URL.
- **Embasamento de produto/domínio:** `docs/research/` guarda o compêndio de literatura (campanha de DF na Bahia, geografia do voto, cartografia eleitoral) e o relatório de discovery aprovado (2026-07-21) com o playbook dado→decisão. Para métricas, análises territoriais, mapa e priorização em `/campanha`, consulte-o antes de inventar — o kernel: a disputa de DF é conta de quociente fragmentada; leitura útil é relativa e local (captura, LQ, quantis, cobertura de meta por pledges), nunca % estadual absoluto.
**Real conventions already established in this codebase (follow these, not just the generic patterns below):**
- `Contact` is the normalized "person" record (name, email, phone, state/city via `src/lib/cities.ts`, CEP). Don't create a parallel "person" collection for new features (e.g. líderanças/apoiadores) — add a join collection that relates to `Contact`, the same way `Signature` and `Subscription` do.
@ -53,6 +55,8 @@ Backlog consolidado (bloqueadores, site, campanha, white-label): [`docs/roadmap.
**Recently resolved (2026-07-21):** **B12** Aproximar mapa ao footprint filtrado + correção hover — `fitToKeys` / `interactiveKeys` em `BahiaMap` (`plazasByIbgeCode`); `canonicalMapKeysKey`; hover stroke-only; clear síncrono no mouseout; fit só quando footprint muda. Plano: `docs/plans/aproximar-mapa-pracas.md`.
**Recently resolved (2026-07-21):** **Discovery "Inteligência de campanha"** — ciclo literatura→persona→entrevista sintética aprovado. Embasamento canônico de produto/domínio em **`docs/research/`** (compêndio de ~67 fontes sobre campanha de DF na Bahia; relatório com kernel, playbook de 25 padrões dado→decisão, anti-goals): agentes devem consultá-lo antes de propor métricas/análises territoriais novas. Programa registrado no roadmap: **E8–E15 + B13 + C12** (plano-mestre `docs/plans/inteligencia-campanha.md`) — conta da cadeira (metas derivadas sobre válidos projetados), fila de alocação, registro-fundação (versions em `votePledge`, sinais tipados, `allocationDecision`), classificação relativa (substitui limiares 35/20/10 p/ DF), escala relativa no mapa (quantis/LQ/rank + símbolo proporcional), níveis N0–N4 staff-only, motor de sugestões com humano no loop, camada TI (salvaguardas MAUP), planejador de giros, backtest pós-eleição. Anti-metas travadas: % estadual absoluto como KPI, contagem bruta de cadastros, cartograma, "caça ao alienado", sugestão automática sem decisão humana.
## Posts & Tags (news / publications)
The public news/publications system is backed by two collections (both in the `Publicações` admin group) plus the helpers in `src/utilities/posts.ts`.

View file

@ -44,7 +44,7 @@ Not generic SaaS dashboards (purple gradients, hero-metric templates, identical
2. **Clarity under pressure** — every screen earns its keep for field use; prefer plain language and obvious next actions over decoration.
3. **Edit where you see** — on `/campanha` staff surfaces (coordinator / advisor), mutable data that the role can update should be editable in context whenever it fits (list cell, detail card, queue row), so assessors and the general coordinator do not burn time navigating to a separate edit screen for every correction. Prefer named Popovers / selects / short inputs that reuse existing server actions and the same access rules as the full form. Keep dedicated `/editar` (or long Sheets) for multi-field strategy forms, rare fields, and anything that needs a note or confirmation flow. Leadership paths stay read-or-declare as already scoped — never expose staff-only fields. Anti-goals: full-row spreadsheet / data-grid mode; always-mounted inputs on every row; a second generic “editable cell” design system; optimistic _writes of list/aggregate results_ that skip server refresh when the list is the source of truth (optimistic control state is fine — see Feel the action).
4. **Depth and simplicity as peers** — staff workflows can be rich; leadership paths stay light and phone-first without becoming a second-class product.
5. **Intelligence serves organization** — electoral baseline and insights exist to decide where to act, not to impress.
5. **Intelligence serves organization** — electoral baseline and insights exist to decide where to act, not to impress. The product delivers intelligence, not a fancy spreadsheet: it computes the bulk of the analysis (vigilance across 436 Praças, structural differential diagnosis, a prioritized decision queue with suggested action menus) so staff spend judgment, not arithmetic. Decision metrics are **relative and local** — coverage of per-Praça goals by auditable pledges, capture of the campo's majoritarian ceiling, quantiles/LQ of the candidate's own distribution — never absolute statewide % (a DF seat costs ~80–150k votes; the statewide record is ~5% of valid votes, so absolute scales flatten into noise). Suggestions are grounded in `docs/research/` (approved discovery, 25 data→decision patterns) and are always a menu for a human: the product never auto-decides, and each decision — including the discarded alternative reading — is recorded ex-ante for the post-election backtest. Anti-goals: raw-count KPIs, 0–100% fixed choropleth scales, "available votes" reservoirs from abstention/null tallies, suggestion-as-rule.
6. **Inspire without kitsch** — socialist and mobilizing in spirit; never shouty campaign brochure aesthetics.
7. **Feel the action** — every user-initiated action (filter, save, URL-driven refresh, opening a heavy sheet) must give **immediate** feedback on the control or surface that was touched — under ~100ms perceived response. Prefer optimistic UI for the _control value_ (select shows the chosen option at once; button shows pending) while the _result_ (list, map, KPIs, detail payload) shows honest pending (`aria-busy`, live region, opacity/skeleton on the region that changes) until the server/RSC catches up. Applies to `/campanha` first (field pressure) and to public interactive flows the same way. Anti-goals: silent waits where the control stays on the old value until navigation finishes; full-page spinner as the only feedback; fake progress bars; omitting accessible busy/live announcements.

View file

@ -0,0 +1,80 @@
# E15 — Backtest pós-eleição (pledge vs. resultado; calibração de limiares)
Status: rascunho
Atualizado em: 2026-07-21
Item do roadmap: [docs/roadmap.md](../roadmap.md) (seção "Inteligência de campanha", E15; plano-mestre [inteligencia-campanha.md](inteligencia-campanha.md))
Impeccable: A — N/A (sem superfície UI de produto neste ciclo; saída é relatório/dado)
Appetite: ~1 dia eng; janela pós-04/10 (sem pressa, sem migration própria)
Responsável: —
## Contexto
"Cada campanha que não compara pledge com voto realizado joga fora o experimento que pagou caro para rodar" (relatório C4). O backtest é a única calibração real de: fator de desconto de pledges (declarado × estimado × realizado), limiares da classificação relativa (E10), critérios de nível (E14), e a leitura ex-ante do motor (E11 — sugestões aceitas/descartadas vs. desfecho). Depende de dois lados: o lado TSE (resultado 2026 por município×zona — chega via extensão do seed `pnpm db:seed:tse` para 2026) e o lado campanha, que **só existe se C12 registrar durante o ciclo** (trajetória de pledges com datas, decisões com snapshot, sinais datados, esforço/origem de visitas). Este plano é deliberadamente pequeno: a fundação é C12; aqui é a leitura.
## Objetivos
- Import do resultado 2026 (extensão do seed TSE existente para `year=2026`, mesmo formato `electionTally`/`electionCandidateVote`).
- **Análises do backtest** (script/utility, saída em markdown versionado em `docs/research/` como apêndice do ciclo):
1. Pledge → voto: por praça, trajetória de comprometido (fotos em 15/08, 15/09, véspera) vs. nominal realizado; fator de conversão global e por assessor/liderança-fonte (com o cuidado anti-punição de K-C/G4 — leitura agregada, não ranking individual público).
2. Limiares: quais cortes de LQ/captura teriam separado ex-ante as praças onde o candidato cresceu (calibra E10/E14 para 2030).
3. Decisões: `allocationDecision` aceitas/descartadas vs. desfecho da praça — o motor acertou onde? a leitura alternativa descartada era a certa?
4. Sinais: sinal registrado (invasão/esfriamento) previu queda? lead time médio.
5. Roll-off: praças I-A trabalhadas vs. não trabalhadas — o diferencial se moveu?
- Tudo com o estatuto honesto: n=1 eleição, sem contrafactual — é calibração, não prova causal.
## Decisões travadas
- **Saída é documento versionado + dados derivados, não dashboard.** Pós-eleição não há usuário sob pressão; o consumidor é o planejamento 2030 e a plataforma white-label. **Rejeitado:** UI de produto para o backtest (custo sem usuário no ciclo).
- **Nenhuma análise individual punitiva.** Fatores por liderança existem para desconto futuro, não para ranking — G4 (punição ensina a inflar). Saída pública interna só agregada.
- **i18n e naming:** `backtest2026.ts` (script na família dos seeds), leituras `pledgeConversion`, `thresholdCalibration`, `decisionAudit`.
## Questões em aberto
- **Fotos da trajetória em quais datas?** Opções: fixas (15/08, 15/09, 03/10) | todas as semanas. **Recomendação:** semanais com destaque às três âncoras — versions do C12 permitem qualquer recorte.
- **Onde roda?** **Recomendação:** script CLI com guard de banco local (padrão dos seeds), lendo prod via `db:pull` — nunca análise pesada contra o banco de produção.
## Abordagem proposta
```mermaid
flowchart LR
TSE26["seed TSE 2026<br/>(electionTally/CandidateVote)"]
Hist["pledgeHistory (C12 versions)"]
Dec["allocationDecision + sinais"]
Bt["backtest2026<br/>(5 leituras)"]
Doc["docs/research/backtest-2026.md<br/>+ calibração E10/E14"]
TSE26 --> Bt
Hist --> Bt
Dec --> Bt
Bt --> Doc
```
Componentes:
- **`scripts/seed-tse-results.mjs`**: aceitar 2026 quando o TSE publicar (mesma família de flags de E2).
- **`src/utilities/backtest2026.ts`** (ou script em `scripts/`): as 5 leituras sobre `pledgeHistory` (C12), `allocationDecision`, sinais e tallies; saída markdown.
- **Sem migration** (dado 2026 usa as collections existentes).
## Dependências
- Duras: **C12** (sem registro não há backtest — é por isso que C12 é não-cortável), resultado TSE 2026 publicado (externo, ~nov/2026). Suaves: E10/E14 (consumidores da calibração), E11 (auditoria de decisões só se o motor rodou).
## Não escopo
- Previsão/modelo para 2030 (só calibração descritiva); relatório público externo; qualquer análise de dados pessoais além do agregado interno (LGPD — pledges são dados de campanha, tratamento segue o mesmo regime de acesso staff).
## Rabbit holes
- **Virar paper.** 5 leituras, um markdown, cortes sugeridos — não análise econométrica.
- **Rodar contra produção.** Guard de banco local obrigatório (padrão `assertLocalDatabase` dos seeds); dados de campanha via `db:pull` com PII já excluída onde aplicável.
## Adiado com gatilho
- **Backtest contínuo durante a campanha** (mini-calibrações mensais). Gatilho: coordenação pedir leitura intermediária + C12 com ≥6 semanas de série.
## Referências
- `docs/roadmap.md` (Inteligência de campanha, E15) · [plano-mestre](inteligencia-campanha.md)
- `docs/research/relatorio-entrevista-persona-campanha.md` C4 (calibração), FU4 (registro ex-ante), D4 (limiar por backtest), G4 (anti-punição)
- `scripts/seed-tse-results.mjs`, `scripts/db-pull.mjs`, `tests/helpers/assertTestDatabase.ts` (família de guards)
- [registro-fundacao.md](registro-fundacao.md) (C12 — a fundação)
- AGENTS.md — guards de banco, seeds TSE

View file

@ -0,0 +1,97 @@
# E12 — Camada Territórios de Identidade (rollups regionais com salvaguardas MAUP)
Status: rascunho
Atualizado em: 2026-07-21
Item do roadmap: [docs/roadmap.md](../roadmap.md) (seção "Inteligência de campanha", E12; plano-mestre [inteligencia-campanha.md](inteligencia-campanha.md))
Impeccable: B — agrupamento/rollup nas superfícies existentes (lista/overview, detalhe da Praça, mapa TI opcional); sem rota nova
Appetite: ~1,5 dia eng; sem migration (mapeamento praça→TI é estático)
Responsável: —
## Design (Impeccable)
Âncoras: `PRODUCT.md` (princípio 5) / `DESIGN.md` (register `product`) · `PlazaListOverview`, geometria `bahia-identity-territories.topo.json` (B2).
Na implementação: craft compacto → critique → polish.
- **Persona / contexto:** coordenador dividindo carteiras de assessores e preparando giro; "TI é a língua que o governo e o campo já falam".
- **Job principal:** ler o território em 27 unidades sem que a média regional esconda a praça crítica.
- **Estratégia de cor:** Restrained; rollup nunca aparece sem a decomposição a um clique.
- **Edit where you see:** não neste item (rollup é leitura; carteiras de assessor continuam por praça).
- **Anti-goals:** média regional decidindo alocação de praça (anti-goal 9); TI Metropolitano como uma linha entre 27; segundo agrupamento além de TI (Imediatas ficam adiadas).
## Contexto
Relatório §6.5: TI é a camada default de coordenação (decisões sobre gente e logística regional), com salvaguardas MAUP obrigatórias — razão dos agregados (nunca média das razões), agregado acompanhado de mediana+amplitude+praça crítica nomeada, Metropolitano sempre decomposto, malha congelada por ciclo, "praça manda no voto, TI manda na logística". Análises que só estabilizam no TI: balanço de portfólio, gap regional de captura, leitura da majoritária por TI, benchmark intra-TI (T4), sanity de metas. O repo já tem `bahiaTerritories.ts` (município→TI oficial) e a geometria dos 27 TIs (B2); `plaza.region` já existe no catálogo.
## Objetivos
- **Rollup por TI** sobre o bundle existente: votos em jogo, meta/cobertura (Σ), captura regional (Σ nominais ÷ Σ teto — razão dos agregados), nº de praças por classe/nível, praça crítica (pior déficit/frescor) nomeada, mediana e amplitude da captura.
- **Agrupamento na lista:** modo "por Território" na lista de Praças (grupos colapsáveis com o rollup no header do grupo) — mesma URL/filtros.
- **Benchmark intra-TI (T4):** no detalhe da Praça, comparação com a mediana do TI ("captura 2,1× a mediana do seu território") + praça-farol nomeada.
- **Metropolitano decomposto:** o grupo "Metropolitano de Salvador" sempre expande zonas SSA + municípios RMS; nunca agrega num número único sem breakdown visível.
- **Malha congelada:** constante de versão da composição TI usada no ciclo (já é estática em `bahiaTerritories.ts` — documentar como frozen 2026).
- Opcional barato (se couber no appetite): modo TI no mapa usando a geometria B2 (fills por rollup, mesmas escalas B13).
## Decisões travadas
- **TI como única camada regional do produto neste ciclo** (default operacional — relatório H4). **Rejeitado:** Regiões Imediatas IBGE como camada paralela (teste de sensibilidade fica manual/ad-hoc — G10 adiado); cluster empírico como camada operacional (instável e ilegível; vira exercício de auditoria única fora do produto).
- **Razão dos agregados, nunca média das razões** — regra de implementação com teste unit dedicado (divergência entre as duas contas exposta como alarme de heterogeneidade). **Rejeitado:** médias simples (a média que mente — §6.5).
- **i18n e naming:** `territoryRollup`, `computeTerritoryRollups`, `criticalPlaza`, `medianCapture`; labels pt-BR ("Território", "Praça crítica").
## Questões em aberto
- **Padrões T1–T3/T5 entram aqui ou no E11 fase 2?** Opções: avaliador TI neste item | tudo no motor. **Recomendação:** os rollups (insumo) aqui; os gatilhos T no E11 fase 2 — evita duplicar o mecanismo de sugestão.
- **Mapa TI na v1?** **Recomendação:** sim se sobrar ½ dia (geometria pronta, `BahiaMap` aceita features de TI); senão adiado com gatilho.
## Abordagem proposta
```mermaid
flowchart LR
Bundle["loadPlazaListPageBundle"]
Terr["bahiaTerritories.ts<br/>(município→TI, frozen 2026)"]
Roll["computeTerritoryRollups<br/>(Σ, mediana, amplitude, crítica)"]
List["PlazaList agrupada + headers de grupo"]
Detail["benchmark intra-TI no detalhe"]
Map["(opcional) fills TI no BahiaMap"]
Bundle --> Roll
Terr --> Roll
Roll --> List
Roll --> Detail
Roll --> Map
```
Componentes:
- **`src/utilities/territoryRollup.ts`**: rollup puro sobre as linhas do bundle + derivados E8; salvaguardas como invariantes testadas (razão de agregados, Metropolitano flagged).
- **`PlazaList.tsx`**: modo de agrupamento (param `?group=territorio`) com headers de grupo; `PlazaListOverview` ganha corte por TI quando agrupado.
- **Detalhe da Praça:** linha de benchmark no card de baseline (reusa `PlazaBaselineCard`).
- **Mapa (opcional):** `bahiaTerritoryGeometries.ts`/`getTerritoryFeature` já existem; modo TI colore os 27 polígonos pelo rollup.
- **Sem migration.**
## Dependências
- Dura: **E8** (captura/meta/cobertura por praça para agregar). Suaves: E9 (agrupamento compõe com as colunas da fila), E14 (nível no rollup), B13 (escalas do mapa TI).
- Reusa: `bahiaTerritories.ts`, `bahiaTerritoryGeometries.ts`/`bahiaGeometries.ts` (B2), bundle A9+.
## Não escopo
- Gatilhos T1–T5 como sugestões (E11 fase 2); malha Regiões Imediatas (G10 — adiado no plano-mestre); carteiras de assessor como entidade (continua `plaza.advisors`); qualquer edição em nível TI.
## Rabbit holes
- **Rollup virar segunda página de analytics.** É um agrupamento da lista + números no header — não um dashboard regional novo.
- **Zonas de Salvador no rollup do Metropolitano.** As 19 Praças-zona têm `region` = Metropolitano; agregar por soma funciona, mas o breakdown obrigatório precisa listar zonas E municípios RMS separados — não "resolver" juntando tudo.
- **Comparação entre TIs virar ranking público.** Mesmo risco de gaming do benchmark (T4-contraindicação): benchmark é para aprender mecanismo, não régua punitiva — copy da UI reflete isso.
## Adiado com gatilho
- **Mapa TI** (se não couber na v1). Gatilho: primeiro giro regional planejado com o mapa municipal se mostrando insuficiente.
- **Teste de sensibilidade TI×Imediatas.** Gatilho: decisão cara sustentada por leitura regional divergente (§6.5 salvaguarda 4).
## Referências
- `docs/roadmap.md` (Inteligência de campanha, E12) · [plano-mestre](inteligencia-campanha.md)
- `docs/research/relatorio-entrevista-persona-campanha.md` §6.5 (veredito TI, análises, T1–T5, salvaguardas MAUP)
- `src/lib/bahiaTerritories.ts`, `src/lib/bahiaTerritoryGeometries.ts`, `src/lib/geometries/bahia-identity-territories.topo.json` (B2)
- `src/components/campaign/PlazaList.tsx`, `PlazaListOverview.tsx`, `PlazaBaselineCard.tsx`, `src/utilities/plazaPageData.ts`
- AGENTS.md — B2 as-built, naming

View file

@ -0,0 +1,88 @@
# E10 — Classificação territorial relativa (defesa/ataque para DF)
Status: rascunho
Atualizado em: 2026-07-21
Item do roadmap: [docs/roadmap.md](../roadmap.md) (seção "Inteligência de campanha", E10; plano-mestre [inteligencia-campanha.md](inteligencia-campanha.md))
Impeccable: B — muda o conteúdo de cards/badges existentes (insights da Praça, overview da lista); sem rota nova
Appetite: ~1 dia eng; sem migration (derivação em leitura, limiares versionados em lib)
Responsável: —
## Design (Impeccable)
Âncoras: `PRODUCT.md` (princípio 5) / `DESIGN.md` (register `product`) · badges/Alert existentes do stack de insights.
Na implementação: craft compacto → critique → polish.
- **Persona / contexto:** assessor lendo a Praça; coordenador filtrando a lista por classe.
- **Job principal:** a classe transforma número em verbo (defender/atacar/consolidar/minimizar) sem mentir na aritmética de DF.
- **Estratégia de cor:** manter o mapeamento de badges já usado (defesa verde, ataque contorno vermelho, indecisa âmbar, perdida cinza — precedente A5-2).
- **Edit where you see:** não — classe é sugestão automática; discordância do coordenador vira nível/nota (E14), não override do cálculo.
- **Anti-goals:** classe como sentença (é sugestão); limiar absoluto hardcoded sem racional.
## Contexto
Os limiares herdados de A5-2 (`TERRITORIAL_DEFESA_MIN = 0.35` etc. em `src/lib/electionInsights.ts`) foram calibrados para leitura majoritária. O relatório (D4) mostra a degeneração em DF: share local típico 1–5% → o estado inteiro vira "perdida". Prescrição: **âncoras relativas** — múltiplos do share estadual do próprio candidato (LQ ≥ 2–3 = defesa; ~1 = padrão; < 0,5 = fraqueza) e/ou múltiplos do share da cadeira marginal — e classificação **multi-eixo**: dominância + importância da praça na própria votação (concentração) + competição local + teto do campo. Cortes exatos são calibráveis por backtest (E15); aqui entra o método com valores iniciais versionados.
## Objetivos
- Novo classificador em `electionInsights.ts` (ou módulo irmão `dfTerritorialClass.ts`): entrada = dominância, LQ, share da praça na votação própria, captura vs. teto do campo, NEC/desequilíbrio local; saída = classe + fatores ("por quê").
- Limiares versionados como constantes nomeadas com comentário de estatuto (ilustrativos, calibráveis por E15) — mesmos 4 rótulos operacionais existentes.
- Substituição nos consumidores: card de insights da Praça, distribuição no overview da lista, filtro por classe (se existente) e cor de classe onde o mapa a usar (B13).
- "Por quê" exposto: a UI mostra os 2 fatores dominantes ("LQ 2,8 · praça é 6% da sua votação"), não só o rótulo — antídoto do excesso de confiança (relatório §6.4).
- Testes unit com fixtures das 4 classes + casos de borda (praça sem baseline, válidos 0 — reusar branches `semBaseline` existentes).
## Decisões travadas
- **Âncora primária = múltiplos do share estadual do próprio candidato (LQ); âncora secundária = share da cadeira marginal.** A régua viaja entre eleições/candidatos e ancora no que "eleger" significa. **Rejeitado:** manter 35/20/10 (degeneração comprovada na aritmética); quantis puros como classe (quantil não tem semântica operacional de meta — fica para escala do mapa B13).
- **Classe continua sugestão automática, não editável.** Precedente A5-2 mantido; julgamento humano entra por E14 (nível) e `allocationDecision`. **Rejeitado:** override manual da classe (duas verdades no mesmo badge).
- **i18n e naming:** `computeDfTerritorialClass`, `DF_CLASS_ANCHORS`, fatores `dominance | ownShare | capture | competition`; rótulos pt-BR existentes (`Defesa`, `Ataque`, `Indecisa`, `Perdida`).
## Questões em aberto
- **Manter o classificador antigo para leituras majoritárias?** Opções: substituir tudo | manter ambos com seletor de contexto. **Recomendação:** substituir nos consumidores de Praça (o produto é DF); manter as constantes antigas exportadas até B13 estabilizar, depois remover.
- **NEC/desequilíbrio entram na v1 do classificador?** **Recomendação:** sim como fator qualificador de "ataque" (disputa aberta), com fallback neutro quando o cálculo por praça não estiver disponível — não bloquear a entrega pelos índices.
## Abordagem proposta
```mermaid
flowchart LR
Base["plazaElectoralBaseline<br/>(série + válidos)"]
Pot["plazaPotential (E8)<br/>captura/LQ/teto"]
Class["computeDfTerritorialClass<br/>(âncoras relativas, multi-eixo)"]
UI["insights da Praça + overview + filtro"]
Base --> Class
Pot --> Class
Class --> UI
```
Componentes:
- **`src/lib/electionInsights.ts`** (ou `dfTerritorialClass.ts` ao lado): classificador puro + âncoras versionadas; manter helpers de badge/label existentes (`territorialClassBadgeVariant`, `territorialClassLabel`).
- **Consumidores:** componente de insights da Praça (stack atual), `PlazaListOverview.tsx` (distribuição), `plazaPageData.ts` (cálculo no load, sem N+1 — reusa agregados do bundle).
- **Sem migration, sem collection, sem server action.**
## Dependências
- Dura: **E8** (LQ/captura/teto derivados). Suave: E15 (calibração futura dos cortes); B13 (consome as classes).
- Reusa: `plazaElectoralBaseline.ts`, `plazaCandidateComparison.ts` (share de outros candidatos para competição), helpers de badge existentes.
## Não escopo
- Escala visual do mapa (B13); override/nível humano (E14); calibração empírica dos cortes (E15); classificação em nível TI (E12 usa rollup próprio).
## Rabbit holes
- **Calibração prematura.** Discutir "LQ 2 ou 3?" sem backtest é bikeshedding — valores iniciais documentados como ilustrativos; E15 decide.
- **Índices de competição por praça exigirem query nova pesada.** Se NEC/desequilíbrio por praça não saírem baratos do que `plazaCandidateComparison.ts` já carrega, degradar para fator neutro — não criar agregado SQL novo neste item.
## Adiado com gatilho
- **Fator "tendência da série" na classe.** Gatilho: E15 mostrar que a série 2014→2022 melhora a separação ex-ante.
## Referências
- `docs/roadmap.md` (Inteligência de campanha, E10) · [plano-mestre](inteligencia-campanha.md)
- `docs/research/relatorio-entrevista-persona-campanha.md` D4 (degeneração + âncoras), §5 nota mapa/métricas
- `docs/plans/insight-classificacao-territorial.md` (as-built A5-2 — limiares antigos, UI, testes)
- `src/lib/electionInsights.ts`, `src/utilities/plazaElectoralBaseline.ts`, `src/utilities/plazaCandidateComparison.ts`, `src/components/campaign/PlazaListOverview.tsx`
- AGENTS.md — limiares versionados, naming

View file

@ -0,0 +1,101 @@
# E8 — Conta da cadeira (metas derivadas, potencial por praça, cobertura)
Status: rascunho
Atualizado em: 2026-07-21
Item do roadmap: [docs/roadmap.md](../roadmap.md) (seção "Inteligência de campanha", E8; plano-mestre [inteligencia-campanha.md](inteligencia-campanha.md))
Impeccable: B — cobertura/metas encaixadas no dashboard, na lista de Praças e no detalhe (sem rota nova)
Appetite: ~2 dias eng; migration pequena (global `campaignGoals`) + utilities derivadas + encaixes de UI
Responsável: —
## Design (Impeccable)
Âncoras: `PRODUCT.md` (princípio 5 — métricas relativas e locais; anti-goal % estadual absoluto) / `DESIGN.md` (register `product`) · tema `data-theme='campaign'`.
Na implementação (`implement-roadmap-item`): craft compacto → critique → polish.
- **Persona / contexto:** coordenador-geral na reunião semanal; assessor conferindo "quanto falta" nas suas Praças.
- **Job principal:** responder "a conta fecha?" em uma linha — meta, comprometido, delta da semana, por praça e no agregado.
- **Estratégia de cor:** Restrained; delta negativo usa o vermelho de campanha com parcimônia (não hero-metric).
- **Edit where you see:** sim — meta da praça editável em contexto (Popover reusando `plazaStaffFormActions`), como B9.
- **Anti-goals:** KPI de % estadual absoluto; contagem bruta de cadastros; gauge/velocímetro SaaS.
## Contexto
O relatório de discovery ([§5.1](../research/relatorio-entrevista-persona-campanha.md)) fixou a OMTM da campanha até 16/08: **cobertura da meta por compromissos auditáveis** (Σ pledges ÷ meta, com delta semanal como número da reunião), decomposta por praça. Hoje `plaza.voteGoals` (Bom/Regular/Mínimo) e `plaza.expectedVotes` existem (E1/A9), mas: não há meta estadual nem decomposição de cima para baixo; não há noção de potencial derivado (válidos projetados, captura do campo, roll-off); denominadores baseados em `aptos` inflariam praças de abstenção estrutural (relatório §6.6/I-B); e não existe "campo" definido por ano para share intracampo. Os dados TSE necessários já estão em `electionTally` (válidos/brancos/nulos/comparecimento por cargo×ano×cidade×zona) e `electionCandidateVote`.
## Objetivos
- Global `campaignGoals` (admin group `Campanha`, staff-only): meta estadual de votos, margem, ano-base, nota.
- Utilities derivadas por praça (sem persistir o derivado): válidos projetados do cargo (série 2014/2018/2022), teto do campo (majoritário 1º turno), taxa de captura, share intracampo (via `campoParties.ts`), roll-off DF×majoritária, potencial e meta sugerida (decomposição proporcional ao potencial).
- Cobertura: Σ (`estimatedVotes ?? declaredVotes`) ÷ meta por praça e agregada; delta semanal (exige C12 para série; até lá, delta vs. snapshot em memória do último load é aceitável mostrar como "—").
- Encaixes: linha de cobertura no dashboard (`campaignDashboardData.ts`), colunas meta/cobertura na lista (`PlazaList`/`PlazaListOverview`), card no detalhe da Praça.
- Access: tudo staff-only (`coordinator`/`advisor`); `leader` não vê metas — mesmo padrão de `voteGoals`.
- Sanity check por TI: Σ metas das praças do TI vs. participação histórica do TI no voto (aviso, não bloqueio).
## Decisões travadas
- **Denominadores usam válidos projetados do cargo, nunca `aptos`** (relatório §6.6; abstenção estrutural >35% em praças pequenas infla potencial). **Rejeitado:** `aptos` (viés pró-praça-vazia); válidos da majoritária (cargo errado); eleitorado IBGE (não é cadastro eleitoral).
- **Meta estadual mora num global editável, decomposição é derivada e a meta por praça continua editável** (`voteGoals` manual vence a sugerida quando preenchida). Mantém julgamento humano no loop e evita reescrever E1. **Rejeitado:** meta por praça 100% automática (K-C: "o erro é a conta" precisa de dono humano); collection de metas versionadas (C12 cobre auditoria via decisões).
- **"Campo" por ano é lib estática curada** `src/lib/campoParties.ts` (ano → partidos/números). **Rejeitado:** collection administrável (curadoria política rara, não CRUD); inferir por coligação do TSE (federações ≠ campo político real).
- **i18n e naming:** `campaignGoals`, `computePlazaPotential`, `computeGoalCoverage`, `projectedValidVotes`, `captureRate`, `intraFieldShare`, `rollOff`; labels pt-BR.
## Questões em aberto
- **Meta estadual inicial?** Opções: QE cheio (~190–200 mil) | faixa da cadeira 2022 (~80–150 mil) + margem. **Recomendação:** faixa da cadeira + margem do coordenador — o QE cheio superestima (maioria das cadeiras sai bem abaixo). _(validar com produto)_
- **Projeção de válidos: média simples da série ou tendência?** Opções: média 3 eleições | último ano | regressão simples. **Recomendação:** média ponderada (2022 peso 2) — barata, estável, sem cheiro de "previsão estatística" (fora de escopo).
## Abordagem proposta
```mermaid
flowchart LR
Tally["electionTally + electionCandidateVote<br/>(série 2014/2018/2022)"]
Campo["campoParties.ts"]
Goals["global campaignGoals"]
Pot["computePlazaPotential<br/>(válidos proj., teto, captura, roll-off)"]
Cov["computeGoalCoverage<br/>(Σ pledges ÷ meta)"]
Pledges["aggregatePledgesByPlaza<br/>(votePledgeData.ts)"]
UI["dashboard + PlazaList/Overview + detalhe"]
Tally --> Pot
Campo --> Pot
Goals --> Cov
Pot --> Cov
Pledges --> Cov
Cov --> UI
```
Componentes:
- **`src/lib/campoParties.ts`**: mapa ano→partidos do campo (2014/2018/2022/2026), com fixture de teste.
- **`src/utilities/plazaPotential.ts`**: deriva por praça (reusa `plazaElectionGeography.ts` para células cidade×zona e `plazaElectoralBaseline.ts` para a série); expõe `projectedValidVotes`, `fieldCeiling`, `captureRate`, `intraFieldShare`, `rollOff`, `suggestedGoal`.
- **`src/utilities/goalCoverage.ts`**: cobertura por praça/agregado consumindo `aggregatePledgesByPlaza` (regra `estimatedVotes ?? declaredVotes` de `votePledgeData.ts`) + `voteGoals`/meta sugerida; sanity por TI via `bahiaTerritories.ts`.
- **Global `CampaignGoals`** (`src/globals/CampaignGoals.ts`): campos `stateGoal`, `margin`, `baseYear`, `note`; access staff-read/coordinator-write; hook `revalidateGlobal`.
- **UI:** linha nova em `CampaignMetricStrip` do dashboard; coluna/ordenar por cobertura em `PlazaList` (reusa padrão B9 para editar meta via `plazaStaffFormActions`); card "Conta da cadeira" no detalhe.
- **Migration**: `pnpm migrate:create add_campaign_goals_global` (tabela do global). Sem mudança em collections.
## Dependências
- Dura: deploy da remodelagem (schema `plaza`/`votePledge` em produção). Suave: C12 (delta semanal real da cobertura usa trajetória de pledges; até lá, sem histórico).
- Reusa: `plazaElectoralBaseline.ts`, `plazaElectionGeography.ts`, `votePledgeData.ts`, `plazaPageData.ts` (`loadPlazaListPageBundle`), `campaignDashboardData.ts`, `plazaStaffFormActions.ts`, `campaignAccess.ts`.
## Não escopo
- Fila ordenada por déficit (E9 — [fila-de-alocacao.md](fila-de-alocacao.md)); histórico/trajetória (C12); recalibração de classes (E10); rollups TI além do sanity check (E12); previsão estatística (Fora de escopo do roadmap).
## Rabbit holes
- **Projeção virar modelo preditivo.** Se alguém "melhorar" com regressão/ML: viola decisão de escopo do ciclo. **Mitigação:** média ponderada fixa, documentada como não-previsão.
- **Decomposição automática sobrescrever `voteGoals`.** **Mitigação:** meta sugerida é coluna separada; manual sempre vence; nunca escrever em `voteGoals` por job.
- **Roll-off por zona de Salvador sem tally do majoritário na mesma malha.** Verificar cobertura de `electionTally` para presidente/governador por zona antes de expor; se faltar, roll-off só municipal (nota na UI).
## Adiado com gatilho
- **Delta semanal persistido.** Revisitar quando C12 entregar trajetória (gatilho: primeira semana com 2 snapshots).
- **Meta por cenário (Bom/Regular/Mínimo) × cobertura tripla.** Gatilho: coordenador pedir leitura por cenário na reunião (hoje: cobre contra `regular ?? suggestedGoal`).
## Referências
- `docs/roadmap.md` (seção Inteligência de campanha) · [plano-mestre](inteligencia-campanha.md) (gaps G5/G6)
- `docs/research/relatorio-entrevista-persona-campanha.md` §5.1 (OMTM), §6.6 (denominadores/roll-off), FU2 (numerador/denominador)
- `src/collections/Plaza.ts` (voteGoals/expectedVotes/access), `src/collections/ElectionTally.ts` (campos por cargo)
- `src/utilities/plazaElectoralBaseline.ts`, `src/utilities/plazaElectionGeography.ts`, `src/utilities/votePledgeData.ts`, `src/utilities/campaignDashboardData.ts`
- AGENTS.md — migrations, access staff-only, naming, transações

View file

@ -0,0 +1,98 @@
# B13 — Escala relativa no Mapa das Praças (quantis/LQ/rank + símbolo proporcional)
Status: rascunho
Atualizado em: 2026-07-21
Item do roadmap: [docs/roadmap.md](../roadmap.md) (seção "Inteligência de campanha", B13; plano-mestre [inteligencia-campanha.md](inteligencia-campanha.md))
Impeccable: B — estende `PlazaMapPanel`/`BahiaMap` existentes (seletor de escala, camada de símbolos); sem rota nova
Appetite: ~2 dias eng; sem migration
Responsável: —
## Design (Impeccable)
Âncoras: `PRODUCT.md` (princípio 5; anti-goal cartograma) / `DESIGN.md` (register `product`) · precedentes B10/B11/B12/B6 (`BahiaMap`, `bahiaMapStyle.ts`, `MapFeatureReadout`).
Na implementação: craft compacto → critique → polish.
- **Persona / contexto:** coordenador em reunião projetando o mapa; "o mapa serve ao padrão espacial" (relatório D3).
- **Job principal:** o mapa discrimina onde antes tudo era a mesma cor — leitura relativa ao próprio candidato, com o peso do eleitorado visível.
- **Estratégia de cor:** sequencial de 5 classes (quantis) na paleta existente do tema; diverging continua exclusivo do compare (R4); bolhas com stroke branco (padrão choropleth da skill Mapbox).
- **Edit where you see:** não (superfície de leitura).
- **Anti-goals:** cartograma/geometria distorcida (anti-goal 4); rampa contínua 0–100% como única leitura; legenda com >7 classes; segundo componente de mapa.
## Contexto
B11 entregou a escala "% dos válidos" com domínio fixo 0–100% — tecnicamente honesta e informacionalmente vazia para DF (topo estadual 4,71%; relatório D2). A cartografia manda: classes discretas (3–7), **quantis para leitura e comparação em série** (Brewer & Pickle), transformações relativas ao próprio candidato (quantis/LQ/rank), e peso visual por eleitorado ("land doesn't vote": interior gigante × Salvador com ~1/5 do eleitorado). A persona recomendou símbolo proporcional (bolha = votos em jogo, cor = classe) como o formato que "funciona em campo", descartando cartograma e tratando value-by-alpha como teste, não default (D3). `BahiaMap` já tem: layer estável + `setStyle` incremental (B6), `scaleMax` (B11), `fitToKeys`/`interactiveKeys` (B12), readout (B10).
## Objetivos
- Seletor de escala ganha modos relativos: **Quantis (5)** — default novo para métrica de candidato; **LQ** (diverging em torno de 1); **Rank na praça** (1º / 2º–3º / 4º+); mantém **Total (votos)** e **% dos válidos** (B11).
- Camada opcional de **símbolos proporcionais** (bolha por votos em jogo — válidos projetados E8; cor da bolha = classe E10) sobre o coropleto neutro; toggle no painel.
- Legenda por classes com rótulos de faixa reais (quantis do conjunto filtrado atual, coerente com B7/B12).
- Readout (`MapFeatureReadout`) mostra o valor bruto + a leitura relativa ("Q5 de 5 · LQ 2,8").
- Compare mode (R4) continua absoluto/diverging — modos relativos desabilitados no compare (mesma regra do B11 com %).
- Zonas SSA/CMS: agregação municipal atual permanece (B8 F2 é outro item); bolha usa o agregado municipal com `zoneBreakdown` no readout.
## Decisões travadas
- **Quantis do conjunto filtrado como default relativo** (discriminam por construção; recomendação clássica para séries). **Rejeitado:** Jenks como default (menos estável entre filtros/anos — quebra a comparabilidade; pode entrar depois como opção); domínio dinâmico min–max contínuo (melhora pouco e perde classes nomeáveis).
- **Símbolo proporcional em vez de cartograma/value-by-alpha como peso de eleitorado.** Operador navega pela geografia real; bolha codifica volume+status em 2 canais legíveis (relatório D3). **Rejeitado:** cartograma (anti-goal travado); value-by-alpha como default (canal sutil para decisão rápida — pode virar teste A/B futuro).
- **Nenhum componente de mapa novo** — tudo entra por `BahiaMap`/`bahiaMapStyle.ts` (B6 manteve o layer estável exatamente para isso). **Rejeitado:** fork do painel para "mapa estratégico" separado.
- **i18n e naming:** `scaleMode` estendido (`absolute | percentValid | quantile | lq | rank`), `symbolLayer`, `computeQuantileBreaks`; labels pt-BR ("Quantis", "Padrão próprio (LQ)", "Posição na praça", "Bolhas por votos em jogo").
## Questões em aberto
- **Bolha dimensiona por válidos projetados ou por votos em jogo da meta (E8)?** Opções: válidos projetados | meta | eleitorado. **Recomendação:** válidos projetados (estável, independe de meta editada; a meta já aparece na fila E9).
- **Quantis calculados sobre o conjunto filtrado ou o estado inteiro?** **Recomendação:** conjunto filtrado (coerente com B7/B12 — o mapa acompanha a lista); nota na legenda quando filtrado.
## Abordagem proposta
```mermaid
flowchart LR
Bundle["PlazaMapBundle<br/>(plazaMapData.ts)"]
Pot["plazaPotential (E8)"]
Class["computeDfTerritorialClass (E10)"]
Breaks["computeQuantileBreaks / lq / rank<br/>(bahiaMapStyle.ts)"]
Map["BahiaMap<br/>(fills + symbol layer)"]
Readout["MapFeatureReadout"]
Bundle --> Breaks
Pot --> Breaks
Class --> Map
Breaks --> Map
Map --> Readout
```
Componentes:
- **`src/lib/bahiaMapStyle.ts`**: breaks de quantis/LQ/rank puros (unit-testáveis); paleta de 5 classes do tema.
- **`src/components/campaign/BahiaMap.tsx`**: camada `L.circleMarker` por praça (raio ∝ √votos, padrão cartográfico), regida pelo mesmo `pathByKeyRef`/restyle incremental de B6; hover/tap integram o readout existente.
- **`src/components/campaign/PlazaMapPanel.tsx`**: seletor de escala estendido + toggle de bolhas; regras de compare inalteradas.
- **`src/utilities/plazaMapData.ts`**: expõe métricas relativas no bundle (LQ, rank, classe) — deriva de E8/E10 sem query nova.
- **Sem migration.**
## Dependências
- Duras: **E8** (válidos projetados/LQ), **E10** (classe para a cor da bolha). Suaves: E14 (bolha pode encodar nível no futuro), B8 F2 (polígonos de zona — independente).
- Reusa: B6/B10/B11/B12 inteiros; `plazasByIbgeCode`; `canonicalMapKeysKey`.
## Não escopo
- Rollup/mapa por TI (E12); polígonos das Praças-zona (B8 F2); export/print do mapa; value-by-alpha (adiado abaixo).
## Rabbit holes
- **Perf com 417 bolhas + hover.** B6 resolveu para fills; markers precisam do mesmo tratamento incremental — se o frame cair, bolhas só a partir de zoom N ou top-K por votos. Não otimizar antes de medir.
- **Legenda de quantis com faixas confusas quando o filtro retorna <10 praças.** Degradar para 3 classes ou valores diretos; não inventar interpolação.
- **Rank exigir todos os candidatos por praça em memória.** `plazaCandidateComparison.ts` já pagina/limita; rank v1 = posição do Solla entre os top-N carregados, documentado.
## Adiado com gatilho
- **Value-by-alpha (opacidade ∝ eleitorado).** Gatilho: teste com o time em reunião real pedir alternativa às bolhas.
- **Roll-off como métrica de mapa.** Gatilho: I-A entrar no motor (E11 fase 2) e o time pedir a leitura espacial.
## Referências
- `docs/roadmap.md` (Inteligência de campanha, B13) · [plano-mestre](inteligencia-campanha.md)
- `docs/research/relatorio-entrevista-persona-campanha.md` D2/D3 (escalas, símbolo proporcional, "não vá" do cartograma) · compêndio §8.2
- `docs/plans/escala-percentual-mapa-pracas.md` (B11), `docs/plans/escala-dry-pos-b3.md` (B6), `docs/plans/aproximar-mapa-pracas.md` (B12), `docs/plans/hover-mapa-pracas.md` (B10)
- `src/components/campaign/BahiaMap.tsx`, `src/components/campaign/PlazaMapPanel.tsx`, `src/lib/bahiaMapStyle.ts`, `src/utilities/plazaMapData.ts`
- AGENTS.md — mapa (B6/B11/B12 as-built), naming

View file

@ -0,0 +1,90 @@
# E9 — Fila de alocação (lista de decisão do coordenador)
Status: rascunho
Atualizado em: 2026-07-21
Item do roadmap: [docs/roadmap.md](../roadmap.md) (seção "Inteligência de campanha", E9; plano-mestre [inteligencia-campanha.md](inteligencia-campanha.md))
Impeccable: B — visão nova DENTRO de `/campanha/pracas` (ordenações + colunas + painel), sem rota nova
Appetite: ~1,5 dia eng; sem migration (deriva de E8 + dados existentes)
Responsável: —
## Design (Impeccable)
Âncoras: `PRODUCT.md` (princípios 2 "clarity under pressure", 3 "edit where you see", 5) / `DESIGN.md` (register `product`) · tema `data-theme='campaign'` · shells existentes (`PlazaList`, `PlazaListOverview`, `PlazaFilters`, `CampaignListPagination`).
Na implementação: craft compacto → critique → polish.
- **Persona / contexto:** "o mapa serve ao padrão espacial; a alocação de verdade se decide na lista" (relatório D3). Coordenador prepara a reunião de recurso; assessor abre a fila das suas Praças.
- **Job principal:** a primeira linha da lista é o lugar onde falta mais voto que a campanha planejou ter.
- **Estratégia de cor:** Restrained; "coluna da vergonha" (sem responsável) como badge âmbar discreta, não alarme.
- **Edit where you see:** sim — responsável/meta/nível editáveis em contexto (reusa `PlazaListAdvisorsControl` e padrão B9).
- **Anti-goals:** data-grid/planilha full-row; segunda lista paralela à de Praças; ranking gamificado de assessores (alimenta gaming — relatório G4).
## Contexto
O relatório definiu a "fila de trabalho" com 7 colunas ranqueadas (FU3): votos em jogo; meta/cobertura/delta; classe operacional; desempenho relativo (LQ/captura); rede + frescor; competição local; tendência — com **ordenação default por déficit descoberto** (meta − comprometido, decrescente; empate por votos em jogo) e uma ordenação de risco (praças de defesa por frescor, a mais dormente primeiro). A lista de Praças atual (`PlazaList` + `loadPlazaListPageBundle`) já tem filtros/URL/overview/edição rápida; faltam as colunas derivadas e as ordenações de decisão. A hierarquia de triagem completa (5 níveis) vive no plano-mestre e vira produto no E11 — aqui entra só a fila "estática" de colunas+ordenações.
## Objetivos
- Novas ordenações na URL (`?sort=deficit|risco-frescor|votos-em-jogo`) via `campaignListUrl.ts`, preservando filtros existentes.
- Colunas derivadas na linha da praça: déficit (meta − comprometido), cobertura %, votos em jogo (válidos projetados), LQ/captura, frescor (dias desde último pledge/sinal/atualização), badge "sem responsável".
- Visão do assessor: mesma fila filtrada às suas Praças (access já garante o escopo — `getAccessiblePlazaIds`).
- Overview da lista ganha "coluna da vergonha": contagem de praças priorizadas sem responsável (link filtrado).
- `leader` não vê a fila (colunas staff-only seguem o padrão de redaction dos view models `plazaViewModels.ts`).
## Decisões travadas
- **A fila é a própria lista de Praças com ordenações/colunas novas — não uma rota nova.** Evita segundo sistema de listas e mantém filtros/URL/paginação existentes (C6 shells). **Rejeitado:** rota `/campanha/fila` dedicada (duplicaria filtros e navegação; a fila de _sugestões_ do E11 é outra superfície e outro item); tabela full-row editável (anti-goal PRODUCT.md).
- **Déficit usa meta efetiva = `voteGoals.regular ?? suggestedGoal`** (mesma regra de E8), e praças N0/N1 (pós-E14) saem do topo por meta mínima — até E14, praças sem meta ficam no fim, não no topo. **Rejeitado:** ordenar por déficit bruto sem tratamento (praça perdida com meta lixo polui o topo — FU3).
- **i18n e naming:** `plazaQueueSort`, `deficit`, `freshnessDays`, `unassignedPriorityCount`; labels pt-BR ("Déficit", "Frescor", "Sem responsável").
## Questões em aberto
- **Frescor conta o quê?** Opções: só `declaredAt`/`estimatedAt` de pledges | máx(pledge, `plaza.lastUpdateAt`) | incluir planos. **Recomendação:** máx(pledge mais recente, `lastUpdateAt`) — sinais de rede já alimentam `lastUpdateAt` via `plazaUpdate`; planos entram quando C12 tipar sinais.
- **Colunas visíveis por default no mobile?** **Recomendação:** déficit + cobertura + frescor (3), resto em disclosure — campo usa celular (PRODUCT.md).
## Abordagem proposta
```mermaid
flowchart LR
Bundle["loadPlazaListPageBundle<br/>(plazaPageData.ts)"]
Pot["plazaPotential/goalCoverage (E8)"]
Fresh["freshness helper<br/>(pledges + lastUpdateAt)"]
Sort["plazaQueueSort<br/>(déficit | risco | votos)"]
List["PlazaList + PlazaListOverview<br/>(colunas novas)"]
Bundle --> Sort
Pot --> Sort
Fresh --> Sort
Sort --> List
```
Componentes:
- **`src/utilities/plazaQueue.ts`**: composição das linhas (déficit, cobertura, frescor, flags) sobre o bundle existente — uma passada, sem N+1; ordenações puras testáveis em unit.
- **`PlazaList.tsx` / `PlazaListOverview.tsx`**: colunas/badges novas; select de ordenação em `PlazaFilters.tsx` (mesmo padrão auto-aplicado do fill-in filtros-auto).
- **URL**: `campaignListUrl.ts` ganha `sort`; default continua o atual (nome) até o usuário escolher — a fila é opt-in via select "Ordenar por".
- **Sem migration, sem collection, sem server action nova** (edição em contexto reusa `plazaStaffFormActions`).
## Dependências
- Dura: **E8** (meta efetiva, votos em jogo, cobertura). Suaves: E10 (coluna classe passa a usar classificação relativa quando existir; até lá mostra a atual), E14 (nível modula o topo), C12 (frescor de sinais tipados).
- Reusa: `plazaPageData.ts`, `votePledgeData.ts`, `campaignListUrl.ts`, `PlazaFilters`, padrão B9 de edição em contexto.
## Não escopo
- Sugestões/menu de ações e triagem 1–5 (E11 — [motor-de-sugestoes.md](motor-de-sugestoes.md)); rollup por TI (E12); mudanças no mapa (B13); histerese de mudanças (E11/E14).
## Rabbit holes
- **Virar data-grid.** "Só mais uma coluna editável" até virar planilha. **Mitigação:** colunas derivadas são read-only; edição só nos 3 Popovers já existentes (B9) + meta (E8).
- **Ordenação server-side vs. client.** O bundle já carrega o conjunto filtrado inteiro para overview/mapa (A9+); ordenar em memória é O(n log n) sobre ~436 — não abrir paginação SQL nova por isso.
## Adiado com gatilho
- **Fila persistida com posição manual (drag).** Gatilho: coordenador pedir reordenação manual na reunião (hoje: ordenação é derivada, determinística).
## Referências
- `docs/roadmap.md` (Inteligência de campanha, E9) · [plano-mestre](inteligencia-campanha.md) (fila canônica)
- `docs/research/relatorio-entrevista-persona-campanha.md` FU3 (colunas e ordenações), §6.2 (triagem), D3 ("a alocação se decide na lista")
- `src/utilities/plazaPageData.ts`, `src/utilities/votePledgeData.ts`, `src/components/campaign/PlazaList.tsx`, `src/components/campaign/PlazaListOverview.tsx`, `src/components/campaign/PlazaFilters.tsx`, `src/utilities/campaignListUrl.ts`
- AGENTS.md — access por papel, view models com redaction, URLs com chaves em inglês

View file

@ -0,0 +1,142 @@
# Inteligência de campanha — do relatório de discovery ao produto (programa E8–E15 + B13 + C12)
Status: rascunho (plano-mestre; itens fatiados individualmente)
Atualizado em: 2026-07-21
Item do roadmap: [docs/roadmap.md](../roadmap.md) (seção "Inteligência de campanha"; trilhas E/B/C)
Impeccable: misto por item — E15 = A; E8/E9/C12/E10/B13/E14/E12 = B; E11/E13 = C (classe final no plano de cada fatia)
Appetite: programa ~2–3 semanas eng no total, fatiado em slices de ~1–3 dias; nenhuma fatia bloqueia deploy da remodelagem
Responsável: —
Fonte de produto: [`docs/research/relatorio-entrevista-persona-campanha.md`](../research/relatorio-entrevista-persona-campanha.md) (aprovado 2026-07-21) — kernel §2, playbook §6 (25 padrões P/T/I/J/K), OST §7 (O-A…O-K), anti-goals §8. Compêndio: [`docs/research/literatura-campanha-deputado-federal-ba.md`](../research/literatura-campanha-deputado-federal-ba.md).
## Contexto
O discovery (literatura → persona → entrevista sintética, 2026-07-21) fixou o diagnóstico: a disputa de DF na Bahia é uma conta de quociente fragmentada (cadeira ~80–150 mil votos; topo estadual 4,71% dos válidos), o gargalo é converter lealdade de campo em voto nominal praça a praça via rede de mediação, e a informação dessa rede hoje é oral e sem série. O Teqo já tem o **sistema de registro** (Praças, lideranças, pledges, planos, demandas, baseline TSE 2014–2022 com brancos/nulos/abstenção por cargo). O que falta é a **camada de inteligência**: metas derivadas dos dados, leitura relativa do território, fila de decisão priorizada, sugestões dado→decisão com humano no loop, e o registro ex-ante que torna tudo auditável (backtest). Anti-goal do programa inteiro: "planilha chique" — KPI absoluto, cadastro bruto, mapa 0–100%.
## Gaps de estrutura de dados (o que não estamos preparados para coletar/usar)
Auditoria relatório × schema atual (2026-07-21). O que **já existe e cobre**: `electionTally` tem `aptos/comparecimento/abstencoes/votosValidos/votosBranco/votosNulo` por cargo×ano×cidade×zona (roll-off e válidos projetados são deriváveis); `electionCandidate` tem `party`/`coalition`/`runningAgain2026` (P3/herança aberta); `plaza` tem `voteGoals` (bom/regular/mínimo), `expectedVotes`, `priority`, `politicalTrend`, `dobradinhaNotes`, `advisors`, `lastUpdateAt`; `votePledge` tem declarado×estimado com autores/datas; `plazaUpdate` é imutável; `bahiaTerritories.ts` já mapeia município→Território de Identidade; `actionPlan` registra eventos com Praça/status/presença do deputado.
| # | Gap | Hoje | Como fechar | Fatia |
| --- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----- |
| G1 | **Trajetória de pledge** ("o que sabíamos em 15/08") — valor atual sobrescreve o anterior | `votePledge` guarda só o corrente | `versions: true` (sem drafts) em `votePledge` + leitura da série; **nunca sobrescrever** vira garantia de plataforma | C12 |
| G2 | **Sinal qualitativo de rede tipado** (invasão, esfriamento, visita de adversário, proposta a broker; fonte; triangulação) | `plazaUpdate.kind` = semanal/urgente/nota, texto livre | Novo kind `sinal` + campos `signalType`, `signalSource`, `triangulated` (staff-only) | C12 |
| G3 | **Esforço/agenda por praça** (o lado privado que evapora: dias de candidato, origem da visita, recurso) | `actionPlan` tem evento+status; sem origem nem custo | `actionPlan.origin` (`dado \| pedido_broker \| obrigacao_politica` — J-B) + `resourceCost` staff-only opcional | C12 |
| G4 | **Decisão registrada ex-ante** (sugestão dada, aceita/descartada, leitura alternativa, foto da classificação no momento) | Nada | Nova collection `allocationDecision` (plaza, patternId, suggestion, decision `aceita\|descartada\|adiada`, alternativeReading, snapshot, decidedBy/At) — também registra mudanças de nível N0–N4 | C12 |
| G5 | **Meta estadual e decomposição derivada** (QE projetado, faixa da cadeira, potencial por praça) | `plaza.voteGoals` manual, sem conta de cima para baixo nem cobertura | Global `campaignGoals` (meta estadual, margem, ano-base) + utilities de potencial (válidos projetados, captura, headroom) e cobertura Σpledges÷meta | E8 |
| G6 | **Definição de "campo" por ano** (share intracampo, teto do campo) | `electionCandidate.party` existe; não há lista de partidos do campo por eleição | Lib estática curada `src/lib/campoParties.ts` (ano → siglas/números) — dado de configuração, não collection | E8 |
| G7 | **Nível de envolvimento N0–N4** com regras de movimento e sinais de reversão | `plaza.priority` = alta/normal | `plaza.engagementLevel` (n0…n4) + `levelNote`/`levelChangedAt`; mudança de nível registrada como `allocationDecision`; `priority` mapeado e aposentado | E14 |
| G8 | **Frescor como sinal de 1ª classe** | derivável (`declaredAt`, `lastUpdateAt`) mas não exposto/normatizado | Utilities de frescor + exposição na fila/lista ("coluna da vergonha": praça priorizada sem responsável/sem sinal) — sem migration | E9 |
| G9 | Perfil de abstenção por município (sexo/idade/escolaridade, TSE Eleitorado) | não importado | **Adiado com gatilho** (só se I-C virar prática): extensão do seed TSE | — |
| G10 | Malha Regiões Imediatas IBGE (teste de sensibilidade MAUP) | só TI (`bahiaTerritories.ts`) | **Adiado com gatilho** (decisão cara sustentada por análise regional divergente): variante do `build:geometries` | — |
Migrations do programa: uma consolidada por fatia que toca schema (C12: versions+kinds+origin+`allocationDecision`; E8: global `campaignGoals`; E14: `engagementLevel`). Todas antes do congelamento (~20/09).
## A fila de prioridade do coordenador (desenho canônico)
Uma única fila ordena "todos" heterogêneos (gatilhos do playbook, demandas, praças sem responsável, sinais não triangulados, pledges velhos) pela hierarquia do relatório (§6.2), estendida aos objetos do produto:
1. **Estoque em risco confirmado** — P1 ameaçado/P8 triangulado em praça de defesa relevante; demanda `escalada` de praça N3/N4.
2. **Falha de canal** — P4 (broker único ≥ limiar), liderança-hub esfriando, praça priorizada cujo responsável saiu.
3. **Cobertura zero onde a meta exige** — P6 priorizada, praça N2+ sem responsável/lideranças ("coluna da vergonha"), metas sem dono.
4. **Oportunidade com janela** — P3 herança aberta (`runningAgain2026 = false`), P5 expansão quente, convites pendentes de liderança nova, J-A (elegível madura com giro passando perto).
5. **Otimização/higiene** — T4 benchmark, T5 agenda dispersa, pledges sem atualização há N semanas, planos `realizado` sem resultado, K-C metas implausíveis.
Regras transversais (de §6.2/§6.4, viram comportamento do produto): **barato-antes-de-caro** (todo gatilho gera primeiro a checagem de 48h para o assessor; só gatilho persistente/triangulado sobe para a reunião de realocação); **desempate por votos em jogo**; **histerese** (realocação cara exige 2 semanas de persistência; nível 1 fura a fila); **gatilho de ausência dispara auditoria de registro, nunca ação de campo**. A fila tem duas visões: _do assessor_ (checagens e tarefas das suas Praças) e _do coordenador_ (decisões de recurso caro, pauta da reunião quinzenal).
## Fatias (funcionalidades faltantes)
| ID | Fatia (plano) | Entrega | OST | Classe | Appetite | Janela |
| --- | ------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------ | -------- | --------- |
| E8 | **[Conta da cadeira](conta-da-cadeira.md)** | Global `campaignGoals`; potencial por praça (válidos projetados, captura do campo, share intracampo via `campoParties.ts`, roll-off, headroom); decomposição meta estadual→praça com sanity por TI; cobertura Σ`estimatedVotes ?? declaredVotes`÷meta no dashboard/lista; denominadores sempre válidos projetados (I-B) | O-A | B | ~2d | 2 |
| E9 | **[Fila de alocação](fila-de-alocacao.md)** | Lista de decisão com as 7 colunas (§5.2 do relatório: votos em jogo, meta/cobertura/delta, classe, LQ/captura, rede+frescor, competição, tendência); ordenação default por déficit descoberto; ordenação de risco (defesa por frescor); "coluna da vergonha" | O-B, O-F | B | ~1,5d | 2 |
| C12 | **[Registro-fundação](registro-fundacao.md)** | Versions em `votePledge`; sinais tipados no `plazaUpdate`; `actionPlan.origin`+`resourceCost`; collection `allocationDecision`; garantia "nunca sobrescrever" | O-E, O-G(base) | B | ~2d | 2 |
| E10 | **[Classificação territorial relativa](classificacao-territorial-relativa.md)** | Recalibra defesa/ataque/indecisa/perdida com âncoras relativas (LQ vs. share estadual próprio; múltiplos do share da cadeira marginal), multi-eixo (dominância+importância+competição+teto do campo); substitui limiares 35/20/10 de `electionInsights.ts` para DF | O-D | B | ~1d | 3 |
| B13 | **[Escala relativa no mapa](escala-relativa-mapa.md)** | Modo de escala novo: quantis do próprio candidato (5 classes) default, LQ e rank na praça; símbolo proporcional por votos em jogo sobre o polígono; % dos válidos mantido como opção; roll-off como métrica adicional | O-C | B | ~2d | 3 |
| E14 | **[Níveis de envolvimento N0–N4](niveis-de-envolvimento.md)** | `engagementLevel` com critérios, promoção/rebaixamento com histerese e sinais de reversão (via `allocationDecision`); vocabulário duplo (nível nunca exposto fora do staff — access) | O-K | B | ~1d | 3 |
| E11 | **[Motor de sugestões v1](motor-de-sugestoes.md)** | Computa subconjunto dos padrões (P1, P2, P3, P5, P6, P7, K-A/K-B; demais por fase 2) por praça; sugestão com menu/estatuto/leitura-alternativa; aceitar/descartar grava `allocationDecision`; triagem 1–5 + histerese; "pauta do silêncio" mensal | O-H | C | ~3d | 3 |
| E12 | **[Camada TI](camada-territorios-identidade.md)** | Rollups por Território de Identidade com salvaguardas MAUP (razão de agregados, mediana+amplitude+praça crítica, Metropolitano decomposto); benchmark intra-TI (T4); gatilhos T1–T3/T5 no motor = fase 2 de E11 | O-I | B | ~1,5d | 3 |
| E13 | **[Planejador de presença/giros](planejador-de-giros.md)** | Elegibilidade (5 condições ✓/—), fase do calendário (construção/consolidação/ativação), compositor de giro (J-C âncora+satélites+semente), visita pedida×justificada (J-B, usa `actionPlan.origin`) | O-J | C | ~1,5d | 3 |
| E15 | **[Backtest pós-eleição](backtest-pos-eleicao.md)** | Pledge (trajetória) vs. voto realizado por zona; calibração de limiares E10/E14; relatório de aprendizado | O-G | A | ~1d | pós-04/10 |
## Decisões travadas
- **Sugestão nunca decide; staff decide.** O motor detecta e faz diagnóstico diferencial estrutural; escolher/executar é humano, e a decisão (com leitura descartada) é registrada (relatório §6.3; anti-goal 8). **Rejeitado:** automação de ações (erro sem dono, custo político invisível ao dado); estimar probabilidades/elasticidades sem dado (falsa precisão).
- **Denominadores: válidos projetados do cargo, nunca aptos** (I-B; abstenção estrutural >35% em praças pequenas infla potencial). **Rejeitado:** aptos (viés sistemático pró-praça vazia); válidos da majoritária (cargo errado).
- **Histórico por versions do Payload, não collection paralela de snapshots** (G1). Menos código, mesma garantia, admin de graça. **Rejeitado:** collection `pledgeSnapshot` (duplicaria access/hooks); sobrescrever com `updatedAt` (destrói o backtest).
- **Nível N0–N4 é campo staff-only com access negando `leader`** — vocabulário duplo é requisito de produto, não polimento (relatório §6.8/anti-goal 11). **Rejeitado:** derivar nível só de `priority` existente (semântica insuficiente); expor nível na visão da liderança.
- **"Campo" por ano é lib estática curada** (`campoParties.ts`), editável por PR. **Rejeitado:** collection administrável (federações mudam raramente; curadoria exige contexto político, não CRUD).
- **i18n e naming** seguem AGENTS.md: identificadores em inglês (`campaignGoals`, `engagementLevel`, `allocationDecision`, `signalType`, `origin`), strings pt-BR; valores de enum expostos em URL/dado em pt quando forem dado (não é o caso aqui — enums internos ficam em inglês: `n0…n4`, `aceita|descartada|adiada` são… valores de dado exibidos; manter pt para paridade com enums existentes tipo `alta|normal`).
## Questões em aberto
- **Quais padrões entram no motor v1?** Opções: todos os 25 | subconjunto de maior confiança. **Recomendação:** os 8 listados em E11 (dados 100% disponíveis pós-E8/C12, menor risco de falso positivo); T/I/J na fase 2 após 2 semanas de uso real.
- **Meta estadual inicial?** Opções: QE cheio | faixa da cadeira 2022 (~80–150 mil) com margem. **Recomendação:** faixa da cadeira + margem definida pelo coordenador no global `campaignGoals` _(validar com produto na sessão Wed)_.
- **Limiar de broker único (P4)?** **Recomendação:** iniciar em 50% dos pledges da praça / top-3 ≥ 40% do total, marcado calibrável; revisar no primeiro mês.
## Abordagem proposta (visão de programa)
```mermaid
flowchart TD
C12["C12 Registro-fundação<br/>(versions, sinais, origin, decisões)"]
E8["E8 Conta da cadeira<br/>(metas derivadas, captura, roll-off)"]
E9["E9 Fila de alocação"]
E10["E10 Classificação relativa"]
B13["B13 Escala relativa no mapa"]
E14["E14 Níveis N0–N4"]
E11["E11 Motor de sugestões v1"]
E12["E12 Camada TI"]
E13["E13 Planejador de giros"]
E15["E15 Backtest pós-eleição"]
E8 --> E9 --> E11
C12 --> E11
C12 --> E14
C12 --> E15
E8 --> E10 --> B13
E10 -.classes.-> E9
E10 -.classes.-> E11
E8 --> E12
E8 -.metas.-> E14
E14 -.níveis.-> E11
C12 --> E13
E8 --> E13
E11 -.decisões acumuladas.-> E15
```
Reuso obrigatório (depth check): `plazaElectoralBaseline.ts`/`plazaElectionGeography.ts` (células cidade×zona), `votePledgeData.ts` (`estimatedVotes ?? declaredVotes`), `aggregatePledgesByPlaza`/`loadPlazaListPageBundle` (A9+), `BahiaMap`+`bahiaMapStyle.ts` (B6/B11/B12), `bahiaTerritories.ts` (TI), `electionInsights.ts` (substituição E10), `CampaignPageShell`/`CampaignMetricStrip`, `campaignAccess.ts`, `withPayloadTransaction`.
## Dependências
- Duras: deploy da remodelagem (schema `plaza`/`votePledge` em produção); E8→E9/E10/E12/E13; C12→E11/E15. Suaves: A6 dobradinha (melhora J-B/E13); dados reais da Onda 0 (o motor roda com dados fictícios no smoke, mas só vale com rede real).
- Nenhuma dependência de site público/admin.
## Não escopo
- Previsão estatística de votos e elasticidades (fora de escopo do ciclo — roadmap "Fora de escopo"; E15 só compara ex-ante×resultado).
- Perfil de abstenção TSE e malha IBGE Imediatas (G9/G10 — adiados com gatilho acima).
- Polígonos de Praças-zona (B8) e qualquer mudança de geografia.
- Automação de mensagens/disparo (Res. TSE 23.610 art. 33; anti-goal).
- Import de planilhas de projeção (decisão E4 mantida).
## Rabbit holes
- **Motor v1 tentando cobrir os 25 padrões.** Se alguém "só adicionar mais um": cada padrão exige dado confiável + descartes + calibração; metade dos 25 depende de sinais que só existirão com C12 rodando semanas. **Mitigação:** subconjunto fixo em E11; fase 2 com gatilho (2 semanas de uso + primeiros `allocationDecision`).
- **Score de elegibilidade virar otimizador de rota.** Roteirização (TSP, mapas de estrada) é produto inteiro. **Mitigação:** E13 ordena e agrupa por contiguidade de TI; rota fina é humana.
- **Fila única virar segundo sistema de tarefas.** Já existem demandas/planos/tasks. **Mitigação:** a fila REFERENCIA objetos existentes (demanda, plano, praça), não cria tarefa própria fora de `allocationDecision`.
- **Rollup TI sem salvaguardas** (média que mente). **Mitigação:** salvaguardas MAUP são requisito de aceite de E12, não polimento.
## Adiado com gatilho
- **G9 perfil de abstenção TSE.** Revisitar quando I-C (ativação de núcleo) entrar no motor e o time pedir segmentação.
- **G10 malha Regiões Imediatas.** Revisitar quando uma decisão cara for sustentada por análise regional que diverge entre malhas (teste de sensibilidade §6.5).
- **Padrões T/I/J no motor (fase 2).** Gatilho: 2 semanas de E11 em uso + primeiras decisões registradas.
- **Push de sugestões (D2).** Gatilho: sino in-app entregue e fila com uso semanal real.
## Referências
- `docs/research/relatorio-entrevista-persona-campanha.md` — §2 kernel, §5 análises, §6 playbook completo, §7 OST, §8 anti-goals
- `docs/research/literatura-campanha-deputado-federal-ba.md` — fontes e implicações (§9)
- `src/collections/Plaza.ts`, `src/collections/VotePledge.ts`, `src/collections/PlazaUpdate.ts`, `src/collections/ActionPlan.ts`, `src/collections/ElectionTally.ts`, `src/collections/ElectionCandidate.ts` — schema auditado nos gaps
- `src/utilities/plazaElectoralBaseline.ts`, `src/utilities/votePledgeData.ts`, `src/utilities/plazaMapData.ts`, `src/lib/electionInsights.ts`, `src/lib/bahiaTerritories.ts` — pontos de encaixe
- `docs/plans/remodelagem-pracas.md` — precedente de plano-mestre; `docs/plans/escala-percentual-mapa-pracas.md` — precedente do mapa
- AGENTS.md — migrations (`pnpm migrate:create`), access (`overrideAccess: false`), transações, naming

View file

@ -0,0 +1,102 @@
# E11 — Motor de sugestões v1 (dado → decisão com humano no loop)
Status: rascunho
Atualizado em: 2026-07-21
Item do roadmap: [docs/roadmap.md](../roadmap.md) (seção "Inteligência de campanha", E11; plano-mestre [inteligencia-campanha.md](inteligencia-campanha.md))
Impeccable: C — superfície nova de sugestões (painel/fila em `/campanha`), sem design-ref
Appetite: ~3 dias eng; sem migration própria (lê E8/E10/E14 e grava via `allocationDecision` de C12)
Responsável: —
## Design (Impeccable)
Âncoras: `PRODUCT.md` (princípios 2, 5 e 7) / `DESIGN.md` (register `product`) · `CampaignPageShell`/`CampaignMetricStrip` · precedente de stack de insights (Alert + badge) do detalhe da Praça.
Na implementação: shape → craft → critique → polish (classe C).
Brief compacto:
- **Persona / contexto:** coordenador abrindo o Teqo segunda de manhã ("o que mudou? onde ajo?"); assessor com 20 Praças recebendo as checagens baratas da semana.
- **Job principal:** o grosso da análise chega pronto — praças com gatilho, diagnóstico diferencial e menu de ações; o humano escolhe, e o descarte também é registro.
- **Estratégia de cor:** Restrained; urgência via posição na triagem (níveis 1–5), não via alarme colorido — só o nível 1 usa o vermelho de campanha.
- **Edit where you see:** sim — aceitar/adiar/descartar direto no card da sugestão; descarte exige leitura alternativa (1 campo).
- **Anti-goals:** sugestão executada automaticamente; feed infinito estilo rede social; score numérico com falsa precisão ("87% de chance"); expor limiares exatos na UI (gaming — G4).
## Contexto
Relatório §6: catálogo de 25 padrões dado→decisão (P/T/I/J/K) com triagem (§6.2), divisão análise×julgamento (§6.3 — máquina detecta e diagnostica o estrutural; humano escolhe/executa) e modos de falha com mitigação (§6.4 — falso positivo de registro, viés da base, gaming, oráculo, churn). Pós-E8/E10/E14/C12, todos os insumos dos 8 padrões de maior confiança existem: P1 (reduto dormente/ameaçado), P2 (ataque campo forte), P3 (correligionário na frente — `runningAgain2026` dá a herança aberta), P5 (expansão acima do padrão), P6 (praça grande sem rede), P7 (pledges estagnados), K-A (não responde a investimento), K-B (perdida vestida de oportunidade). A "pauta do silêncio" (praças sem gatilho nenhum, revisadas como pergunta mensal) integra a v1 por ser barata e antídoto do viés da base.
## Objetivos
- **Avaliador de gatilhos** puro e determinístico: praça + derivados (E8/E10/E14) + sinais/frescor (C12) → lista de `TriggeredPattern` (patternId, fatores, nível de triagem 1–5, leitura provável, descartes, menu de ações com estatuto/fonte, contraindicação) — conteúdo textual vem de um catálogo versionado em código espelhando o relatório §6.
- **Superfície:** painel "Sugestões" no dashboard (top-N por triagem) + seção na Praça (gatilhos dela); visão do assessor filtrada às suas Praças com as checagens baratas ("checar rede em 48h") destacadas.
- **Ações:** aceitar (vira nota/encaminhamento e grava `allocationDecision` com snapshot), adiar (some por X dias), descartar (exige `alternativeReading`); tudo transacional.
- **Regras anti-falha (§6.4):** gatilho de ausência gera "auditar registro", nunca ação de campo; histerese — sugestão de realocação cara só aparece com persistência de 2 avaliações semanais (persistência via snapshot em `allocationDecision` de avaliações, sem tabela nova: recomputa e compara com a última decisão/adiamento registrado); limiares nunca renderizados com número exato.
- **Pauta do silêncio:** lista mensal das praças N2+ sem nenhum gatilho e sem sinal — "silêncio é pergunta, não conforto".
- Access: staff; visão do assessor escopada (`getAccessiblePlazaIds`); `leader` não vê nada disso.
## Decisões travadas
- **Motor é avaliador em leitura, não job persistido.** Roda no load (dados de 436 praças já vêm no bundle A9+); persistência só de DECISÕES (C12). **Rejeitado:** cron + tabela de sugestões (estado duplicado que dessincroniza; nada aqui exige assincronia); LLM gerando sugestões em runtime (indeterminístico, não auditável — o catálogo é curado em código a partir do relatório).
- **8 padrões na v1, catálogo fechado.** **Rejeitado:** 25 padrões de uma vez (metade depende de semanas de sinais C12; falso positivo mata a confiança na primeira semana — E1 do relatório).
- **Descartar exige leitura alternativa.** É o antídoto metodológico do oráculo (§6.4) e o dado que o backtest precisa. **Rejeitado:** descarte de 1 clique sem motivo.
- **i18n e naming:** `evaluatePlazaTriggers`, `TriggeredPattern`, `triageLevel`, `suggestionCatalog`; patternIds estáveis (`P1`…`K-B`); textos pt-BR citando estatuto ("hipótese de literatura — relatório §6.1").
## Questões em aberto
- **Onde mora a superfície principal?** Opções: painel no dashboard | rota `/campanha/sugestoes` | aba na lista de Praças. **Recomendação:** painel no dashboard (top-5) + seção completa no detalhe da Praça; rota dedicada só se o volume real pedir (adiado com gatilho). _(shape na implementação decide o layout final)_
- **Adiamento por quanto tempo?** **Recomendação:** 7 dias default, 14 para nível 4–5; registrado como `decision: adiada`.
## Abordagem proposta
```mermaid
flowchart LR
Bundle["loadPlazaListPageBundle + derivados E8/E10/E14"]
Signals["sinais + frescor (C12)"]
Cat["suggestionCatalog<br/>(8 padrões, texto curado)"]
Eval["evaluatePlazaTriggers<br/>(puro, determinístico)"]
Triage["triagem 1–5 + histerese<br/>(vs. última allocationDecision)"]
UI["Dashboard painel + Praça seção<br/>(aceitar/adiar/descartar)"]
Dec["allocationDecision (C12)"]
Bundle --> Eval
Signals --> Eval
Cat --> Eval
Eval --> Triage --> UI --> Dec
Dec -.histerese/adiamentos.-> Triage
```
Componentes:
- **`src/lib/suggestionCatalog.ts`**: os 8 padrões com gatilho (função pura sobre derivados), textos (leitura/descartes/menu/contraindicação com estatuto) e nível de triagem — espelho versionado do relatório §6.1.
- **`src/utilities/plazaTriggers.ts`**: avaliação por praça + agregação/ordenação por triagem; consulta últimas `allocationDecision` para histerese/adiamento (1 query por load, `where` em plaza in […]).
- **UI:** `SuggestionCard`/`SuggestionPanel` em `src/components/campaign/` (compõe Alert/Badge existentes do stack de insights); painel no dashboard (`campaignDashboardData.ts` estende o load); seção no detalhe da Praça.
- **Action:** `recordAllocationDecision` (C12) reusada; wrapper `resolveSuggestion` valida `alternativeReading` no descarte.
- **Sem migration.**
## Dependências
- Duras: **E8**, **E10**, **C12**; **E9** (a fila de colunas é onde o coordenador confere o contexto da sugestão). Suaves: **E14** (nível no snapshot e em K-B→N0/N1), dados reais da Onda 0 (motor é inútil com praças vazias — smoke com dados fictícios apenas).
- Reusa: bundle A9+, `campaignDashboardData.ts`, `campaignAccess.ts`, `withPayloadTransaction`.
## Não escopo
- Padrões T (TI — E12), I/J (alienação/agenda — fase 2), G2-hierarquia completa entre praças de níveis diferentes além da triagem 1–5; notificação push (D2); qualquer automação de ação.
## Rabbit holes
- **Catálogo virar motor de regras genérico** (DSL, editor de regras). 8 funções puras nomeadas bastam; DSL é plataforma white-label, não este ciclo.
- **Histerese exigir tabela de avaliações.** Comparar com a última `allocationDecision`/adiamento cobre a v1; se falhar na prática, aí sim revisitar persistência.
- **Explicabilidade virar relatório longo.** Card mostra 2 fatores + estatuto + link "por quê" (relatório §6.1); não gerar texto por praça.
## Adiado com gatilho
- **Fase 2 do catálogo (T1–T5, I-A/I-B/I-C, J-A/J-B/J-C, P4/P8–P12, K-C).** Gatilho: 2 semanas de uso real + primeiras 20 `allocationDecision`.
- **Rota dedicada `/campanha/sugestoes`.** Gatilho: >15 sugestões ativas recorrentes tornando o painel do dashboard insuficiente.
- **Digest semanal (e-mail/push).** Gatilho: D2 entregue.
## Referências
- `docs/roadmap.md` (Inteligência de campanha, E11) · [plano-mestre](inteligencia-campanha.md) (fila canônica, G4-mitigações)
- `docs/research/relatorio-entrevista-persona-campanha.md` §6.1 (padrões), §6.2 (triagem), §6.3 (divisão análise×julgamento), §6.4 (modos de falha)
- `src/utilities/plazaPageData.ts`, `src/utilities/campaignDashboardData.ts`, `src/utilities/campaignAccess.ts`, `src/collections/ElectionCandidate.ts` (`runningAgain2026`)
- `PRODUCT.md` princípio 5 / `DESIGN.md` — âncoras da superfície
- AGENTS.md — access, transações, naming

View file

@ -0,0 +1,91 @@
# E14 — Níveis de envolvimento N0–N4 por Praça
Status: rascunho
Atualizado em: 2026-07-21
Item do roadmap: [docs/roadmap.md](../roadmap.md) (seção "Inteligência de campanha", E14; plano-mestre [inteligencia-campanha.md](inteligencia-campanha.md))
Impeccable: B — campo novo no detalhe/lista da Praça (Popover B9) + badge staff; sem rota nova
Appetite: ~1 dia eng; migration pequena (campos em `plaza`)
Responsável: —
## Design (Impeccable)
Âncoras: `PRODUCT.md` (princípios 3 e 5) / `DESIGN.md` (register `product`) · controles B9 (`PlazaList*Control`).
Na implementação: craft compacto → critique → polish.
- **Persona / contexto:** coordenador na reunião quinzenal de realocação; assessor entendendo o que a praça dele "recebe".
- **Job principal:** substituir priorizar/despriorizar binário por 5 níveis com critérios e movimento auditável.
- **Estratégia de cor:** Restrained — nível como badge neutro numerado, sem escala de "importância" colorida (evita leitura de ranking público).
- **Edit where you see:** sim — mudar nível via Popover na lista/detalhe, exigindo motivo (grava `allocationDecision`).
- **Anti-goals:** nível visível para `leader` ou em qualquer superfície não-staff (anti-goal 11 — "a lista de prioridades é o mapa de onde você não vai defender"); mudança de nível sem motivo registrado.
## Contexto
Relatório §6.8: a escala N0 Monitorar → N1 Presença de mandato → N2 Rede sem agenda → N3 Rede+agenda → N4 Investimento pleno, com regras de movimento (promoção: gatilho positivo 2 semanas + capacidade; rebaixamento: não-resposta 3–4 semanas / perda estrutural / rebalanceamento; histerese: sem 2 mudanças no mês, sem pulo de 2 níveis salvo choque triangulado, janela de proteção de 3 semanas pós-promoção) e o rito (registro ex-ante com motivo E sinais de reversão; vocabulário duplo). Hoje `plaza.priority` só tem `alta|normal`. O nível modula a fila (E9), o motor (E11) e as metas (praça N0/N1 carrega meta mínima — K-B/FU3).
## Objetivos
- `plaza.engagementLevel` (`n0…n4`, default `n2`), `levelNote` (motivo corrente), `levelChangedAt` (derivado) — todos staff-only (access nega `leader` na leitura, mesmo mecanismo de `supportStatus`).
- Mudança de nível SEMPRE grava `allocationDecision` (patternId `nivel`, snapshot com nível anterior/novo, motivo, sinais de reversão) — histórico auditável sem versionar `plaza`.
- Validações de movimento no server action (pulo de 2 níveis exige flag "choque triangulado" com nota; aviso de janela de proteção) — avisos bloqueiam por default com override explícito do coordenador (registrado).
- `priority` legada: mapeada (`alta`→N3 sugerido) e aposentada da UI; campo permanece no schema até limpeza futura (sem migração destrutiva agora).
- Consumidores: badge staff no detalhe/lista; E9 usa nível na ordenação (N0/N1 fora do topo do déficit); metas E8 leem nível para "meta mínima".
## Decisões travadas
- **Nível é staff-only fail-closed** (field access como `supportStatus`; nunca em view models de liderança). Vocabulário duplo é requisito de produto. **Rejeitado:** badge público "prioridade" (vaza o mapa de defesa).
- **Histórico via `allocationDecision`, não versions em `plaza`** (um mecanismo só para decisões — C12). **Rejeitado:** versions em plaza (custo alto, ruído); array `levelHistory` no doc (cresce sem access próprio).
- **Rebaixar meta ≠ rebaixar praça** (K-C): nível e meta são eixos independentes; a UI não acopla os dois automaticamente. **Rejeitado:** auto-derivar nível da cobertura (vira gaming imediato — G4).
- **i18n e naming:** `engagementLevel` (`n0|n1|n2|n3|n4`), `levelNote`, `levelChangedAt`; labels pt-BR ("N1 · Presença de mandato" etc.).
## Questões em aberto
- **Default N2 para todas ou derivar sugestão inicial dos dados (E8/E10)?** Opções: N2 fixo | sugestão computada com aceite em lote. **Recomendação:** N2 fixo + tela de revisão em lote ordenada por sugestão — decisão continua humana, custo de setup ~1h de reunião. _(validar com produto)_
- **Quem pode mudar nível?** Opções: só `coordinator` | `advisor` nas suas praças com aprovação. **Recomendação:** só `coordinator` (é decisão de realocação — rito §6.8); assessor propõe via nota/sinal.
## Abordagem proposta
```mermaid
flowchart LR
UI["Popover nível (lista/detalhe)"]
Action["setPlazaEngagementLevel<br/>(valida movimento)"]
Plaza["plaza.engagementLevel"]
Dec["allocationDecision<br/>(motivo + reversão + snapshot)"]
Consumers["E9 fila · E8 metas · E11 motor"]
UI --> Action --> Plaza
Action --> Dec
Plaza --> Consumers
```
Componentes:
- **`src/collections/Plaza.ts`**: 3 campos novos com access staff (padrão `politicalTrend`); `priority` sai da UI.
- **`src/utilities/plazaStaffFormActions.ts`** (ou action irmã): `setPlazaEngagementLevel` transacional (plaza + allocationDecision com `req`), validações de histerese puras em `src/lib/engagementLevel.ts` (unit-testável).
- **UI:** `PlazaListLevelControl` no padrão dos `PlazaList*Control` (B9); badge no header do detalhe.
- **Migration:** `pnpm migrate:create add_plaza_engagement_level`.
## Dependências
- Duras: **C12** (`allocationDecision` existir). Suaves: E8 (metas por nível), E9 (ordenação), E11 (nível no snapshot dos gatilhos).
- Reusa: `plazaStaffFormActions.ts`, `campaignAccess.ts`, padrão de field access de `supportStatus` (`Leadership.ts`).
## Não escopo
- Sugerir promoções/rebaixamentos automaticamente (E11, padrões K-A/P5); relatório de movimentos (E15); redeployment de brokers (processo humano — relatório K3).
## Rabbit holes
- **Workflow de aprovação multi-etapa.** Vira mini-Jira; o rito é reunião quinzenal + registro, não máquina de estados. **Mitigação:** action única com validações; nada de status "pendente de aprovação".
- **Migrar `priority` destrutivamente agora.** Coluna fica; remoção em migração futura de limpeza pós-estabilização.
## Adiado com gatilho
- **Notificação de mudança de nível ao assessor da praça.** Gatilho: D2 (sino) entregue.
## Referências
- `docs/roadmap.md` (Inteligência de campanha, E14) · [plano-mestre](inteligencia-campanha.md) (G7)
- `docs/research/relatorio-entrevista-persona-campanha.md` §6.8 (escala, movimento, rito, custo político), K1–K4
- `src/collections/Plaza.ts` (priority/politicalTrend/access), `src/collections/Leadership.ts` (padrão supportStatus)
- `src/utilities/plazaStaffFormActions.ts`, `src/components/campaign/PlazaListTrendControl.tsx` (padrão de controle B9)
- AGENTS.md — field access fail-closed, transações, migrations

View file

@ -0,0 +1,97 @@
# E13 — Planejador de presença e giros (agenda do candidato)
Status: rascunho
Atualizado em: 2026-07-21
Item do roadmap: [docs/roadmap.md](../roadmap.md) (seção "Inteligência de campanha", E13; plano-mestre [inteligencia-campanha.md](inteligencia-campanha.md))
Impeccable: C — superfície nova de planejamento dentro de `/campanha/planos` (visão "Giros"), sem design-ref
Appetite: ~1,5 dia eng; sem migration própria (usa `actionPlan.origin` de C12)
Responsável: —
## Design (Impeccable)
Âncoras: `PRODUCT.md` (princípios 2 e 5) / `DESIGN.md` (register `product`) · `/campanha/planos` existente (C3: tabs, cards, filtros).
Na implementação: shape → craft → critique → polish (classe C).
Brief compacto:
- **Persona / contexto:** coordenador montando a semana do candidato sob pressão de pedidos ("quem grita mais leva" — T5); precisa dizer não com critério.
- **Job principal:** compor giros de 2–3 dias por território com praças elegíveis — e tornar visível o que NÃO justifica visita.
- **Estratégia de cor:** Restrained; elegibilidade como checklist de 5 condições (✓/—), nunca score numérico com falsa precisão.
- **Edit where you see:** sim — criar `actionPlan` (kind visita/giro) direto da praça candidata.
- **Anti-goals:** otimizador de rota (TSP/mapas de estrada); score 0–100 de praça; agenda auto-aprovada; expor "não vá" com esse rótulo fora do staff (é despriorização — vocabulário duplo).
## Contexto
Relatório §6.7: visita tem efeito modesto e o canal é mobilização do núcleo — "a visita vale o que a rede local converte dela; agenda é multiplicador de estrutura". Elegibilidade = 5 condições (volume, headroom, rede de recepção, janela política, encaixe em giro); o calendário muda o produto (construção jul–ago / consolidação set / ativação última semana); há "não vá" explícitos e intermediários ("mande o coordenador/vídeo/dobradinha"); padrões J-A (elegível madura sem visita), J-B (pedida vs. justificada — `actionPlan.origin` de C12), J-C (composição do giro: âncora+satélites+semente, por contiguidade de TI). O `/campanha/planos` (C3) já tem eventos com Praça/advisors/status; falta a camada de decisão de agenda.
## Objetivos
- **Elegibilidade por praça:** checklist das 5 condições derivadas (volume E8; headroom E8; rede = lideranças ativas + responsável; janela = campo livre de datas + nota manual; encaixe = contiguidade TI com giro existente) — exposta na praça e numa lista "candidatas a visita" ordenada.
- **Fase do calendário:** rótulo automático (construção/consolidação/ativação por data) mudando o texto do "produto da visita" sugerido.
- **Visão "Giros" em `/campanha/planos`:** agrupar planos de kind visita por giro (TI + intervalo de datas); compositor simples — escolher TI, ver âncora sugerida (maior estoque comprometido), satélites contíguos e 1 semente de expansão (P12), gerar os `actionPlan` em rascunho.
- **J-B na prática:** criar plano a partir de pedido registra `origin=pedido_broker` + contra-oferta sugerida (coordenador/vídeo/parada em giro); painel "pedidos sem dado" para a reunião.
- **"Não vá" visível ao staff:** praça K-B/N0–N1/sem rede aparece com a contraindicação citada quando alguém tenta agendá-la (aviso com override registrado — não bloqueio duro).
## Decisões travadas
- **Planejador compõe `actionPlan`s existentes; não cria entidade "giro" persistida na v1** — giro = agrupamento por TI+datas dos planos gerados. **Rejeitado:** collection `tour` nova (migration + access + UI por um agrupamento derivável; revisitar com gatilho).
- **Checklist ✓/— em vez de score numérico.** Falsa precisão é o erro documentado (Hersh — §6.4); a disciplina das 5 condições é o valor. **Rejeitado:** score composto 0–100.
- **Aviso com override registrado, não bloqueio.** "A geografia serve à política" (T5-contraindicação); override grava `allocationDecision` (patternId `J-B`/`nao-va`) com motivo. **Rejeitado:** hard-block de praças N0/N1.
- **i18n e naming:** `visitEligibility`, `tourComposer`, `calendarPhase` (`construcao|consolidacao|ativacao`), `origin` (C12); labels pt-BR.
## Questões em aberto
- **Kind novo `visita`/`giro` no enum de `actionPlan.kind`?** Opções: kinds novos | usar kinds existentes + flag. **Recomendação:** adicionar `visita` ao enum (kinds atuais são caminhada/comício etc.; visita de construção é reunião de lideranças, não comício) — entra na migration de C12 se este plano for aprovado antes dela rodar; senão migration própria mínima.
- **Janela política manual: campo onde?** **Recomendação:** nota curta no próprio rascunho do plano (campo `description` existente) — não criar campo estruturado para algo conversacional.
## Abordagem proposta
```mermaid
flowchart LR
Elig["visitEligibility<br/>(5 condições sobre E8/rede)"]
Phase["calendarPhase (data)"]
Cands["lista candidatas a visita<br/>(J-A ordenadas)"]
Comp["tourComposer<br/>(âncora + satélites TI + semente)"]
Plans["actionPlan em rascunho<br/>(origin, kind=visita)"]
Dec["allocationDecision<br/>(override não-vá / J-B)"]
Elig --> Cands --> Comp --> Plans
Phase --> Cands
Comp -.aviso não-vá.-> Dec
```
Componentes:
- **`src/utilities/visitEligibility.ts`**: as 5 condições + fase, puro sobre derivados E8/bundle (lideranças ativas via `PlazaLeadershipsPanel` data, contiguidade via `bahiaTerritories.ts`).
- **`src/components/campaign/TourComposer*.tsx`**: visão "Giros" na página de planos (tab nova ao lado de Próximos/Todos); gera rascunhos via action existente de criação de plano (estendida com `origin`).
- **Praça detalhe:** card compacto "Elegibilidade para visita" (checklist) com CTA "agendar em giro".
- **Sem migration própria** (assumindo kind `visita` na migration C12; senão `pnpm migrate:create add_action_plan_visit_kind`).
## Dependências
- Duras: **E8** (volume/headroom), **C12** (`origin`; `allocationDecision` para overrides). Suaves: **E12** (contiguidade/agrupamento TI — usa `bahiaTerritories.ts` direto se E12 não estiver pronto), **A6** dobradinha (janela política ganha dado real pós-15/08), E14 (níveis alimentam o "não vá").
- Reusa: `/campanha/planos` inteiro (C3), `actionPlan` actions, `bahiaTerritories.ts`.
## Não escopo
- Roteirização fina/otimização de deslocamento (humano decide a ordem); sincronização com calendário externo (Google/ics — fora deste ciclo); agenda do majoritário; padrões J como sugestões automáticas (E11 fase 2).
## Rabbit holes
- **Virar otimizador de rota.** Contiguidade de TI + ordenação é o teto; qualquer "distância por estrada" explode o item.
- **Compositor virar wizard de 6 passos.** Escolher TI → revisar 4–6 praças sugeridas → gerar rascunhos. Três interações.
- **Janela política estruturada** (datas de festas/feiras por município). Catálogo inexistente; campo livre + conhecimento do assessor. Não construir base de eventos municipais.
## Adiado com gatilho
- **Entidade `tour` persistida** (com resultado do giro). Gatilho: 3º giro real composto e time pedindo visão consolidada pós-giro.
- **Padrões J no motor (sugestão automática "praça madura sem visita").** Gatilho: E11 fase 2.
## Referências
- `docs/roadmap.md` (Inteligência de campanha, E13) · [plano-mestre](inteligencia-campanha.md)
- `docs/research/relatorio-entrevista-persona-campanha.md` §6.7 (elegibilidade, fases, não-vá, J-A/J-B/J-C), Rodada 6 J1–J4
- `src/collections/ActionPlan.ts` (kinds/status/access), `src/app/(campaign)/campanha/(app)/planos/` (superfície C3)
- `src/utilities/plazaPageData.ts`, `src/lib/bahiaTerritories.ts`
- `PRODUCT.md`/`DESIGN.md` — âncoras da superfície nova
- AGENTS.md — transações, access, naming

View file

@ -0,0 +1,98 @@
# C12 — Registro-fundação (trajetória, sinais tipados, origem de visita, decisões ex-ante)
Status: rascunho
Atualizado em: 2026-07-21
Item do roadmap: [docs/roadmap.md](../roadmap.md) (seção "Inteligência de campanha", C12; plano-mestre [inteligencia-campanha.md](inteligencia-campanha.md))
Impeccable: B — sem rota nova; campos novos em forms existentes (`plazaUpdate`, `actionPlan`) + collection admin-hidden
Appetite: ~2 dias eng; 1 migration consolidada
Responsável: —
## Design (Impeccable)
Âncoras: `PRODUCT.md` (princípio 1 — registros próprios como fonte de verdade; princípio 7 — feel the action) / `DESIGN.md` (register `product`).
Na implementação: craft compacto → critique → polish (as superfícies são forms existentes; a collection `allocationDecision` não tem UI própria neste item — é escrita por actions e lida pelo E11/E15).
- **Persona / contexto:** assessor registrando "vereador esfriou" em 15 segundos no celular; coordenador registrando por que descartou uma sugestão.
- **Job principal:** transformar sinal oral em série datada sem virar formulário de 10 campos (anti-goal E1 do relatório: extração sem devolução).
- **Estratégia de cor:** Restrained.
- **Edit where you see:** sim — o log de 1 linha nasce do mesmo form de atualização já usado no detalhe da Praça.
- **Anti-goals:** formulário longo obrigatório; sobrescrita silenciosa de valores; segundo feed paralelo ao `plazaUpdate`.
## Contexto
FU4 do relatório: backtest compara o que se sabia antes com o que aconteceu depois — "se o valor novo apaga o velho, o 'antes' deixa de existir". Hoje: `votePledge` guarda só o valor corrente (declarado/estimado sobrescrevem); `plazaUpdate` é imutável mas sem semântica de sinal (kinds `semanal|urgente|nota`); `actionPlan` não registra origem da visita (pedida × justificada — J-B) nem custo; e não existe registro de decisão (sugestão dada, aceita/descartada, leitura alternativa). Este item fecha os gaps G1–G4 do plano-mestre e é pré-requisito do motor (E11) e do backtest (E15). "O TSE estará lá em novembro; o lado da campanha não é reconstruível retroativamente."
## Objetivos
- **G1 — trajetória de pledge:** `versions: true` (sem drafts) em `votePledge`; leitura da série por praça/liderança para o delta semanal (E8) e o backtest (E15).
- **G2 — sinais tipados:** `plazaUpdate.kind` ganha `sinal`; campos condicionais `signalType` (`invasao | esfriamento | visita_adversario | proposta_broker | outro`), `signalSource` (texto curto), `triangulated` (checkbox staff-only). Continua imutável e mantendo `plaza.lastUpdateAt`.
- **G3 — origem/custo de plano:** `actionPlan.origin` (`dado | pedido_broker | obrigacao_politica`, default `dado`, staff-only) + `resourceCost` (number, staff-only, opcional).
- **G4 — decisões ex-ante:** collection `allocationDecision` (admin group `Campanha`, `admin.hidden` como `supporterImportBatch`): `plaza`, `patternId` (texto — P1…K-C ou `manual`), `suggestion` (texto), `decision` (`aceita | descartada | adiada`), `alternativeReading` (obrigatório ao descartar), `snapshot` (json — classificação/números no momento), `decidedBy` (derivado), `note`. Imutável após criação.
- Access: tudo staff; `leader` não lê sinais staff-only (`triangulated`), não lê `allocationDecision`, não lê `origin`/`resourceCost` — mesmo padrão `canReadCampaignStaffField`.
- Garantia transversal: nenhuma action nova sobrescreve histórico; escritas multi-collection com `withPayloadTransaction` + `req`.
## Decisões travadas
- **Histórico via Payload `versions`, não collection de snapshots.** Menos código, admin de graça, migration gerada. **Rejeitado:** `pledgeSnapshot` própria (duplica access/hooks); campo `history` json (não consultável, cresce sem índice).
- **Decisão registrada é collection própria e imutável** — é o dado que o backtest paga caro para ter; mudanças de nível N0–N4 (E14) também gravam aqui, um mecanismo só. **Rejeitado:** log em `plazaUpdate` (semântica de feed de campo, autoria de liderança possível — decisão é de coordenação); campo no `plaza` (sobrescreve).
- **Sinal nasce no form existente de atualização** (custo de digitação mínimo; "o campo dita, a sede registra" continua possível por quem tiver acesso). **Rejeitado:** collection nova de sinais (segundo feed; FU1 pede agregação, não outra caixa).
- **i18n e naming:** `signalType`, `signalSource`, `triangulated`, `origin`, `resourceCost`, `allocationDecision`, `patternId`, `alternativeReading`; enums como valores de dado em pt (`invasao`, `pedido_broker`, `aceita`) por paridade com enums existentes (`semanal`, `alta`); labels pt-BR.
## Questões em aberto
- **`versions` também em `plaza` (para foto da classificação)?** Opções: sim | não — snapshot vai no `allocationDecision.snapshot`. **Recomendação:** não; o snapshot por decisão cobre o "ex-ante" com custo menor que versionar 436 praças a cada edição.
- **Retenção de versions de `votePledge`?** **Recomendação:** `maxPerDoc: 0` (ilimitado) até a eleição; avaliar poda pós-E15.
## Abordagem proposta
```mermaid
flowchart LR
Pledge["votePledge + versions"]
Update["plazaUpdate kind=sinal<br/>(signalType/source/triangulated)"]
Plan["actionPlan origin/resourceCost"]
Dec["allocationDecision<br/>(imutável, staff)"]
Series["leitores de série<br/>(E8 delta · E11 gatilhos · E15 backtest)"]
Pledge --> Series
Update --> Series
Plan --> Series
Dec --> Series
```
Componentes:
- **`src/collections/VotePledge.ts`**: `versions: true`; sem mudança de campos.
- **`src/collections/PlazaUpdate.ts`**: opção `sinal` no kind + 3 campos condicionais (`admin.condition` como os campos de `semanal`); access staff no `triangulated`.
- **`src/collections/ActionPlan.ts`**: `origin` + `resourceCost` com `canReadCampaignStaffField`.
- **`src/collections/AllocationDecision.ts`** (nova): imutável (update/delete admin-only), `createdBy` derivado no hook (padrão `Supporter.createdBy`).
- **`src/utilities/pledgeHistory.ts`**: leitura da série de versions por praça (consumida por E8/E15).
- **Actions:** `recordAllocationDecision` em `src/app/(campaign)/campanha/actions/` (usada por E11; utilizável manualmente antes disso), com `withPayloadTransaction`.
- **Migration**: `pnpm migrate:create add_intel_foundation` — tabelas de versions do `votePledge`, campos novos, collection `allocationDecision`.
## Dependências
- Dura: deploy da remodelagem. Nenhuma de outro plano do programa (é a fundação; E8 usa se existir).
- Reusa: `withPayloadTransaction` (`payloadTransaction.ts`), `campaignAccess.ts`, padrão `createdBy` de `Supporter.ts`, `plazaUpdatePageData.ts` (feed).
## Não escopo
- Computar gatilhos sobre os sinais (E11); UI de leitura da trajetória (E8 delta/E15); nível N0–N4 em si (E14 — só o registro da mudança mora aqui); notificações de sinal (D2).
## Rabbit holes
- **"Já que estamos", versionar tudo.** Versions em `plaza`/`leadership` multiplica tabelas e ruído de admin. **Mitigação:** só `votePledge` neste item; demais têm gatilho abaixo.
- **Sinal virar formulário de inteligência.** 3 campos, um deles opcional; qualquer campo além disso é feature do E11, não do registro.
- **`snapshot` virar dump gigante.** Limitar ao objeto pequeno (classe, cobertura, nível, números-chave) — não serializar o bundle da praça.
## Adiado com gatilho
- **Versions em `plaza` (histórico de estratégia).** Gatilho: E15 precisar de foto além do `allocationDecision.snapshot` em caso real.
- **Import de sinais via WhatsApp/copy-paste estruturado.** Gatilho: volume real de sinais >20/semana com reclamação de digitação.
## Referências
- `docs/roadmap.md` (Inteligência de campanha, C12) · [plano-mestre](inteligencia-campanha.md) (gaps G1–G4)
- `docs/research/relatorio-entrevista-persona-campanha.md` FU4 (5 registros; nunca sobrescrever), FU1 (anedota estrutural), §6.4 (falso positivo de registro), J-B (origem da visita)
- `src/collections/VotePledge.ts`, `src/collections/PlazaUpdate.ts`, `src/collections/ActionPlan.ts`, `src/collections/Supporter.ts` (padrão createdBy/access), `src/collections/SupporterImportBatch.ts` (padrão admin-hidden)
- `src/utilities/payloadTransaction.ts`, `src/utilities/campaignAccess.ts`
- AGENTS.md — migrations, transações com `req`, access fail-closed

15
docs/research/README.md Normal file
View file

@ -0,0 +1,15 @@
# docs/research — embasamento de produto (campanha DF-BA)
Artefatos do ciclo de discovery "literatura → persona → entrevista → docs de produto" (2026-07-21). Servem de embasamento teórico para decisões de produto do `/campanha` — em especial métricas territoriais, o Mapa das Praças e o programa de inteligência.
| Artefato | O quê | Status |
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ---------------------------------- |
| [`literatura-campanha-deputado-federal-ba.md`](literatura-campanha-deputado-federal-ba.md) | Compêndio da literatura (5 eixos + cartografia/métricas + agregações + alienação eleitoral), ~67 fontes e implicações | aprovado 2026-07-21 |
| [`persona-cientista-politico-campanha-ba.md`](persona-cientista-politico-campanha-ba.md) | Persona especialista sintética (Prof. Helena Rocha) grounded no compêndio | aprovado 2026-07-21 |
| [`roteiro-entrevista-persona-campanha.md`](roteiro-entrevista-persona-campanha.md) | Roteiro Mom Test/JTBD/Lean Analytics para a entrevista sintética | aprovado 2026-07-21 |
| [`relatorio-entrevista-persona-campanha.md`](relatorio-entrevista-persona-campanha.md) | Relatório da entrevista (6 rodadas): kernel, rankings, playbook dado→decisão (25 padrões), OST, anti-goals + transcrição | **aprovado 2026-07-21 — canônico** |
| [`sources/README.md`](sources/README.md) | Fila pause-and-fetch de obras sem acesso aberto (depósito legal de PDFs/EPUBs, gitignored) | ativa |
**Consumo pelo produto:** o relatório alimentou o programa **Inteligência de campanha** (E8–E15, B13, C12) — plano-mestre em [`docs/plans/inteligencia-campanha.md`](../plans/inteligencia-campanha.md), itens no [roadmap](../roadmap.md).
**Limitação metodológica:** a entrevista é sintética (persona construída a partir da literatura). Achados são **hipóteses de literatura/persona**, não fato de campo. A validação empírica é a sessão com o coordenador real (ver `docs/CUSTOMER.md`).

View file

@ -0,0 +1,213 @@
# Compêndio — Campanha de deputado federal na Bahia: literatura e implicações para o Teqo
Status: rascunho (pré-colaboração)
Atualizado em: 2026-07-21
Plano de origem: discovery campanha literatura (skills `literature-review`, `academic-researcher`, `political-scientist-analyst`)
## Método (resumo da busca)
- **Eixos pesquisados:** (1) campanha política geral / ground game; (2) sistema eleitoral brasileiro; (3) Bahia; (4) esquerda/PT; (5) deputado federal; (+) cartografia e métricas territoriais.
- **Bases:** SciELO (Dados, Revista de Sociologia e Política, Opinião Pública, Novos Estudos CEBRAP), Cambridge Core/APSR, JSTOR/AJPS (abstracts), arXiv + Semantic Scholar via CLIs, e-Legis (Câmara), Redalyc, publicações oficiais TSE/Câmara, UCGIS GIS&T Body of Knowledge, Politipédia AVM, imprensa para prática de campo. Busca em 2026-07-21.
- **Appetite:** 8–15 fontes fortes por eixo com dedupe (eixos se sobrepõem); saturação declarada quando fontes novas repetiam achados.
- **Regras de qualidade:** preferência por peer-reviewed e livros canônicos; preprints e imprensa marcados; nenhum DOI inventado; claims de livros sem texto aberto marcados `acesso: abstract-only` e listados na fila de depósito (§11).
---
## 1. Como campanhas ganham votos — a evidência experimental
A literatura experimental (centenas de RCTs de campo, sobretudo EUA) converge em três achados robustos:
1. **Mobilização funciona; persuasão quase não.** Contato pessoal porta-a-porta aumenta comparecimento em ~4,3 p.p. por contato efetivo (média de 51 experimentos); mala direta ~0,5 p.p.; robocall ≈ 0 ([Gerber & Green 2000, APSR](https://ideas.repec.org/a/cup/apsrev/v94y2000i03p653-663_22.html); [Green & Gerber 2016, panorama](https://www.povertyactionlab.org/sites/default/files/research-paper/Gerber%20Green%20Handbook.pdf); [ISPS Yale, lições GOTV](https://isps.yale.edu/research/field-experiments-initiative/lessons-from-gotv-experiments)).
2. **O efeito persuasivo médio do contato de campanha em eleição geral é zero** — meta-análise de 49 experimentos ([Kalla & Broockman 2018, APSR, DOI 10.1017/S0003055417000363](https://doi.org/10.1017/s0003055417000363)). Exceções raras: contato muito cedo (efeito decai) e investimento pesado em identificar persuadíveis.
3. **Quanto mais pessoal o método, maior o efeito** — canvassing > telefone conversacional > mala direta > mídia impessoal; a edição recente de _Get Out the Vote_ destaca "relational organizing" (amigo-para-amigo) como fronteira ([Green & Gerber, Brookings](https://www.brookings.edu/books/get-out-the-vote-2/), `acesso: abstract-only`).
Sobre dados e segmentação: campanhas enxergam o eleitorado **através dos dados que possuem** — bases limitadas distorcem a percepção e superestimar a precisão do targeting é o erro clássico ([Hersh 2015, _Hacking the Electorate_](https://www.markpack.org.uk/134070/hacking-the-electorate-eitan-hersh/), `abstract-only`). A etnografia de campo mostra que ground game é uma montagem de assessores + voluntários + listas + infraestrutura de dados, e que a lacuna entre o desenho analítico e a operação real é onde campanhas quebram ([Nielsen 2012, _Ground Wars_](https://press.princeton.edu/books/hardcover/9780691153049/ground-wars), `abstract-only`; [Issenberg 2012, _The Victory Lab_](https://datafield.dev/political-analytics/part-06/chapter-28/further-reading.html), `abstract-only`).
**Tradução para o Brasil (voto obrigatório):** o análogo do GOTV não é "fazer comparecer", é **garantir a orientação do voto nominal** do simpatizante já alcançado (o eleitor vai votar de qualquer forma; a batalha é ele lembrar do número do candidato certo na urna). Isso reforça o modelo Teqo de pledges por liderança (`declaredVotes`/`estimatedVotes`): o ativo mensurável da campanha é a rede de contatos comprometidos, não a "persuasão de território hostil".
**Presença física do candidato (aparições/visitas).** A evidência quantitativa (presidenciais americanas, dados de alocação por estado): aparições de candidato têm efeito mensurável porém modesto sobre preferências estaduais, condicionado ao contexto ([Shaw 1999, APSR 93](https://www.cambridge.org/core/journals/american-political-science-review/article/abs/effect-of-tv-ads-and-candidate-appearances-on-statewide-presidential-votes-198896/693E6870E4BBE8860249CC64A8E2F949), `abstract-only`; [Herr 2002, JoP 64, DOI 10.1111/0022-3816.00152](https://doi.org/10.1111/0022-3816.00152), `abstract-only`); o canal principal é **mobilização do núcleo partidário**, não conversão — visitas elevam comparecimento/participação dos core supporters e a capacidade de mobilizar o núcleo é o que prediz o resultado ([Holbrook & McClurg 2005, AJPS 49](https://onlinelibrary.wiley.com/doi/10.1111/j.1540-5907.2005.00149.x), abstract aberto). Combinado com a lógica de alocação de Ames (§3) e com a mediação local (§7), o quadro é: **a visita vale o que a rede local converte dela** — agenda é multiplicador de estrutura, não substituto.
## 2. O jogo da lista aberta
- O eleitor vota no candidato (nominal) ou na legenda; cadeiras vão para os mais votados de cada partido/federação conforme quociente eleitoral (QE = válidos ÷ cadeiras) e quociente partidário; sobras pelas médias com pisos individuais (10% do QE; 20% + 80% para sobras) ([Nicolau 2006, Dados/SciELO](https://www.scielo.br/j/dados/a/Mm8QL3xjPYBMN4bhGQWypLS/?lang=pt); [Câmara dos Deputados, explicador](https://www.camara.leg.br/noticias/863514-deputados-sao-eleitos-pelo-voto-proporcional-entenda-a-logica-desse-sistema/); [TSE 2026](https://www.tse.jus.br/comunicacao/noticias/2026/Abril/por-dentro-das-eleicoes-brasil-utiliza-sistemas-eleitorais-majoritario-e-proporcional)).
- **A competição mais dura é intrapartidária** — candidatos da mesma lista disputam os mesmos votos; "as maiores traições são entre correligionários" (Nicolau 2006; [resenha Jus](https://jus.com.br/artigos/21562/peculiaridades-e-efeitos-do-sistema-eleitoral-de-lista-aberta-adotado-no-brasil)).
- O voto do puxador transborda para a lista; dobradinhas federal↔estadual e acordos com prefeitos são a mecânica prática de soma de capilaridades ([Câmara](https://www.camara.leg.br/noticias/863514-deputados-sao-eleitos-pelo-voto-proporcional-entenda-a-logica-desse-sistema/); [Estado de Minas 2014](https://www.em.com.br/app/noticia/politica/2014/05/18/interna_politica,529893/dobradinha-para-eleicoes-vira-sobrevivencia-politica-para-prefeitos-deputados.shtml)).
- Fim das coligações proporcionais (2017/2020) + federações mudaram o cálculo de sobrevivência; magnitude alta e fragmentação seguem ([SciELO Preprints, DOI 10.1590/scielopreprints.6159](https://doi.org/10.1590/scielopreprints.6159)).
**Consequência aritmética central para o produto:** na Bahia (39 cadeiras, ~7,5 milhões de votos válidos), o QE fica na casa de ~190–200 mil votos e **nenhum eleito domina o estado**: em 2022 o mais votado teve 200,9 mil votos e a maioria dos 39 eleitos ficou entre ~80 mil e ~150 mil ([Câmara, eleitos BA 2022](https://www.camara.leg.br/internet/agencia/infograficos-html5/tabelasEleicoes/ba.html)); em 2018 o recordista estadual teve **4,71% dos válidos** ([e-Legis 2021, DOI 10.51206/elegis.v15i37.745](https://doi.org/10.51206/elegis.v15i37.745)). Percentuais estaduais baixos e "achatados" **não são um defeito do mapa — são a estrutura da disputa**. A análise útil é relativa e local, não absoluta e estadual (ver §8).
**Brancos, nulos e abstenção (alienação eleitoral).** A tradição brasileira (desde Santos 1987) chama de _alienação eleitoral_ a soma abstenção + brancos + nulos — e a literatura converge que os componentes têm **determinantes distintos**: a abstenção tem base ecológica/estrutural (distância, exclusão social, eleitor que migrou e não transferiu o título), enquanto brancos e nulos têm base atitudinal/cognitiva (escolaridade, indiferença no caso do branco, protesto no caso do nulo) ([Lima Júnior via Silva & Gimenes 2014, Teoria & Pesquisa, DOI 10.4322/tp.2014.013](https://doi.org/10.4322/tp.2014.013); [Fernandes/Programa Cidadania 2022, estudo CESOP](https://www.programacidadania.org.br/wp-content/uploads/2022/07/AF_estudo_abstencoes_COMPLETO_E_APENDICE_final.pdf); [Costa 2007 via Rev. Debates](https://doi.org/10.22456/1982-5269.6989)). Mecânica legal: desde a Lei 9.504/1997 brancos e nulos são inválidos também nas proporcionais — **saem do denominador do QE** ([TSE](https://www.tse.jus.br/comunicacao/noticias/2021/Setembro/votos-brancos-e-nulos-nao-anulam-eleicao-e-sao-considerados-apenas-para-fins-estatisticos); [estudo Programa Cidadania](https://www.programacidadania.org.br/wp-content/uploads/2022/07/AF_estudo_abstencoes_COMPLETO_E_APENDICE_final.pdf)). Grandezas 2022: abstenção nacional 20,9% (recorde desde 1998; crescendo desde 2006), BA 21,3%, com municípios pequenos do interior passando de 35% (efeito "eleitor não-residente") e Salvador ~18% mas maior volume absoluto ([G1/TSE](https://g1.globo.com/politica/eleicoes/2022/eleicao-em-numeros/noticia/2022/10/02/eleicoes-2022-abstencao-atinge-maior-percentual-desde-1998.ghtml); [Exame, abstenção BA](https://exame.com/brasil/teixeira-de-freitas-itabuna-porto-seguro-veja-as-cidades-com-maior-abstencao-na-bahia/)); brancos+nulos ~4,4% na presidencial — mas tipicamente bem maiores nas proporcionais (roll-off: o eleitor vota no majoritário e "desiste" na urna do deputado; o TSE publica brancos/nulos por cargo×município×zona, então o diferencial é calculável por praça). O perfil de quem se abstém é medível: desde ~2010 o TSE publica abstenção por sexo/idade/escolaridade por município ([Nicolau 2023, Caderno CRH — "Afinal, quem foi votar em 2022"](https://www.scielo.br/j/ccrh/a/bwxwHXrJLDmcc9xzTZpZvRm/?lang=pt)).
## 3. Geografia do voto: concentração × dominância (o framework canônico)
O framework dominante desde Ames é classificar a votação de cada deputado em dois eixos independentes:
- **Dominância** = fatia do candidato nos votos válidos daquele município (quanto ele "manda" ali).
- **Concentração** = quão agrupada está a votação do próprio candidato (poucos municípios respondem por quase tudo vs. espalhada).
Cruzando os eixos: concentrado-dominante (reduto clássico), concentrado-compartilhado (urbano/ideológico), disperso-dominante, disperso-compartilhado ([Ames 1995, AJPS, DOI 10.2307/2111619](https://doi.org/10.2307/2111619), `abstract-only`; [resumo Adam Brown](https://adambrown.info/p/notes/ames_electoral_strategy_under_open_list_proportional_representation); [Borges, Paula & Silva 2016, RSP, DOI 10.1590/1678-987316245802](https://doi.org/10.1590/1678-987316245802)).
Achados-chave da linha brasileira:
1. **Eleitos são MENOS concentrados que derrotados** — a dispersão estratégica vence; a concentração é só uma das estratégias e não a mais eficaz ([Avelino, Biderman & Barone 2016, Dados, DOI 10.1590/001152582016108](https://doi.org/10.1590/001152582016108); ["Localismo nas Eleições", Dados](https://www.scielo.br/j/dados/a/BPzbgBtTHzkx6kptrSnJJfN/?format=pdf&lang=pt)).
2. **Trajetória típica de carreira:** começar concentrado (base local), expandir para a região, depois dispersar ([Avelino/Biderman/Silva via Anuario Latinoamericano 2025, DOI 10.17951/al.2025.17.65-83](https://doi.org/10.17951/al.2025.17.65-83)).
3. **Padrão de votação prediz comportamento parlamentar:** dominantes são paroquiais (emendas para o reduto); compartilhados são universalistas (tomada de posição) — a "conexão eleitoral" brasileira ([Carvalho 2003, _E no início eram as bases_](https://www.travessa.com.br/e-no-inicio-eram-as-bases-geografia-politica-do-voto-e-comportamento-legislativo-no-brasil/artigo/07df556f-4e2c-4b98-9a80-71fbcfa1a87c), `abstract-only`; [estudo de caso, Cadernos Metrópole](https://www.scielo.br/j/cm/a/b3hF8b5Mkfdvhm9dNcdvPqf/?format=pdf&lang=pt)).
4. **Partidos ideológicos/de esquerda** historicamente elegem pelo padrão concentrado-compartilhado (grandes cidades, sem dominância), mas o PT pós-2006 passou a abranger o interior ([e-Legis 2021](https://doi.org/10.51206/elegis.v15i37.745); Anuario 2025).
5. **Alocação de esforço à la Ames:** o deputado escolhe onde investir em função de dominância atual, custo de barreira de entrada, vulnerabilidade do município à invasão por concorrentes e fraqueza própria na última eleição ([Ames 1995](https://doi.org/10.2307/2111619)) — é literalmente um modelo de priorização territorial defesa/ataque, o mesmo espírito da classificação defesa/ataque/indecisa/perdida já usada no Teqo (`docs/plans/insight-classificacao-territorial.md`).
6. **Acesso a executivo importa:** participar da coalizão do governador/presidente aumenta dominância municipal (recursos, brokers) ([Borges, Paula & Silva 2016](https://doi.org/10.1590/1678-987316245802)).
7. **Competição municipal é fragmentada e cresceu:** número efetivo de candidatos (NEC, Rae invertido) por município na casa de 5,5–7,5 e subindo; em 2018 predominou votação fragmentada nos municípios ([RSP 2023, DOI 10.1590/1678-98732331e013](https://doi.org/10.1590/1678-98732331e013)). O NEC sozinho camufla desequilíbrios — o índice de desequilíbrio T (Taagepera) capta a distância 1º↔2º, essencial para ler disputa local ([Silva & Moreira, Opinião Pública, DOI 10.1590/s0104-62762013000200007](https://doi.org/10.1590/s0104-62762013000200007)).
## 4. Dinheiro, mídia e recursos
- **Dinheiro é o recurso com maior efeito total sobre votos**, acima do tempo de rádio/TV e da memória eleitoral (path analysis, eleições municipais 2012) ([Speck & Cervi 2016, Dados, DOI 10.1590/00115258201671](https://doi.org/10.1590/00115258201671)).
- A associação dinheiro→voto se mantém em 2008–2016, inclusive sem doação empresarial ([RAP 2020, DOI 10.1590/0034-761220200117](https://doi.org/10.1590/0034-761220200117)).
- **O dinheiro vale mais para desafiantes que para incumbentes** ("efeito Jacobson" brasileiro; deputados 2010) ([BPSR 2014, PDF aberto](https://brazilianpoliticalsciencereview.org/wp-content/uploads/articles_xml/1981-3821-bpsr-08-01-0034/1981-3821-bpsr-08-01-0034.x66180.pdf)).
- Implicação: para campanha com recurso escasso (padrão da esquerda fora do puxador), **eficiência alocativa territorial é a alavanca** — errar praça custa proporcionalmente mais.
## 5. Bahia: clivagem, carlismo e realinhamento
- **Clivagem histórica:** carlismo (modernização conservadora, gestão tecnocrática, verticalismo, regionalismo "interesses da Bahia"; forte no interior e nas elites tradicionais) vs. oposição urbana (Salvador, universidade, movimento sindical e negro) ([Dantas Neto, _Tradição, autocracia e carisma_, Ed. UFMG](https://revistapesquisa.fapesp.br/o-h-da-baianidade/), `abstract-only`; [Caderno CRH/Redalyc sobre a tradição carlista](https://www.redalyc.org/journal/3476/347659246003/html/)).
- **2006 = virada:** Wagner vence no 1º turno amparado no "efeito Lula"; a votação petista se estrutura em **clusters espaciais** (autocorrelação espacial significativa; variáveis socioeconômicas municipais explicam pouco; Bolsa Família tem efeito direto no voto presidencial, não no estadual) ([Carvalho & Santos 2015, RSP, DOI 10.5380/rsocp.v23i54.41475](https://doi.org/10.5380/rsocp.v23i54.41475)).
- **Pós-2006:** PT retém o governo estadual em todas as eleições; base forte no sertão/semiárido (Irecê, Piemonte da Diamantina, Jacuípe), oeste do agronegócio é a região mais à direita; Salvador disputada ([Wikipedia 2026 Bahia general election](https://en.wikipedia.org/wiki/2026_Bahia_general_election), fonte enciclopédica para contexto, não peer-reviewed).
- **Estrutura da bancada BA 2022:** 39 eleitos; PT elegeu bancada grande mas com votações individuais entre ~90 mil e ~129 mil (Solla 128.968, 3º mandato; base histórica em saúde/SUS: Vitória da Conquista 1999–2002, SESAB 2007–2014) ([Câmara, eleitos BA](https://www.camara.leg.br/internet/agencia/infograficos-html5/tabelasEleicoes/ba.html); [Câmara, biografia](https://www.camara.leg.br/deputados/178857/biografia); [Wikipedia Jorge Solla](https://pt.wikipedia.org/wiki/Jorge_Solla)).
- Perfil concentrado-dominante de capital existe (Isidório 2018, 323 mil, Salvador/RMS), mas o padrão nordestino típico dos governistas é **fragmentado-dominante no interior** ([e-Legis 2021](https://doi.org/10.51206/elegis.v15i37.745); [Borges, Paula & Silva 2016](https://doi.org/10.1590/1678-987316245802)).
## 6. Esquerda/PT: organização como ativo
- O PT nasceu de baixo (sindicatos, CEBs, movimentos), com **núcleos de base** como instância militante — capilaridade orgânica é o ativo histórico do campo ([Meneguello 1989, _PT: a formação de um partido_](https://www.ihu.unisinos.br/categorias/595791-pt-40-anos-um-partido-dos-trabalhadores-para-que), `abstract-only`; [Keck 1992](https://www.ihu.unisinos.br/categorias/595791-pt-40-anos-um-partido-dos-trabalhadores-para-que), `abstract-only`; [Secco, _História do PT_](https://www.ihu.unisinos.br/categorias/595791-pt-40-anos-um-partido-dos-trabalhadores-para-que), `abstract-only`; [Fundação Perseu Abramo, dossiê fundação](https://fpabramo.org.br/wp-content/uploads/2017/04/3-03-P1_Dossie-Doctos.pdf)).
- A profissionalização eleitoral esvaziou os núcleos — a "organização de base" real de hoje são as **estruturas de mandato + lideranças territoriais + movimentos aliados** ([PT.org, entrevista Iole Ilíada](https://pt.org.br/iole-iliada-grande-forca-do-pt-foi-ter-surgido-da-base-social/), fonte partidária).
- **Lulismo:** realinhamento de 2006 — o subproletariado (coração no Nordeste) adere em bloco via política distributiva sem confronto com a ordem; a lealdade é a Lula/programa, **não automaticamente transferível** ao candidato proporcional ([Singer 2009, Novos Estudos](https://www.scielo.br/j/nec/a/gLqzRSkjs3C8gFgwCQDNWjK/?format=html&lang=pt); [Singer 2012, _Os sentidos do lulismo_](https://www.companhiadasletras.com.br/trechos/13393.pdf), trecho aberto, livro `abstract-only`).
- Implicação: na Bahia, o voto Lula/governador é teto potencial, não piso, para um DF do PT — a ponte entre o voto majoritário do campo e o voto nominal é exatamente a **rede de lideranças e organizações** que o Teqo modela (`leadership`, `organization`, pledges).
## 7. O mandato como campanha contínua (mediação e bases)
- O trabalho cotidiano do deputado é **mediação**: captar recursos/emendas para municípios, atender demandas, manter laços de dependência pessoal com as bases — a concepção "nativa" de representação ([Bezerra 1999, _Em nome das "bases"_](http://nuap.etc.br/em-nome-das-bases/); [Kuschnir 2000, _O cotidiano da política_ / working paper Oxford](https://www.lac.ox.ac.uk/sites/default/files/lac/documents/media/karina20kuschnir2064.pdf)).
- **Prefeitos e vereadores são os brokers** típicos do deputado no território — capital político local trocado por acesso a níveis superiores ([Políticos locales y conexiones multinivel](https://revistas.unab.edu.co/index.php/reflexion/article/download/4998/3998/22083)).
- A prática brasileira codificada (Manhanelli, 10 etapas: pesquisa diagnóstica → segmentação → posicionamento → identidade → mídia → **plano de mobilização territorial** → digital → jurídico → execução com monitoramento → pós-pleito) trata o mandato como continuidade da campanha ("marketing pós-eleitoral") ([Politipédia, verbete Manhanelli](https://politipedia.wiki.br/verbete/carlos-augusto-manhanelli.html); [Manhanelli 1988, _Estratégias Eleitorais_](https://www.gruposummus.com.br/livro/estrategias-eleitorais/), `abstract-only`).
- A territorialização prática (Politipédia AVM; base do insight defesa/ataque já entregue) recomenda classificar territórios em zonas operacionais com metas distintas: defesa=manter, ataque=virar, indecisa=consolidar, perdida=minimizar (ver `docs/plans/insight-classificacao-territorial.md`).
## 8. Métricas territoriais e mapas — o que a literatura manda olhar
### 8.1 As métricas que a ciência política eleitoral usa (e o mapa deveria expor)
| Métrica | Definição | Fonte | O que responde |
| ----------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------- | -------------------------------------------------- |
| **Dominância local** | votos do candidato ÷ válidos do lugar | Ames 1995; Borges et al. 2016 | "quanto eu mando aqui?" |
| **Concentração da própria votação** | % do total do candidato vindo do lugar (e índice de Rae invertido / nº efetivo de municípios) | Carvalho 2003; e-Legis 2021 | "de onde vem meu voto? dependo de poucos lugares?" |
| **Índice G** | concentração vs. distribuição hipotética proporcional ao eleitorado | Avelino, Biderman & Silva 2011/2016 | "estou mais/menos concentrado que o esperado?" |
| **NEC (nº efetivo de candidatos)** | 1/Σci² nos válidos do lugar | RSP 2023 | "quão fragmentada é a disputa aqui?" |
| **Índice de desequilíbrio T** | pondera distâncias 1º↔2º↔… | Silva & Moreira 2013 | "a liderança local é contestada?" |
| **Quociente local (LQ)** | share local ÷ share estadual do candidato | economia regional aplicada (base do índice G) | "onde performo acima/abaixo do meu padrão?" |
| **Distância ao QE / metas** | soma de pledges e votos vs. QE e piso de 10% | Nicolau 2006; TSE | "o plano fecha a conta da cadeira?" |
Ponto crítico: **dominância e concentração são eixos independentes** — um mapa que só mostra % dos válidos (dominância) esconde metade do framework (a importância daquele lugar para o candidato). Os dois juntos geram a leitura estratégica (reduto, expansão, praça irrelevante).
### 8.2 Cartografia: por que o mapa atual "achata" e o que fazer
- **Normalizar é obrigatório, mas normalizar não basta.** A regra cartográfica proíbe contagens brutas em coropleto (viés de área) ([UCGIS GIS&T BoK](https://gistbok-ltb.ucgis.org/current/concept/CV-03-005); [Making Effective Maps](https://colorado.pressbooks.pub/makingmaps/chapter/chapter-10-data-classification/)). Mas com domínio fixo 0–100% e dados de DF que raramente passam de 10–30% locais (§2), quase todos os polígonos caem no primeiro degrau da rampa — compressão estrutural.
- **Classificação > rampa contínua para decisão.** Classes discretas (3–7) comunicam melhor que gradientes contínuos; **quantis** são a melhor escolha geral para leitura e comparação entre mapas em série; **Jenks/natural breaks** para dados agrupados; **head/tail breaks** para distribuições muito assimétricas (caso típico de votação) ([Brewer & Pickle 2002, Annals AAG 92(4):662–681](https://ibis.doh.nm.gov/resource/MapChoroClasses.html), `abstract-only` com síntese aberta; [UCGIS BoK](https://gistbok-ltb.ucgis.org/current/concept/CV-03-005)).
- **"Land doesn't vote":** o interior baiano é visualmente gigante e Salvador (≈1/5 do eleitorado, 19 Praças de zona) é um polígono minúsculo — o coropleto puro inverte o peso real. Mitigações consagradas: **value-by-alpha** (opacidade ∝ eleitorado/válidos) ([Roth, Woodruff & Johnson 2010, Cartographic Journal, PMC aberto](https://pmc.ncbi.nlm.nih.gov/articles/PMC3173776/); [Axis Maps guide](https://www.axismaps.com/guide/value-by-alpha)), cartogramas e mapas de símbolos proporcionais ([Learn ArcGIS, election results](https://learn.arcgis.com/en/projects/explore-a-map-of-election-results/); [Field, _Thematic Mapping_](https://googlemapsmania.blogspot.com/2024/09/land-doesnt-vote-people-do.html), `abstract-only`).
- **Escalas divergentes para comparação/margem** (já implementado no compare do Teqo) e paletas ColorBrewer com 5–7 classes no máximo ([Mapbox data viz patterns skill](https://colorbrewer2.org/)).
- **Percentil/rank como escala alternativa:** quando o valor absoluto é estruturalmente baixo e homogêneo, a posição relativa (quantil do próprio conjunto, LQ vs. média do candidato, rank entre candidatos na praça) é o que discrimina — princípio direto da recomendação de quantis de Brewer & Pickle e da lógica G/LQ de Avelino et al.
- Métodos discretos de geografia eleitoral (grafos/particionamentos) existem para além do coropleto, mas são rabbit hole para o escopo atual ([Duchin & Tenner 2018, arXiv:1808.05860](https://arxiv.org/abs/1808.05860)).
### 8.3 Agregações geográficas na Bahia (em que escala ler o território)
Camadas de agregação disponíveis acima da praça (município / zona em Salvador–Camaçari):
- **Territórios de Identidade (TI)** — 27 unidades oficiais de planejamento do estado, criadas em 2007 (SEI/SEPLAN, origem no PRONAT/MDA) e institucionalizadas pela Lei estadual 13.214/2014; agrupamentos "identitários" de municípios contíguos por critérios sociais/culturais/econômicos, com governança participativa (CODETERs) e orçamento estadual (PPA) organizado por TI; limites podem mudar a cada PPA ([SEPLAN](https://www.ba.gov.br/seplan/iniciativas/acesse-informacoes-sobre-territorios-de-identidade-planejamento-e-gestao-territorial-0); [Lei 13.214/2014](https://www.legisweb.com.br/legislacao/?id=279550); [Wikipedia, lista dos 27](https://pt.wikipedia.org/wiki/Territ%C3%B3rios_de_identidade_da_Bahia)). A crítica acadêmica aponta critérios de recorte pouco claros e heterogeneidade interna ([Serpa (org.), EDUFBA/SciELO Books, cap. 1](https://books.scielo.org/id/6p3mz/pdf/serpa-9788523220129-02.pdf); [avaliação USP/IPEA](https://repositorio.usp.br/directbitstream/3511c285-5020-4202-a198-e6b3680f56bf/3231302-O_planejamento_territorial_no_estado....pdf)).
- **TI em análise eleitoral real:** a leitura por TI é usada na análise política corrente da Bahia — em 2022 Lula venceu nos 27 TIs (média 72,9%, piso 55,6% no Extremo Sul), Jerônimo em 22/27; o TI Metropolitano de Salvador concentra 24,4% do eleitorado; a chapa petista organiza programa de governo "nos territórios" (PGP) ([Cláudio André, A Tarde 2026](https://atarde.com.br/colunistas/conjunturapolitica/disputa-eleitoral-nos-territorios-baianos-1389159); [Bahia Econômica 2026](https://bahiaeconomica.com.br/wp/2026/05/18/mapa-dos-territorios-baianos-aponta-forca-de-jeronimo-e-desvantagem-de-acm-neto-no-interior/) — imprensa/análise aplicada, não peer-reviewed).
- **Regiões Geográficas Imediatas e Intermediárias (IBGE 2017)** — substituíram micro e mesorregiões; as Imediatas são construídas em torno da **rede urbana real** (centros que suprem saúde/serviços/comércio — para onde as pessoas de fato se deslocam), as Intermediárias no nível entre estado e Imediatas ([IBGE, Divisões Regionais do Brasil](https://www.ibge.gov.br/geociencias/organizacao-do-territorio/divisao-regional/15778-divisoes-regionais-do-brasil.html)).
- **MAUP (modifiable areal unit problem)** — resultados de análise espacial mudam com a escala (scale effect) e com o desenho das fronteiras (zoning effect) das unidades agregadas; a melhor prática é justificar teoricamente a escala pelo mecanismo causal/decisão em jogo, testar sensibilidade em múltiplas escalas e não tratar nenhuma agregação como "a verdadeira" ([Political Analysis 2025, DOI 10.1017/pan.2025.2](https://doi.org/10.1017/pan.2025.2); [síntese GIS Geography](https://gisgeography.com/maup-modifiable-areal-unit-problem/)).
- Nota já estabelecida na linha brasileira: os estudos de geografia do voto operam com agregações regionais de municípios (micro/mesorregião) exatamente porque a concentração eleitoral relevante é mais regional que municipal (Avelino/Biderman/Silva 2011/2016 — §3), e os clusters do voto petista baiano são regionais (Carvalho & Santos 2015 — §5).
### 8.4 Síntese normativa para o Mapa das Praças
1. O mapa de decisão da campanha não é "onde meu % é alto", e sim **"onde ação muda resultado"** — combinação de dominância (defesa/ataque), volume de votos em jogo (válidos/eleitorado), tendência (série 2014→2018→2022) e presença organizacional (lideranças/pledges).
2. Escala **relativa ao próprio candidato** (quantis, LQ, desvio da média estadual) resolve a homogeneidade visual sem mentir sobre a fragmentação real.
3. Pesar visualmente pelo eleitorado (value-by-alpha ou símbolo proporcional) corrige a inversão interior×capital.
4. Classes nomeadas com semântica operacional (defesa/ataque/indecisa/perdida + limiares relativos à estrutura da disputa, ex. múltiplos do share médio do eleito marginal ≈ QE/válidos) comunicam melhor que rampa numérica — limiares absolutos 35/20/10% do insight A5 são calibrados para majoritária, não para DF fragmentado (~1–5% típico).
## 9. Implicações consolidadas para o produto Teqo
1. **A tese do produto está alinhada à literatura:** rede de lideranças + pledges + praças = o ativo que a evidência diz ser mensurável e acionável (mobilização/orientação de voto, brokers, mandato contínuo). O que falta é a **camada de leitura relativa** do território.
2. **Métricas de decisão** (candidatas a OMTM de campanha): cobertura de praças priorizadas com liderança ativa; soma de `estimatedVotes` vs. meta (fração do QE); praças "ataque" com movimento na série; % do voto 2022 do candidato "coberto" por lideranças engajadas.
3. **Mapa:** adicionar escala relativa (quantis/LQ/rank) e peso por eleitorado; repensar limiares defesa/ataque para a aritmética de DF; manter % dos válidos como uma das leituras, não a única.
4. **Anti-metas sugeridas pela literatura:** não construir "persuasão de território hostil" como funcionalidade central (evidência ≈ 0); não tratar % estadual absoluto como KPI de progresso; não confiar em dados velhos sem mostrar frescor (Hersh).
5. **Dado → decisão:** os mecanismos acima compõem um catálogo operacional de padrões (gatilho → leitura → menu de ações → contraindicação) para o produto sugerir ações ao staff — ver §6 do [relatório da entrevista](relatorio-entrevista-persona-campanha.md) (P1–P12, triagem, divisão análise×julgamento, modos de falha).
## 10. Tabela de fontes
| # | Fonte | Ano | Tipo | Acesso | Link |
| --- | -------------------------------------------------------------------------------------------------------- | --------- | ---------------------------- | ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1 | Gerber & Green — Canvassing, Calls and Mail (APSR 94) | 2000 | paper peer-reviewed | abstract aberto | [RePEc](https://ideas.repec.org/a/cup/apsrev/v94y2000i03p653-663_22.html) |
| 2 | Green & Gerber — Field Experiments on Voter Mobilization (handbook) | 2016 | capítulo | aberto (PDF) | [J-PAL](https://www.povertyactionlab.org/sites/default/files/research-paper/Gerber%20Green%20Handbook.pdf) |
| 3 | Green & Gerber — Get Out the Vote (4ª ed.) | 2019 | livro | abstract-only | [Brookings](https://www.brookings.edu/books/get-out-the-vote-2/) |
| 4 | Kalla & Broockman — Minimal Persuasive Effects (APSR 112) | 2018 | paper peer-reviewed | aberto (SSRN/DOI) | [DOI](https://doi.org/10.1017/s0003055417000363) |
| 5 | ISPS Yale — Lessons from GOTV experiments | s.d. | síntese institucional | aberto | [ISPS](https://isps.yale.edu/research/field-experiments-initiative/lessons-from-gotv-experiments) |
| 6 | Nielsen — Ground Wars | 2012 | livro | abstract-only | [Princeton UP](https://press.princeton.edu/books/hardcover/9780691153049/ground-wars) |
| 7 | Issenberg — The Victory Lab | 2012 | livro | abstract-only | [ref. anotada](https://datafield.dev/political-analytics/part-06/chapter-28/further-reading.html) |
| 8 | Hersh — Hacking the Electorate | 2015 | livro | abstract-only | [resenha](https://www.markpack.org.uk/134070/hacking-the-electorate-eitan-hersh/) |
| 9 | Nicolau — O sistema eleitoral de lista aberta no Brasil (Dados 49) | 2006 | paper peer-reviewed | aberto | [SciELO](https://www.scielo.br/j/dados/a/Mm8QL3xjPYBMN4bhGQWypLS/?lang=pt) |
| 10 | Ames — Electoral Strategy under OLPR (AJPS 39) | 1995 | paper peer-reviewed | abstract-only | [DOI](https://doi.org/10.2307/2111619) |
| 11 | Ames — Electoral Rules, Constituency Pressures, and Pork Barrel (JoP 57) | 1995 | paper peer-reviewed | abstract-only | [DOI](https://doi.org/10.2307/2960309) |
| 12 | Ames — The Deadlock of Democracy in Brazil | 2001 | livro | abstract-only | — |
| 13 | Avelino, Biderman & Barone — A Concentração Eleitoral no Brasil 1994–2014 (Dados 59) | 2016 | paper peer-reviewed | aberto | [DOI](https://doi.org/10.1590/001152582016108) |
| 14 | Borges, Paula & Silva — Eleições legislativas e geografia do voto (RSP 24) | 2016 | paper peer-reviewed | aberto | [DOI](https://doi.org/10.1590/1678-987316245802) |
| 15 | "Localismo nas Eleições" (Dados) | — | paper peer-reviewed | aberto | [SciELO PDF](https://www.scielo.br/j/dados/a/BPzbgBtTHzkx6kptrSnJJfN/?format=pdf&lang=pt) |
| 16 | Speck & Cervi — Dinheiro, Tempo e Memória Eleitoral (Dados 59) | 2016 | paper peer-reviewed | aberto | [DOI](https://doi.org/10.1590/00115258201671) |
| 17 | Dinheiro e sucesso eleitoral 2008–2016 (RAP) | 2020 | paper peer-reviewed | aberto | [DOI](https://doi.org/10.1590/0034-761220200117) |
| 18 | Political finance & performance 2010 (BPSR 8) | 2014 | paper peer-reviewed | aberto | [PDF](https://brazilianpoliticalsciencereview.org/wp-content/uploads/articles_xml/1981-3821-bpsr-08-01-0034/1981-3821-bpsr-08-01-0034.x66180.pdf) |
| 19 | Silva & Moreira — Avaliação empírica da competição eleitoral (Opinião Pública 19) | 2013 | paper peer-reviewed | aberto | [DOI](https://doi.org/10.1590/s0104-62762013000200007) |
| 20 | Padrões de competição política 2014/2018 (RSP 31) | 2023 | paper peer-reviewed | aberto | [DOI](https://doi.org/10.1590/1678-98732331e013) |
| 21 | Geografia do voto 2018 (e-Legis 15) | 2021 | paper (revista da Câmara) | aberto | [DOI](https://doi.org/10.51206/elegis.v15i37.745) |
| 22 | Rodrigues Silveira — Patterns of Spatial Voting 2014/2018 (Anuario Latinoamericano 17) | 2025 | paper peer-reviewed | aberto | [DOI](https://doi.org/10.17951/al.2025.17.65-83) |
| 23 | Efeito do fim das coligações (SciELO Preprints) | 2023 | preprint | aberto | [DOI](https://doi.org/10.1590/scielopreprints.6159) |
| 24 | Carvalho — E no início eram as bases | 2003 | livro | abstract-only | [Travessa](https://www.travessa.com.br/e-no-inicio-eram-as-bases-geografia-politica-do-voto-e-comportamento-legislativo-no-brasil/artigo/07df556f-4e2c-4b98-9a80-71fbcfa1a87c) |
| 25 | "Conexão eleitoral", geografia do voto e produção legislativa (Cadernos Metrópole) | — | paper peer-reviewed | aberto | [SciELO PDF](https://www.scielo.br/j/cm/a/b3hF8b5Mkfdvhm9dNcdvPqf/?format=pdf&lang=pt) |
| 26 | Dantas Neto — Tradição, autocracia e carisma | 2006 | livro (tese UFMG) | abstract-only | [resenha FAPESP](https://revistapesquisa.fapesp.br/o-h-da-baianidade/) |
| 27 | Estratégias políticas de ACM Neto e a tradição carlista (Caderno CRH) | 2019 | paper peer-reviewed | aberto | [Redalyc](https://www.redalyc.org/journal/3476/347659246003/html/) |
| 28 | Carvalho & Santos — Geografia eleitoral da Bahia 2006 (RSP 23) | 2015 | paper peer-reviewed | aberto | [DOI](https://doi.org/10.5380/rsocp.v23i54.41475) |
| 29 | 2026 Bahia general election | 2026 | enciclopédia (não acadêmica) | aberto | [Wikipedia EN](https://en.wikipedia.org/wiki/2026_Bahia_general_election) |
| 30 | Singer — Raízes sociais e ideológicas do lulismo (Novos Estudos 85) | 2009 | paper peer-reviewed | aberto | [SciELO](https://www.scielo.br/j/nec/a/gLqzRSkjs3C8gFgwCQDNWjK/?format=html&lang=pt) |
| 31 | Singer — Os sentidos do lulismo | 2012 | livro | abstract-only (trecho aberto) | [trecho](https://www.companhiadasletras.com.br/trechos/13393.pdf) |
| 32 | Meneguello — PT: a formação de um partido | 1989 | livro | abstract-only | [síntese IHU](https://www.ihu.unisinos.br/categorias/595791-pt-40-anos-um-partido-dos-trabalhadores-para-que) |
| 33 | Keck — The Workers' Party and Democratization in Brazil | 1992 | livro | abstract-only | [síntese IHU](https://www.ihu.unisinos.br/categorias/595791-pt-40-anos-um-partido-dos-trabalhadores-para-que) |
| 34 | Secco — História do PT | 2011 | livro | abstract-only | [síntese IHU](https://www.ihu.unisinos.br/categorias/595791-pt-40-anos-um-partido-dos-trabalhadores-para-que) |
| 35 | Fundação Perseu Abramo — dossiê fundação/núcleos | 2017 | fonte primária partidária | aberto | [PDF](https://fpabramo.org.br/wp-content/uploads/2017/04/3-03-P1_Dossie-Doctos.pdf) |
| 36 | Bezerra — Em nome das "bases" | 1999 | livro | aberto (PDF no NuAP) | [NuAP](http://nuap.etc.br/em-nome-das-bases/) |
| 37 | Kuschnir — O cotidiano da política / working paper Oxford CBS | 2000/2005 | livro + working paper | WP aberto; livro abstract-only | [Oxford PDF](https://www.lac.ox.ac.uk/sites/default/files/lac/documents/media/karina20kuschnir2064.pdf) |
| 38 | Políticos locales y conexiones multinivel (Reflexión Política) | — | paper peer-reviewed | aberto | [PDF](https://revistas.unab.edu.co/index.php/reflexion/article/download/4998/3998/22083) |
| 39 | Câmara — explicador sistema proporcional/puxador | s.d. | oficial | aberto | [Câmara](https://www.camara.leg.br/noticias/863514-deputados-sao-eleitos-pelo-voto-proporcional-entenda-a-logica-desse-sistema/) |
| 40 | TSE — sistemas majoritário e proporcional | 2026 | oficial | aberto | [TSE](https://www.tse.jus.br/comunicacao/noticias/2026/Abril/por-dentro-das-eleicoes-brasil-utiliza-sistemas-eleitorais-majoritario-e-proporcional) |
| 41 | Câmara — eleitos BA 2022 (votações) | 2022 | oficial | aberto | [infográfico](https://www.camara.leg.br/internet/agencia/infograficos-html5/tabelasEleicoes/ba.html) |
| 42 | Manhanelli — Estratégias Eleitorais / verbete Politipédia | 1988/2025 | livro + verbete | verbete aberto; livro abstract-only | [Politipédia](https://politipedia.wiki.br/verbete/carlos-augusto-manhanelli.html) |
| 43 | Dobradinhas na prática (Estado de Minas; Lagarto Notícias) | 2014/2025 | imprensa | aberto | [EM](https://www.em.com.br/app/noticia/politica/2014/05/18/interna_politica,529893/dobradinha-para-eleicoes-vira-sobrevivencia-politica-para-prefeitos-deputados.shtml) |
| 44 | Brewer & Pickle — Classifying Epidemiological Data on Choropleth Maps (Annals AAG 92) | 2002 | paper peer-reviewed | abstract-only (síntese aberta) | [síntese NM-IBIS](https://ibis.doh.nm.gov/resource/MapChoroClasses.html) |
| 45 | UCGIS GIS&T BoK — Statistical Mapping | atual | corpo de conhecimento | aberto | [BoK](https://gistbok-ltb.ucgis.org/current/concept/CV-03-005) |
| 46 | Making Effective Maps — Data Classification | atual | livro-texto aberto | aberto | [Pressbooks](https://colorado.pressbooks.pub/makingmaps/chapter/chapter-10-data-classification/) |
| 47 | Roth, Woodruff & Johnson — Value-by-alpha maps (Cartographic Journal 47) | 2010 | paper peer-reviewed | aberto (PMC) | [PMC](https://pmc.ncbi.nlm.nih.gov/articles/PMC3173776/) |
| 48 | Axis Maps — Value-by-Alpha guide | atual | guia técnico | aberto | [Axis Maps](https://www.axismaps.com/guide/value-by-alpha) |
| 49 | Field — Thematic Mapping (Esri) + "land doesn't vote" | 2021 | livro + comentário | abstract-only (comentário aberto) | [Maps Mania](https://googlemapsmania.blogspot.com/2024/09/land-doesnt-vote-people-do.html) |
| 50 | Learn ArcGIS — Explore a map of election results | atual | tutorial | aberto | [ArcGIS](https://learn.arcgis.com/en/projects/explore-a-map-of-election-results/) |
| 51 | Monmonier — How to Lie with Maps | 1991/2018 | livro | abstract-only | — |
| 52 | Duchin & Tenner — Discrete geometry for electoral geography | 2018 | preprint arXiv | aberto | [arXiv](https://arxiv.org/abs/1808.05860) |
| 53 | SEPLAN-BA — Territórios de Identidade (política e governança) | atual | oficial | aberto | [SEPLAN](https://www.ba.gov.br/seplan/iniciativas/acesse-informacoes-sobre-territorios-de-identidade-planejamento-e-gestao-territorial-0) |
| 54 | Lei estadual 13.214/2014 — Política de Desenvolvimento Territorial BA | 2014 | legislação | aberto | [LegisWeb](https://www.legisweb.com.br/legislacao/?id=279550) |
| 55 | Serpa (org.) — Territórios de identidade na Bahia (EDUFBA, cap. 1) | 2015 | capítulo de livro | aberto (SciELO Books) | [PDF](https://books.scielo.org/id/6p3mz/pdf/serpa-9788523220129-02.pdf) |
| 56 | Cláudio André — Disputa eleitoral nos territórios baianos (A Tarde) | 2026 | análise aplicada/imprensa | aberto | [A Tarde](https://atarde.com.br/colunistas/conjunturapolitica/disputa-eleitoral-nos-territorios-baianos-1389159) |
| 57 | IBGE — Divisão Regional do Brasil 2017 (Regiões Imediatas/Intermediárias) | 2017 | oficial | aberto | [IBGE](https://www.ibge.gov.br/geociencias/organizacao-do-territorio/divisao-regional/15778-divisoes-regionais-do-brasil.html) |
| 58 | The Modifiable Areal Unit Problem in Political Science (Political Analysis 33) | 2025 | paper peer-reviewed | aberto | [DOI](https://doi.org/10.1017/pan.2025.2) |
| 59 | Shaw — TV Ads and Candidate Appearances on Statewide Presidential Votes (APSR 93) | 1999 | paper peer-reviewed | abstract-only | [Cambridge](https://www.cambridge.org/core/journals/american-political-science-review/article/abs/effect-of-tv-ads-and-candidate-appearances-on-statewide-presidential-votes-198896/693E6870E4BBE8860249CC64A8E2F949) |
| 60 | Herr — The Impact of Campaign Appearances in the 1996 Election (JoP 64) | 2002 | paper peer-reviewed | abstract-only | [DOI](https://doi.org/10.1111/0022-3816.00152) |
| 61 | Holbrook & McClurg — The Mobilization of Core Supporters (AJPS 49) | 2005 | paper peer-reviewed | abstract aberto | [Wiley](https://onlinelibrary.wiley.com/doi/10.1111/j.1540-5907.2005.00149.x) |
| 62 | Silva & Gimenes — Votos brancos e nulos no Brasil: bases cognitivas e atitudinais (Teoria & Pesquisa 23) | 2014 | paper peer-reviewed | aberto | [DOI](https://doi.org/10.4322/tp.2014.013) |
| 63 | Fernandes et al. — A alienação eleitoral no Brasil Democrático (Programa Cidadania/CESOP) | 2022 | estudo aplicado | aberto | [PDF](https://www.programacidadania.org.br/wp-content/uploads/2022/07/AF_estudo_abstencoes_COMPLETO_E_APENDICE_final.pdf) |
| 64 | Bases sociais e atitudinais da alienação eleitoral no Brasil (Rev. Debates) | 2009 | paper peer-reviewed | aberto | [DOI](https://doi.org/10.22456/1982-5269.6989) |
| 65 | Nicolau — Afinal, quem foi votar em 2022 (Caderno CRH) | 2023 | paper peer-reviewed | aberto | [SciELO](https://www.scielo.br/j/ccrh/a/bwxwHXrJLDmcc9xzTZpZvRm/?lang=pt) |
| 66 | TSE — brancos e nulos: efeitos e estatística | 2021 | oficial | aberto | [TSE](https://www.tse.jus.br/comunicacao/noticias/2021/Setembro/votos-brancos-e-nulos-nao-anulam-eleicao-e-sao-considerados-apenas-para-fins-estatisticos) |
| 67 | Abstenção 2022 (nacional e BA) | 2022 | imprensa/TSE | aberto | [G1](https://g1.globo.com/politica/eleicoes/2022/eleicao-em-numeros/noticia/2022/10/02/eleicoes-2022-abstencao-atinge-maior-percentual-desde-1998.ghtml) · [Exame BA](https://exame.com/brasil/teixeira-de-freitas-itabuna-porto-seguro-veja-as-cidades-com-maior-abstencao-na-bahia/) |
## 11. Fila pause-and-fetch (fontes centrais sem texto aberto)
Pedidos agrupados por eixo em [`sources/README.md`](sources/README.md). Enquanto não depositadas, os claims dessas obras permanecem marcados `abstract-only` e apoiados apenas no que fontes abertas confirmam.

View file

@ -0,0 +1,58 @@
# Persona — Prof. Helena Rocha (persona sintética)
Status: rascunho (pré-colaboração)
Atualizado em: 2026-07-21
Grounding: exclusivamente o compêndio [`literatura-campanha-deputado-federal-ba.md`](literatura-campanha-deputado-federal-ba.md). Onde a literatura não alcança, a persona diz "não sei / isso é empírico".
> Persona ESPECIALISTA para entrevista teórica de produto. Não é a usuária final do app (o usuário é o coordenador/assessor de campanha); é uma cientista política que estudou o problema que o app quer resolver.
## Identidade
- **Nome fictício:** Helena Rocha, 52 anos.
- **Cargo:** Professora associada de Ciência Política (universidade federal no Nordeste); consultora eventual de campanhas do campo progressista.
- **Formação:** doutorado em Ciência Política com tese sobre geografia do voto em eleições proporcionais no Nordeste; pós-doc em métodos quantitativos aplicados a dados eleitorais do TSE.
- **Repertório de pesquisa:** sistemas de lista aberta (Nicolau), estratégia espacial de candidatos (Ames; Carvalho; Avelino/Biderman/Silva), competição municipal (NEC, índice de desequilíbrio), política baiana (carlismo → era petista; Dantas Neto; Carvalho & Santos 2015), lulismo e realinhamento (Singer), organização partidária do PT (Meneguello, Keck, Secco), mediação política e bases (Bezerra, Kuschnir), evidência experimental de campanha (Green & Gerber; Kalla & Broockman), financiamento (Speck & Cervi), cartografia temática (Brewer & Pickle; value-by-alpha; crítica "land doesn't vote").
## Modelo mental (as 7 teses que ela repete)
1. **"Deputado federal não vence o estado; vence a conta do quociente."** A disputa é intrapartidária e fragmentada; 129 mil votos elegem na Bahia. Qualquer análise que trate o estado como um distrito majoritário está errada de saída (Nicolau 2006; e-Legis 2021).
2. **"Dominância e concentração são coisas diferentes, e a estratégia mora no cruzamento."** Onde eu mando (share local) ≠ de onde vem meu voto (share da minha votação). Reduto, expansão e praça irrelevante só aparecem cruzando os dois (Ames 1995; Carvalho 2003).
3. **"Eleito é o que dispersa a tempo."** Vencedores são menos concentrados que derrotados; a trajetória é base local → região → dispersão (Avelino/Biderman 2016). O risco de quem tem reduto é ficar preso nele.
4. **"Campanha não persuade; campanha organiza e orienta."** Efeito persuasivo médio ≈ 0 (Kalla & Broockman 2018); contato pessoal mobiliza/orienta quem já é simpático. Com voto obrigatório, o jogo é lembrar o número na urna via rede de confiança (Green & Gerber; Bezerra).
5. **"O mandato é a campanha."** Emenda, atendimento, presença — mediação contínua com prefeitos, vereadores e lideranças é o que constrói dominância (Bezerra 1999; Kuschnir 2000; Borges et al. 2016 sobre acesso ao executivo).
6. **"Na Bahia, o voto do campo é de Lula e do governador antes de ser seu."** O realinhamento de 2006 criou lealdade programática no interior; a transferência para o voto nominal de DF passa por estrutura local, não por afinidade automática (Singer 2009/2012; Carvalho & Santos 2015).
7. **"Mapa que não normaliza mente; mapa que só normaliza esconde."** % dos válidos é necessário mas insuficiente: numa disputa onde o topo estadual é ~5%, escala 0–100% achata tudo. Quantis, quociente local e peso visual por eleitorado são o mínimo (Brewer & Pickle 2002; Roth et al. 2010).
## O que ela considera evidência forte vs. anedota
| Evidência forte | Anedota / vaidade |
| --------------------------------------------------------------------------- | ----------------------------------------------------------- |
| Série TSE por município×zona (3+ eleições) | "Sinto que a praça X é nossa" sem número |
| Experimento de campo randomizado; meta-análise | Case isolado de campanha vencedora ("fizemos X e ganhamos") |
| Pledges auditáveis por pessoa nomeada (liderança → votos declarados) | Estimativa de multidão em evento; seguidores/likes |
| Dominância + concentração + NEC calculados | % estadual absoluto como medida de força |
| Gasto declarado vs. votos (elasticidade) | "Investimos muito lá" sem custo por voto |
| Cobertura organizacional mensurada (lideranças ativas por praça priorizada) | Nº bruto de cadastros no sistema |
## Vieses declarados (a serem descontados na entrevista)
- **Viés estruturalista:** tende a explicar tudo por sistema eleitoral e geografia, subestimando carisma, mídia e conjuntura de última semana (que 2006 mostrou que existe).
- **Viés quantitativo:** prefere o que se mede; desconfia de "energia de rua" mesmo quando operadores experientes a usam bem.
- **Viés de campo progressista:** simpatiza com a tese "organização > dinheiro", embora a literatura de financiamento mostre que dinheiro é o maior efeito total (Speck & Cervi) — ela mesma admite a tensão.
- **Ceticismo com consultoria de marketing:** respeita o método codificado (Manhanelli) mas duvida de promessas de persuasão em massa.
- **EUA ≠ Brasil:** ela mesma alerta que a evidência experimental é majoritariamente americana (voto facultativo, bipartidarismo) e exige tradução cuidadosa.
## Como ela priorizaria análises para uma campanha de DF na Bahia (a priori, antes da entrevista)
1. Conta do quociente: meta de votos vs. QE projetado e piso individual; decomposição da meta por praça.
2. Cruzamento dominância×concentração por praça (2014→2018→2022) com classificação operacional relativa à aritmética de DF.
3. Mapa de "onde ação muda resultado": volume de válidos em jogo × gap vs. desempenho médio próprio (LQ) × presença organizacional (lideranças/pledges).
4. Cobertura de rede: % do voto histórico coberto por liderança ativa; praças priorizadas sem responsável.
5. Risco de invasão: praças de dominância própria com NEC subindo ou concorrente investindo (Ames: vulnerabilidade à invasão).
6. Eficiência de recurso: custo/atenção por voto esperado por praça (Jacobson: desafiante ganha mais na margem).
## Limites que ela impõe a si mesma
- Não opina sobre UX/telas específicas sem ver uso real ("isso é teste de usabilidade, não teoria").
- Não confirma números da campanha atual que não estejam nos dados públicos TSE.
- Marca explicitamente o que é hipótese de literatura vs. o que só entrevista de campo com o coordenador real pode validar.

View file

@ -0,0 +1,567 @@
# Relatório — entrevista sintética com persona especialista (campanha DF-BA)
Status: aprovado (colaboração 2026-07-21) — canônico para docs de produto; consumido pelo programa Inteligência de campanha ([plano-mestre](../plans/inteligencia-campanha.md))
Atualizado em: 2026-07-21
Artefatos: [persona](persona-cientista-politico-campanha-ba.md) · [compêndio](literatura-campanha-deputado-federal-ba.md) · [roteiro](roteiro-entrevista-persona-campanha.md) · transcrição no Apêndice A
## 1. Método e limitações
- **Formato:** entrevista sintética em 6 rodadas (blocos A–F do roteiro + 4 follow-ups + rodadas extras G "dado → decisão", H "agregações regionais/TI" e I–K "brancos/nulos/abstenção, agenda do candidato, despriorização", adicionadas na colaboração do Passo 6). A persona ("Prof. Helena Rocha") rodou em **subagent isolado** cujo contexto continha apenas a persona e o compêndio — sem acesso a roadmap, `PRODUCT.md` ou hipóteses do entrevistador. O entrevistador (agente principal) seguiu Mom Test adaptado a entrevista de especialista: casos concretos da literatura/consultoria no lugar de "última vez que você…", zero pitch de produto.
- **Disciplina de estatuto:** a persona marcou cada claim como _fato documentado_ (com fonte), _hipótese de literatura_ ou _caso estilizado de consultoria_ (composto, não documentado). Este relatório preserva essa marcação — nada aqui é fato de campo.
- **Autoavaliação Mom Test (adaptada):** 6/7 — conversa sobre o domínio e casos passados (✓), fatos concretos com fonte (✓), persona falou ~85% (✓), crenças do produto atualizadas (✓ — ver §5–§7), fatos separados de interpretação (✓), aprendizado que pode mudar o que construiríamos (✓); _commitment_ não se aplica a persona sintética (–1 estrutural).
- **Limitações:** (1) circularidade — a persona só sabe o que o compêndio contém; ela não pode nos surpreender com o que a literatura não cobre, apenas recombinar; (2) evidência experimental é majoritariamente americana (voto facultativo) — a persona sinalizou a tradução necessária; (3) os "casos" são compostos estilizados; (4) vieses declarados da persona (estruturalista, quantitativa, de campo progressista) foram explicitados por ela mesma em F1. **Todos os achados são hipóteses de literatura/persona até a sessão com o coordenador real** (`docs/CUSTOMER.md`, ~Wed).
## 2. Diagnóstico (kernel Rumelt)
**Desafio crítico:** numa disputa de lista aberta com 39 cadeiras e ~7,5 mi de válidos, ninguém "vence a Bahia" — vence-se a conta do quociente (cadeira real: ~80–150 mil votos; topo estadual histórico: 4,71% dos válidos). O voto do campo progressista existe em escala majoritária no interior (realinhamento lulista), **mas é de Lula/governador antes de ser do deputado**. O gargalo é a **conversão de lealdade programática difusa em voto nominal, praça por praça** — e essa conversão corre por uma rede de mediação (prefeitos, vereadores, lideranças) cuja informação circula **por voz e WhatsApp, sem registro datado**: sinais não viram série, três brokers esfriando na mesma microrregião não viram diagnóstico de invasão, e a campanha "enxerga o eleitorado pelos dados que tem" (Hersh) — quando o dado é oral, a imagem do eleitorado é a agregação enviesada de quem falou por último com o coordenador.
**Política orientadora (guiding policy):** fazer do Teqo o sistema de **registro-e-decisão da rede de conversão** — compromissos auditáveis contra metas por praça, leitura territorial _relativa_ (nunca % absoluto estadual), decisão pela fila de trabalho (lista), mapa como leitura de padrão espacial — com a regra de adoção do caso-que-pegou: o registro precisa estar **no fluxo de poder** (recurso segue a lista), não competir com o trabalho de rua.
**Ações coerentes (esboço, detalhado em §6–§7):** conta do quociente com metas por praça → fila de alocação ordenada por déficit descoberto → escala relativa e peso por eleitorado no mapa → recalibração dos limiares defesa/ataque → registro datado sem sobrescrita (trajetória de pledge, esforço, sinais de rede) → frescor como sinal de primeira classe → playbook dado→decisão computado por praça → backtest pós-eleição.
## 3. Jobs e forças (atualização pós-entrevista)
**Jobs de decisão do coordenador (setembro, semana típica — caso estilizado A1):** administrar 3 filas — agenda do candidato (ativo mais escasso: 1 dia numa praça = 10 praças negadas), recurso marginal, acordos com brokers. Decide de fato: roteiro fino da agenda, alocação marginal, quando cortar uma praça. Referenda: compromissos que o candidato assumiu sozinho, desenho da dobradinha (vem do partido/federação), demandas irrecusáveis de brokers grandes. Pergunta melhor que "o que você decide": **"o que você desenhou e não conseguiu executar?"** (lacuna desenho-operação, Nielsen).
| Força | Atualização vinda da entrevista |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Push | Sinal territorial não registrado = "anedota estrutural" (inutilizável); invasão intrapartidária silenciosa; base envelhece na reta final exatamente quando o jogo mais se move |
| Pull | Fila de trabalho que responde "onde falta mais voto que planejamos ter"; dado traduzido na aritmética da cadeira sobrevive à mesa ("a conta não fecha o quociente" ganha; "o mapa está vermelho" perde) |
| Habit | O "banco de dados" real é a memória de meia dúzia de pessoas + grupos de WhatsApp que rolam para cima; planilha tocada só no dia do compromisso |
| Anxiety | Registro epistêmico morre sob cansaço (sobrevive só o transacional); extração sem devolução mata a ferramenta em 6 semanas; reunião que decide por voz prova que preencher é teatro |
## 4. Desafios ranqueados (persona ↔ literatura)
1. **Conversão lealdade→voto nominal** — teto de Lula alto, captura baixa; disputa intrapartidária como vetor principal de perda (Nicolau 2006; Singer 2009/2012; Carvalho & Santos 2015). _Hipótese de literatura._
2. **Informação territorial oral e sem série** — broker é o sensor real (Bezerra; Kuschnir), mas sem registro datado perde-se comparabilidade, agregação, triangulação e aprendizado (4 camadas, FU1). _Caso estilizado + derivação._
3. **Excesso de concentração / prisão do reduto** — eleitos dispersam mais que derrotados; o reduto puxa agenda por conforto e o voto marginal está mais barato fora (Avelino, Biderman & Barone 2016). _Fato documentado (padrão populacional)._
4. **Dependência de poucos brokers + invasão silenciosa** — 3 pessoas intermediando 40% do voto esperado = 3 pontos únicos de falha; vetor provável: traição intrapartidária; praças de defesa "dormentes" são onde a invasão de Ames acontece em silêncio. _Opinião da persona ancorada em Ames/Nicolau._
5. **Alocação de recurso escasso sem critério** — dinheiro importa mais (Speck & Cervi) mas é quase exógeno; agenda e rede são as variáveis controláveis; pulverização de reta final ("marcar presença") queima o ativo mais escasso. _Hipótese bem fundada._
6. **Decaimento do registro sob cansaço** — sobrevive o transacional (destrava algo agora), morre o epistêmico (retorno analítico futuro); antídoto é desenho de incentivo, não exortação. _Hipótese da persona._
**Falsos diagnósticos a evitar (B2):** "precisamos persuadir quem não é nosso" (efeito persuasivo médio ≈ 0 — Kalla & Broockman 2018; o jogo é orientar simpatizantes) e "estamos fracos no estado" medido em % absoluto (fraqueza percentual é condição estrutural de todos, não informação).
## 5. Análises mais valiosas (ranked)
1. **Cobertura da meta por compromissos auditáveis (OMTM até 16/08):** Σ votos comprometidos (auditáveis, com frescor) ÷ meta, no agregado e por praça; delta semanal como número da reunião. Meta estadual na faixa realista da cadeira (~80–150 mil; QE ~190–200 mil como teto), distribuída por praça pelo potencial local (voto histórico próprio + fração do campo não capturado).
2. **Fila de alocação (a lista > o mapa):** colunas em ordem de importância — votos em jogo; meta/comprometido/delta; classe operacional; desempenho relativo (LQ e/ou taxa de captura); rede (lideranças ativas, responsável, frescor); competição local (liderança contestada, flag de invasão); tendência 2014→2018→2022. **Ordenação default: déficit descoberto de meta** (meta − comprometido, decrescente; empate por votos em jogo); ordenação de risco: defesa por frescor (mais dormente primeiro).
3. **Taxa de captura do campo** (nominais do candidato ÷ votos de Lula/governador 1º turno na praça) **+ share intracampo** (÷ nominais de DF do próprio campo na praça) — operacionaliza a transferência e distingue "campo não vota nominal" de "campo vota no correligionário". Calculável hoje, 100% TSE. Complemento: **roll-off proporcional×majoritária** por praça (brancos+nulos do cargo DF − brancos+nulos da presidencial, ÷ comparecimento) — o headroom de orientação de §6.6.
4. **Dominância × concentração cruzadas com série histórica** — a leitura reduto/expansão/irrelevante que de fato realoca agenda (Ames; Carvalho); o LQ entra como frase: "aqui performamos 40% abaixo do nosso padrão".
5. **Análises de risco:** praças de defesa sem sinal recente; dependência estrutural de brokers (share do voto esperado por liderança); NEC/desequilíbrio traduzidos em "liderança local contestada" (conteúdo chega à mesa pela boca do broker — sistematizar é o ganho).
6. **Backtest pós-eleição** (pledge vs. voto realizado por zona; limiares que teriam separado ex-ante as praças de crescimento) — a única calibração real; exige o registro do §6-O-E.
**Vaidade/falso sinal (C3):** nº bruto de cadastros (cresce com esforço, sem denominador, fabrica confiança falsa); pesquisa estadual de intenção de voto para DF (margem de erro engole sinal de quem disputa 1–3%); % estadual absoluto como KPI.
**Nota mapa/métricas (bloco D):**
- Pergunta de decisão do mapa: **"onde a próxima unidade de esforço compra mais voto marginal?"** — % dos válidos responde só "onde estou forte" (inventário/vaidade, e só metade do framework).
- Escala: **quantis do próprio candidato (5 classes) como default** (discriminam por construção; recomendação clássica para séries comparáveis — Brewer & Pickle), LQ quando a pergunta é "acima/abaixo do meu padrão", rank na praça quando é competitiva; **classes operacionais nomeadas por cima**, mantendo % válidos como uma das leituras.
- **Limiares 35/20/10 degeneram em DF** (share típico local 1–5%; estado inteiro vira "perdida") — recalibrar com âncoras relativas: múltiplos do share estadual do candidato (LQ ≈ >2–3 defesa; ~1 padrão; <0,5 fraqueza) e/ou múltiplos do share da cadeira marginal; cortes exatos só via backtest 2014–2022. Classificação correta é multi-eixo (dominância + importância da praça na própria votação + competição local + teto do campo), não função de um eixo.
- **Peso por eleitorado:** símbolo proporcional (bolha = votos em jogo; cor = classe) sobre o polígono é o que "funciona em campo"; value-by-alpha é válido mas sutil para decisão rápida (testar, não assumir); **cartograma descartado** (operador navega pela geografia real); Salvador só se lê por zona; a lista ordenada mora ao lado do mapa.
## 6. Base de conhecimento dado → decisão (playbook de sugestões)
> Rodada G da entrevista, adicionada na colaboração: "se os dados de uma praça mostram X, que ações Y considerar?". **Estatuto:** não existe playbook validado empiricamente para campanha proporcional — o catálogo é composição dos mecanismos documentados; limiares numéricos são ilustrativos e calibráveis por backtest 2014–2022; sugestão é **menu para o julgamento do staff, nunca regra automática** (justificativa em §6.3). Texto integral na Rodada 4 do Apêndice A.
### 6.1 Catálogo de padrões (gatilho → leitura → menu de ações → contraindicação)
| # | Padrão | Gatilho operacional | Leitura provável (e o que descartar antes) | Menu de ações (prioridade) | Contraindicação |
| --- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| P1 | **Reduto dormente/ameaçado** | Quintil superior de dominância (LQ ≥ 2–3) E praça do bloco que soma ~50% da votação histórica, SEM pledge/sinal/agenda há 3–4 semanas; variante: com sinal de invasão ou queda 2018→2022 | Vulnerabilidade à invasão (Ames). Descartar: dormência de _registro_, broker ocupado mas fiel | 1º checagem de rede em 48h (responsável liga e atualiza pledges); 2º presença pessoal curta se confirmar; 3º ativar 2ª linha de lideranças; 4º se intracampo, escalar à federação | Não despejar agenda cara antes da checagem barata; não superinvestir em reduto no teto (prisão do reduto — Avelino/Biderman) |
| P2 | **Ataque: campo forte, captura baixa** | Teto do campo alto + captura < média própria (LQ < 0,5) + válidos grandes + disputa local aberta (NEC alto, desequilíbrio baixo) | Expansão clássica: voto de campo sem dono para DF. Descartar: correligionário já capturou (ver P3); barreira de entrada alta; "posse" de candidato regional | 1º recrutar liderança/organização ANTES de agenda; 2º plano de ação com organização aliada; 3º dobradinha com estadual forte ali; 4º só então agenda, com recepção pronta | Disputa local fechada + dominância adversária = praça perdida vestida de oportunidade (persuasão ≈ 0 — Kalla & Broockman) |
| P3 | **Correligionário na frente** | Captura agregada do campo alta, minha fatia intracampo baixa | A praça está organizada — por outro (Nicolau). Descartar: acordo de território vigente; correligionário em saída (herança aberta) | 1º inteligência (concorre de novo? força vem de que broker?); 2º herança aberta → entrada rápida nas lideranças órfãs; 3º ativo e forte → flanquear segmento não coberto; 4º acordo de não-agressão via federação | Guerra aberta em reduto de correligionário forte: custo alto, envenena a lista de que todos dependem |
| P4 | **Dependência de um broker** | 1 intermediário ≥ 50–60% dos pledges da praça, ou top-3 brokers ≥ 30–40% do comprometido total | Ponto único de falha; vetor provável = traição intracampo. Descartar: sub-registro da 2ª linha; concentração inevitável (cidade pequena) | 1º recrutar 2ª linha deliberadamente; 2º des-intermediação parcial (relação direta com contatos-chave); 3º elevar custo de traição com compromisso público; 4º contingência nomeada ("se fulano virar, quem assume") | Construir 2ª linha desautorizando o broker publicamente — o seguro provoca o sinistro (economia de status — Bezerra) |
| P5 | **Expansão acima do padrão** | LQ crescente na série ou pledges acelerando fora do top histórico; cobertura > 100% ou delta no decil superior | Trajetória dos vencedores em ato (base→região→dispersão). Descartar: evento único/broker recém-chegado; meta subestimada | 1º dobrar aposta com custo marginal baixo (material, planos); 2º formalizar a rede emergente antes que esfrie; 3º replicar por vizinhança (ver P12); 4º subir a meta e realimentar a decomposição | Não canibalizar agenda de defesa pela novidade; multidão ≠ tendência |
| P6 | **Praça grande sem rede** | Válidos no quartil superior + zero lideranças/responsável/pledges | Voto órfão (tenho histórico sem rede registrada) OU deserto (nunca tive). | 1º censo de rede via federação/organizações; 2º nomear responsável (mesmo externo); 3º deserto com campo forte → tratar como P2; 4º deserto com campo fraco → **despriorizar por escrito** | Agenda para "abrir" praça sem estrutura de recepção — visita sem broker evapora (Nielsen) |
| P7 | **Pledges estagnados vs. meta** | Cobertura < meta com delta ≈ 0 por 2–3 semanas em praça priorizada | Tripla: (i) rede parou; (ii) rede trabalha e não registra; (iii) rede saturou o alcance. Auditoria amostral separa (ii); pledges no teto histórico denunciam (iii) | 1º diagnóstico diferencial pelo responsável (1 semana); 2º se (ii), consertar fluxo de registro (sede digita); 3º se (i), reativação pessoal da rede; 4º se (iii), recrutar novas lideranças ou realocar meta | Cobrar a rede pelo número antes de auditar o registro — pune quem trabalha e ensina a inflar |
| P8 | **Sinal qualitativo de invasão** | Log datado ("X visitou", "broker recebeu proposta") em praça de defesa/importância, antes de mover número | Alerta antecipado (o sinal de rede precede o dado). Descartar: boato de fonte única e interessada; visita de rotina | 1º triangular com 2ª fonte em 72h; 2º atualizar todos os pledges da praça; 3º confirmado → presença rápida + gesto público; 4º registrar sinal→desfecho datado (par do backtest) | Mover agenda por fonte única — adversário racional planta sinal para te fazer gastar onde ele não está |
| P9 | **Queda na série histórica** | Nominais caindo 2018→2022 em praça relevante — sempre decomposto | (i) maré (teto do campo caiu junto); (ii) correligionário (fatia intracampo caiu); (iii) estrutura (teto estável, meu voto sumiu) | 1º decomposição analítica em mesa (custo zero); 2º entrevista de rede na praça; 3º ação conforme causa: maré → despriorizar/colar no majoritário; correligionário → P3; estrutura → P4/P6 | "Compensar" antes de decompor; em praça pequena ±200 votos é ruído, não tendência |
| P10 | **Praça pequena de alta dominância** | LQ ≥ 4 / quintil superior de dominância, válidos abaixo da mediana, contribuição à meta < 1% | Reduto simbólico (narrativa, não conta). Descartar: efeito-hub que ancora a microrregião (conferir vizinhas) | 1º manutenção de baixo custo (presença simbólica, atenção de mandato); 2º usar como palco regional para irradiar; 3º testar efeito-hub medindo as vizinhas | A praça-troféu não pode comer agenda das praças que fecham o quociente (derrotados morrem abraçados ao reduto) |
| P11 | **Organização forte, compromisso zero** | Organizações/lideranças ativas com pledges nulos ou muito abaixo do potencial da base | Apoio difuso ≠ voto nominal (transferência não é automática — Singer); ou faltou o pedido explícito. Descartar: base dividida entre correligionários (neutralidade racional) | 1º pedido explícito (converter simpatia em compromisso nomeado com número); 2º assembleia/deliberação de apoio nominal; 3º responsável dedicado à conversão organização→pledges | Forçar deliberação em organização dividida — racha a entidade e perde o apoio difuso |
| P12 | **Fronteira de vizinhança do cluster** | Praça contígua (mesma microrregião) a reduto de alta importância, LQ < 1, teto de campo razoável | Expansão mais barata (rede irradia por contiguidade — clusters de Carvalho & Santos). Descartar: rivalidade política histórica com o reduto | 1º liderança-ponte apresentada pela rede do reduto; 2º agenda combinada reduto+vizinha no mesmo dia; 3º plano regional com meta conjunta | Não tratar a microrregião como homogênea; não usar broker do reduto onde ele é tóxico |
### 6.2 Triagem (quando vários gatilhos disparam)
Precedência derivada de custos assimétricos (estoque quase-certo > oportunidade hipotética; mediação quebrada não se recompra em semanas; construção organizacional expira primeiro):
1. **Estoque grande em risco confirmado** (P1/P8 triangulados);
2. **Falha de canal em praça priorizada** (P4 agudo — broker único virando é estoque em risco disfarçado);
3. **Cobertura zero onde a meta exige** (P6 priorizada — cada semana encolhe o construível);
4. **Oportunidades com janela** (herança aberta P3, expansão quente P5);
5. **Otimizações** (P10, P12, ajuste de metas).
Regras transversais: **barato-antes-de-caro** (a checagem de rede de 48h roda para todo gatilho; a hierarquia ordena só o recurso caro — agenda, dinheiro, gente) e **desempate por contribuição à conta** (mais votos em jogo para a meta ganha).
### 6.3 Divisão análise × julgamento (o que o produto faz e o que não tenta)
| Etapa | Máquina (produto) | Humano (staff) |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Detectar | **Insubstituível:** vigilância contínua de 400+ praças sem fadiga/viés de recência; agregar sinais dispersos (3 brokers esfriando na microrregião = padrão) | Alimentar o registro (sem registro, detecção cega — Hersh) |
| Diagnosticar | Diagnóstico diferencial **estrutural** por conta: decompor queda (maré×correligionário×estrutura), tripartir estagnação — entregar o leque de causas com a leitura alternativa explícita | A **causa final é local e relacional** (por que o broker esfriou) — só a rede sabe (Bezerra/Kuschnir) |
| Escolher ação | Apresentar o menu com fonte + estatuto + incerteza; **registrar** sugestão dada, decisão tomada e leitura descartada (ex-ante do backtest) | **Decisão é do coordenador:** custo político invisível ao dado; ação certa sem capacidade local de execução é errada (Nielsen); erro precisa ter dono para virar aprendizado |
| Executar | Nada — pessoalidade não se terceiriza (Green & Gerber; Bezerra) | Tudo |
O produto **não deve** estimar o que não tem dado para estimar (probabilidade de "virar" praça, elasticidade esforço→voto antes do 1º backtest) — número inventado com cara de número é a falsa precisão de Hersh.
### 6.4 Modos de falha do motor de sugestões (e mitigação em método)
1. **Falso positivo de registro** — gatilho de ausência dispara porque ninguém digitou. → Todo gatilho de ausência/frescor dispara _auditoria de registro_, nunca ação de campo; distinguir "sem sinal" de "sinal de nada".
2. **Viés da base (Hersh)** — sistema só enxerga onde há rede registrando; desertos ficam mudos e o investimento se realimenta. → Ancorar parte dos gatilhos em dado público que cobre todas as praças (TSE); "pauta do silêncio" mensal: revisar as praças que não dispararam nada como pergunta.
3. **Gaming pelos assessores** — se recurso segue gatilho, o campo produz o padrão que puxa recurso. → Auditoria amostral aleatória com consequência no fator de desconto; desconto de fonte única; declaração separada da estimativa; **não publicar limiares exatos** internamente.
4. **Excesso de confiança** — menu com fonte vira oráculo. → Cada sugestão carrega estatuto (documentado/hipótese/estilizado) e incerteza; decisão registrada nomeia a leitura alternativa descartada.
5. **Churn de prioridade** — fila mudando toda semana = campanha que só reage. → Histerese: realocação cara exige gatilho persistente 2 semanas ou triangulado; reunião de sinais semanal ≠ reunião de realocação quinzenal (nível 1 da triagem fura a fila).
### 6.5 Camada regional: Territórios de Identidade e agregações acima da praça
> Rodada H da entrevista (adicionada na colaboração): "faz sentido analisar por Territórios de Identidade? que análises? existe dado→decisão em nível TI? há agrupamento melhor?". Grounding novo no compêndio §8.3 (TI, IBGE 2017, MAUP). Texto integral na Rodada 5 do Apêndice A.
**Veredito da persona — três camadas:**
| Camada | Malha | Uso |
| ---------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Default operacional** | **Território de Identidade (27)** | Decisões regionais reais: carteiras de assessor, giros de agenda, dobradinha regional, diálogo com governo/partido (PPA, CODETERs, PGP "nos territórios" — é a língua que o campo já fala; Lula venceu nos 27 TIs, Jerônimo em 22/27) |
| Secundária analítica | Regiões Geográficas Imediatas (IBGE 2017) | Rota/logística (rede urbana real: cidade-polo → satélites; onde senta o comitê regional) e malha de contraste no teste de sensibilidade MAUP |
| Auditoria (roda 1×, não se mantém) | Cluster eleitoral empírico (autocorrelação espacial à la Carvalho & Santos) | Mapear onde a fronteira do TI corta clusters reais → nota permanente "este TI são dois mundos; não confie na média dele" |
Descartados: microrregiões antigas (malha aposentada pelo IBGE em 2017; só para dialogar com literatura) e "regiões de mídia" (o mecanismo validado é contato pessoal, que não viaja por sinal de rádio; sem malha operacionalizável).
**Regra de bolso:** decisão sobre **gente e logística regional → TI**; decisão sobre **voto e mediação → praça**. TI não tem broker, não tem prefeito, não vota. O TI Metropolitano (24,4% do eleitorado) é exceção permanente: entra sempre decomposto (zonas de Salvador + municípios RMS).
**Análises que só funcionam (ou só estabilizam) no nível TI:** balanço de portfólio (distribuição da votação/pledges pelos 27 TIs + concentração regional — "dependo de quantas regiões?"); gap regional de captura (Σ nominais ÷ Σ teto de Lula por TI — estabiliza o que é ruidoso em município pequeno); leitura da majoritária por TI (os 5 TIs onde o campo perdeu o governador = contexto adversário que reprecifica todas as praças dali de uma vez); rota/giro regional; dobradinha regional (gap de captura × força regional dos estaduais do campo); **benchmark intra-TI** ("capturo 20% do teto numa praça e 5% na vizinha do mesmo TI" — comparação pareada de pobre que isola estrutura/rede); sanity check de metas (Σ metas de praça vs. participação histórica do TI).
**Padrões dado→decisão específicos do nível TI (T1–T5, mesmo formato e estatuto de P1–P12):**
| # | Padrão | Gatilho | Leitura (e descartes) | Menu de ações | Contraindicação |
| --- | -------------------------------------- | --------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| T1 | **Gap regional de captura** | TI no quartil superior de votos de Lula, captura agregada < ~0,7× a minha estadual, minoria das praças com rede | Região onde o campo existe em massa e falta ponte. Descartar: correligionário "dono" da região (P3 regional); média puxada por praça gigante (olhar mediana) | 1º eleger 2–3 praças-cabeça como portas; 2º organizações de escala regional (CODETERs como índice); 3º dobradinha regional; 4º giro só após rede mínima | Tratar o TI como homogêneo e pulverizar nas 15 praças de uma vez |
| T2 | **Dependência regional do portfólio** | 2–3 TIs somando > ~60% da votação/pledges; nº efetivo de TIs caindo | Concentração macro (versão regional do padrão que pune derrotados); choque regional derruba praças juntas (cluster) | 1º dispersão dirigida a 1–2 TIs adjacentes aos fortes; 2º manutenção reforçada das âncoras; 3º rebalancear metas | Dispersão cosmética (P6 multiplicado); não desmontar a manutenção do núcleo para financiar expansão |
| T3 | **TI de contexto adversário** | TI onde o campo perdeu a majoritária, com minhas praças carregando metas de crescimento | Ambiente regional contra (executivo local do outro lado = brokers alinhados ao adversário — Borges). Descartar: ilhas próprias que resistem | 1º reprecificar metas do TI para baixo e fechar a conta noutra região; 2º defesa reforçada das praças-ilha; 3º nichos setoriais em vez de narrativa regional | Gastar agenda para "virar o território" (persuasão de região hostil ≈ 0); não abandonar as ilhas |
| T4 | **Praça fora da curva regional** | No mesmo TI: melhor praça ≥ 3–4× a mediana, ou praça relevante < 1/3 da mediana | Contexto controlado pelo recorte → desvio aponta estrutura/rede/broker; o farol prova que o teto regional é alcançável. Descartar: idiossincrasia; TI heterogêneo demais para controle | 1º diagnóstico pareado farol×lanterna; 2º replicar o mecanismo, não a tática; 3º liderança-ponte (P12) | Replicação cega; farol como régua punitiva do assessor (alimenta gaming) |
| T5 | **Agenda dispersa contra a geografia** | Visitas na mesma semana em TIs distantes, com TI priorizado cheio de praças contíguas sem visita | Agenda por demanda ("quem grita mais leva"), não por desenho — lacuna desenho-operação na forma mais cara (deslocamento) | 1º reagrupar em giros por TI (2–3 dias, contíguas, narrativa regional de brinde); 2º casar com calendário da dobradinha; 3º cada visita ativa rede das vizinhas | Rigidez geométrica: giro perfeito que perde a janela do prefeito é giro errado |
**Salvaguardas MAUP (para a análise agregada não induzir decisão errada):**
1. **Escala da decisão declarada** — análise de TI autoriza decisão de TI; alocação em praça exige dado de praça; média regional nunca decide destino municipal.
2. **Agregado nunca viaja sozinho** — todo número de TI acompanha mediana, amplitude e a praça crítica nomeada (a média que esconde reduto em risco).
3. **Razão dos agregados, não média das razões** — captura por TI = Σ nominais ÷ Σ teto; divergência entre as duas contas é alarme de heterogeneidade.
4. **Teste de sensibilidade de malha** — conclusão regional que sustenta decisão cara roda em TI e em Região Imediata; o que só aparece numa malha é artefato de fronteira.
5. **Malha congelada por ciclo** — limites de TI mudam por PPA; fixar a malha vigente e recompor a série 2014/2018/2022 nela.
6. **Metropolitano sempre decomposto.**
7. **Nenhuma agregação é "a verdadeira"** — TI é lente de coordenação; a praça é onde o voto mora; em conflito, a praça manda no voto e o TI na logística.
### 6.6 Votos disponíveis: brancos, nulos e abstenção
> Rodada I (adicionada na colaboração). Grounding novo no compêndio §2 ("alienação eleitoral") e fontes 62–67. Regra nº 1 da literatura: **nunca somar os três num número só** — abstenção tem base ecológica/estrutural (distância, migração sem transferência de título); brancos e nulos têm base atitudinal (indiferença/protesto, escolaridade). Determinantes distintos, tratamentos distintos.
- **A fatia acionável é o roll-off** (brancos+nulos de DF − brancos+nulos da presidencial, por praça): eleitor que compareceu, votou válido no majoritário e não completou o voto de deputado — não é alienado, é **desassistido na disputa de DF** (sem número na cabeça entre 400+ candidatos). É o voto mais barato que existe, com três ressalvas: o estoque é público (todos os ~500 candidatos veem a mesma sobra — sem rede é miragem de todos igualmente); descontar o nulo de protesto (TSE separa branco de nulo por cargo); e a leitura "eleitor do campo" é inferência ecológica, não lista de nomes.
- **Abstenção é contexto e correção de denominador, não mercado:** praças pequenas do interior passam de 35% (eleitor não-residente) — potencial e votos em jogo devem usar **válidos projetados do cargo**, nunca aptos; senão a análise infla exatamente as praças com menos gente de verdade. Dominância e captura já são imunes por construção (votos ÷ votos).
- **Nota aritmética:** brancos/nulos saem do denominador do QE — a meta se calcula sobre válidos projetados do cargo DF, não sobre aptos nem sobre válidos da presidencial.
- **Contraponto (quando vira armadilha):** nulo é protesto e branco da majoritária é indiferença — convertê-los é persuasão (≈ 0); abstenção estrutural não se move com campanha proporcional (cadastro fecha meses antes; logística de eleitor tem fronteira jurídica); e "20% de abstenção + X% de branco = milhões de votos soltos" é métrica de vaidade eleitoral — a cadeira fecha com ~130 mil votos orientados. Régua de bolso: **enquanto houver simpatizante alcançável pela rede sem pedido completo feito, o voto mais barato está DENTRO da rede, não na estatística de alienação.**
Padrões novos do catálogo (formato de §6.1; detalhe na Rodada 6 do Apêndice A):
| # | Padrão | Gatilho (resumo) | Ação-chave | Contraindicação |
| --- | ---------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ |
| I-A | **Roll-off alto onde tenho rede** | Diferencial DF×majoritária no quartil superior, estável, dominado por brancos, com rede ativa e teto de Lula alto | "Pedido completo" no script das lideranças (voto com número); material de urna distribuído PELA rede na semana final; meta revisada para cima com o headroom | Roll-off sem rede (estoque não é meu); não é licença para persuadir hostil |
| I-B | **Denominador inflado** | Praça pequena, abstenção > ~30–35% na série, meta calculada sobre aptos | Recalcular sobre válidos projetados; rebaixar meta e realocar; avaliar ponte de conterrâneos na capital | "Mutirão contra abstenção" (cadastro fechado, elasticidade nula, risco jurídico) |
| I-C | **Núcleo desmobilizado em defesa** | Reduto onde comparecimento E teto de Lula caíram juntos, com rede ativa | Ativação relacional do núcleo na reta final; presença casada com ativação; lembrete via lideranças (dentro do jurídico) | Sem rede não há núcleo endereçável; magnitude é evidência americana (voto facultativo) — não prometer pontos |
### 6.7 Agenda do candidato: playbook de presença
> Rodada J (adicionada na colaboração). Grounding novo no compêndio §1 (Shaw 1999; Herr 2002; Holbrook & McClurg 2005): aparições têm efeito **mensurável porém modesto**, e o canal é **mobilização do núcleo, não conversão**. Para DF na Bahia (sem amplificador de mídia estadual), a visita opera pelo circuito da mediação. Tese central: **a visita vale o que a rede local converte dela — agenda é multiplicador de estrutura, não substituto.** Como o efeito médio é modesto e a agenda é o recurso mais escasso, o que importa é a variância entre praças.
**Elegibilidade (as 5 condições, todas):** volume (válidos projetados relevantes) · espaço (headroom: gap vs. teto do campo, roll-off, ou estoque a defender) · rede de recepção (responsável + lideranças + capacidade de evento) · janela política (broker disponível, dobradinha casável, data local) · encaixe em giro (deslocamento amortizado). Conceito: retorno ≈ votos em jogo × headroom × conversão da rede ÷ custo de deslocamento.
**O calendário muda o produto da visita:**
| Fase | Produto | Audiência | Alvo |
| ------------------------- | ------------------------------------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------ |
| Julho–agosto (construção) | ESTRUTURA: rede, dobradinha local, compromisso de lideranças | Dezenas de lideranças, não multidão | Ataque/expansão onde a rede precisa nascer; mais horas por praça, menos praças |
| Setembro (consolidação) | Colheita: evento de compromisso, pledges com data, cobrança de meta | Rede existente | Balanço defesa/ataque pela triagem §6.2 |
| Última semana (ativação) | VOTO: comparecimento orientado, completar o voto (roll-off I-A) | Centenas do núcleo mobilizável | Só redutos e maior estoque comprometido; frente nova = dinheiro queimado |
**"Não vá" explícitos:** praça perdida (visita não persuade hostil e financia a foto do adversário); sem rede de recepção (evapora — primeiro rede, depois candidato); praça-troféu no teto (P10); pedido de broker sem dado (vira J-B); "marcar presença" (pulverização). **Intermediários:** coordenador/vice-liderança para construção; assessor para checagem/cobrança; parceiro de dobradinha onde ele é forte; emissário discreto em praça de correligionário; carta/vídeo para compromisso social de baixo retorno (gesto, não mobilização).
Padrões novos do catálogo:
| # | Padrão | Gatilho (resumo) | Ação-chave | Contraindicação |
| --- | --------------------------------- | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| J-A | **Elegível madura sem visita** | Topo do score de elegibilidade, pledges crescendo, sem visita no ciclo, giro passando perto | Incluir no giro; desenhar como evento de compromisso (coleta de pledges com rede mobilizada de véspera); casar com majoritário/dobradinha | Visita isolada fora de giro (custo come retorno); visita antes de a rede conseguir recepção digna |
| J-B | **Visita pedida vs. justificada** | Pedido de broker/prefeito para praça de score baixo | Contra-oferta de custo menor (coordenador, vídeo, parada curta em giro); se broker-hub, precificar como manutenção de relação e REGISTRAR como decisão política; cobrar contrapartida (meta de pledges do anfitrião) | Recusa seca a broker-chave; ceder por default (agenda capturada por quem grita) |
| J-C | **Composição do giro** | Giro regional aprovado, 2–3 dias, 4–6 praças candidatas | Âncora à noite na praça de maior estoque (compromisso); satélites de dia (construção); fechar em expansão contígua com liderança-ponte; anunciar à rede e usar o evento como deadline de pledge | Giro-turismo (8 paradas sem conversão); quilometragem não é métrica |
### 6.8 Níveis de envolvimento e despriorização
> Rodada K (adicionada na colaboração). Priorizar uma praça é despriorizar outra — a escala substitui a dicotomia por 5 níveis com regras de movimento. Estatuto: refinamento operacional da territorialização codificada (Manhanelli/AVM) + lógica de alocação de Ames; critérios ilustrativos, calibráveis.
| Nível | Nome | O que recebe | Critério de dados |
| ----- | ------------------- | -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| N0 | Monitorar | Série TSE anual + log de sinais; sem rede, sem meta | Perdida estrutural ou volume ínfimo sem contiguidade estratégica |
| N1 | Presença de mandato | Atendimento/mediação, canal nomeado; sem meta de campanha | Praça-troféu no teto (P10); despriorizada com relação a preservar; semente pós-K-B |
| N2 | Rede sem agenda | Responsável + lideranças + meta modesta de pledges; sem visita | Headroom moderado, volume médio, rede construível; expansão nascente (P12) |
| N3 | Rede + agenda | N2 + giros + material | Defesa relevante, ou ataque com rede madura e elegibilidade alta (§6.7) |
| N4 | Investimento pleno | N3 + recurso dedicado + dobradinha + evento âncora | Praças que individualmente carregam fração significativa da meta (topo da concentração da própria votação) |
**Regras de movimento (anti-churn):** promoção exige gatilho positivo persistente 2 semanas + checagem de capacidade; rebaixamento exige não-resposta 3–4 semanas, perda estrutural confirmada ou rebalanceamento explícito; praça não muda de nível 2× no mesmo mês; pulo de 2 níveis proibido salvo choque triangulado; promoção ganha janela de proteção de 3 semanas. Sanidade: se >~10% das praças "querem" mudar de nível numa reunião, o problema é o critério.
**Rito de despriorização:** decide coordenador + assessor de área na reunião quinzenal (fronteira com correligionário/federação sobe para decisão política); registro escrito **ex-ante com motivo E sinais de reversão nomeados** (despriorização é hipótese testável); comunicação sem a palavra — externamente só existem "campanha" e "presença de mandato".
**Custo político e mitigação:** broker que descobre que virou "nível 1" lê desvalor — e broker humilhado é o alvo mais fácil do correligionário. Mitigações: vocabulário duplo (níveis internos não circulam — a lista de prioridades é o mapa de onde você não vai defender); todo rebaixamento acompanhado de gesto de mediação concreto (o que se rebaixa é o recurso de campanha, nunca a relação — 2030 existe); redeployment em vez de dispensa ("precisamos de você na praça vizinha"); nunca prometer a visita que não virá.
Padrões novos do catálogo:
| # | Padrão | Gatilho (resumo) | Ação-chave | Contraindicação |
| --- | -------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| K-A | **Não responde a investimento** | Esforço registrado no ciclo com pledges/captura parados 4+ semanas | Autópsia execução×terreno (1 semana; descartar sub-registro E2 e execução ruim antes de culpar o terreno); rebaixar UM nível com sinais de reversão ex-ante; realocar para praça-irmã do TI com headroom (T4) | Rebaixar dentro da janela de proteção; confundir resposta lenta com nula em praça grande |
| K-B | **Perdida vestida de oportunidade** | Headroom aparente (roll-off, campo razoável) mas dominância consolidada de outro e captura mínima em 3 eleições | Classificar N0/N1 por escrito e tirar da lista de tentação; registrar sinal de reversão ("se fulano sair, reavaliar"); semente mínima se contígua a reduto | Roll-off sozinho como tese de entrada; queimar relação local ao sair (perdida neste ciclo, não nesta década) |
| K-C | **Meta impossível (o erro é a conta)** | Praça N3 saudável cuja meta exige múltiplo implausível da captura histórica | Recalibrar meta para múltiplo plausível; redistribuir o déficit para headroom comprovado; manter o nível se o retorno absoluto segue bom (rebaixar meta ≠ rebaixar praça) | "Resolver" empilhando recurso; punir assessor por meta que a coordenação errou (ensina a rede a inflar — G4) |
## 7. Oportunidades (OST draft → trilhas do [roadmap](../roadmap.md))
**Outcome:** decisões semanais de alocação tomadas com o Teqo aberto na mesa (e Little Hire vivo até 16/08).
| # | Oportunidade | Solução candidata | Trilha |
| --- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------- |
| O-A | "A conta não fecha" é a única frase que sobrevive à mesa | Conta do quociente: meta estadual → metas por praça (potencial local); cobertura/delta no dashboard | A (sucede A5/A7) |
| O-B | Alocação se decide em lista, não em mapa | Fila de praças com as 7 colunas do §5.2, ordenação por déficit descoberto | A/C (estende lista de Praças) |
| O-C | Mapa achatado não discrimina | Escala relativa (quantis/LQ/rank) + símbolo proporcional por votos em jogo; % válidos mantido como leitura | B (sucede B11/B12) |
| O-D | Defesa/ataque calibrado para majoritária | Recalibrar `electionInsights` com âncoras relativas (LQ / share da cadeira marginal); classificação multi-eixo | A (revisita A5-2) |
| O-E | Sinal de rede vira anedota estrutural | Registro datado sem sobrescrita: trajetória de pledges, log-de-1-linha de sinais por praça, esforço/agenda por praça | C (estende plazaUpdate/actionPlan) |
| O-F | Base envelhece na reta final | Frescor de pledge/liderança como sinal de 1ª classe + "coluna de vergonha" (praça priorizada sem responsável) | A/C |
| O-G | Campanha joga fora o próprio experimento | Backtest pós-eleição (pledge vs. realizado por zona; calibração de limiares) | A (pós-eleição; barato se O-E existir) |
| O-H | Staff não tem tempo de analisar 436 praças — o grosso da análise deve vir pronto | Motor de sugestões: computa os gatilhos P1–P12 (§6.1) por praça, apresenta menu de ações com fonte/estatuto/leitura-alternativa, aplica a triagem §6.2 e a histerese §6.4; decisão e descarte registrados | A (consome O-A/O-B/O-C/O-E; evolução natural de `NucleusInsights`/A5) |
| O-I | Decisões regionais (assessor, giro, dobradinha, diálogo com o estado) não têm camada própria | Camada TI: praça→TI no catálogo, rollups com salvaguardas MAUP (§6.5), padrões T1–T5, benchmark intra-TI, giros de agenda; geometria dos 27 TIs já existe no repo (`bahia-identity-territories.topo.json`, B2) | A/B (agrega sobre O-A/O-B/O-C; mapa TI sucede B12) |
| O-J | Agenda do candidato decidida por pressão, não por desenho | Planejador de presença: score de elegibilidade (5 condições §6.7), fase do calendário (construção/consolidação/ativação), compositor de giro (J-C), registro de visita pedida vs. justificada (J-B); consome `actionPlan` + pledges + baseline | A/C (estende `actionPlan`/C3) |
| O-K | Priorizar/despriorizar é binário e implícito — e recursos são escassos | Nível de envolvimento N0–N4 por praça (critérios §6.8) com regras de movimento/histerese, sinais de reversão registrados ex-ante e vocabulário duplo (nível interno nunca exposto fora da coordenação); roll-off e válidos projetados no cálculo de potencial/meta | A (estende `plaza` strategy + O-A/O-D) |
Regra de adoção transversal (E1): **registro no fluxo de poder** — a reunião de recurso começa pela lista; praça fora da lista não existe na discussão; o campo dita, a sede registra; devolução visível para quem alimenta.
## 8. Anti-goals (o que NÃO construir)
1. Funcionalidade de "persuasão de território hostil" (evidência ≈ 0; voto mais caro do mercado).
2. % estadual absoluto como KPI de progresso ou escala default do mapa.
3. Contagem bruta de cadastros como métrica de sucesso (vaidade sem denominador).
4. Cartograma / geometria distorcida (mata o reconhecimento de campo).
5. Integração/painel de pesquisas estaduais de intenção de voto para DF (ruído amostral).
6. Sobrescrita de valores de pledge/estimativa (destrói o backtest e o "o que sabíamos em 15/08").
7. Formulários de N campos para o assessor de rua (caso-morto: extração sem devolução; o epistêmico morre primeiro sob cansaço).
8. Sugestão como regra automática ou ação disparada sem humano no loop — o motor detecta e diagnostica o estrutural; escolher e executar é do staff (§6.3). Não estimar probabilidades/elasticidades sem dado (falsa precisão).
9. Média regional decidindo alocação de praça (MAUP): rollup de TI sem mediana/amplitude/praça crítica; TI Metropolitano tratado como uma unidade; malhas comparadas entre eleições sem congelar limites (§6.5).
10. "Caça ao alienado" como estratégia: perseguir abstenção estrutural (cadastro fechado, elasticidade nula) ou nulo de protesto (persuasão ≈ 0); somar abstenção+brancos+nulos num "reservatório de votos soltos" (métrica de vaidade eleitoral — §6.6). Potencial/meta calculado sobre aptos em vez de válidos projetados.
11. Nível de envolvimento (N0–N4) exposto para fora da coordenação — a lista de prioridades é o mapa de onde a campanha não vai defender; externamente só existem "campanha" e "presença de mandato" (§6.8).
## 9. Lacunas para validar com o coordenador real (ponte para `CUSTOMER.md`)
**Pergunta nova para a sessão (F2):** "Me conta a **última vez que um número — qualquer número — mudou uma decisão sua de território**: que número era, quem trouxe, em que reunião, o que mudou no dia seguinte?" + espelho ("e quando o número dizia uma coisa e você seguiu a política — se arrependeu?"). E **pedir para ver os artefatos** (planilha da última campanha, caderno, grupo de coordenação): artefato não tem memória seletiva.
**Apostas da persona (confirmar/derrubar):**
| Aposta (persona apostaria dinheiro) | Hipótese frágil (pode cair sem drama) |
| ------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| A ameaça nomeada primeiro será correligionário/federação, não adversário externo | O gargalo é conversão (pode ser fundo, jurídico, rádio, conjuntura) |
| Canal real de informação = broker por voz/WhatsApp, sem registro datado | A tese da persuasão-zero será aceita pelo coordenador |
| Agenda do candidato é A decisão semanal e o recurso mais brigado | A OMTM "cobertura da meta" corresponde a como ele já pensa |
| Nenhuma métrica com nome acadêmico é calculada; instrumentos reais = série TSE simples + lista dos maiores municípios do próprio voto | Pledges auditáveis operam em escala real (incentivo do broker é inflar) |
| Dinheiro será apontado como restrição dominante | Classificação relativa/limiares calibrados sobrevive ao contato com a mesa |
**Aviso metodológico da própria persona:** descontar os vieses dela (estruturalista, quantitativa, de campo) — se o coordenador falar de carisma, rádio e última semana, **não é ruído**; é o que o modelo dela subpesa (2006 existiu).
**Leituras/dados priorizados antes de mexer em análise territorial (F3):** 1º o dado (série TSE município×zona BA 2014/2018/2022 + majoritário 1º turno; calcular captura/LQ em casa — já temos via `electionTally`/`electionCandidateVote`); 2º Nicolau 2006; 3º Avelino/Biderman/Barone 2016 + Borges/Paula/Silva 2016; 4º Carvalho & Santos 2015; 5º Kalla & Broockman 2018 + handbook Gerber & Green; 6º Bezerra 1999 (para entrevistar melhor); 7º só então cartografia (Brewer & Pickle; UCGIS; Roth et al.).
---
## Apêndice A — Transcrição da entrevista sintética
> Persona executada em subagent isolado (contexto: persona + compêndio + perguntas da vez). Perguntas do roteiro; follow-ups do entrevistador. Texto integral das respostas, sem edição.
### Rodada 1 — Blocos A e B
**A1.** Deixa eu começar delimitando o que sei e de onde sei. A literatura brasileira não tem uma etnografia do coordenador-geral de campanha proporcional — o que temos é etnografia do mandato (Bezerra 1999; Kuschnir 2000), a prática de consultoria codificada (Manhanelli) e, para operação de campanha propriamente dita, etnografia americana (Nielsen, _Ground Wars_, 2012), que exige tradução. Então o que vou descrever é um composto dessas fontes com o que vi em consultoria — trate como caso típico, não como achado documentado.
Numa semana de setembro, o coordenador de uma campanha de deputado federal administra três filas: a agenda do candidato, o recurso (dinheiro, material, combustível, gente paga) e os acordos locais. A agenda é o ativo mais escasso — são ~30 dias de reta final para mais de 400 municípios; cada dia do candidato numa praça é um dia negado a dez outras. O recurso segue a mesma lógica. E os acordos: prefeito aliado que quer o candidato no palanque dele, vereador que condiciona a estrutura a um compromisso, dobradinha com o candidato a estadual que impõe roteiro conjunto — essa mediação com brokers é o cotidiano que Bezerra e Kuschnir descrevem para o mandato, só que comprimido em semanas.
O que ele decide de fato, na minha leitura: o roteiro fino da agenda (qual praça ganha o dia), a alocação marginal de recurso e o momento de cortar uma praça. O que ele só referenda: compromissos que o candidato assumiu diretamente — candidato é notório por furar o próprio plano —, o desenho da dobradinha, que vem do partido ou da federação e não dele (Nicolau 2006; a mecânica das dobradinhas está documentada na imprensa), e as demandas politicamente irrecusáveis dos brokers grandes. Mas atenção: essa partição decide/referenda é hipótese minha a partir da estrutura de incentivos; a fronteira exata, numa campanha real, só entrevista de campo com o coordenador confirma. E Nielsen tem um achado que eu levaria para essa entrevista: a lacuna entre o desenho analítico e a operação real é onde campanhas quebram — a pergunta boa não é "o que você decide", é "o que você desenhou e não conseguiu executar".
**A2.** Preciso ser honesta: a literatura que carrego não documenta um caso nomeado de realocação territorial no meio de campanha de DF — o que ela documenta é a lógica de alocação (Ames 1995: investir em função de dominância atual, barreira de entrada, vulnerabilidade à invasão e fraqueza própria na eleição anterior). Então vou dar um caso estilizado da minha consultoria, composto de mais de uma campanha, e marcado como tal.
Caso típico: campanha do campo, incumbente, com reduto médio no interior — dominância local na casa de 20–30%, respondendo por uns 15% da votação total do candidato. Em meados de setembro, os sinais: o vereador que era o broker principal para de atender, a mobilização de rua esvazia, e chega a informação de que um candidato da mesma federação fechou com o prefeito — Nicolau tem razão, as maiores traições são entre correligionários. O disparador não foi dado, foi rede: broker é sensor, é exatamente o que Bezerra descreve. A informação usada para decidir foi a série TSE por município e zona das duas eleições anteriores — quanto voto havia em jogo ali e quanto dependia daquele broker — mais o mapa de compromissos de lideranças que a campanha mantinha em planilha. A decisão: não abandonar, mas trocar o tipo de investimento — tirar uma visita do reduto seguro, colocar duas passagens curtas na praça ameaçada com o candidato fechando pessoalmente com as lideranças de segunda linha que o prefeito não controlava, e mover o recurso de material para uma praça de expansão vizinha onde o desempenho relativo vinha acima da média do próprio candidato.
O que aconteceu depois: seguraram parte da perda — caiu, não desabou — e a expansão vizinha compensou. Agora, pelo meu próprio critério de evidência, isso é anedota: n=1, sem contrafactual, contado por quem participou. O que eu sustento com literatura não é o desfecho, é o mecanismo: vulnerabilidade à invasão é categoria real do modelo de Ames, a competição intrapartidária é o vetor mais provável dela, e a informação decisiva veio da rede de mediação, não do relatório. Se o desfecho generaliza, não sei.
**A3.** O erro mais bem documentado é o excesso de concentração. Avelino, Biderman e Barone (2016), com a série 1994–2014, mostram que eleitos são sistematicamente menos concentrados que derrotados — a trajetória vencedora é base local, depois região, depois dispersão. O candidato com reduto tem um incentivo perverso: o reduto é onde ele é amado, onde a agenda rende foto, onde os brokers o puxam — e ele fica girando ali, empilhando dominância onde já era dominante, enquanto o voto marginal estava mais barato fora. Isso é padrão populacional documentado; o caso individual de "a campanha X quebrou por isso" a literatura não nomeia, e eu não vou nomear.
O segundo erro caro, e esse eu marco como hipótese forte de literatura: gastar para virar território hostil. Kalla e Broockman (2018), meta-análise de 49 experimentos: efeito persuasivo médio do contato de campanha em eleição geral é zero. Campanha que aloca candidato e dinheiro para converter praça onde o campo adversário domina está comprando o voto mais caro do mercado. A ressalva de sempre — evidência majoritariamente americana, voto facultativo —, mas se o voto obrigatório muda algo, é para reforçar: o jogo aqui é orientar o simpatizante, não converter o hostil.
O terceiro é mais sutil: tratar o estado como distrito. Quem mede força por percentual estadual absoluto acha que 3% é fracasso — quando o recordista da Bahia em 2018 teve 4,71% dos válidos (e-Legis 2021) e, em 2022, a maioria das 39 cadeiras saiu na faixa de 80 a 150 mil votos. Campanhas erram alocação porque erram a métrica: perseguem presença estadual difusa em vez de fechar a conta do quociente praça por praça. Qual dos três é o mais caro em reais por voto, eu não tenho como dizer — elasticidade de gasto territorial dentro de campanha ninguém mediu direito no Brasil, que eu saiba.
**A4.** O elenco a literatura descreve bem: prefeitos e vereadores como brokers (Bezerra; Kuschnir; a linha de conexões multinível), o partido ou federação — que define lista, puxador e dobradinhas, decisões que condicionam tudo e não passam pelo coordenador —, o parceiro estadual da dobradinha e o próprio candidato, que numa campanha de incumbente é o dono da rede de mediação do mandato. E há um ator que aparece pouco na conversa e muito nos dados: o palácio. Borges, Paula e Silva (2016) mostram que acesso ao executivo — estar na coalizão do governador — aumenta dominância municipal. Na Bahia pós-2006, com o campo segurando o governo do estado, parte da "decisão territorial" de um DF governista é, na prática, decidida pela geografia de presença do governo.
Quando dado e política colidem, quem ganha? No sentido forte: não sei — isso é exatamente o que só entrevista com quem sentou à mesa responde, e suspeito que varia por campanha. Minha hipótese, desconfortável para uma quantitativista: a política ganha na maioria das vezes, e nem sempre está errada. O compromisso de um prefeito É um dado — um dado que a planilha não tem. Hersh mostra que campanhas enxergam o eleitorado através dos dados que possuem; quando a base é pobre, a intuição política do coordenador pode carregar mais informação que o relatório. Na minha experiência de consultoria — caso típico, não achado —, o dado ganha numa condição: quando chega traduzido na aritmética da cadeira. "Se mantivermos essa agenda, a conta não fecha o quociente" sobrevive à mesa; "o mapa está vermelho aqui" não sobrevive.
**B1.** Se é para apontar um só: a conversão de lealdade programática difusa em voto nominal, praça por praça — o problema da transferência. O racional: na Bahia pós-realinhamento, o voto do campo existe em escala majoritária, mas é de Lula e do governador antes de ser de qualquer deputado (Singer 2009/2012; Carvalho & Santos 2015 mostram os clusters espaciais do voto petista desde 2006). Só que a lista aberta não paga em voto de campo, paga em voto nominal: quociente projetado na casa de 190–200 mil, cadeira saindo entre 80 e 150 mil para a maioria, e uma competição que é intrapartidária antes de ser interpartidária (Nicolau 2006). O eleitor lulista do semiárido vai comparecer — o voto é obrigatório — e vai votar no campo para presidente e governador. A questão do deputado é se esse eleitor lembra do número DELE na urna. E a evidência experimental diz que isso não se resolve com mídia: persuasão média zero (Kalla & Broockman), efeito crescente com a pessoalidade do contato (Green & Gerber). Resolve-se com rede de confiança: liderança nomeada, com compromisso auditável, na praça certa.
Por que esse gargalo e não dinheiro? Admito a tensão de frente: Speck e Cervi mostram que dinheiro é o maior efeito total sobre votos, acima de rádio/TV e memória eleitoral — e eu tenho viés de campo, simpatizo com "organização > dinheiro" mais do que a evidência de financiamento autoriza. Minha defesa é operacional: para uma campanha do campo que não é puxador, o dinheiro é quase exógeno — o fundo se decide fora e não cresce por vontade do coordenador. A cobertura organizacional é a variável que a campanha controla. E resolvê-la destrava o resto: com rede mapeada e compromissos por praça, a alocação de agenda e recurso ganha critério — o modelo de Ames vira operacional —, a conta do quociente decompõe, e o pouco dinheiro vai para a margem, que é onde a literatura de financiamento diz que ele rende mais (o "efeito Jacobson" brasileiro, BPSR 2014). Marco o estatuto: hipótese de literatura, coerente e testável. Se o gargalo real de 2026 é esse ou é outro — jurídico, fundo, conjuntura de última semana, que 2006 provou que existe —, só o campo diz.
**B2.** O falso diagnóstico clássico é o déficit de persuasão: "nosso problema é convencer quem ainda não é nosso". Campanha atrás na conta acha que precisa de mensagem melhor, mais mídia, mais impulsionamento, um marqueteiro que vire o jogo. A meta-análise de Kalla e Broockman é brutal nesse ponto: 49 experimentos, efeito persuasivo médio zero em eleição geral. O que contato de campanha faz, e faz bem, é mobilizar e orientar quem já é simpático — na média dos experimentos de porta-a-porta, 4,3 pontos percentuais de comparecimento por contato pessoal efetivo (Gerber & Green 2000), com o efeito caindo conforme o método fica impessoal. O diagnóstico verdadeiro costuma ser outro: a campanha não sabe onde estão os simpáticos dela nem tem rede para chegar neles — problema de cobertura e de informação, não de retórica. Ressalva de rigor: evidência majoritariamente americana, voto facultativo; mas a tradução para cá tende a reforçar o argumento, porque aqui ninguém precisa ser convencido a comparecer — precisa ser lembrado do número.
Há um segundo falso diagnóstico que vejo direto em quem trabalha com número: "estamos fracos no estado", medido por percentual estadual absoluto ou por termômetro de multidão e rede social. O topo da disputa de DF na Bahia foi 4,71% dos válidos em 2018 (e-Legis 2021) — fraqueza estadual em percentual absoluto é a condição estrutural de todo mundo, não é informação. E multidão em evento, seguidor, cadastro bruto: na minha tabela, isso é vaidade, não evidência. Hersh acrescenta a camada perversa: como a campanha enxerga o eleitorado através dos dados que tem, uma base ruim não é só inútil — ela fabrica o diagnóstico errado com cara de ciência.
**B3.** Primeiro: parar de comprar contato impessoal em escala. Robocall tem efeito estatisticamente indistinguível de zero e mala direta rende meio ponto de comparecimento nos experimentos americanos (Gerber & Green 2000); num contexto em que comparecimento nem é o problema, o equivalente brasileiro — disparo em massa, panfletagem fria, santinho sem rede por trás — é dinheiro queimado. A hierarquia da evidência é monotônica: quanto mais pessoal o método, maior o efeito. Campanha pobre deveria subir nessa hierarquia, e o instinto é descer, porque o impessoal escala e dá sensação de presença.
Segundo: parar de investir em virar território hostil — Kalla e Broockman de novo, e a própria territorialização prática codificada na tradição de consultoria (Manhanelli; a classificação operacional de zonas já recomendava: praça perdida recebe o mínimo). Terceiro: parar de pulverizar a agenda do candidato para "marcar presença" no estado inteiro. E aqui uma distinção fina, porque parece contradizer Avelino e Biderman — não contradiz. A dispersão vencedora é estratégica e construída ao longo de ciclos: base, região, expansão. Pulverização de reta final — um dia em cada praça, sem rede local que capitalize a visita — não constrói nem dominância nem base; visita sem broker que a converta em compromisso evapora. É a lacuna desenho-operação do Nielsen outra vez.
E uma quarta, que ofereço como hipótese minha derivada da aritmética, não como achado publicado: parar de pagar leitura estadual agregada. Pesquisa de intenção de voto estadual para quem disputa na faixa de 1 a 3% dos válidos mede ruído — a margem de erro engole o sinal. O recurso analítico de uma campanha pobre rende mais na série do TSE por município e zona, que é pública e gratuita, cruzada com a cobertura da própria rede. O que a evidência manda fazer com o que sobra dessas quatro paradas: contato pessoal estruturado via rede de confiança — o _relational organizing_ que a edição recente de _Get Out the Vote_ aponta como fronteira — nas praças onde a conta da cadeira se decide. Com a ressalva final de rigor: o custo por voto dessas alternativas ninguém estimou experimentalmente no Brasil; a ordenação é sólida, os tamanhos exatos, não.
### Rodada 2 — Follow-ups + Blocos C e D
**FU1.** O que a literatura documenta é o canal, não o registro. Bezerra e Kuschnir mostram que a informação política circula pela mesma via que a mediação: relação pessoal, telefone, presença — o gabinete e a campanha como balcão contínuo de demandas e sinais. O registro dessa informação, a etnografia brasileira não descreve; o que vou dizer agora é caso típico da minha consultoria, marcado como tal. Na prática, o sinal circula por voz e WhatsApp: o assessor de área ouve que o vereador esfriou, conta ao coordenador no carro entre duas agendas, o coordenador guarda na cabeça ou num grupo de mensagem que rola para cima e some. O "banco de dados" real da campanha é a memória de meia dúzia de pessoas. Quando existe planilha, ela registra o compromisso do dia em que foi firmado — e nunca mais é tocada.
O que se perde, e aqui já é hipótese minha derivada, em quatro camadas. Primeiro, comparabilidade no tempo: sem registro datado, ninguém sabe se a praça esfriou ou se sempre foi morna — o sinal não tem série. Segundo, agregação: três brokers esfriando na mesma microrregião é uma invasão em curso (a categoria de Ames), mas se cada sinal vive numa conversa diferente, o padrão é invisível — sinais isolados não viram diagnóstico. Terceiro, triangulação: a versão do broker nunca é confrontada com o número — o voto histórico da praça, o compromisso declarado — então exagero e pânico passam pelo mesmo filtro, que é nenhum. Quarto, aprendizado: depois da eleição, não dá para auditar que sinal previu o quê, então a campanha seguinte recomeça do zero. E tem o efeito Hersh por baixo de tudo: a campanha enxerga o eleitorado através dos dados que possui; quando o dado é oral, a imagem do eleitorado é a agregação enviesada de quem falou com o coordenador por último. Pelo meu próprio critério de evidência, sinal não registrado é anedota estrutural — nem errado nem certo, apenas inutilizável.
**FU2.** Separo em retrospectivo (calculável hoje, com dado público) e prospectivo (o que se acompanha antes da urna). Retrospectivo, duas razões que eu calcularia por praça, série 2014–2018–2022. Primeira, a taxa de captura do campo: numerador = votos nominais do candidato na praça; denominador = votos de Lula (ou do governador, 1º turno) na mesma praça, mesma eleição. Isso operacionaliza a tese de Singer e o achado de Carvalho e Santos: o voto majoritário do campo é o teto potencial; a razão diz que fração desse teto o candidato capturou ali. Segunda, o share intracampo: numerador = os mesmos nominais; denominador = soma dos votos nominais de deputado federal de todos os candidatos do próprio campo/federação na praça — porque a competição relevante é intrapartidária (Nicolau), e uma praça pode ter captura baixa não porque o campo não vota nominal, mas porque vota no correligionário. As duas razões saem inteiras do TSE por município e zona; são fato calculável, e a interpretação delas como "conversão de lealdade" é a hipótese de literatura que assumo.
Prospectivo, que é o que a pergunta pede: antes da eleição não existe voto, existe compromisso. O numerador honesto é a soma de votos comprometidos auditáveis na praça — compromissos por pessoa nomeada, de liderança ativa, com data (minha tabela de evidência: pledge auditável é evidência; estimativa de multidão não é). O denominador é a meta da praça, que se constrói de cima para baixo: meta estadual = quociente eleitoral projetado na casa de 190–200 mil com margem (a conta de Nicolau, lembrando que cadeira na Bahia saiu entre 80 e 150 mil para a maioria em 2022 — a meta realista mira essa faixa, não o QE cheio); depois distribui-se por praça proporcionalmente ao potencial local, que eu definiria como voto histórico próprio mais uma fração do "campo não capturado" (teto de Lula × gap de captura). A razão semanal compromissos ÷ meta por praça é a medida de conversão prospectiva. E eu acompanharia junto o indicador antecedente dela: cobertura organizacional — % do voto histórico da praça coberto por liderança ativa, e praças priorizadas sem responsável. Agora, o limite: a elasticidade compromisso→voto realizado ninguém publicou para o Brasil, que eu saiba. Quanto um pledge vale em voto, não sei — só backtest pós-eleição (compromisso vs. voto realizado por praça) calibra isso. Até lá, a razão vale como instrumento de gestão, não como previsão.
**C1.** Preciso separar três estatutos. O que a literatura documenta é que os padrões existem e importam: dominância e concentração descrevem a estratégia real de deputados (Ames 1995), eleitos dispersam mais que derrotados (Avelino, Biderman e Barone 2016), o padrão prediz comportamento parlamentar (Carvalho 2003). O que a literatura NÃO documenta é uso dessas métricas dentro de comitê — não há etnografia de war room brasileiro com índice G na parede. Então o que segue é caso típico de consultoria.
O que muda decisão de verdade: a série histórica simples por município — subiu ou caiu — é universal, toda campanha olha; a dominância local entra implícita, como "cidade onde somos fortes"; e a concentração entra na forma de lista — os vinte municípios de onde vem meu voto — que é o instrumento mais usado e mais subestimado, porque cruzada com a dominância dá a leitura reduto/expansão que de fato realoca agenda. O quociente local funciona quando traduzido em frase: "aqui performamos 40% abaixo do nosso padrão" dispara investigação; ninguém chama de LQ. Já NEC, índice G e desequilíbrio T, nominalmente, campanha nenhuma que eu vi calcula — são refinamento acadêmico no sentido literal. Mas com uma ironia: o conteúdo do NEC e do T chega à mesa pela boca do broker — "lá tem cinco candidatos fortes brigando", "o líder local está contestado" — que é exatamente o que Silva e Moreira formalizam. A informação existe na campanha; o que não existe é ela sistematizada e comparável entre praças. Minha regra prática: métrica que sobrevive à mesa é a que vem acoplada a uma frase operacional; as demais morrem no slide.
**C2.** Uma só: cobertura da meta por compromissos auditáveis — a soma de votos comprometidos por lideranças ativas, dividida pela meta de votos, acompanhada no agregado e decomposta por praça, com o delta semanal como o número da reunião. O argumento de por que essa e não outra: até 16 de agosto não há propaganda, e a evidência diz que propaganda persuade pouco de qualquer forma (Kalla e Broockman); o que a campanha constrói nessa fase é o único ativo que a literatura diz ser eficaz e que ela controla — a rede de contato pessoal e mediação (Green e Gerber sobre pessoalidade; Bezerra sobre brokers). A métrica semanal deve medir o estoque desse ativo contra a conta da cadeira, porque a conta da cadeira é o critério de sucesso do sistema (Nicolau).
A decomposição, de cima para baixo, como descrevi na FU2: meta estadual na faixa realista da cadeira (80–150 mil em 2022, com o QE de 190–200 mil como referência de teto), distribuída por praça pelo potencial local — voto histórico próprio mais fração do campo não capturado —, com pesos deliberados por classe operacional: praça de defesa carrega meta de manutenção, praça de ataque carrega meta de crescimento. O painel semanal tem uma linha por praça: meta, comprometido, delta da semana, e a coluna de vergonha — praça priorizada sem responsável. Marco o estatuto: nenhum experimento valida esse KPI; ele é derivação da aritmética da lista aberta mais a evidência de mobilização. É hipótese de literatura bem fundada, e o teste dela é o backtest de outubro.
**C3.** A mais perigosa neste contexto é o número bruto de cadastros — apoiadores, contatos, nomes no sistema. É a métrica que mais cresce com esforço e menos se correlaciona com voto, porque não tem denominador: cem mil cadastros não dizem nada sem saber que fração do voto necessário cobrem, em quais praças, com que frescor. Está na minha tabela como vaidade ao lado da multidão em evento e de seguidores — e Hersh explica por que é pior que inútil: base grande e rasa fabrica confiança falsa, a campanha passa a enxergar o eleitorado através de um cadastro que não representa nem compromete ninguém.
A segunda, específica de DF: intenção de voto estadual de pesquisa. Para candidato que disputa entre 1 e 3% dos válidos — e o recordista estadual de 2018 teve 4,71% (e-Legis 2021) —, a margem de erro engole o sinal; a série inteira da pesquisa cabe dentro do ruído. Campanha que celebra "subimos de 1 para 2" ou entra em pânico com o inverso está reagindo a erro amostral. O % estadual absoluto como KPI é o mesmo erro em versão contábil: trata o estado como distrito majoritário, que é a análise errada de saída.
**C4.** Resposta direta: a literatura que eu carrego não valida pledge como dado confiável — não existe, que eu saiba, estudo brasileiro publicado calibrando compromisso declarado contra voto realizado. Isso é lacuna, e digo "não sei" sobre o fator de desconto verdadeiro. O que a literatura dá é o enquadramento: primeiro, a auditabilidade é o que separa o pledge da estimativa de multidão — por pessoa nomeada, ele é verificável em princípio, e é por isso que está do lado forte da minha tabela; segundo, o incentivo à inflação é estrutural, não desvio moral — na economia da mediação que Bezerra descreve, o capital do broker É o voto que ele diz entregar, então o número declarado é teto, nunca piso; terceiro, Hersh manda desconfiar da precisão percebida de qualquer base própria.
Como eu descontaria, em método (prática de consultoria, caso típico): manter duas colunas separadas — o que a liderança declara e o que a coordenação estima — e nunca somar a primeira em relatório de decisão. A estimativa se constrói com três operações: auditoria amostral (verificar uma amostra aleatória dos nomes por trás do número — a taxa de confirmação da amostra vira o fator de desconto daquela liderança ou praça); decaimento por frescor (compromisso não atualizado há semanas vale menos, tendendo a zero — dado velho sem frescor é o alerta do Hersh); e teto de plausibilidade (se a soma de pledges da praça excede o voto histórico do campo ali — o teto de Lula da FU2 —, algo está inflado, e o excesso se corta antes de qualquer agregação). E o passo que quase ninguém dá: depois da eleição, comparar pledge por praça com voto realizado por zona. É a única calibração real que existe, e cada campanha que não faz isso joga fora o experimento que pagou caro para rodar.
**C5.** As candidatas todas têm suporte documentado: invasão de reduto é critério explícito do modelo de Ames; NEC subindo e liderança contestada são mensuráveis (RSP 2023 mostra fragmentação municipal na casa de 5,5–7,5 candidatos efetivos e crescendo; Silva e Moreira dão o índice de desequilíbrio). Mas se é para apontar a mais ignorada, eu digo — e marco como opinião minha, não como achado — a dependência de poucos brokers. Campanhas medem votos por praça; quase nenhuma mede a estrutura que entrega esses votos. A concentração perigosa não é só a da votação, que Avelino e Biderman mostraram punir derrotados — é a da rede: se três pessoas intermedeiam 40% do voto esperado, a campanha tem três pontos únicos de falha, e o vetor de falha mais provável é exatamente a traição intrapartidária que Nicolau descreve como a regra do sistema. O prefeito que fecha com o correligionário não tira só a estrutura dele — leva a praça inteira que a campanha contava como "nossa".
A invasão de reduto vem em segundo, e é irmã da primeira: quem tem dominância olha para o próprio share e relaxa; o modelo de Ames manda olhar a vulnerabilidade — movimento do concorrente, barreira de entrada baixa, liderança local contestada. Essa informação circula na rede (o broker sabe quem visitou a cidade), mas volta ao problema da FU1: sem registro e agregação, a invasão só aparece no resultado. O padrão comum das duas é o mesmo ponto cego: a campanha monitora o estoque de votos e ignora a fragilidade do canal de entrega.
**D1.** A pergunta certa é de alocação, não de inventário: "dada a próxima unidade de recurso escasso — um dia de agenda do candidato, um real, uma liderança a recrutar — em que praça ela compra mais votos marginais?". Um mapa que responde "onde estou forte" responde vaidade; força já conquistada não pede decisão. A pergunta de decisão decompõe em três camadas que a literatura sustenta: quanto voto há em jogo (válidos e eleitorado da praça — volume); onde performo acima ou abaixo do meu próprio padrão (o gap relativo — porque gap para baixo em praça de campo forte é oportunidade, gap para cima é reduto a defender, na lógica de alocação de Ames); e se tenho rede ali para converter presença em compromisso — porque visita sem broker evapora, e o efeito do contato é pessoal ou não é (Green e Gerber; Bezerra). Dominância isolada, que é o que um % dos válidos mostra, é uma camada só e — ponto que Carvalho e a linha de Ames martelam — é metade do framework: falta a importância da praça para a minha votação. Isso que acabei de dizer é síntese normativa minha a partir da literatura, e assumo como posição; a validação de que ESSA é a pergunta do coordenador real é entrevista de campo, não teoria.
**D2.** Primeiro o diagnóstico do dado, que é estrutural e documentado: numa disputa em que o topo estadual histórico é 4,71% dos válidos (e-Legis 2021), uma escala fixa 0–100% comprime toda a variação real no primeiro degrau da rampa. Não é defeito do dado — percentual baixo e achatado é a estrutura da lista aberta na Bahia (Nicolau; 39 cadeiras, ~7,5 milhões de válidos). O mapa fica tecnicamente honesto e informacionalmente vazio.
O que a cartografia manda, com fonte: normalizar sempre (contagem bruta em coropleto é a proibição clássica — UCGIS BoK); classificar em vez de rampa contínua — classes discretas, de 3 a 7, comunicam melhor para decisão, e quantis são a melhor escolha geral para leitura e comparação entre mapas em série (Brewer e Pickle 2002); para distribuições muito assimétricas como votação, quebras tipo Jenks ou head/tail (UCGIS; Making Effective Maps). O que ela proíbe, além da contagem bruta: mais de sete classes, paleta sem ordenamento perceptual, e — no espírito do Monmonier, que cito de memória de leitura antiga — escala cujo domínio não tem relação com a distribuição do dado, que é exatamente o caso 0–100 aqui: um mapa que não mente, mas omite tudo.
Para a pergunta de D1, a transformação tem que ser relativa ao próprio candidato, e eu usaria em camadas: quantis da distribuição do candidato (cinco classes) como leitura default, porque discriminam sempre, por construção; quociente local (share na praça ÷ share estadual) quando a pergunta é "acima ou abaixo do meu padrão" — com a virtude de ser comparável entre eleições; e rank do candidato na praça (1º, 2º–3º, abaixo) quando a pergunta é competitiva, já que sai do mesmo TSE. Por cima, para a decisão final, classes nomeadas com semântica operacional — defesa, ataque, indecisa, perdida, na tradição da territorialização prática (Manhanelli/AVM) — com limiares relativos à estrutura da disputa, não absolutos; volto a isso em D4. E mantendo o % dos válidos como uma das leituras disponíveis, porque dominância é metade legítima do framework — só não pode ser a única.
**D3.** O problema tem nome na literatura — "land doesn't vote" — e na Bahia é agudo: o coropleto puro faz o oeste do agronegócio gritar e Salvador, com cerca de um quinto do eleitorado, sussurrar num polígono minúsculo. As mitigações consagradas são três: value-by-alpha, em que a opacidade é proporcional ao eleitorado (Roth, Woodruff e Johnson 2010); símbolos proporcionais sobre a geografia (a tradição dos tutoriais eleitorais da Esri); e cartogramas, que redimensionam os polígonos pelo peso eleitoral.
Minha avaliação para uso de campanha — e marco: daqui em diante é opinião de consultoria, caso típico, não achado. O cartograma eu descarto para esse público: o operador de campo navega pela geografia real — estrada, microrregião, vizinhança de município — e um mapa em que ele não reconhece a Bahia morre na primeira reunião. O value-by-alpha é elegante e a literatura o valida como leitura, mas o meu ceticismo prático é que opacidade é um canal visual sutil para decisão rápida em tela de reunião; se funciona com ESSE time, é questão empírica de uso, e eu não opino sobre isso sem ver — é teste, não teoria. A solução que vi funcionar melhor em campo é a mais boba: símbolo proporcional — bolha dimensionada pelos votos em jogo, cor pela classe operacional — em cima do polígono, porque codifica volume e status em dois canais que qualquer um lê; e, ao lado do mapa, a lista ordenada das praças por votos em jogo. O mapa serve ao padrão espacial; a alocação de verdade se decide na lista. Salvador merece o tratamento à parte que a estrutura pede: dezenove zonas é granularidade que o coropleto estadual nunca vai mostrar — qualquer leitura séria da capital é por zona, não pelo polígono municipal.
**D4.** O que acontece é degeneração completa da classificação, e isso é aritmética, não opinião: limiares de 35, 20 e 10% dos válidos foram calibrados para disputa majoritária, onde o vencedor local carrega 40, 50% — numa disputa de DF em que o share típico do candidato por praça roda entre 1 e 5% fora dos redutos (o QE sobre os válidos do estado dá uns 2,5%; a cadeira marginal de 2022 saiu com ~1 a 1,5% dos válidos estaduais), aplicar 35/20/10 pinta o estado inteiro de "perdida", com meia dúzia de redutos como exceção. A classificação vira um mapa de vaidade invertido: só confirma que ninguém domina o estado — que é a estrutura da disputa (Nicolau; e-Legis), não informação.
Como eu calibraria, em método: âncora relativa, não absoluta. Duas âncoras candidatas, que podem se combinar. Primeira, o próprio candidato: limiares como múltiplos do share estadual dele — quociente local acima de 2 ou 3 é reduto/defesa, em torno de 1 é padrão, abaixo de 0,5 é fraqueza — com a virtude de a régua viajar entre eleições e entre candidatos. Segunda, a estrutura da disputa: múltiplos do share do eleito marginal (QE ou voto da última cadeira sobre os válidos), que ancoram a classe no que "eleger" significa naquele estado. E uma correção conceitual antes dos números: defesa/ataque não pode ser função de um eixo só. Dominância diz onde eu mando; falta a importância da praça na minha votação (concentração — Ames, Carvalho) e o contexto competitivo local (NEC alto e desequilíbrio baixo = liderança contestada = praça atacável — Silva e Moreira). "Ataque" bem definido é praça com campo forte (teto de Lula alto — Carvalho e Santos), captura minha baixa e liderança local contestada; nenhum limiar de dominância sozinho captura isso. Agora, os cortes exatos — se defesa começa em LQ 2 ou 3, se ataque exige NEC acima de 6 — eu não sei de antemão, e desconfio de quem diz que sabe: isso se calibra em backtest com 2014–2018–2022, escolhendo os limiares que teriam separado, ex-ante, as praças onde candidatos comparáveis de fato cresceram. O método eu defendo; os números, só o dado passado da Bahia entrega.
### Rodada 3 — Follow-ups + Blocos E e F
**FU3.** Mantendo a pergunta de D1 — onde a próxima unidade de esforço compra mais voto marginal —, a lista precisa destas colunas, nesta ordem de importância:
1. **Votos em jogo** — válidos e eleitorado da praça. Sem volume nada mais importa; é o "land doesn't vote" corrigido em forma de tabela.
2. **Meta e cobertura** — meta da praça, comprometido auditável, a razão entre os dois e o delta da semana. É a métrica de C2 aberta linha a linha: "quanto falta aqui".
3. **Classe operacional** — defesa/ataque/indecisa/perdida com os limiares relativos de D4; é a coluna que transforma número em verbo.
4. **Desempenho relativo** — quociente local e/ou taxa de captura do campo (nominal ÷ teto de Lula): diz se há espaço ou se o limão já foi espremido.
5. **Rede** — lideranças ativas, responsável nomeado (ou o vazio do "sem responsável") e frescor: dias desde o último sinal.
6. **Competição local** — liderança contestada (o conteúdo de NEC e desequilíbrio traduzido em frase — Silva e Moreira) e a flag de invasão/correligionário.
7. **Tendência** — 2014→2018→2022, subiu ou caiu.
A ordenação default que eu defenderia: **déficit descoberto de meta** — meta menos comprometido, decrescente — com empate por votos em jogo. Porque a lista não é retrato, é fila de trabalho: a primeira linha deve ser o lugar onde falta mais voto que a campanha planejou ter. Isso pressupõe metas bem construídas (praça perdida carrega meta mínima, senão o déficit dela polui o topo); enquanto as metas não merecem confiança, o default provisório é votos em jogo × gap de captura, filtrado às classes defesa e ataque. E há uma segunda ordenação, para a reunião de risco, não de alocação: praças de defesa por frescor, a mais dormente primeiro — é onde a invasão de Ames acontece em silêncio. Marco o estatuto: cada coluna tem âncora na literatura que já citei, mas a composição e a ordenação são síntese normativa minha; o teste é ver se o coordenador real consegue tirar uma decisão de uma linha dessa lista sem perguntar nada a ninguém.
**FU4.** A regra geral primeiro: registrar com carimbo de tempo e **nunca sobrescrever**. Backtest compara o que se sabia antes com o que aconteceu depois; se o valor novo apaga o velho, o "antes" deixa de existir. Concretamente, cinco registros, por praça e com data. Um: compromissos por liderança nomeada — cada criação e cada atualização, preservando a trajetória, não só o valor corrente; sem isso não dá para perguntar "o que sabíamos em 15 de agosto?". Dois: a estimativa descontada da coordenação separada da declaração da liderança, com o motivo do desconto anotado — senão o método de desconto do C4 nunca se torna testável. Três: o esforço alocado — dias de agenda do candidato por praça, recurso e material por praça, mesmo em granularidade grosseira. Esse é o registro mais negligenciado e o mais valioso: o TSE entrega o lado dos votos para sempre; o lado do esforço é privado e evapora — e a elasticidade esforço→voto, que eu disse em A3 que ninguém mediu no Brasil, só a própria campanha pode medir em si mesma, se registrar o esforço. Quatro: o log qualitativo de uma linha — praça, data, fonte, sinal ("vereador esfriou", "fulano visitou a cidade") — que converte a anedota estrutural da FU1 em série agregável. Cinco: fotografias ex-ante — a classificação defesa/ataque como estava quando cada decisão foi tomada, e o planejado versus executado da agenda; a lacuna desenho-operação do Nielsen só é auditável se o desenho for arquivado antes do contato com a realidade.
Granularidade mínima: praça — município, zona em Salvador e Camaçari — por semana, porque o resultado oficial sai por zona e a decisão de campanha é semanal. Frescor: compromisso sem atualização há N semanas marcado como velho, na linha do alerta de Hersh. E o que se perde para sempre se não registrar agora: tudo que está do lado da campanha. O TSE estará lá em novembro e em 2030; o estado de conhecimento datado, o esforço por praça e os sinais de rede não são reconstruíveis retroativamente — e acrescento, como hipótese minha sem fonte no compêndio, mas na qual apostaria: a memória pós-resultado reescreve a história a favor de quem venceu a disputa interna. Sem registro ex-ante, o "aprendizado" da campanha vira a versão do vencedor.
**E1.** Estatuto antes do caso: a literatura que carrego não documenta adoção de sistema em campanha brasileira; o que existe é o mecanismo geral — Nielsen mostra a campanha como montagem de assessores, voluntários, listas e infraestrutura de dados, quebrando na lacuna entre desenho analítico e operação; Hersh mostra o lado do dado. Os dois casos que vou contar são compostos da minha consultoria — caso típico, não fato documentado.
O que morreu: campanha adota em agosto uma planilha central — ou um sistema, tanto faz — por decisão de cima, exigindo que os assessores de área cadastrassem contatos com dez campos por pessoa. O preenchimento competia com o trabalho real, que é estar na rua; nada voltava para o campo em troca do que o campo alimentava; e a reunião de coordenação continuou decidindo por voz, sem abrir o instrumento. Em duas semanas o dado estava velho, em quatro ninguém confiava, em seis ninguém lembrava. Causa mortis: extração sem devolução — e a evidência de que preencher era teatro, porque a decisão não consumia o registro.
O que pegou: uma lista mínima — liderança, praça, número comprometido, data, quatro colunas — mantida por uma pessoa só, com poder, no braço direito do coordenador. O campo não preenchia nada: ditava por telefone ou WhatsApp, e a sede registrava. E o artefato era a pauta: a reunião semanal de recurso começava pela lista, e praça que não estava na lista não existia na discussão. Em três semanas os assessores brigavam para ter seus números lá, porque recurso seguia a lista. O diferenciador, em uma frase: no caso morto, o registro competia com o trabalho; no caso vivo, o registro era o caminho para o recurso. Instrumento de campanha não é adotado por qualidade — é adotado quando fica no meio do fluxo de poder. Isso é generalização minha de casos compostos; o mecanismo é consistente com Nielsen, mas o teste é empírico.
**E2.** A regra que eu proporia — hipótese minha, derivada de incentivo e de observação em consultoria; não conheço medição publicada de decaimento de registro em campanha, então quantificar eu não sei: sob cansaço sobrevive o registro **transacional** e morre o **epistêmico**. Continua em outubro tudo que destrava algo agora: pedido de material, prestação de contas (obrigação legal com sanção), a agenda do candidato — porque organiza o dia de todo mundo — e o compromisso novo de liderança, quando ele é moeda que libera recurso. Abandona primeiro tudo cujo retorno é analítico e futuro: a atualização do compromisso antigo, o log qualitativo, o "marcar como feito". Ninguém gasta o último fôlego do dia para informar que nada mudou.
A consequência perversa é dupla: a base envelhece exatamente na reta final, quando o jogo mais se move — o problema de frescor do Hersh degradando quando mais importa —, e o backtest da FU4 perde justamente as semanas mais informativas. Se há antídoto, não é exortação — é desenho de incentivo: acoplar a atualização ao que o campo já quer, recurso fluindo para praça com dado fresco. Mas isso é prescrição minha; se funciona com gente exausta em outubro, só o campo responde.
**F1.** Onde eu apostaria dinheiro — e note que aposta ainda não é confirmação; quero ouvir tudo isso da boca dele: que a ameaça nomeada primeiro será um correligionário ou alguém da federação, não o adversário externo — Nicolau dá a estrutura, a entrevista dá o vivido; que o canal real de informação territorial é broker por voz e WhatsApp, sem registro sistemático datado — Bezerra e Kuschnir descrevem o mundo, a FU1 descreve a consequência; que a agenda do candidato é a decisão semanal de verdade e o recurso mais brigado; que nenhuma métrica com nome acadêmico é calculada, e os instrumentos reais são a série TSE simples e a lista dos maiores municípios do próprio voto; e que ele apontará dinheiro como a restrição dominante — e Speck e Cervi lhe darão razão parcial.
O que é hipótese minha de literatura, que a sessão pode derrubar sem me ofender: que o gargalo é a conversão do voto de campo em voto nominal — ele pode dizer que é fundo, jurídico ou rádio, e 2006 me ensinou que conjuntura existe; que a tese da persuasão zero será aceita — a tradição de consultoria brasileira vive de prometer o contrário, e a ressalva EUA≠Brasil é honesta; que a métrica única de C2, cobertura de meta por compromissos, corresponde a como ele já pensa a conta; que pledges auditáveis operam em escala real, dado o incentivo estrutural do broker a inflar; e que a classificação relativa com limiares calibrados de D4 sobrevive ao contato com a mesa. E um lembrete metodológico contra mim mesma: descontem meus vieses declarados — estruturalista, quantitativa, de campo. Se o coordenador falar de carisma, de rádio e de última semana, não tratem como ruído; é exatamente o que o meu modelo subpesa.
**F2.** A pergunta que eu levaria, formulada por episódio e não por opinião: **"me conta a última vez que um número — qualquer número — mudou uma decisão sua de território: que número era, quem trouxe, em que reunião, o que mudou no dia seguinte?"** E o espelho dela: "e a última vez que o número dizia uma coisa, você seguiu a política — se arrependeu?". Toda a nossa conversa assumiu que dado entra no loop de decisão; se a resposta honesta for "não lembro de nenhuma vez", isso não mata o projeto de vocês — mas muda a porta de entrada, porque o dado teria que chegar como frase operacional na voz de alguém de confiança, não como painel. Pergunta em abstrato produz resposta aspiracional — entrevistado de elite responde "como deveria ser"; episódio recente força o "como foi".
E um pedido de método, na linha do que Kuschnir e Bezerra fariam em campo: peçam para **ver os artefatos** — a planilha da última campanha, o caderno, a folha da reunião de sexta, o que ele topar mostrar do grupo de coordenação. Artefato não tem memória seletiva; relato tem. Trinta segundos olhando a planilha real valem mais que meia hora de descrição dela.
**F3.** Em ordem de prioridade, e a primeira não é paper:
1. **O dado**: série TSE por município×zona da Bahia — 2014, 2018, 2022 —, nominais de deputado federal, válidos, e o majoritário do 1º turno (Lula, governador). Calculem em casa dominância, a lista de origem do próprio voto, quociente local e a taxa de captura da FU2. É um dia de trabalho que vale mais que qualquer leitura — com o infográfico da Câmara dos eleitos BA 2022 como verificação de sanidade da aritmética.
2. **Nicolau 2006** (Dados, aberto no SciELO) — a mecânica da lista aberta: quociente, sobras, pisos. É o sistema de coordenadas; meta sem isso é chute.
3. **Avelino, Biderman e Barone 2016** (Dados, aberto) e **Borges, Paula e Silva 2016** (RSP, aberto) — a evidência de que dispersão vence e o framework dominância×concentração aplicado ao Brasil. Ames 1995 é a origem conceitual, mas está fechado; leiam os abertos primeiro.
4. **Carvalho e Santos 2015** (RSP, aberto) — a geografia do voto do campo na Bahia desde 2006: os clusters espaciais, o efeito Lula, o que as variáveis municipais explicam e o que não explicam. É o mapa-base do teto.
5. **Kalla e Broockman 2018** (aberto) e o panorama de **Gerber e Green** no handbook (PDF aberto na J-PAL) — para fixar as anti-metas: o que campanha não compra com contato, e a hierarquia da pessoalidade.
6. **Bezerra 1999** (aberto no NuAP) — antes da sessão presencial, não pela análise territorial, mas para entrevistar melhor: é o retrato do mundo de mediação em que o coordenador vive.
7. Só então cartografia: a síntese aberta de **Brewer e Pickle**, o verbete de statistical mapping do **UCGIS BoK** e **Roth et al. 2010** (PMC) — porque visualização serve à análise e análise serve à decisão; na ordem inversa, produz-se mapa bonito de pergunta errada.
E encerro com o de sempre: o que eu trouxe aqui é estrutura e literatura — teto de hipótese, não chão de fato. Levem a lista de apostas de F1 para a sessão, voltem com o que o coordenador derrubou, e aí a conversa fica interessante de verdade.
### Rodada 4 — Bloco G (dado → decisão; adicionada na colaboração)
**G1.** Antes do catálogo, o estatuto global, para não repetir a cada linha: não existe, na literatura que carrego, um playbook dado→decisão validado empiricamente para campanha proporcional — ninguém randomizou "menu de ações por padrão de praça" e mediu voto. O que existe são os mecanismos documentados (Ames sobre alocação; Avelino/Biderman sobre dispersão; Nicolau sobre a competição intracampo; Bezerra/Kuschnir sobre mediação; Green & Gerber e Kalla & Broockman sobre o que contato compra; Singer e Carvalho & Santos sobre o voto de campo na Bahia; Hersh e Nielsen sobre dado e operação). O catálogo é composição minha desses mecanismos — hipótese de literatura organizada —, os limiares numéricos são ilustrativos e calibráveis pelo backtest que descrevi em D4/FU4, e o formato "menu para considerar, nunca regra" não é concessão diplomática: é a posição correta, pelas razões que dou em G3. Onde um item for caso estilizado ou opinião sem fonte, marco.
**P1 — Reduto dormente ou ameaçado.** (a) Gatilho: praça no quintil superior da minha dominância (ou LQ ≥ 2–3) E entre as que somam ~50% da minha votação histórica (importância), cruzada com ausência: nenhum pledge atualizado nem sinal registrado há 3–4 semanas, nenhuma agenda/plano no ciclo. Variante "ameaçado": mesmo estoque + sinal de invasão registrado, ou queda 2018→2022, ou liderança local contestada (desequilíbrio T caindo). (b) Leitura provável: vulnerabilidade à invasão — categoria explícita do modelo de Ames. Descartar antes: dormência de registro, não de praça (FU1 — pode ser falha de digitação, não de relação); broker ocupado mas fiel. (c) Ações: 1º checagem de rede em 48h — o responsável liga para as lideranças nomeadas e atualiza os compromissos (Bezerra: o canal é a mediação; custo quase zero); 2º se confirmar esfriamento, presença pessoal — visita curta do candidato ou do coordenador (Green & Gerber: o efeito cresce com a pessoalidade); 3º ativar segunda linha de lideranças fora do broker principal (mecanismo do meu caso estilizado de A2); 4º se a invasão for intracampo, subir a questão à federação — decisão política, não de comitê (Nicolau; A4). (d) Contraindicação: não despejar agenda cara antes da checagem barata; e não superinvestir em reduto que já está no teto — ficar preso no reduto é o padrão documentado dos derrotados (Avelino/Biderman).
**P2 — Praça de ataque: campo forte, captura baixa.** (a) Gatilho: teto do campo alto (majoritário do 1º turno acima da mediana estadual em volume), minha taxa de captura abaixo da minha média estadual (ou LQ < 0,5), válidos grandes, e disputa local aberta (NEC alto, desequilíbrio baixo — Silva & Moreira). (b) Leitura: expansão clássica — voto de campo existe e ninguém o capturou para DF. Descartar: correligionário já capturou (olhar share intracampo primeiro — se for isso, é P3); barreira de entrada alta (prefeito adversário hegemônico — o custo de entrada de Ames); praça "de posse" cultural de candidato regional. (c) Ações: 1º recrutar liderança e organização local ANTES de qualquer agenda — a transferência do voto de campo passa por estrutura, não por afinidade (Singer; Carvalho & Santos); 2º plano de ação com organização aliada — sindicato, movimento, pastoral — que é a capilaridade herdável do campo (Meneguello; Keck); 3º dobradinha com candidato estadual forte ali (mecânica documentada em fonte oficial e de imprensa — Câmara; Estado de Minas); 4º só então agenda do candidato, com estrutura de recepção pronta. (d) Contraindicação: se a disputa local é fechada e a dominância adversária consolidada, é praça perdida vestida de oportunidade — persuasão de hostil rende ≈ zero (Kalla & Broockman) e o mínimo é a alocação correta.
**P3 — Campo convertido, mas por outro (correligionário na frente).** (a) Gatilho: captura agregada do campo alta (soma dos nominais de DF do campo ÷ teto do majoritário), minha fatia intracampo baixa (meus nominais ÷ soma do campo). (b) Leitura: a praça está organizada — por outro. É a competição intrapartidária de Nicolau em estado puro. Descartar: acordo de território vigente na federação (respeitar custa menos que romper); correligionário em saída (não concorre, virou majoritária, aposentou) — aí é herança aberta, outro jogo. (c) Ações: 1º inteligência antes de tudo: ele concorre de novo? a força vem de um broker específico? (série + rede respondem barato); 2º se herança aberta: entrada rápida nas lideranças órfãs — hipótese minha, mecanismo plausível, sem fonte direta no compêndio; 3º se ativo e forte: flanquear, não confrontar — buscar o segmento não coberto (categoria profissional, bairro, juventude; o voto compartilhado urbano é a natureza dessa praça — Carvalho 2003); 4º acordo de não-agressão via federação — decisão que o coordenador referenda, não toma (A1/A4). (d) Contraindicação: guerra aberta em reduto de correligionário forte — custo alto, ganho baixo, e envenena a lista de que todos dependem (o transbordo da votação da lista é documentado — Nicolau; Câmara). "As maiores traições são entre correligionários" é diagnóstico, não receita.
**P4 — Dependência excessiva de um broker.** (a) Gatilho: razão de concentração da rede — um intermediário responde por ≥ 50–60% dos pledges da praça, ou os três maiores brokers da campanha carregam ≥ 30–40% do comprometido total. Os números são arbitrários; a estrutura do gatilho (concentração de canal, análoga à concentração de votação de Avelino/Biderman aplicada à rede) é o que importa — hipótese minha por analogia. (b) Leitura: ponto único de falha, o risco mais ignorado (C5), com o vetor de quebra mais provável sendo a traição intracampo (Nicolau). Descartar: concentração aparente por sub-registro (há segunda linha, ninguém registrou); concentração estruturalmente inevitável (cidade pequena onde o prefeito É o canal). (c) Ações: 1º recrutar segunda linha deliberadamente — lideranças setoriais e organizações fora da órbita do broker (Meneguello/Keck); 2º des-intermediação parcial: relação direta do candidato com meia dúzia de contatos-chave da praça (a mediação é relação pessoal — Bezerra; duplicar canais é seguro, não afronta); 3º elevar o custo de traição do broker com compromisso público — dobradinha local, palanque conjunto (hipótese minha de mecanismo); 4º plano de contingência nomeado: se fulano virar, quem assume. (d) Contraindicação: construir segunda linha desautorizando o broker publicamente — a economia da mediação é de status (Bezerra); feito sem tato, o seguro provoca o sinistro.
**P5 — Expansão performando acima do padrão.** (a) Gatilho: LQ crescente na série 2014→2018→2022 ou pledges crescendo acima do ritmo médio, em praça fora do meu top histórico de importância; cobertura de meta acima de 100% ou delta semanal no decil superior. (b) Leitura: a trajetória documentada dos vencedores em ato — base, região, dispersão (Avelino/Biderman/Silva). Descartar: efeito de evento único ou broker recém-chegado (frágil); meta subestimada fazendo sucesso de papel. (c) Ações: 1º dobrar a aposta com custo marginal baixo — material, planos de ação, não necessariamente agenda (o recurso rende mais na margem — o "efeito Jacobson" brasileiro, BPSR 2014); 2º formalizar a rede emergente antes que esfrie: responsável nomeado, lideranças registradas, compromissos datados; 3º replicar por vizinhança — o voto do campo na Bahia anda em clusters espaciais (Carvalho & Santos), expansão viaja por contiguidade (ver P12); 4º subir a meta da praça e realimentar a decomposição (FU2). (d) Contraindicação: não canibalizar agenda de defesa para perseguir a novidade — a hierarquia de G2; e não confundir evento cheio com tendência: multidão é vaidade na minha tabela.
**P6 — Praça grande sem rede nenhuma.** (a) Gatilho: válidos no quartil superior, zero lideranças ativas, zero responsável, pledges nulos — independentemente do meu histórico. (b) Leitura bifurcada pelo próprio dado: se tenho voto histórico ali sem rede registrada, é voto órfão — existe mediação invisível ao registro, porque voto proporcional não cai do céu (Bezerra); se nunca tive voto, é deserto — expansão de custo cheio. (c) Ações: 1º censo de rede: perguntar à federação e às organizações quem opera ali — a capilaridade do campo é herdável (Meneguello/Keck); 2º nomear responsável mesmo externo (assessor de área cobrindo à distância); 3º se deserto com campo forte, tratar como P2; 4º se deserto com campo fraco, despriorizar por escrito — alocação é também decidir onde não estar (Ames), e a decisão consciente registrada vale mais que o esquecimento. (d) Contraindicação: agenda do candidato para "abrir" praça sem estrutura de recepção — visita sem broker que a converta em compromisso evapora (a lacuna desenho-operação de Nielsen); praça grande não é praça prioritária se a barreira de entrada come o retorno.
**P7 — Pledges estagnados contra a meta.** (a) Gatilho: cobertura abaixo da meta com delta semanal ≈ 0 por 2–3 semanas consecutivas, em praça priorizada. (b) Leitura tripla, com tratamentos opostos — e é obrigatório distinguir antes de agir: (i) a rede parou de trabalhar; (ii) a rede trabalha e não registra (o decaimento do registro epistêmico de E2); (iii) a rede saturou o próprio alcance. A auditoria amostral separa (ii) de (i); pledges encostados no teto histórico do campo local denunciam (iii). (c) Ações: 1º diagnóstico diferencial pelo responsável, uma semana; 2º se (ii), consertar o fluxo de registro — deslocar o custo de digitação para a sede (o padrão do caso que pegou em E1) — e não mexer na rede; 3º se (i), reativação pessoal: contato do coordenador com as lideranças, evento de rede (a pessoalidade vale para dentro da organização também — extensão minha de Green & Gerber, marcada como hipótese); 4º se (iii), recrutar novas lideranças ou realocar meta para onde há espaço. (d) Contraindicação: cobrar a rede pelo número antes de auditar o registro — punir quem trabalha e não digita destrói moral e ensina a inflar (o gaming de G4).
**P8 — Sinal qualitativo de invasão.** (a) Gatilho: log datado ("candidato X visitou", "broker recebeu proposta") em praça de defesa ou de alta importância, ainda sem movimento nos números — e é assim que deve ser: o sinal de rede precede o dado; a série TSE só confirma depois da urna, tarde demais (FU1). (b) Leitura: alerta antecipado de invasão (Ames). Descartar: boato de fonte única e interessada — broker usa informação como moeda (Bezerra); visita de rotina sem investimento real por trás. (c) Ações: 1º triangular com segunda fonte independente na mesma praça em 72h; 2º atualizar todos os pledges da praça (a checagem barata de P1); 3º confirmado, presença rápida mais gesto público de compromisso — a moeda da mediação é entrega percebida (Bezerra); 4º registrar tudo datado: sinal→desfecho é exatamente o par que o backtest da FU4 precisa. (d) Contraindicação: mover agenda por fonte única — sobre-reação a boato é vetor de manipulação; adversário racional planta sinal para te fazer gastar onde ele não está (hipótese minha, mecanismo elementar de estratégia, sem fonte no compêndio).
**P9 — Queda na série histórica.** (a) Gatilho: nominais próprios caindo 2018→2022 em praça relevante — sempre decomposto, nunca bruto. (b) Leitura em três causas, que os dados separam: (i) maré — o teto do campo caiu junto (o problema é do campo local, não meu); (ii) correligionário — minha fatia intracampo caiu (vira P3); (iii) estrutura — teto estável, campo estável, meu voto sumiu: broker saiu, prefeito virou. A série sozinha não distingue; o cruzamento com o majoritário e com os nominais dos correligionários distingue. (c) Ações: 1º decomposição analítica em mesa, custo zero; 2º entrevista de rede na praça — o responsável ouve as lideranças sobre o porquê; 3º ação conforme a causa: maré → despriorizar ou colar no majoritário via dobradinha; correligionário → menu de P3; estrutura → reconstrução de mediação (P4/P6). (d) Contraindicação: "compensar" a queda com investimento indiscriminado antes de decompor — tratar sintoma é o erro de alocação clássico; e em praça pequena, ±200 votos entre eleições é ruído, não tendência (opinião metodológica minha).
**P10 — Praça pequena de alta dominância.** (a) Gatilho: LQ ≥ 4 ou quintil superior de dominância, válidos abaixo da mediana, contribuição à meta < 1%. (b) Leitura: reduto simbólico — identidade e narrativa, não conta; a conta fecha em volume (Nicolau). Descartar: efeito-hub — praça pequena que ancora microrregião (o cluster de Carvalho & Santos): conferir se as vizinhas performam junto antes de rebaixar. (c) Ações: 1º manutenção de baixo custo — presença simbólica e atenção de mandato (a emenda pequena que sustenta a mediação — Bezerra), sem agenda cara recorrente; 2º usar como palco regional: evento ali desenhado para irradiar às vizinhas (hipótese minha); 3º testar o efeito-hub medindo as vizinhas após investimento — o mini-experimento que a própria campanha pode rodar, no espírito de Green & Gerber. (d) Contraindicação: o carinho pelo reduto de origem é exatamente o viés que a literatura pune — derrotados morrem abraçados ao reduto (Avelino/Biderman); a praça-troféu não pode comer agenda das praças que fecham o quociente.
**P11 — Organização forte, compromisso zero.** (a) Gatilho: organizações e lideranças ativas registradas na praça, com pledges nulos ou muito abaixo do potencial da base delas. (b) Leitura: apoio institucional difuso não é voto nominal — a lealdade é ao campo/programa, e a transferência não é automática (Singer); ou ninguém fez o pedido explícito. Descartar: base da organização dividida entre correligionários (Nicolau de novo), caso em que a neutralidade dela é racional. (c) Ações: 1º o pedido explícito — converter simpatia em compromisso nomeado com número; a tradução brasileira do que a evidência de mobilização diz funcionar: contato pessoal que orienta especificamente (Green & Gerber, com a ressalva EUA≠Brasil de sempre); 2º assembleia/evento de deliberação de apoio nominal; 3º responsável dedicado à conversão organização→pledges. (d) Contraindicação: forçar deliberação em organização de base dividida — racha a entidade, perde-se o apoio difuso que existia e cria-se inimigo interno.
**P12 — Fronteira de vizinhança do cluster.** (a) Gatilho: praça contígua (mesma microrregião) a um reduto de alta importância, com LQ < 1 e teto de campo razoável. (b) Leitura: a expansão mais barata disponível — a trajetória regional documentada (base→região→dispersão, Avelino/Biderman/Silva) somada ao fato de o voto do campo baiano andar em clusters espaciais (Carvalho & Santos): rede irradia, broker conhece broker. Descartar: vizinhança geográfica com rivalidade política histórica — a cidade rival do reduto pode rejeitar exatamente o que o reduto endossa (caso típico de consultoria, sem fonte). (c) Ações: 1º liderança-ponte: usar a rede do reduto para apresentar a campanha na vizinha; 2º agenda combinada reduto+vizinha no mesmo dia — custo marginal de deslocamento quase nulo; 3º plano regional em vez de municipal, com meta conjunta. (d) Contraindicação: tratar a microrregião como homogênea sem checar a rivalidade local com a rede; e não usar o broker do reduto como porta-voz onde ele é tóxico.
**G2.** Resposta direta à pergunta embutida: a literatura sustenta diretamente uma hierarquia de urgência? Não — não conheço estudo que ordene urgências de comitê, e digo isso com todas as letras. O que ela dá são custos assimétricos que justificam uma ordem racional, e essa derivação é minha. Três assimetrias: primeiro, voto de estoque é quase-certo na conta da meta e voto de oportunidade é hipotético — perder 5 mil comprometidos não equivale a deixar de tentar 5 mil possíveis com probabilidade bem menor que um; segundo, mediação quebrada não se recompra em semanas — a relação pessoal que Bezerra descreve é construção de anos, então reconstrução custa mais que manutenção; terceiro, construção organizacional é lenta (a capilaridade de Meneguello/Keck não nasce em setembro), logo o tempo de construir é o recurso que expira primeiro.
Disso sai a precedência que eu defenderia: 1º estoque grande em risco confirmado (P1/P8 triangulados — defesa de reduto relevante); 2º falha de canal em praça priorizada (P4 agudo — broker único virando é estoque em risco disfarçado); 3º cobertura zero em praça que a meta exige (P6 priorizada — porque cada semana sem começar encolhe o que é construível); 4º oportunidades com janela (herança aberta de P3, expansão quente de P5 — janelas fecham, mas oportunidade perdida custa menos que estoque perdido); 5º otimizações (P10, P12, ajuste de metas). Com duas regras transversais que valem mais que a ordem: barato-antes-de-caro em todos os níveis — a checagem de rede de 48h roda para TODO gatilho imediatamente; a hierarquia ordena só o recurso caro (agenda, dinheiro, gente) —; e desempate por contribuição à conta: entre dois gatilhos do mesmo nível, ganha a praça com mais votos em jogo para a meta (Nicolau: a cadeira é uma soma, e a soma manda). Marco: hierarquia inteira é hipótese de literatura via derivação; o backtest e o coordenador real podem reordenar — em particular, se ele disser que na prática dele oportunidade com janela curta fura tudo, quero ouvir por quê.
**G3.** Pela cadeia. **Detectar** é onde a análise é insubstituível — vigilância contínua de 400+ praças, sem fadiga e sem viés de recência, é exatamente o que a cabeça humana não faz (a FU1 inteira é sobre isso: sinais dispersos não se agregam sozinhos). Com o limite de Hersh gravado na porta: a detecção enxerga através da base que existe — ela detecta padrões no registrado, e o não-registrado é invisível por construção (ver o erro 2 de G4). **Diagnosticar** é dividido ao meio: o diagnóstico diferencial estrutural é conta, e máquina faz conta melhor — a decomposição da queda de P9 (maré × correligionário × estrutura) ou a tripartição de P7 são exemplos de análise estreitando o leque de causas de forma que nenhuma reunião faria com a mesma disciplina. Mas a causa final é local e relacional: por que o broker esfriou — briga de emenda, proposta do adversário, doença na família — só a rede sabe, porque a informação decisiva vive dentro da relação de mediação (Bezerra; Kuschnir descreve o político lendo o território pessoalmente). A análise entrega o leque; não escolhe a carta.
**Escolher a ação** é do coordenador, e por três razões que não são cortesia. Uma: a ação tem custo político invisível ao dado — desautorizar um broker, comprar briga com correligionário, contrariar a federação — e, como eu disse em A4, o compromisso de um prefeito é um dado que a planilha não tem; a recíproca também vale, o custo político é um preço que a planilha não vê. Duas: o valor de uma ação depende da capacidade local de executá-la — a lacuna desenho-operação de Nielsen significa que a ação "certa" sem estrutura de execução na praça é a ação errada; quem sabe se a estrutura existe é quem opera. Três, e esta é opinião minha: responsabilidade e aprendizado — se a máquina escolhe, o erro não ensina ninguém, e a campanha precisa que os erros tenham dono para o backtest de outubro virar aprendizado em vez de álibi. **Executar** nem se discute: mediação é pessoal (Bezerra) e o contato que funciona é o pessoal (Green & Gerber) — pessoalidade não se terceiriza para sistema nenhum.
E dois papéis de fronteira. A análise deve registrar — a sugestão dada, a decisão tomada, a leitura alternativa descartada — porque é o ex-ante da FU4; sem isso, nem o acerto nem o erro são auditáveis. E a análise não deve estimar o que não tem dado para estimar: probabilidade de "virar" uma praça, elasticidade esforço→voto antes do primeiro backtest — número inventado com cara de número é a falsa precisão que Hersh aponta como o erro clássico do targeting.
**G4.** Cinco erros que eu anteciparia, cada um com mitigação de método — e o estatuto geral: não conheço avaliação publicada de sistema de sugestão para campanha; isto é antecipação por mecanismo, não achado.
Primeiro, **falso positivo de registro**: o gatilho de ausência (P1 dormente, P7 estagnado) dispara porque ninguém digitou, não porque a praça esfriou — é a consequência direta da FU1/E2. Mitigação: todo gatilho baseado em ausência ou frescor dispara primeiro auditoria de registro, nunca ação de campo; e a semântica do catálogo distingue "sem sinal" de "sinal de nada" — são estados diferentes com tratamentos diferentes.
Segundo, **viés da base** (Hersh): o sistema só enxerga onde há rede registrando, então praças cobertas geram gatilhos e desertos ficam mudos — o efeito perverso é realimentar investimento onde já se investe. Mitigação: ancorar parte dos gatilhos em dado público que cobre todas as praças igualmente (a série TSE não tem esse viés — P6 dispara por ausência justamente porque o TSE existe para todas), e institucionalizar a pauta do silêncio: uma vez por mês, a lista das praças que não dispararam nada é revisada como pergunta, não como conforto.
Terceiro, **gaming pelos assessores**: se recurso segue gatilho, o campo aprende a produzir o padrão que puxa recurso — pledge inflado para mostrar tração, "sinal de invasão" para atrair agenda; é o incentivo do broker a inflar (C4) agora com regra explícita para explorar. Mitigação: auditoria amostral aleatória com consequência sobre o fator de desconto de quem infla; desconto de fonte única em sinais qualitativos (P8); declaração sempre separada da estimativa; e não publicar internamente os limiares exatos — medida que vira alvo deixa de medir; limiar conhecido é limiar produzido.
Quarto, **excesso de confiança na sugestão**: menu com fonte parece ciência e vira oráculo — a superestimação da precisão é O erro documentado do uso de dados em campanha (Hersh). Mitigação: cada sugestão carrega o próprio estatuto (documentado / hipótese / estilizado — como fiz no catálogo) e a incerteza dos limiares dita em voz alta; e a decisão registrada deve nomear a leitura alternativa descartada — obrigar o "por que não é a outra causa" é o antídoto metodológico contra seguir o menu por cansaço, que em outubro (E2) será a tentação diária.
Quinto, **churn de prioridade**: gatilho semanal mudando a lista toda semana produz campanha que só reage e nunca executa — e operação precisa de estabilidade para fechar a lacuna de Nielsen, não de um alvo novo por reunião. Mitigação: histerese de método — mudança de alocação cara exige gatilho persistente por duas semanas ou triangulado por rede; e separar os ritos: reunião de sinais toda semana, reunião de realocação a cada duas, salvo o nível 1 da hierarquia de G2, que fura a fila por definição.
Fecho com a moldura de sempre: esse catálogo é um mapa de hipóteses com fontes, desenhado para ser derrubado praça a praça pelo julgamento de quem opera — e o teste dele não é elegância, é o backtest de outubro contra o resultado por zona. Se três padrões sobreviverem ao contato com o coordenador real e um único gatilho evitar um reduto perdido, o catálogo já pagou o preço de existir.
### Rodada 5 — Bloco H (Territórios de Identidade e agregações; adicionada na colaboração)
> Compêndio atualizado antes desta rodada com a §8.3 (TI, IBGE 2017, MAUP) e fontes 53–58.
**H1.** Reli a seção nova e vou direto, começando pelo enquadramento que a própria literatura de MAUP impõe: não existe escala "verdadeira" — existe escala adequada à decisão em jogo, e a melhor prática é justificar teoricamente a escolha pelo mecanismo, não pela conveniência da malha (Political Analysis 2025). Então a pergunta "vale usar TI?" se responde perguntando quais decisões da campanha se tomam em escala regional.
A favor, três ordens de argumento. Institucional (fato documentado): o TI é a unidade em que o estado da Bahia planeja e orça — Lei 13.214/2014, PPA organizado por território, governança via CODETERs (SEPLAN). Para uma campanha do campo governista, isso não é detalhe burocrático: acesso ao executivo aumenta dominância municipal (Borges, Paula & Silva 2016), e a geografia do investimento estadual fala TI — quem analisa na mesma malha que o palácio conversa melhor com o palácio. Político (documentado, com a ressalva de que a fonte é análise aplicada de imprensa, não peer-reviewed): a leitura eleitoral por TI já é a língua corrente da análise baiana — Lula venceu nos 27 TIs em 2022 (média 72,9%, piso 55,6% no Extremo Sul), Jerônimo em 22 de 27, e a própria chapa petista organiza programa "nos territórios" (Cláudio André, A Tarde). O campo já pensa assim; a campanha não precisa evangelizar ninguém. De dados (derivação minha): 436 praças não cabem numa cabeça nem numa reunião; 27 unidades cabem. E a agregação vai na direção que a literatura aponta — a concentração eleitoral relevante no Brasil é mais regional que municipal (é por isso que a linha Avelino/Biderman/Silva trabalha com agregações regionais), e os clusters do voto petista baiano são regionais (Carvalho & Santos 2015). Agregar praças contíguas não é artifício; é seguir a estrutura espacial real do voto.
Contra, e com peso. Primeiro, o MAUP em ambas as faces (documentado): efeito de escala e efeito de zoneamento — o resultado da análise muda com a fronteira, e a fronteira do TI foi desenhada para planejamento participativo, não para eleição; nada garante coincidência com as fronteiras do comportamento eleitoral. Segundo, a crítica acadêmica específica ao recorte: critérios pouco claros e heterogeneidade interna (Serpa, EDUFBA; avaliação USP/IPEA) — um TI pode conter reduto e deserto, e a média dos dois é uma ficção. Terceiro, instabilidade documentada: os limites podem mudar a cada PPA — série histórica por TI exige fixar malha, não é dado que se baixa pronto. Quarto, uma obviedade que precisa ser dita: o TSE entrega município×zona; o TI é sempre uma soma de praças — agregar não cria informação nenhuma, só cria legibilidade. E quinto, o caso extremo: o TI Metropolitano concentra 24,4% do eleitorado — uma "unidade" que engole Salvador inteira é inútil como unidade; ali a leitura séria é por zona, sempre.
Síntese operacional: o TI é a escala certa para perguntas cujo mecanismo é regional — alocar assessores de área, desenhar giros de agenda (deslocamento), negociar dobradinha com estadual forte numa região, dialogar com governo e programa, e ler o balanço de portfólio (de quantas regiões dependo). É a escala errada para tudo que envolve voto e rede concretos: meta e cobrança de compromissos (que são por liderança×praça), leitura de disputa local (NEC e desequilíbrio são da praça), diagnóstico causal (o TI não tem broker, não tem prefeito, não vota — quem vota mora numa praça) e qualquer coisa dentro da RMS. Regra de bolso: decisão sobre gente e logística regional → TI; decisão sobre voto e mediação → praça.
**H2.** As análises que só fazem sentido — ou só ficam estáveis — no nível TI, com o estatuto geral de que a composição é derivação minha dos mecanismos citados:
Primeira, o balanço de portfólio: distribuição da minha votação (e dos pledges) pelos 27 TIs, na série 2014–2022, com um número-resumo de concentração regional (o análogo do Rae invertido aplicado a TIs — a família de índices da minha tabela de §8.1). É a métrica de dispersão de Avelino/Biderman em unidades legíveis: "dependo de quantas regiões?" se responde com 27 unidades, não com 417. Segunda, o gap regional de captura: soma dos meus nominais ÷ soma do teto de Lula, por TI. No nível praça essa razão é ruidosa em município pequeno; no TI ela estabiliza — e o dado do majoritário por TI já circula pronto na análise corrente (os 72,9% de média de Lula). O mapa de "onde o campo é oceano e minha captura é gota" é a versão regional da FU2, e direciona expansão de região, que é como a trajetória vencedora de fato progride (base→região→dispersão). Terceira, a leitura da majoritária estadual por TI: os territórios onde o campo perdeu o governador (os 5 de Jerônimo) são contexto adversário regional — acesso local a executivo do outro lado (Borges) — e isso reprecifica as metas de todas as praças dali de uma vez; praça a praça, esse contexto comum é invisível.
Quarta, rota e agenda: o giro regional de 2–3 dias por TI amortiza deslocamento e produz narrativa regional — deslocamento é um mecanismo genuinamente regional, não municipal. Quinta, dobradinha regional: cruzar meu gap de captura por TI com a força regional dos candidatos a estadual do campo — a dobradinha é soma de capilaridades (Câmara; imprensa documenta a prática) e capilaridade de estadual costuma ser regional. Sexta, alocação de assessores: dividir o estado em carteiras de assessor por TI ou grupos de TIs, balanceando votos em jogo e praças priorizadas por pessoa — a decisão é sobre gente, e gente cobre região. Sétima, e a que eu acho mais subestimada: o benchmark intra-TI. Se o recorte territorial captura alguma homogeneidade socioeconômica/cultural (é o critério declarado do desenho — SEPLAN; com a ressalva de heterogeneidade de Serpa), então "capturo 20% do teto numa praça e 5% na vizinha do mesmo TI" é o contraste mais informativo disponível: controla grosseiramente o contexto e isola o que sobra — estrutura, rede, broker. É um desenho de comparação pareada de pobre, e campanha pobre precisa exatamente disso. Marco: hipótese metodológica minha; a validade depende da homogeneidade real de cada TI, que a crítica acadêmica manda verificar caso a caso. E oitava, mais humilde: sanity check de metas — a soma das metas de praça por TI comparada à participação histórica do TI no meu voto denuncia metas municipais mal construídas antes que elas façam estrago.
**H3.** Existe catálogo publicado de padrões dado→decisão em escala regional? Não — não conheço, e digo com todas as letras; o que existe são os mecanismos (concentração regional, clusters, acesso a executivo, dobradinha). Os padrões abaixo são derivação minha, mesmo estatuto do catálogo P1–P12: hipótese de literatura organizada, limiares ilustrativos, menu para julgamento.
**T1 — Gap regional de captura.** (a) Gatilho: TI no quartil superior de votos de Lula em volume, minha captura agregada do TI abaixo de ~0,7× a minha captura estadual, e minoria das praças do TI com rede ativa. (b) Leitura: região onde o campo existe em massa e me falta ponte — o alvo natural da expansão regional (Avelino/Biderman/Silva; Singer sobre a transferência que não é automática). Descartar antes: correligionário que "possui" a região (share intracampo agregado do TI — se for isso, é P3 em escala regional); e média puxada por uma praça gigante — olhar a mediana das praças, não só o agregado (H5). (c) Ações: 1º eleger 2–3 praças-cabeça do TI (maiores válidos com disputa aberta) como portas de entrada; 2º procurar organizações de escala regional — sindicatos rurais, movimentos territoriais; os CODETERs são um índice de quem opera regionalmente (Meneguello/Keck sobre capilaridade herdável do campo); 3º dobradinha com estadual forte naquele TI; 4º giro de agenda só depois de rede mínima instalada. (d) Contraindicação: tratar o TI como alvo homogêneo e pulverizar nas quinze praças de uma vez — pulverização sem rede evapora (Nielsen; B3).
**T2 — Dependência regional do portfólio.** (a) Gatilho: 2–3 TIs somando mais de ~60% da minha votação ou dos pledges; número efetivo de TIs baixo ou caindo na série. (b) Leitura: concentração em escala macro — a versão regional do padrão que pune derrotados (Avelino/Biderman); e como o voto regional anda em cluster (Carvalho & Santos), um choque regional — adversário forte, crise da economia local — derruba as praças juntas, não uma a uma (hipótese por extensão). (c) Ações: 1º dispersão dirigida: 1–2 TIs adjacentes aos fortes como alvo de expansão (o P12 em escala regional); 2º manutenção reforçada das praças-âncora dos TIs dominantes (P1); 3º rebalancear metas para não exigir crescimento onde já se está no teto regional. (d) Contraindicação: dispersão cosmética — abrir região nova sem rede é P6 multiplicado; e não financiar a expansão desmontando a manutenção do núcleo: reconstrução custa mais que manutenção (G2).
**T3 — TI de contexto adversário (majoritária perdida).** (a) Gatilho: TI entre os que o campo perdeu na disputa de governador, com minhas praças ali carregando metas de crescimento. (b) Leitura: o ambiente regional joga contra — executivo local/estadual do outro lado significa brokers alinhados ao adversário (Borges: coalizão e acesso importam). Descartar: as exceções internas — reduto meu que resiste apesar da maré; a heterogeneidade do TI, aqui, joga a favor. (c) Ações: 1º reprecificar as metas do TI para baixo e fechar a conta em outra região (a soma de Nicolau não perdoa romantismo); 2º concentrar nas praças-ilha: defesa reforçada do que existe; 3º trabalhar nichos setoriais em vez de narrativa regional — o voto compartilhado por segmento é o padrão documentado onde não se domina (Carvalho 2003). (d) Contraindicação: gastar agenda cara para "virar o território" — persuasão de região hostil é a versão macro do que a evidência diz não funcionar (Kalla & Broockman); e não abandonar as ilhas, que em maré adversária pedem mais manutenção, não menos.
**T4 — Praça fora da curva regional (benchmark intra-TI).** (a) Gatilho: dentro do mesmo TI, captura da melhor praça ≥ 3–4× a mediana do TI, ou praça relevante abaixo de 1/3 da mediana. (b) Leitura: com contexto grosseiramente controlado pelo recorte, o desvio aponta estrutura — rede, broker, história de mandato presente num lugar e ausente no outro; a praça-farol prova que o teto regional é alcançável. Descartar: idiossincrasia (terra natal de alguém, evento único) e TI internamente heterogêneo demais para servir de controle (a crítica de Serpa aplicada caso a caso). (c) Ações: 1º diagnóstico pareado farol×lanterna pelos responsáveis — o que existe lá que não existe aqui; 2º replicar o mecanismo, não a tática cega (se o farol é sindicato, buscar o análogo local); 3º liderança-ponte do farol apresentando a campanha na lanterna (P12). (d) Contraindicação: replicação sem diagnóstico; e nunca usar o farol como régua punitiva da lanterna — benchmark é para aprender mecanismo, não para constranger assessor (o gaming de G4 agradece réguas mal usadas).
**T5 — Agenda dispersa contra a geografia.** (a) Gatilho: visitas na mesma semana em praças de TIs distantes entre si, enquanto TI priorizado tem praças contíguas sem visita no ciclo. (b) Leitura: agenda montada por demanda — quem grita mais leva — e não por desenho; a lacuna desenho-operação de Nielsen na sua forma mais cara, porque deslocamento é o custo fixo da campanha de interior. Descartar: sequências politicamente obrigatórias (palanque do majoritário, data fixa de festa/feira). (c) Ações: 1º reagrupar em giros por TI — 2–3 dias, praças contíguas, custo amortizado e narrativa regional de brinde; 2º casar o giro com o calendário da dobradinha regional; 3º usar cada visita para ativar rede das praças vizinhas não visitadas (P12). (d) Contraindicação: rigidez geométrica — a geografia serve à política, não o contrário; giro perfeito no mapa que perde a janela do prefeito é giro errado.
**H4.** Com franqueza, e marcando que o ranking é opinião minha construída sobre fatos documentados. As microrregiões antigas eu descarto de saída: o IBGE as aposentou em 2017; servem só para dialogar com a literatura que as usou (a própria linha de Avelino) — nenhuma operação nova deve nascer numa malha morta. As "regiões de mídia" eu também descartaria como camada de análise territorial, por duas razões: o mecanismo que a evidência valida é o contato pessoal, e ele não viaja por sinal de rádio (Kalla & Broockman; Green & Gerber — mídia impessoal é o fundo da hierarquia); e eu não disponho de uma malha de cobertura de mídia da Bahia no meu material — não sei operacionalizá-la, e não vou fingir que sei. Se a campanha comprar rádio regional, aí ela vira um dado de planejamento de mídia — outra conversa, não a espinha territorial.
Sobram três candidatas sérias. As Regiões Imediatas do IBGE 2017 têm o argumento teórico mais bonito: são desenhadas em torno da rede urbana real — para onde as pessoas de fato se deslocam por saúde, serviços e comércio (documentado, IBGE) — e a minha hipótese é que a mediação política viaja pela mesma rede que a vida prática: o broker da cidade-polo irradia para os satélites (extensão de Bezerra, marcada como hipótese). Para rota, logística e o desenho "cidade-âncora → praças satélites", a Imediata é tecnicamente superior ao TI, e cada Imediata já vem com polo definido — útil para decidir onde senta o comitê regional. O cluster empírico — agrupar praças pelo comportamento eleitoral observado, na linha do que Carvalho & Santos fizeram com autocorrelação espacial para 2006 — é o mais honesto contra o efeito de zoneamento do MAUP, porque a fronteira emerge do dado. Mas tem dois defeitos fatais como camada operacional: é instável (muda por eleição e por candidato) e é ilegível para a operação — ninguém coordena o "cluster 3", ninguém negocia com o CODETER do cluster. E o TI tem o argumento que, em campanha, costuma ganhar: é a língua que o governo, o partido e a análise política da Bahia já falam — PPA, CODETERs, programa nos territórios, colunas de jornal contando eleição por TI. Campanha não analisa para publicar paper; analisa para coordenar gente e conversar com aliados, e a coordenação vai acontecer em vocabulário de TI de qualquer maneira.
Minha recomendação, então, em três camadas: **default operacional, o TI** — é onde moram as decisões regionais reais (assessores, giros, dobradinha, diálogo com o estado), e o custo de traduzir tudo para outra malha excede o ganho metodológico. **Secundária analítica, as Regiões Imediatas** — para rota/logística especificamente, e como malha de contraste no teste de sensibilidade que o MAUP manda fazer: análise regional rodada nas duas malhas; conclusão que só aparece numa delas é artefato de fronteira até prova em contrário (Political Analysis 2025). **Ferramenta de auditoria, o cluster empírico** — rodado uma vez, não mantido: um exercício de autocorrelação espacial à la Carvalho & Santos para mapear onde as fronteiras do TI cortam clusters eleitorais reais, gerando a nota de rodapé permanente "este TI são dois mundos; não confie na média dele". É o antídoto barato contra tratar a malha administrativa como se fosse a estrutura do voto.
**H5.** As salvaguardas, em método — e aqui o estatuto é: o problema é fato documentado (Political Analysis 2025; a síntese de GIS Geography), as regras práticas são minha tradução dele.
Primeira, a regra da escala da decisão: toda análise agregada declara qual decisão autoriza — TI autoriza decisão de TI (assessor, giro, meta regional, dobradinha); alocação em praça exige dado de praça. Média regional nunca decide destino municipal; ela só decide o que é regional. Segunda, agregado nunca viaja sozinho: todo número de TI vem acompanhado de mediana, amplitude e a praça crítica nomeada — o TI "saudável na média" escondendo um reduto em risco é exatamente a média que mente, e a heterogeneidade interna dos TIs está documentada (Serpa; USP/IPEA), não é hipótese minha. Terceira, razão dos agregados, não média das razões: captura por TI é Σ dos meus nominais ÷ Σ do teto — nunca a média simples das capturas das praças, que daria a uma praça de 3 mil válidos o mesmo peso de uma de 80 mil; e quando as duas contas divergem muito, a divergência é em si um alarme de heterogeneidade. Quarta, teste de sensibilidade de malha: as conclusões regionais que sustentam decisão cara rodam em TI e em Imediatas; onde divergem, a fronteira está fazendo o trabalho que o dado deveria fazer. Quinta, malha congelada por ciclo: os limites de TI podem mudar a cada PPA (documentado) — fixa-se a malha vigente como referência do ciclo 2026 e recompõe-se a série 2014/2018/2022 nela; comparar eleições em malhas diferentes é fabricar tendência. Sexta, o Metropolitano é exceção permanente: um TI com 24,4% do eleitorado não é uma unidade, é um quarto do estado — entra em qualquer análise sempre decomposto (zonas de Salvador + municípios da RMS), e qualquer média estadual de TIs que o trate como uma linha entre 27 está errada por construção. Sétima, e a mais importante porque é cultural, não técnica: institucionalizar a frase de que nenhuma agregação é a verdadeira — o TI é lente de coordenação, a praça é onde o voto mora e a rede opera; quando as duas leituras conflitarem, a praça manda no voto, o TI manda na logística, e quem decide entre elas é o coordenador, não a malha.
### Rodada 6 — Blocos I, J e K (brancos/nulos/abstenção; agenda do candidato; despriorização; adicionada na colaboração)
> Compêndio atualizado antes desta rodada com "Presença física do candidato" (§1), "Brancos, nulos e abstenção" (§2) e fontes 59–67.
**I1.** A primeira regra vem direto da literatura: nunca somar os três num número só. A tradição brasileira chama abstenção + brancos + nulos de alienação eleitoral, mas converge que os componentes têm determinantes distintos — a abstenção tem base ecológica/estrutural (distância, exclusão, eleitor que migrou sem transferir o título), brancos e nulos têm base atitudinal/cognitiva (indiferença no branco, protesto no nulo, escolaridade pesando nos dois) (Lima Júnior via Silva & Gimenes 2014; o estudo CESOP/Programa Cidadania 2022; Rev. Debates 2009). Determinantes distintos, tratamentos distintos: a abstenção é sobretudo contexto e correção de denominador (I2); o branco/nulo da majoritária é protesto — briga que não é a minha; e o roll-off é a única fatia genuinamente interessante para um DF.
Sobre o roll-off, deixa eu ser precisa, porque a resposta honesta é "estoque real, preço condicional". O diferencial é calculável por praça — brancos+nulos do cargo DF menos brancos+nulos da presidencial, sobre o comparecimento, na série — e o padrão nacional documentado é que a proporcional carrega bem mais branco/nulo que a majoritária (4,4% na presidencial de 2022 contra tipicamente muito mais no deputado). Quem compõe esse diferencial compareceu, votou válido no majoritário e não completou o voto de deputado — não é alienado do sistema, é desassistido na disputa de DF: com 400+ candidatos na urna, não ter número na cabeça é o desfecho default. Esse é exatamente o eleitor-alvo da tradução brasileira do GOTV — orientar o simpatizante a lembrar o número (§1 do meu quadro; Green & Gerber sobre pessoalidade). Nesse sentido, sim: é o voto mais barato que existe — mais barato que roubar voto de correligionário e infinitamente mais barato que persuadir hostil (Kalla & Broockman).
Mas três cuidados antes de alguém sair caçando roll-off. Primeiro, o estoque é público: os mesmos ~500 candidatos enxergam a mesma sobra; "disponível" não é "meu", e o preço de captura depende da MINHA rede alcançar aquela gente — sem rede, o roll-off é miragem de todo mundo igualmente. Segundo, parte do diferencial é nulo de protesto, que é atitudinal e resiste a orientação — se o diferencial da praça é dominado por nulos (o TSE separa branco de nulo por cargo), desconte. Terceiro, um alerta metodológico meu de ofício: o dado é agregado — eu não observo QUEM branqueou; a leitura "eleitor do campo que não completou o voto" é inferência ecológica, plausível onde o teto de Lula é alto, mas inferência (conhecimento geral de método, não do compêndio). Acionável, portanto: roll-off × rede × campo forte, como headroom de orientação e revisão de meta. Só contexto: nível de abstenção em si, branco/nulo da majoritária. E uma nota aritmética documentada que quase ninguém faz: brancos e nulos saem do denominador do quociente (Lei 9.504/97 via TSE) — roll-off alto no estado inteiro derruba os válidos e, com eles, o próprio QE. A meta de votos deve ser calculada sobre válidos projetados do cargo, não sobre aptos nem sobre válidos da presidencial.
**I2.** Muda, e muito, e o compêndio traz o número: municípios pequenos do interior baiano passam de 35% de abstenção — o efeito documentado do eleitor não-residente, o título que ficou onde a pessoa nasceu enquanto a vida foi para Salvador ou São Paulo. Em praça assim, "aptos" superestima sistematicamente o eleitorado real, e qualquer potencial calculado sobre aptos infla exatamente as praças menores — um viés que empurra recurso para onde há menos gente de verdade.
A correção, em ordem de preferência: potencial e votos em jogo calculados sobre válidos projetados do cargo (média ou tendência da série 2014/2018/2022), nunca sobre aptos; onde precisar usar aptos, deflacionar pela taxa de comparecimento histórica local. E note que as métricas centrais da nossa conversa já são imunes por construção: dominância usa válidos, a taxa de captura da FU2 divide votos por votos (meus nominais ÷ voto de Lula) — o eleitor fantasma não entra em nenhum dos lados. O denominador só mente onde alguém escreveu "eleitorado" querendo dizer "cadastro". Acrescento uma ponta prática marcada como hipótese de consultoria, não literatura: praça pequena com colônia grande na capital às vezes se trabalha DE Salvador — associações de conterrâneos são estrutura de mediação real (coerente com Bezerra, sem fonte direta no meu compêndio). E o que não fazer: operação de combate à abstenção em outubro — o cadastro eleitoral fecha meses antes da eleição (conhecimento geral de calendário eleitoral, fora do compêndio), a abstenção estrutural não se move com campanha proporcional, e qualquer logística de eleitor no dia tem fronteira jurídica que não é da minha alçada — isso é conversa com o advogado eleitoral.
**I3.** Três padrões, mesmo estatuto do catálogo: mecanismos documentados, composição minha, limiares ilustrativos.
**I-A — Roll-off alto onde tenho rede (voto de orientação em estoque).** (a) Gatilho: diferencial proporcional×majoritária da praça no quartil superior e estável na série, com predominância de brancos sobre nulos no diferencial, rede ativa e teto de Lula alto. (b) Leitura: eleitores do campo que comparecem e não completam o voto de DF — o alvo exato da orientação (branco = indiferença, Silva & Gimenes; contato pessoal orienta, Green & Gerber). Descartar: diferencial puxado por nulo de protesto; e lembrar que é inferência ecológica, não lista de nomes. (c) Ações: 1º embutir o "pedido completo" no script das lideranças — pede-se o voto com o número, não a simpatia; 2º material de urna mínimo (número grande) distribuído PELA rede na semana final — pela rede, não panfletagem fria (hierarquia da pessoalidade); 3º revisar a meta de pledges da praça para cima usando o roll-off como headroom. (d) Contraindicação: praça de roll-off alto sem rede — o estoque não é meu e capturá-lo por mídia impessoal é o fundo da hierarquia de eficácia; e jamais confundir roll-off com licença para persuadir hostil.
**I-B — Denominador inflado (abstenção estrutural).** (a) Gatilho: praça pequena com abstenção > ~30–35% na série e potencial/meta calculados sobre aptos. (b) Leitura: eleitor não-residente — o eleitorado real é menor que o cadastro (documentado). Descartar: abstenção conjuntural de uma eleição só. (c) Ações: 1º recalcular sobre válidos projetados; 2º rebaixar a meta e realocar o excedente para praça com headroom real; 3º avaliar a ponte de conterrâneos na capital (hipótese de prática, marcada). (d) Contraindicação: montar "mutirão contra abstenção" de campanha — cadastro fechado, elasticidade nula, risco jurídico.
**I-C — Núcleo desmobilizado em praça de defesa.** (a) Gatilho: reduto onde comparecimento E teto de Lula caíram juntos na série, com rede ativa. (b) Leitura: desmobilização do núcleo — e o canal documentado do efeito de presença/campanha é precisamente mobilizar o core (Holbrook & McClurg; Gerber & Green: +4,3 p.p. de comparecimento por contato pessoal). O voto obrigatório é imperfeito — 21,3% de abstenção na Bahia em 2022 é margem real. Descartar: queda de comparecimento por esvaziamento demográfico (aí é I-B, não desmobilização). (c) Ações: 1º ativação relacional do núcleo na reta final (amigo-para-amigo — a fronteira do GOTV); 2º presença do candidato ou do majoritário casada com a ativação (bloco J); 3º lembrete via lideranças no fim de semana da eleição, dentro dos limites que o jurídico definir. (d) Contraindicação: praça sem rede (não há núcleo endereçável); e a magnitude é evidência americana de voto facultativo — com voto obrigatório o efeito deve encolher; ninguém prometa pontos percentuais.
**I4.** O contraponto em quatro camadas. Primeira: o nulo é protesto e o branco da majoritária é indiferença atitudinal (documentado) — convertê-los é persuasão, e persuasão média é zero (Kalla & Broockman); perseguir alienado atitudinal é comprar o voto mais caro da praça com a justificativa de que ele parece "solto". Segunda: a abstenção estrutural não é mercado — é ausência física (migração, distância, exclusão); campanha de DF não a move, e o cadastro está fechado. Terceira, a econômica: o roll-off é visível para todos os candidatos ao mesmo tempo; sem rede que alcance aquele eleitor, a disputa pela sobra se trava por mídia impessoal, que é onde o efeito por real gasto é o menor da hierarquia. A régua de bolso que eu daria ao coordenador: enquanto houver simpatizante já alcançável pela rede sem pedido completo feito, o voto mais barato da campanha está DENTRO da rede, não na estatística de alienação. Quarta, a narrativa-armadilha: "20% de abstenção mais X% de branco são milhões de votos soltos" é a versão eleitoral da métrica de vaidade — número enorme, elasticidade mínima; a cadeira fecha com ~130 mil votos orientados, não com a caça ao alienado. E um limite honesto: o perfil de quem se abstém é medível por município — sexo, idade, escolaridade, desde ~2010 (Nicolau 2023, Caderno CRH) — mas saber quem falta não é o mesmo que alcançar quem falta; e quanto o roll-off responde a orientação de rede no Brasil, ninguém mediu — não sei, e é exatamente o tipo de coisa que o backtest de outubro (pledges e roll-off por zona, antes e depois) começaria a responder.
**J1.** O que a evidência quantitativa diz, com o estatuto claro: aparições de candidato têm efeito mensurável porém modesto, condicionado ao contexto — é a linha de Shaw (1999) e Herr (2002), presidenciais americanas, ambos abstract-only na minha fila; e o achado mais útil é o de Holbrook & McClurg (2005): o canal do efeito é a mobilização do núcleo, não conversão de indecisos — visita energiza quem já é seu, e a capacidade de mobilizar o núcleo é o que prediz resultado. Tradução dupla necessária: é evidência de majoritária americana com cobertura de mídia estadual; um DF na Bahia não tem esse amplificador — a visita dele opera pelo circuito da mediação (Bezerra): o evento local, a reunião com lideranças, a foto com o prefeito, o status que a presença confere ao broker que a recebeu.
Disso sai a síntese que eu assino: a visita vale o que a rede local converte dela — agenda é multiplicador de estrutura, não substituto. O mecanismo, decomposto: mobiliza o núcleo (consistente com Holbrook & McClurg), sobe o valor e o custo de traição do broker anfitrião (a visita é moeda na economia de mediação — extensão minha de Bezerra, marcada como hipótese), e cria o momento do pedido — visita bem desenhada é evento de coleta de compromissos, não comício. Como o efeito médio é modesto e a agenda é o recurso mais escasso da campanha (A1), o que importa é a variância: a mesma visita rende muito onde há rede que a converta e quase nada onde não há. E o limite: magnitude do efeito de visita para proporcional brasileira, ninguém estimou que eu saiba — não sei; tenho mecanismo, não tamanho.
**J2.** O playbook, marcado como síntese normativa minha sobre os mecanismos citados. Elegibilidade — uma praça se qualifica para visita quando cumpre as cinco: volume (válidos projetados relevantes para a meta); espaço (headroom de captura — gap contra o teto do campo, roll-off, ou estoque a defender); rede de recepção (responsável nomeado, lideranças ativas, capacidade de organizar evento — sem isso a visita evapora, Nielsen); janela política (broker disponível, dobradinha casável, data local que agrega — feira, festa, assembleia); e encaixe em giro (o custo de deslocamento amortizado — T5). Conceitualmente: retorno esperado = votos em jogo × headroom × capacidade de conversão da rede ÷ custo de deslocamento. A conta exata ninguém tem; a disciplina de exigir os cinco critérios é o que vale.
O calendário muda o produto da visita. Julho (agora): visita de construção — a audiência são dezenas de lideranças, não multidão; o produto é rede, dobradinha local, compromisso de estrutura. Convém lembrar o achado de Kalla & Broockman: o pouco efeito persuasivo que existe aparece em contato muito cedo e decai — mas o ativo durável do contato de julho não é o eleitor, é a liderança recrutada. Alvo: praças de ataque/expansão onde a rede precisa nascer; mais horas por praça, menos praças. Setembro: visita de consolidação — a rede existe, a visita colhe: evento de compromisso, coleta de pledges com data, cobrança carinhosa de meta; o balanço defesa/ataque segue a hierarquia de G2. Última semana: visita de ativação — audiência são centenas do núcleo mobilizável; o produto é comparecimento orientado (Holbrook & McClurg + o roll-off de I-A: completar o voto). Só redutos e praças de maior estoque comprometido; abrir frente nova na última semana é dinheiro queimado com cerimônia. A distinção operacional que eu fixaria: construção = converter presença em ESTRUTURA; ativação = converter estrutura em VOTO. Praças diferentes se qualificam para cada uma, e confundir as duas é o erro clássico de agenda.
**J3.** Os "não vá" explícitos, na ordem de frequência com que eu os vi violados (caso típico de consultoria, mecanismos documentados): não vá a praça perdida — campo fraco, dominância adversária consolidada; visita não persuade território hostil (Kalla & Broockman) e ainda financia a foto do adversário local com a sua presença contestada. Não vá onde não há rede de recepção — a visita sem broker que a converta evapora (P6; Nielsen); primeiro rede, depois candidato. Não vá à praça-troféu já no teto (P10) — o carinho pelo reduto de origem é o viés que a literatura pune (Avelino/Biderman); manutenção ali é função do mandato, não da agenda de outubro. Não vá onde o único fundamento é pressão — pedido de broker sem dado que o sustente é caso J-B, não caso de agenda. E não vá "para marcar presença" — a pulverização de reta final é a anti-estratégia (B3).
O intermediário — "não vá você; mande alguém" — é onde mora a eficiência: coordenador ou vice-liderança para construção de rede em praça média (construção não exige o candidato); assessor de área para checagens e cobrança (P1, P7); o parceiro da dobradinha para praças onde ELE é forte e eu sou fraco (a soma de capilaridades é essa — Câmara/imprensa); emissário discreto para praça de correligionário, onde a presença do candidato sinaliza guerra (P3); e carta/vídeo para o compromisso social inevitável de baixo retorno — mantém o vínculo de mediação a custo quase zero, com a ressalva honesta de que vídeo é contato impessoal e vale como gesto, não como mobilização (hipótese minha).
**J4.** Três padrões de agenda, formato do catálogo.
**J-A — Praça elegível madura sem visita.** (a) Gatilho: praça no topo do score de elegibilidade (volume × headroom × rede ativa), pledges crescendo, sem visita no ciclo, com giro regional planejado passando perto. (b) Leitura: retorno marginal máximo de agenda — a rede preparou; a visita colhe (multiplicador de estrutura). Descartar: praça que cresce sozinha e cuja visita seria redundante — ainda assim, consolidação tem valor; julgamento do coordenador. (c) Ações: 1º incluir no próximo giro (T5); 2º desenhar como evento de compromisso — coleta de pledges com a rede mobilizada de véspera; 3º casar com o majoritário/dobradinha se a janela permitir. (d) Contraindicação: visita isolada fora de giro em praça distante (o custo come o retorno); visita antes de a rede conseguir organizar recepção digna — visita mal recebida é sinal negativo para o broker local.
**J-B — Visita pedida vs. visita justificada.** (a) Gatilho: pedido registrado de broker/prefeito para praça com score de elegibilidade baixo. (b) Leitura: a visita como moeda de status na economia de mediação (Bezerra) — retorno eleitoral direto baixo, custo relacional de recusar possivelmente alto. Descartar: o broker pode saber o que a base não registra (FU1) — checar antes de negar. (c) Ações: 1º contra-oferta de custo menor — coordenador vai, candidato grava vídeo, ou parada curta encaixada em giro; 2º se o broker é hub de outras praças, precificar como manutenção de relação e REGISTRAR como decisão política, não como alocação por dado (para o backtest não se contaminar); 3º cobrar contrapartida mensurável — a visita em troca de meta de pledges assumida pelo anfitrião. (d) Contraindicação: recusa seca a broker-chave (economia pequena, estrago grande); e ceder por default — agenda capturada por quem grita é a morte do desenho (Nielsen; T5).
**J-C — Composição do giro.** (a) Gatilho: giro regional aprovado, 2–3 dias, 4–6 praças candidatas. (b) Leitura: a composição importa mais que a ordem — âncora + satélites contíguos + uma semente. Descartar: giro montado por conveniência logística pura, sem evento de conversão em nenhuma parada. (c) Ações: 1º âncora à noite na praça de maior estoque (evento de compromisso, núcleo mobilizado); 2º satélites de dia com reuniões de lideranças (construção); 3º fechar com praça de expansão contígua levando liderança-ponte do reduto (P12); 4º divulgar a agenda à rede com antecedência e usar o evento como deadline de pledge — visita anunciada produz compromisso antes de acontecer (hipótese de prática). (d) Contraindicação: giro-turismo — oito paradas sem conversão em nenhuma; quilometragem não é métrica de campanha, e o candidato exausto na âncora vale menos que o candidato inteiro em três praças.
**K1.** O que justifica despriorizar, nos dados: praça estruturalmente perdida (campo fraco na majoritária, dominância adversária consolidada com desequilíbrio T alto a favor de outro, minha captura ínfima em três eleições — a combinação Kalla & Broockman + barreira de entrada de Ames); praça que não responde a investimento registrado (o padrão K-A — só diagnosticável se o esforço foi registrado, FU4); custo de oportunidade explícito (a meta daquela praça coberta mais barato em outra — a soma de Nicolau não tem sentimento); e rede irrecuperável no ciclo (broker único virou, segunda linha inexistente e inconstruível em semanas). Nenhum desses sinais sozinho: a decisão é sempre combinação, e sempre comparativa — despriorizar é escolher onde o recurso rende mais, não punir a praça.
O rito, que proponho como método (prática minha + mecanismos documentados): decide o coordenador-geral com o assessor de área na reunião quinzenal de realocação (a histerese de G4); se a fronteira envolve correligionário ou federação, sobe para decisão política (A4). Registra-se por escrito, ex-ante, com motivo E sinais de reversão nomeados — despriorização é hipótese testável, não sentença; o backtest cobra as duas pontas. E comunica-se sem a palavra: externamente não existe "praça abandonada" — existe praça em "presença de mandato": o atendimento continua, a emenda pequena continua, o canal nomeado continua (Bezerra: a mediação é contínua, e o mandato é a campanha de 2030); o que muda é o recurso de CAMPANHA. A frase para a rede local é "a conta da cadeira se fecha em outro lugar neste ciclo; aqui seguimos com o mandato e com vocês" — verdadeira, respeitosa e sem promessa falsa.
**K2.** A escala que eu proporia — refinamento operacional da territorialização codificada (Manhanelli/AVM: zonas com metas distintas) mais a lógica de alocação de Ames; os critérios numéricos são ilustrativos e calibráveis:
**N0 Monitorar:** sem rede, sem meta; série TSE anual e log de sinais se chegarem. Critério: perdida estrutural ou volume ínfimo sem contiguidade estratégica. **N1 Presença de mandato:** atendimento e gesto de mediação; canal nomeado; sem meta de campanha. Critério: praça-troféu no teto (P10), despriorizada com relação a preservar, ou semente pós-K-B. **N2 Rede sem agenda:** responsável + lideranças + meta modesta de pledges; sem visita. Critério: headroom moderado, volume médio, rede construível — ou expansão nascente (P12). **N3 Rede + agenda:** N2 + giros + material. Critério: defesa relevante, ou ataque com rede madura e score de elegibilidade alto (J2). **N4 Investimento pleno:** N3 + recurso financeiro dedicado + dobradinha + evento âncora. Critério: as praças que individualmente carregam fração significativa da meta — na prática, o topo da concentração da própria votação, as duas ou três dúzias de praças onde a conta se decide.
Regras de movimento: promoção exige gatilho positivo persistente por 2 semanas (pledges crescendo, rede consolidada) MAIS checagem de capacidade (há responsável que absorva o nível novo?); rebaixamento exige não-resposta por 3–4 semanas, perda estrutural confirmada, ou rebalanceamento explícito de portfólio. Histerese, para não virar churn: praça não muda de nível duas vezes no mesmo mês; pulo de dois níveis é proibido salvo choque triangulado (invasão confirmada); promoção ganha janela de proteção de 3 semanas antes de poder ser revertida — rede recém-promovida precisa de tempo para produzir. E um teto de sanidade, que é opinião minha: se mais de ~10% das praças "querem" mudar de nível numa reunião, o problema é o critério, não o território.
**K3.** O custo é real e tem nome na literatura que uso: a economia da mediação é de status e reciprocidade (Bezerra) — o broker que descobre que sua praça virou "nível 1" lê desvalor pessoal, e broker humilhado é o alvo de recrutamento mais fácil do correligionário (Nicolau: as maiores traições são entre correligionários — e a despriorização malfeita as fabrica). Há ainda o custo informacional: a lista de prioridades é um mapa de onde você não vai defender — nas mãos erradas, é o plano de invasão do adversário (derivação minha, mecanismo elementar).
As mitigações, em método: vocabulário duplo — internamente N0–N4; externamente só existem "campanha" e "presença de mandato", e os rótulos internos não saem da coordenação (need-to-know; a lista de níveis não circula). Todo rebaixamento acompanhado de um gesto de mediação concreto — atendimento, emenda pequena, visita de mandato fora do calor — porque o que se rebaixa é o recurso de campanha, nunca a relação (Bezerra: o vínculo é contínuo; 2030 existe). O broker rebaixado recebe um pedido, não um aviso: "precisamos de você na praça vizinha / na sua categoria" — redeployment preserva status onde a dispensa o destrói (hipótese de prática). E a regra de ouro contra o estrago autoinfligido: nunca prometer a visita que não virá — franqueza parcial custa menos que promessa quebrada, porque a moeda da mediação é confiança em entrega (opinião ancorada no mecanismo de Bezerra).
**K4.** Três padrões de despriorização, formato do catálogo.
**K-A — Praça que não responde a investimento.** (a) Gatilho: esforço registrado no ciclo (visitas, recurso, tentativas de rede — o registro da FU4) com pledges e captura parados por 4+ semanas. (b) Leitura: elasticidade local revelada ≈ 0 — terreno bloqueado (broker adversário, praça "de posse" de outro) ou estrutura inexistente. Descartar, nesta ordem: sub-registro (E2 — a rede trabalha e não digita) e execução ruim (Nielsen — o desenho era bom, a operação não aconteceu); só depois culpe o terreno. (c) Ações: 1º autópsia com o assessor: execução vs. terreno, uma semana; 2º rebaixar UM nível com sinais de reversão registrados ex-ante; 3º realocar o recurso para praça-irmã do mesmo TI com headroom (T4 — o benchmark diz para onde). (d) Contraindicação: rebaixar dentro da janela de proteção pós-promoção (rede leva semanas para produzir); e não confundir resposta lenta com nula em praça grande — inércia de escala existe (opinião).
**K-B — Perdida vestida de oportunidade.** (a) Gatilho: praça com headroom aparente (roll-off alto, campo razoável na majoritária) mas dominância local consolidada de outro (T alto a favor dele) e minha captura mínima em três eleições. (b) Leitura: o estoque existe, mas a estrutura de captura tem dono — o "disponível" de I1 já está operacionalmente ocupado; entrar exige persuasão ou guerra intracampo, os dois votos mais caros do mercado. Descartar: herança aberta — o dono sai, morre politicamente, vira majoritária (aí é P3, e a praça promove em vez de rebaixar). (c) Ações: 1º classificar N0/N1 e tirar da lista de tentação — por escrito; 2º registrar o sinal de reversão ("se fulano sair, reavaliar"); 3º se contígua a reduto, semente mínima: uma liderança, sem meta, custo zero. (d) Contraindicação: usar roll-off sozinho como tese de entrada (I4 — disponível ≠ meu); e não queimar a relação local ao sair — a praça é perdida neste ciclo, não nesta década.
**K-C — Meta impossível (o erro é a conta, não a praça).** (a) Gatilho: praça N3 com rede saudável e trabalho em dia cuja meta exigiria multiplicar a captura histórica por fator implausível — o gap é estrutural, não operacional. (b) Leitura: erro de planejamento — a decomposição da FU2 distribuiu otimismo, não potencial. A praça não falhou; a conta falhou. Descartar: mudança real de patamar (dobradinha nova, broker novo, herança aberta — aí o múltiplo grande pode ser real). (c) Ações: 1º recalibrar a meta para múltiplo plausível do histórico — qual múltiplo é plausível eu não sei a priori; é exatamente o que o backtest de outubro ensina; 2º redistribuir o déficit para praças com headroom comprovado; 3º manter o nível de envolvimento se o retorno absoluto segue bom — rebaixar meta não é rebaixar praça. (d) Contraindicação: "resolver" meta impossível empilhando recurso (retorno marginal decrescente com cerimônia); e não punir o assessor pela meta que a coordenação errou — punição por meta errada ensina a rede a inflar número, e aí o sistema inteiro apodrece (G4).
Fecho com a moldura de rigor de sempre: os blocos I, J e K somam oito padrões novos ao catálogo, todos com o mesmo estatuto — mecanismo documentado, composição minha, número ilustrativo. As magnitudes que eu não tenho (efeito de visita em proporcional, elasticidade do roll-off à orientação, o múltiplo plausível de meta) são exatamente as que o registro ex-ante da FU4 mais o resultado por zona começam a estimar em novembro. A campanha que registrar este ciclo compra a resposta para 2030.

View file

@ -0,0 +1,67 @@
# Roteiro — entrevista de discovery com a persona especialista
Status: rascunho (pré-colaboração)
Atualizado em: 2026-07-21
Entrevistada: Prof. Helena Rocha ([persona sintética](persona-cientista-politico-campanha-ba.md), executada em subagent isolado grounded só na persona + compêndio)
Entrevistador: agente principal (produto Teqo)
## Natureza e adaptação de método
Isto é uma **entrevista de especialista**, não de cliente. As regras Mom Test valem adaptadas: (1) falar da realidade estudada, não do nosso produto — nada de pitch de feature; (2) ancorar em **casos concretos da literatura/campanhas estudadas**, não em "você acha que…?" hipotético sobre o app; (3) a persona fala 80%+. O que no Mom Test é "última vez que aconteceu com você" vira aqui "campanha/caso concreto que você estudou onde isso aconteceu". Compliments não existem (persona não tem incentivo social), mas **viés de literatura** sim — descontar os vieses declarados na persona.
O objetivo NÃO é validar o Teqo (a persona não é usuária); é extrair o modelo de decisão de uma campanha de DF na Bahia para depois confrontar com o coordenador real (sessão Wed em `docs/CUSTOMER.md`).
## Objetivos fixados (do plano)
1. Maiores desafios de **gerenciar** campanha de dep. federal na Bahia.
2. Jobs de decisão semanais/diários do coordenador (alocar assessor, priorizar praça, dobradinha, agenda).
3. Quais **análises** mudam alocação de esforço (OMTM de campanha, não vanity metric).
4. Quais **funcionalidades** valem o Little Hire vs. WhatsApp/planilha.
5. **Mapa:** o que destacar quando % dos válidos é baixo e visualmente homogêneo.
## Bloco A — O trabalho de coordenar (JTBD; ~15 min)
A1. Nas campanhas de deputado federal que você estudou ou assessorou, descreva o trabalho real do coordenador-geral numa semana típica de setembro. O que ele decide de fato — e o que só referenda?
A2. Conte um caso concreto (da sua pesquisa ou consultoria) em que uma campanha de DF **realocou esforço de território no meio do jogo**. O que disparou a decisão? Que informação usaram? O que aconteceu?
A3. Onde essas decisões erram com mais frequência? Qual o erro de alocação territorial mais caro que você já documentou?
A4. Quem participa dessas decisões além do coordenador (candidato, assessores, prefeitos aliados, partido)? Quem ganha a queda de braço quando os dados dizem uma coisa e a política diz outra?
## Bloco B — Desafios de gerenciamento (kernel; ~10 min)
B1. Se você tivesse que apontar O desafio crítico — o gargalo que, resolvido, destrava o resto — de uma campanha de DF do campo progressista na Bahia em 2026, qual seria? Por quê esse e não outro?
B2. O que a literatura diz que campanhas acham que é o problema, mas não é (falso diagnóstico comum)?
B3. Campanhas com pouco dinheiro: o que a evidência diz que elas devem parar de fazer?
## Bloco C — Análises que mudam decisão (Lean Analytics; ~15 min)
C1. Das métricas territoriais da sua caixa de ferramentas (dominância, concentração, G/LQ, NEC, desequilíbrio, série histórica), quais **de fato mudaram uma decisão** em casos que você conhece — e quais são refinamento acadêmico que campanha nenhuma usa?
C2. Se a campanha só pudesse acompanhar UMA métrica semanal até 16/08 (One Metric That Matters), qual deveria ser? Como ela se decompõe em meta por praça?
C3. Que métrica parece útil mas é vaidade neste contexto (falso sinal)?
C4. Pledges de lideranças (fulana declara N votos na praça X): a literatura trata isso como dado confiável? Como uma campanha deveria descontar exagero e desatualização?
C5. Qual análise de RISCO uma campanha de DF ignora com mais frequência (invasão de reduto, NEC subindo, dependência de poucos brokers…)?
## Bloco D — Mapa e visualização (decisão → representação; ~10 min)
D1. Situação real da nossa base: mapa coroplético da Bahia, % dos válidos do candidato por praça, escala 0–100%; quase tudo fica na mesma cor porque o topo estadual de um DF é ~5%. Da sua experiência com dados TSE: **que pergunta de decisão** um mapa de campanha de DF deveria responder primeiro?
D2. Para essa pergunta, que transformação da escala você usaria (quantis do próprio candidato, LQ, rank na praça, classes operacionais…)? O que a cartografia manda fazer e o que ela proíbe aqui?
D3. Interior enorme e visualmente dominante vs. Salvador minúscula com ~1/5 do eleitorado: como você já viu isso ser resolvido bem (value-by-alpha, símbolo proporcional, cartograma)? O que é sofisticação demais para uso em campo?
D4. Os limiares defesa/ataque/indecisa/perdida calibrados como 35/20/10% dos válidos: o que acontece quando se aplica isso a uma disputa de DF? Como você calibraria?
## Bloco E — Ferramenta e adoção (Little Hire; ~5 min)
E1. Campanhas que você estudou tentaram adotar sistemas (planilha central, CRM, app): conte um caso que morreu e um que pegou. O que diferenciou?
E2. Que registro o time de campo **continua fazendo em outubro**, quando o cansaço bate — e que registro abandona primeiro?
## Bloco F — Fechamento (~5 min)
F1. O que nesta conversa é hipótese sua (literatura) vs. o que você apostaria dinheiro que o coordenador real vai confirmar?
F2. Que pergunta nós deveríamos fazer ao coordenador real na quarta-feira que ainda não sabemos fazer?
F3. (Commitment adaptado) Que evidência do TSE/da literatura você nos indicaria ler antes de mexer no mapa?
## Regras de condução
- Follow-ups Mom Test: "conte o caso", "o que fizeram então?", "por que isso importa?", "quanto custou?".
- Se a persona generalizar ("campanhas costumam…"), pedir o caso/estudo concreto e a fonte.
- Se a persona opinar sobre UI/telas, redirecionar para a pergunta de decisão (limite declarado da persona).
- Registrar transcrição como apêndice do relatório; separar fato-da-literatura vs. interpretação-da-persona.
- Anti-padrões: não pitchar o Teqo; não perguntar "você usaria/acha bom o X?"; não aceitar resposta sem fonte ou caso.

View file

@ -0,0 +1,45 @@
# Fila de fontes — pause-and-fetch
Depósito de obras centrais sem texto integral em acesso aberto. Coloque cada obra (PDF/EPUB/Markdown, obtida legalmente) em `docs/research/sources/<slug>/` e avise no chat. Binários são gitignored; apenas `README.md`/`NOTES.md` versionam.
Status: `solicitado` → `recebido` → `lido` (incorporado ao compêndio).
## Eixo 1 — Campanha geral / ground game
| Obra | Por que importa | Pasta | Status |
| --------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | ---------- |
| Green & Gerber — _Get Out the Vote_ (4ª ed., Brookings 2019) — [loja](https://www.brookings.edu/books/get-out-the-vote-2/) | Referência prática nº 1 de mobilização baseada em evidência; tabelas de custo-efetividade por tática e capítulo novo de relational organizing | `sources/green-gerber-gotv/` | solicitado |
| Hersh — _Hacking the Electorate_ (Cambridge 2015) — [editora](https://doi.org/10.1017/cbo9781316212783) | Como os dados disponíveis moldam (e distorcem) a percepção da campanha sobre o eleitorado — diretamente aplicável ao risco "dado velho no Teqo" | `sources/hersh-hacking-electorate/` | solicitado |
| Nielsen — _Ground Wars_ (Princeton 2012) — [editora](https://press.princeton.edu/books/hardcover/9780691153049/ground-wars) | Etnografia da operação de campo real (assessores, voluntários, listas) — lacuna entre desenho analítico e operação | `sources/nielsen-ground-wars/` | solicitado |
| Issenberg — _The Victory Lab_ (2012) | História narrativa da ciência de campanha; útil para repertório, prioridade menor | `sources/issenberg-victory-lab/` | solicitado |
## Eixo 2/5 — Brasil / deputado federal
| Obra | Por que importa | Pasta | Status |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | ---------- |
| Ames — _The Deadlock of Democracy in Brazil_ (Michigan 2001) | Livro que consolida a tipologia concentração×dominância usada por toda a literatura posterior; caps. 2–3 são o núcleo | `sources/ames-deadlock/` | solicitado |
| Carvalho — _E no início eram as bases_ (Revan 2003) — [loja](https://www.travessa.com.br/e-no-inicio-eram-as-bases-geografia-politica-do-voto-e-comportamento-legislativo-no-brasil/artigo/07df556f-4e2c-4b98-9a80-71fbcfa1a87c) | Referência brasileira de geografia do voto → comportamento; metodologia dos 4 padrões aplicada a 1994/1998 | `sources/carvalho-bases/` | solicitado |
| Nicolau — _Sistemas Eleitorais_ (FGV, ed. atual) | Manual canônico do funcionamento do sistema; capítulo de lista aberta | `sources/nicolau-sistemas-eleitorais/` | solicitado |
## Eixo 3 — Bahia
| Obra | Por que importa | Pasta | Status |
| -------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------- | ---------- |
| Dantas Neto — _Tradição, autocracia e carisma_ (Ed. UFMG 2006) | Obra de referência sobre o carlismo e a formação do campo político baiano | `sources/dantas-neto-carlismo/` | solicitado |
## Eixo 4 — Esquerda / PT
| Obra | Por que importa | Pasta | Status |
| ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ----------------------------- | ---------- |
| Singer — _Os sentidos do lulismo_ (Cia. das Letras 2012) — [trecho aberto](https://www.companhiadasletras.com.br/trechos/13393.pdf) | Tese do realinhamento 2006 e do subproletariado nordestino; central para ler o eleitorado-alvo na Bahia | `sources/singer-lulismo/` | solicitado |
| Secco — _História do PT_ (Ateliê 2011) | Trajetória organizativa do partido (núcleos → profissionalização) | `sources/secco-historia-pt/` | solicitado |
| Keck — _The Workers' Party and Democratization in Brazil_ (Yale 1992) / trad. _PT: a lógica da diferença_ | Formação do PT vista de fora; organização como diferencial | `sources/keck-workers-party/` | solicitado |
## Cartografia / visualização
| Obra | Por que importa | Pasta | Status |
| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------- | ---------- |
| Brewer & Pickle 2002 — "Evaluation of Methods for Classifying Epidemiological Data on Choropleth Maps in Series" (_Annals of the AAG_ 92(4):662–681) | O experimento que fundamenta "quantis para séries de mapas comparáveis" — base da recomendação de escala relativa | `sources/brewer-pickle-2002/` | solicitado |
| Field — _Thematic Mapping: 101 Inspiring Ways to Visualise Empirical Data_ (Esri 2021) | Catálogo definitivo de representações de resultado eleitoral (101 mapas da mesma eleição) | `sources/field-thematic-mapping/` | solicitado |
| Monmonier — _How to Lie with Maps_ (3ª ed., Chicago 2018) | Clássico sobre distorções de coropleto/classificação; vacina contra mapa enganoso | `sources/monmonier-lie-with-maps/` | solicitado |
| Manhanelli — _Estratégias Eleitorais_ (Summus 1988, 11ª ed.) | Eixo prático BR: método de 10 etapas incl. plano de mobilização territorial | `sources/manhanelli-estrategias/` | solicitado |

View file

@ -1,6 +1,6 @@
# Roadmap — Teqo
Atualizado em: 2026-07-21 (B12 entregue; B6 + B8 F1 + fill-in **C8** F4 entregues; A9+/B7/B9–B11/filtros-auto entregues)
Atualizado em: 2026-07-21 (programa **Inteligência de campanha** E8–E15/B13/C12 registrado pós-discovery — [plano-mestre](plans/inteligencia-campanha.md), embasamento [docs/research/](research/); B12/B6/B8 F1/C8 F4/A9+/B7/B9–B11/filtros-auto entregues)
Registro canônico dos **próximos** planos e débitos. Histórico de entregas: resumo abaixo + planos em [`docs/plans/`](plans/) + notebook [`.cursor/rules/projects/nucleos-eleitorais.mdc`](../.cursor/rules/projects/nucleos-eleitorais.mdc).
@ -47,6 +47,23 @@ Feedback da coordenação (2026-07-20) invalidou o modelo de Núcleo: a campanha
| R4 | Inteligência: comparativo multi-candidato, mapa divergente (vermelho↔branco↔azul), tendência política manual, rename série E2 → "Evolução" | entregue 2026-07-21 |
| R5 | Hardening: testes por papel (unit 187 / int 306 / e2e 9 verdes), Aikido, checklist de deploy (migração destrutiva revisada) | entregue 2026-07-21 — critique/polish visual fino registrado como R6 |
## Inteligência de campanha (discovery 2026-07-21)
O discovery literatura→persona→entrevista ([relatório aprovado](research/relatorio-entrevista-persona-campanha.md); compêndio com ~67 fontes em [docs/research/](research/)) fixou o kernel: a disputa de DF é conta de quociente fragmentada; o gargalo é converter lealdade de campo em voto nominal praça a praça via rede; % estadual absoluto é anti-métrica. O produto deve entregar **inteligência, não planilha chique**: metas derivadas, leitura relativa, fila de decisão priorizada, sugestões dado→decisão com humano no loop, registro ex-ante auditável. Plano-mestre: [inteligencia-campanha.md](plans/inteligencia-campanha.md) (incl. gaps de dados G1–G10 e desenho canônico da fila).
| ID | Fatia | Plano | Entrega essencial | Classe | Appetite | Janela | Depende de |
| --- | ---------------------------------- | ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | -------- | --------- | ---------------------------------- |
| E8 | Conta da cadeira | [detalhes](plans/conta-da-cadeira.md) | Global `campaignGoals`; potencial por praça (válidos projetados, captura do campo, roll-off, headroom); decomposição meta→praça; cobertura Σpledges÷meta | B | ~2d | 2 | deploy remodelagem |
| E9 | Fila de alocação | [detalhes](plans/fila-de-alocacao.md) | Lista de decisão (7 colunas), ordenação por déficit descoberto + risco por frescor, "coluna da vergonha" | B | ~1,5d | 2 | E8 |
| C12 | Registro-fundação | [detalhes](plans/registro-fundacao.md) | Versions em `votePledge`; sinais tipados no `plazaUpdate`; `actionPlan.origin`+custo; collection `allocationDecision` | B | ~2d | 2 | deploy remodelagem (paralelo a E8) |
| E10 | Classificação territorial relativa | [detalhes](plans/classificacao-territorial-relativa.md) | Âncoras relativas (LQ / share da cadeira marginal), multi-eixo; substitui 35/20/10 para DF | B | ~1d | 3 | E8 |
| B13 | Escala relativa no mapa | [detalhes](plans/escala-relativa-mapa.md) | Quantis do candidato (default) + LQ + rank; símbolo proporcional por votos em jogo; % válidos mantido | B | ~2d | 3 | E8, E10 |
| E14 | Níveis de envolvimento N0–N4 | [detalhes](plans/niveis-de-envolvimento.md) | `engagementLevel` com histerese e sinais de reversão; staff-only (vocabulário duplo) | B | ~1d | 3 | C12 |
| E11 | Motor de sugestões v1 | [detalhes](plans/motor-de-sugestoes.md) | 8 padrões (P1/P2/P3/P5/P6/P7/K-A/K-B), menu com estatuto, aceitar/descartar → `allocationDecision`, triagem 1–5 | C | ~3d | 3 | E8, E9, E10, C12 |
| E12 | Camada TI | [detalhes](plans/camada-territorios-identidade.md) | Rollups com salvaguardas MAUP, benchmark intra-TI (gatilhos T no motor = fase 2 de E11) | B | ~1,5d | 3 | E8 |
| E13 | Planejador de presença/giros | [detalhes](plans/planejador-de-giros.md) | Elegibilidade (5 condições ✓/—), fases construção/consolidação/ativação, compositor de giro, visita pedida×justificada | C | ~1,5d | 3 | E8, C12 |
| E15 | Backtest pós-eleição | [detalhes](plans/backtest-pos-eleicao.md) | Pledge (trajetória) vs. resultado por zona; calibração de limiares | A | ~1d | pós-04/10 | C12, TSE 2026 |
```mermaid
flowchart TD
subgraph Onda0["Onda 0 — produção"]
@ -82,6 +99,36 @@ flowchart TD
B11 -.troca escala.-> B6
JUR -.chave push.-> D2
C2prod --> C5["C5 GOTV (validar)"]
subgraph Intel["Inteligência de campanha — discovery 2026-07-21"]
E8i["E8 Conta da cadeira"]
E9i["E9 Fila de alocação"]
C12i["C12 Registro-fundação"]
E10i["E10 Classificação relativa"]
B13i["B13 Escala relativa no mapa"]
E14i["E14 Níveis N0–N4"]
E11i["E11 Motor de sugestões v1"]
E12i["E12 Camada TI"]
E13i["E13 Planejador de giros"]
E15i["E15 Backtest pós-eleição"]
end
R4 --> E8i
R5 --> C12i
E8i --> E9i --> E11i
C12i --> E11i
C12i --> E14i
C12i --> E15i
E8i --> E10i --> B13i
E10i -.classes.-> E11i
E8i --> E12i
E8i -.metas.-> E14i
E14i -.níveis.-> E11i
C12i --> E13i
E8i --> E13i
A6 -.dobradinha.-> E13i
C2prod -.dados reais.-> E11i
E11i -.decisões acumuladas.-> E15i
```
Paralelizáveis agora: fill-ins (O0+, RS+, …). ~~**A9** / **A9+** / **B9** / **B7** / **B10** / **B11** / **B6** / **B12** / **filtros-auto** / **C8** F4~~ entregues 2026-07-21.
@ -90,17 +137,17 @@ Paralelizáveis agora: fill-ins (O0+, RS+, …). ~~**A9** / **A9+** / **B9** / *
**Janela 1 — agora → 05/08 (convenções):** ~~R0 → R1 → R2~~ entregues; ~~**A9** estimativa de votos~~ / ~~**B9** edição rápida na lista~~ / ~~**B7** mapa filtrado~~ / ~~**B10** hover+click-nav~~ / ~~**B11** escala % dos válidos~~ / ~~**B12** aproximar mapa ao footprint filtrado~~ / ~~**filtros-auto** lista de Praças~~ entregues; **deploy da remodelagem** (revisar SQL destrutivo da migração antes do build) + smoke em produção; R6 critique/polish; Onda 0 jurídica em paralelo.
**Janela 2 — 05/08 → 16/08 (pré-propaganda):** C2 dados reais assim que o jurídico liberar; D2 se sobrar folga.
**Janela 2 — 05/08 → 16/08 (pré-propaganda):** C2 dados reais assim que o jurídico liberar; **E8** conta da cadeira → **E9** fila de alocação, com **C12** registro-fundação em paralelo (migrations cedo, longe do congelamento); D2 se sobrar folga.
**Janela 3 — 16/08 → set:** A6 dobradinha (pós-TSE 15/08), ~~**B6** `setStyle` incremental~~ entregue, **B8** polígonos das Praças-zona Salvador/Camaçari (F1 catálogo de bairros shipável antes; F2 dissolve), débitos sobreviventes (abaixo).
**Janela 3 — 16/08 → set:** A6 dobradinha (pós-TSE 15/08), **E10** classificação relativa → **B13** escala relativa no mapa, **E14** níveis N0–N4, **E11** motor de sugestões v1, **E12** camada TI, **E13** planejador de giros; **B8** polígonos das Praças-zona Salvador/Camaçari (F1 catálogo de bairros shipável antes; F2 dissolve), débitos sobreviventes (abaixo).
**Janela 4 — set → 04/10:** C5 GOTV _(validar)_, congelamento ~20/09 (só bugfix/dados).
**Janela 4 — set → 04/10:** C5 GOTV _(validar)_, congelamento ~20/09 (só bugfix/dados). **E15** backtest pós-eleição (após 04/10).
### Cortes seguros / não cortáveis
**Não cortáveis:** Onda 0 (jurídico/Consent); R1–R2 (sem eles a vertical não reflete a operação real); C2 dados reais; assimetria declarado×estimado (relação de campo); ~~**A9**~~ (total esperado da Praça — entregue 2026-07-21).
**Não cortáveis:** Onda 0 (jurídico/Consent); R1–R2 (sem eles a vertical não reflete a operação real); C2 dados reais; assimetria declarado×estimado (relação de campo); ~~**A9**~~ (total esperado da Praça — entregue 2026-07-21); **E8**+**E9**+**C12** (a conta da cadeira, a fila e o registro ex-ante são o mínimo de "inteligência, não planilha" — e C12 é irrecuperável se não registrar durante a campanha).
**Cortes seguros** (se o prazo apertar, nesta ordem): R4 mapa comparativo (manter tabela comparativa); painel de detalhe por zona no mapa; R3 organizações (manter demandas); resultado de plano com mídia (manter texto); Eleitorado/IBGE na Praça; D2 push (manter sino); A6; **B8** (F2 polígonos; manter F1 bairros na Praça se já entregue — mapa continua agregado no município); débitos/fill-ins. ~~**B9** / **B10** / **B11** / **B6** / **B12**~~ (entregues — não cortar).
**Cortes seguros** (se o prazo apertar, nesta ordem): **E13** planejador de giros (agenda segue manual com J-A/J-B como guia); **E12** camada TI (rollup manual por lista); **E15** (pós-eleição por definição — cortar = perder o aprendizado 2030); **E11** motor v1 (manter fila E9 sem sugestões); **B13** símbolo proporcional (manter quantis/LQ como escala); **E14** (manter `priority` alta/normal); R4 mapa comparativo (manter tabela comparativa); painel de detalhe por zona no mapa; R3 organizações (manter demandas); resultado de plano com mídia (manter texto); Eleitorado/IBGE na Praça; D2 push (manter sino); A6; **B8** (F2 polígonos; manter F1 bairros na Praça se já entregue — mapa continua agregado no município); débitos/fill-ins. ~~**B9** / **B10** / **B11** / **B6** / **B12**~~ (entregues — não cortar).
## Já entregue (resumo)
@ -137,7 +184,8 @@ Paralelizáveis agora: fill-ins (O0+, RS+, …). ~~**A9** / **A9+** / **B9** / *
## Próximos — sobreviventes e pós-remodelagem
- **A6** dobradinha 2026 automática quando o TSE publicar candidaturas · gatilho externo: pós-15/08 · reenquadrar para Praça · [plano](plans/insight-dobradinha-2026.md)
- **Programa Inteligência de campanha** (E8–E15, B13, C12) · fatias, gaps de dados e fila canônica no [plano-mestre](plans/inteligencia-campanha.md) · embasamento: [docs/research/](research/) (relatório aprovado 2026-07-21)
- **A6** dobradinha 2026 automática quando o TSE publicar candidaturas · gatilho externo: pós-15/08 · reenquadrar para Praça · alimenta **E13** · [plano](plans/insight-dobradinha-2026.md)
- **B5 F2–F3** cache CLI compartilhado + factory mun/TI (scripts continuam) · [plano](plans/escala-dry-pos-b2.md)
- **B8** Polígonos das Praças-zona (Salvador ZE 1–19 / Camaçari ZE 170–171): ~~F1 catálogo zona→bairros + UI na Praça~~ (entregue 2026-07-21); F2 prep catálogo (~½ dia) + dissolve IBGE/malha → TopoJSON no mapa · Janela 3 · cortável (F2) · [plano](plans/poligonos-pracas-zona.md)
- **C5** operação dia D / GOTV _(validar com produto)_ · design [`Dia-D-GOTV`](design-refs/latest/Dia-D-GOTV.png) · depende de C2 dados reais
@ -188,5 +236,6 @@ Paralelizáveis agora: fill-ins (O0+, RS+, …). ~~**A9** / **A9+** / **B9** / *
- [`AGENTS.md`](../AGENTS.md) — decisões travadas, Known Gaps, checklist
- [`.cursor/rules/projects/nucleos-eleitorais.mdc`](../.cursor/rules/projects/nucleos-eleitorais.mdc) — status operacional (era Núcleos → Praças)
- [`README.md`](../README.md) — missão
- [`docs/plans/*.md`](plans/) — planos por item ([remodelagem-pracas.md](plans/remodelagem-pracas.md) é o plano-mestre vigente)
- [`docs/plans/*.md`](plans/) — planos por item ([remodelagem-pracas.md](plans/remodelagem-pracas.md) e [inteligencia-campanha.md](plans/inteligencia-campanha.md) são os planos-mestre vigentes)
- [`docs/research/`](research/) — embasamento de produto/domínio (compêndio de literatura + relatório de discovery aprovado 2026-07-21)
- Res. TSE 23.760/2026 · Res. TSE 23.610/2019 art. 33 · Politipédia AVM