{
  "markdown": "# Painel Sintético Concorde\n\n[![MCP Registry](https://img.shields.io/badge/MCP%20Registry-published-6f42c1)](https://registry.modelcontextprotocol.io/v0.1/servers?search=painel-sintetico-concorde)\n[![License: MIT](https://img.shields.io/badge/License-MIT-informational)](LICENSE)\n[![Cloudflare Workers](https://img.shields.io/badge/runs%20on-Cloudflare%20Workers-f38020)](https://workers.cloudflare.com/)\n\nServidor MCP remoto que expõe um painel de **787 personas sintéticas do consumidor bancário\nbrasileiro** para qualquer Claude (Desktop, web, mobile) — para discovery de produtos bank e\nfintech. Roda inteiro no free tier da Cloudflare Workers.\n\n**Site e demo:** https://painel.concorde-painel.workers.dev\n**Nome no registro oficial de MCP:** `io.github.caio-sartoratto/painel-sintetico-concorde`\n\n## Como instalar / encontrar\n\nO painel é um conector MCP remoto. Não há nada para baixar.\n\n1. No Claude (Desktop, web ou mobile): **Settings → Connectors → Add custom connector**\n2. Cole a URL: `https://painel.concorde-painel.workers.dev/mcp`\n3. Requer plano pago do Claude (conectores customizados não estão no plano gratuito)\n\nEle também está publicado no [registro oficial de MCP](https://registry.modelcontextprotocol.io)\ncomo `io.github.caio-sartoratto/painel-sintetico-concorde`, então tende a aparecer em\nmarketplaces e agregadores de MCP que consomem o registro. A instalação, porém, continua sendo\npela URL acima (estar no registro não adiciona o conector automaticamente ao Claude).\n\n> Os **dados do painel não estão neste repositório** (são proprietários — veja a licença).\n> Este repo é o motor: servidor MCP, site, fórum, cotas e telemetria. O serviço público\n> roda com o painel completo.\n\n## Por que existe\n\nPedir a um LLM para \"simular 700 pessoas\" produz um respondente médio repetido N vezes, com\nviés de renda/escolaridade (Santurkar et al. 2023; Bisbee et al. 2024). O caminho que funciona\né condicionar o modelo em atributos sociodemográficos reais (Argyle et al. 2023). Aqui a\nheterogeneidade vem da estrutura: cada persona é ligada por **filtro determinístico**\n(`campo operador valor`) a fatos estatísticos com fonte, e o LLM só dá voz.\n\n## Dois modos: focus group e pesquisa\n\n- **Focus group** (exploração qualitativa): `filtrar_personas`/`sortear_amostra` + `get_personas`.\n  O Claude dá voz a um recorte pequeno de personas para você ouvir objeções e afiar hipóteses.\n- **Pesquisa direcional** (medição): `preparar_pesquisa` faz **fan-out isolado** — o host dispara\n  uma tarefa/subagente por persona, cada uma responde sem ver as outras, e a distribuição é\n  agregada localmente. Isso evita a convergência artificial de respostas geradas no mesmo contexto.\n  Formatos: `escolha` (distribuição), `pontuar` (nota 0-10 por atributo → média+desvio por opção,\n  preserva a preferência secundária), `escala` e `aberta`. O `seed` é aleatório por padrão e\n  devolvido no resultado para reprodução. **É o mecanismo por trás dos backtests abaixo.**\n\nPrivacidade por construção: a **pergunta do usuário não trafega pelo servidor**. A fronteira de\nconfiança é classificada **localmente** no Claude (a ferramenta `avaliar_pergunta` devolve só a\nrubrica), e as respostas das personas são agregadas no host — o servidor recebe apenas o filtro de\nsegmento, o número de personas e o formato.\n\n## Validação (backtest contra pesquisa real)\n\n100 personas sorteadas do painel, classificadas com temperatura 0 (reproduzível), comparadas a\npesquisas publicadas.\n\n### idwall 2025 (amostra nacional ponderada por IBGE)\n\n| Pergunta de atitude do consumidor | idwall | Painel | Erro |\n|---|--:|--:|--:|\n| Pretende manter/aumentar uso de bancos digitais | 84,9% | 86,0% | **1,1 pp** |\n| Rapidez do cadastro é o fator nº 1 na abertura de conta | 51,4% | 49,0% | **2,4 pp** |\n| A casa é o lugar mais seguro para acessar o banco | 68,5% | 74,0% | **5,5 pp** |\n\n**Erro médio absoluto: 3,0 pp** — as três dentro de 6 pontos percentuais do benchmark.\n\n### Reclame AQUI 2026 (crise de confiança em bancos digitais, n=2.073)\n\n| Atitude do consumidor | Reclame AQUI | Painel | Erro |\n|---|--:|--:|--:|\n| Medo de a instituição quebrar e perder o dinheiro (liquidez) | 35% | 39% | **4 pp** |\n\n### BCG e Nubank, \"Beyond Access\" 2023 (população brasileira, n=2.000)\n\nHeadline do estudo: mais de 70% dos brasileiros não se sentem seguros nem incluídos\nfinanceiramente. O painel, de forma independente, chega a **78%**.\n\nSem nenhuma quebra por classe no benchmark, o painel reproduz sozinho o gradiente social da\ninsegurança (amostra estratificada por classe, temperatura 0):\n\n| Classe | Se sente inseguro | Amostra |\n|---|--:|--:|\n| A | 5% | n=22 |\n| B | 20% | n=30 |\n| C | 77% | n=30 |\n| D/E | 80% | n=30 |\n\n### Controle: e se for só o LLM?\n\nAs mesmas perguntas respondidas direto por modelos de fronteira, sem painel, sem persona, sem\nbusca na internet, temperatura 0:\n\n| Pergunta | Real | Painel | Gemini 3.1 Pro | GPT-5.6 |\n|---|--:|--:|--:|--:|\n| Mantém ou aumenta o uso de bancos digitais | 84,9% | 86% | 84% | 85% |\n| Rapidez do cadastro é o fator nº 1 | 51,4% | 49% | 18% | 25% |\n| A casa é o lugar mais seguro para acessar | 68,5% | 74% | 65% | 90% |\n| Medo de a instituição quebrar (liquidez) | 35% | 39% | 45% | 65% |\n| **Erro médio absoluto** | | **3,3 pp** | 12,0 pp | 19,5 pp |\n\nO painel erra **3,7x menos que o Gemini** e **6x menos que o GPT** nas mesmas perguntas. No\nheadline do BCG: painel 78% (dentro do \">70%\"), Gemini 55% (fora), GPT 60% (fora). Os números\ndos modelos crus ainda contradizem a si mesmos: o Gemini estima 45% \"seguros e incluídos\" mas só\n31% \"seguros\", e a interseção não pode ser maior que a parte. O painel não produz esse erro\nporque cada número vem de contar personas uma a uma.\n\nTransparência: essas são as perguntas de melhor aderência entre as categorias testadas. Itens\nde satisfação e incidência auto-reportada divergem mais (viés de calibração conhecido nas\nnarrativas, em ajuste). **Não substitui pesquisa primária nem teste A/B** — é a etapa barata que\nvem antes.\n\n## Exemplos\n\nTranscrições reais rodando no Claude (personas e fatos vêm do painel de verdade):\n[`examples/`](examples/) — focus group de conceito, teste com Classe A e checagem de dado.\n\n## Arquitetura\n\n```\nvault Obsidian (fonte da verdade: personas + fatos + vozes + instituições)\n        │  npm run build-data  (compila markdown → JSON)\n        ▼\nCloudflare Worker\n ├─ /mcp        servidor MCP (agents SDK / McpAgent + Durable Object)\n │              10 ferramentas: visao_geral, avaliar_pergunta (rubrica da\n │              fronteira p/ classificação LOCAL), filtrar_personas,\n │              sortear_amostra, preparar_pesquisa (fan-out isolado),\n │              get_personas, buscar_fatos, listar_vozes, get_instituicao,\n │              get_distribuicoes\n ├─ QuotaDO     cotas por IP (rajada/dia + teto de fichas: anti-extração)\n ├─ /           site estático server-rendered (zero framework)\n ├─ /forum      fórum anônimo sem moderação prévia (ForumDO) — nunca exposto via MCP\n │              (evita prompt injection armazenada em sessões de terceiros)\n └─ StatsDO     telemetria própria (IPs só como hash; dashboard admin)\n```\n\nDecisões que valem nota:\n\n- **DSL de filtro própria** (sem eval): `classe_social == 'Classe C' & idade > 30`, mesma\n  sintaxe do vault ao servidor.\n- **Fatos tipados** (propensão / prevalência / composição / referência) — composição é\n  P(público|métrica), o inverso de propensão; o servidor injeta aviso na ficha quando presente.\n- **Cotas via Durable Object** por IP: extração em massa do painel é impraticável sem\n  autenticação de usuários.\n- **Fórum fora do MCP por regra**: conteúdo aberto de terceiros nunca volta por ferramenta,\n  eliminando o vetor de injection armazenada.\n\n## Rodando\n\nPré-requisitos: Node 20+, conta Cloudflare, um vault no formato esperado (veja\n`scripts/build-data.mjs` para o schema de frontmatter).\n\n```sh\nnpm install\nVAULT_DIR=/caminho/do/vault npm run build-data   # gera src/data/*.json (não versionado)\nnpm run dev                                       # local em http://localhost:8787\nnpx wrangler secret put ADMIN_TOKEN               # kill switch do fórum + dashboard\nnpx wrangler secret put HASH_SALT                 # sal dos hashes de IP\nnpm run deploy\n```\n\n## Licença\n\nCódigo sob [MIT](LICENSE). Os **dados do painel** (personas, fatos, vozes, fichas de\ninstituições e distribuições) são proprietários, não incluídos neste repositório e **não\nlicenciados** para redistribuição.\n\n## Autor\n\nCaio Sartoratto Prado — [LinkedIn](https://www.linkedin.com/in/caio-sartoratto-prado-078307178/)\n· projeto Concorde. Feedback: [fórum do painel](https://painel.concorde-painel.workers.dev/forum).\n",
  "bytes": 8664,
  "sha": "6420cf1e5f7563da198af64f334ca3e34b7c703ec71fba52a5935be47d83e662",
  "repo_slug": "caio-sartoratto/painel-sintetico-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_caio_sartoratto_painel_sinteti_fc8598cd/readme"
}