# Painel Sintético Concorde [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/caio-sartoratto/painel-sintetico-mcp  
**GitHub Stars:** 1  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/painel-sint-tico-concorde

## Description
787 personas sintéticas do consumidor bancário brasileiro para discovery de produtos.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "painel-sint-tico-concorde": {
    "command": "npx",
    "args": ["-y","wrangler"]
  }
}
```

## Documentation & README

# Painel Sintético Concorde

[![MCP Registry](https://img.shields.io/badge/MCP%20Registry-published-6f42c1)](https://registry.modelcontextprotocol.io/v0.1/servers?search=painel-sintetico-concorde)
[![License: MIT](https://img.shields.io/badge/License-MIT-informational)](LICENSE)
[![Cloudflare Workers](https://img.shields.io/badge/runs%20on-Cloudflare%20Workers-f38020)](https://workers.cloudflare.com/)

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.

1. No Claude (Desktop, web ou mobile): **Settings → Connectors → Add custom connector**
2. Cole a URL: `https://painel.concorde-painel.workers.dev/mcp`
3. Requer plano pago do Claude (conectores customizados não estão no plano gratuito)

Ele também está publicado no [registro oficial de MCP](https://registry.modelcontextprotocol.io)
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.

## Dois modos: focus group e pesquisa

- **Focus group** (exploração qualitativa): `filtrar_personas`/`sortear_amostra` + `get_personas`.
  O Claude dá voz a um recorte pequeno de personas para você ouvir objeções e afiar hipóteses.
- **Pesquisa direcional** (medição): `preparar_pesquisa` faz **fan-out isolado** — o host dispara
  uma tarefa/subagente por persona, cada uma responde sem ver as outras, e a distribuição é
  agregada localmente. Isso evita a convergência artificial de respostas geradas no mesmo contexto.
  Formatos: `escolha` (distribuição), `pontuar` (nota 0-10 por atributo → média+desvio por opção,
  preserva a preferência secundária), `escala` e `aberta`. O `seed` é aleatório por padrão e
  devolvido no resultado para reprodução. **É o mecanismo por trás dos backtests abaixo.**

Privacidade por construção: a **pergunta do usuário não trafega pelo servidor**. A fronteira de
confiança é classificada **localmente** no Claude (a ferramenta `avaliar_pergunta` devolve só a
rubrica), e as respostas das personas são agregadas no host — o servidor recebe apenas o filtro de
segmento, o número de personas e o formato.

## Validação (backtest contra pesquisa real)

100 personas sorteadas do painel, classificadas com temperatura 0 (reproduzível), comparadas a
pesquisas publicadas.

### 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% | 74,0% | **5,5 pp** |

**Erro médio absoluto: 3,0 pp** — as três dentro de 6 pontos percentuais do benchmark.

### Reclame AQUI 2026 (crise de confiança em bancos digitais, n=2.073)

| Atitude do consumidor | Reclame AQUI | Painel | Erro |
|---|--:|--:|--:|
| Medo de a instituição quebrar e perder o dinheiro (liquidez) | 35% | 39% | **4 pp** |

### BCG e Nubank, "Beyond Access" 2023 (população brasileira, n=2.000)

Headline do estudo: mais de 70% dos brasileiros não se sentem seguros nem incluídos
financeiramente. O painel, de forma independente, chega a **78%**.

Sem nenhuma quebra por classe no benchmark, o painel reproduz sozinho o gradiente social da
insegurança (amostra estratificada por classe, temperatura 0):

| Classe | Se sente inseguro | Amostra |
|---|--:|--:|
| A | 5% | n=22 |
| B | 20% | n=30 |
| C | 77% | n=30 |
| D/E | 80% | n=30 |

### Controle: e se for só o LLM?

As mesmas perguntas respondidas direto por modelos de fronteira, sem painel, sem persona, sem
busca na internet, temperatura 0:

| Pergunta | Real | Painel | Gemini 3.1 Pro | GPT-5.6 |
|---|--:|--:|--:|--:|
| Mantém ou aumenta o uso de bancos digitais | 84,9% | 86% | 84% | 85% |
| Rapidez do cadastro é o fator nº 1 | 51,4% | 49% | 18% | 25% |
| A casa é o lugar mais seguro para acessar | 68,5% | 74% | 65% | 90% |
| Medo de a instituição quebrar (liquidez) | 35% | 39% | 45% | 65% |
| **Erro médio absoluto** | | **3,3 pp** | 12,0 pp | 19,5 pp |

O painel erra **3,7x menos que o Gemini** e **6x menos que o GPT** nas mesmas perguntas. No
headline do BCG: painel 78% (dentro do ">70%"), Gemini 55% (fora), GPT 60% (fora). Os números
dos modelos crus ainda contradizem a si mesmos: o Gemini estima 45% "seguros e incluídos" mas só
31% "seguros", e a interseção não pode ser maior que a parte. O painel não produz esse erro
porque cada número vem de contar personas uma a uma.

Transparência: essas são as perguntas de melhor aderência entre as 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/`](https://github.com/caio-sartoratto/painel-sintetico-mcp/blob/HEAD/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)
 │              10 ferramentas: visao_geral, avaliar_pergunta (rubrica da
 │              fronteira p/ classificação LOCAL), filtrar_personas,
 │              sortear_amostra, preparar_pesquisa (fan-out isolado),
 │              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).

```sh
npm install
VAULT_DIR=/caminho/do/vault npm run build-data   # gera src/data/*.json (não versionado)
npm run dev                                       # local em http://localhost:8787
npx wrangler secret put ADMIN_TOKEN               # kill switch do fórum + dashboard
npx wrangler secret put HASH_SALT                 # sal dos hashes de IP
npm run deploy
```

## Licença

Código sob [MIT](https://github.com/caio-sartoratto/painel-sintetico-mcp/blob/HEAD/LICENSE). 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](https://www.linkedin.com/in/caio-sartoratto-prado-078307178/)
· projeto Concorde. Feedback: [fórum do painel](https://painel.concorde-painel.workers.dev/forum).

