Painel Sintético Concorde

Servidor MCP remoto que expõe um painel de 787 personas sintéticas do consumidor bancário
brasileiro para qualquer Claude (Desktop, web, mobile) — para discovery de produtos bank e
fintech. Roda inteiro no free tier da Cloudflare Workers.
Site e demo: https://painel.concorde-painel.workers.dev
Nome no registro oficial de MCP: io.github.caio-sartoratto/painel-sintetico-concorde
Como instalar / encontrar
O painel é um conector MCP remoto. Não há nada para baixar.
- No Claude (Desktop, web ou mobile): Settings → Connectors → Add custom connector
- Cole a URL:
https://painel.concorde-painel.workers.dev/mcp
- Requer plano pago do Claude (conectores customizados não estão no plano gratuito)
Ele também está publicado no registro oficial de MCP
como io.github.caio-sartoratto/painel-sintetico-concorde, então tende a aparecer em
marketplaces e agregadores de MCP que consomem o registro. A instalação, porém, continua sendo
pela URL acima (estar no registro não adiciona o conector automaticamente ao Claude).
Os dados do painel não estão neste repositório (são proprietários — veja a licença).
Este repo é o motor: servidor MCP, site, fórum, cotas e telemetria. O serviço público
roda com o painel completo.
Por que existe
Pedir a um LLM para "simular 700 pessoas" produz um respondente médio repetido N vezes, com
viés de renda/escolaridade (Santurkar et al. 2023; Bisbee et al. 2024). O caminho que funciona
é condicionar o modelo em atributos sociodemográficos reais (Argyle et al. 2023). Aqui a
heterogeneidade vem da estrutura: cada persona é ligada por filtro determinístico
(campo operador valor) a fatos estatísticos com fonte, e o LLM só dá voz.
Validação (backtest contra pesquisa real)
100 personas sorteadas do painel, classificadas com temperatura 0 (reproduzível), comparadas ao
Estudo idwall 2025 (amostra nacional ponderada por IBGE):
| Pergunta de atitude do consumidor | idwall | Painel | Erro |
|---|
| Pretende manter/aumentar uso de bancos digitais | 84,9% | 86,0% | 1,1 pp |
| Rapidez do cadastro é o fator nº 1 na abertura de conta | 51,4% | 49,0% | 2,4 pp |
| A casa é o lugar mais seguro para acessar o banco | 68,5% | 84,0% | 15,5 pp |
Erro médio absoluto: 6,3 pp — 2 de 3 dentro da margem amostral do método (~5 pp para n=100).
Transparência: essas são as 3 perguntas de melhor aderência entre 8 categorias testadas. Itens
de satisfação e incidência auto-reportada divergem mais (viés de calibração conhecido nas
narrativas, em ajuste). Não substitui pesquisa primária nem teste A/B — é a etapa barata que
vem antes.
Exemplos
Transcrições reais rodando no Claude (personas e fatos vêm do painel de verdade):
examples/ — focus group de conceito, teste com Classe A e checagem de dado.
Arquitetura
vault Obsidian (fonte da verdade: personas + fatos + vozes + instituições)
│ npm run build-data (compila markdown → JSON)
▼
Cloudflare Worker
├─ /mcp servidor MCP (agents SDK / McpAgent + Durable Object)
│ 8 ferramentas: visao_geral, filtrar_personas, sortear_amostra,
│ get_personas, buscar_fatos, listar_vozes, get_instituicao,
│ get_distribuicoes
├─ QuotaDO cotas por IP (rajada/dia + teto de fichas: anti-extração)
├─ / site estático server-rendered (zero framework)
├─ /forum fórum anônimo sem moderação prévia (ForumDO) — nunca exposto via MCP
│ (evita prompt injection armazenada em sessões de terceiros)
└─ StatsDO telemetria própria (IPs só como hash; dashboard admin)
Decisões que valem nota:
- DSL de filtro própria (sem eval):
classe_social == 'Classe C' & idade > 30, mesma
sintaxe do vault ao servidor.
- Fatos tipados (propensão / prevalência / composição / referência) — composição é
P(público|métrica), o inverso de propensão; o servidor injeta aviso na ficha quando presente.
- Cotas via Durable Object por IP: extração em massa do painel é impraticável sem
autenticação de usuários.
- Fórum fora do MCP por regra: conteúdo aberto de terceiros nunca volta por ferramenta,
eliminando o vetor de injection armazenada.
Rodando
Pré-requisitos: Node 20+, conta Cloudflare, um vault no formato esperado (veja
scripts/build-data.mjs para o schema de frontmatter).
npm install
VAULT_DIR=/caminho/do/vault npm run build-data
npm run dev
npx wrangler secret put ADMIN_TOKEN
npx wrangler secret put HASH_SALT
npm run deploy
Licença
Código sob MIT. Os dados do painel (personas, fatos, vozes, fichas de
instituições e distribuições) são proprietários, não incluídos neste repositório e não
licenciados para redistribuição.
Autor
Caio Sartoratto Prado — LinkedIn
· projeto Concorde. Feedback: fórum do painel.