Exercício de curso com dados fictícios. Contém resultados de SIMULAÇÃO SINTÉTICA identificados por origem.
Curso ABEP · Dados e Personas Sintéticas · Kit 3

Uma audiência sintética calibrada ajuda a chegar ao campo humano com as perguntas certas

Este guia ensina um método de pesquisa quantitativa com respondentes sintéticos que serve para qualquer estudo: um teste de conceito, de embalagem, de mensagem ou de questionário. O método parte da base humana que você já tem, gera uma audiência sintética em várias rodadas, calibra essa audiência só no treino, mede o resultado contra uma amostra de validação humana aberta uma vez e entrega uma decisão célula por célula, com a origem de cada linha marcada.

Que decisões o método ajuda a tomar

Triagem de estímulos

Ordenar conceitos, embalagens ou mensagens antes de gastar o único campo humano com todos eles.

Pré-teste de questionário

Ver se uma escala achata as respostas, se uma pergunta deixa de diferenciar públicos, se a ordem de exibição pesa.

Hipóteses por célula

Apontar em que faixa, região ou perfil o resultado pode ser diferente, para dirigir a coleta humana para lá.

Saber até onde vale

Dizer, com número, para que uso o sintético serve (AVANÇAR), para que serve só como hipótese (REVISAR) e para que não serve (PARAR).

O que você leva no fim

  • A tabela de decisão por uso e por célula, cada linha com a evidência e a condição ao lado.
  • O disclosure, a declaração ao cliente de que houve material sintético, como ele foi feito e até onde vale.
  • O relatório de auditoria, com a Leitura do grupo escrita e assinada por quem pesquisa.
  • A base integrada: humanos de treino e linhas sintéticas numa tabela só, com a coluna de origem.
  • O relatório de calibração e validação em HTML e PDF, com os gráficos.
  • Um projeto reaproveitável: todas as informações do estudo e a curadoria dos dados ficam numa pasta só, projetos/NOME_DO_ESTUDO/, com as nove etapas, o estado do projeto e o registro de prompts.
Onde mora o seu estudoTudo o que é do seu estudo, da pergunta à decisão, fica dentro de projetos/, numa subpasta com o nome do estudo: projetos/NOME_DO_ESTUDO/. Um estudo por pasta. O nome não leva espaço nem acento. O diretor e todos os scripts recebem sempre --projeto projetos/NOME_DO_ESTUDO.
Exemplo do exercício: Nuvem Casa

O kit traz um projeto pronto para treinar, na pasta projetos/nuvem_casa/. A Nuvem Casa é uma marca fictícia de pastilhas concentradas para limpador multiuso. A equipe de marketing precisa escolher um entre três conceitos de comunicação: A, "Menos embalagem, mesma limpeza" (argumento ambiental), B, "Uma pastilha. Uma garrafa. Muitas limpezas." (simplicidade), e C, "Limpeza potente em minutos" (desempenho). Há verba para um único campo humano. A base de treino tem 480 pessoas (912 linhas, porque cada exposto avaliou dois conceitos) e a amostra de validação tem 240 pessoas. Fonte: projetos/nuvem_casa/caso/00_briefing_do_caso.md e projetos/nuvem_casa/01_pergunta/pergunta.md.

Em todo o guia, a Nuvem Casa aparece só nestas caixas, como exemplo resolvido, com os números reais da execução de 19/10/2026.

O método em um desenho

O método tem a forma de um cofre e de um laço: tudo se ajusta no treino, e a amostra de validação abre uma vez

A base humana se divide por sorteio. O treino alimenta a construção, as rodadas e a calibração, que volta quantas vezes for preciso. A amostra de validação fica no cofre até a abertura única, e só depois vêm a base integrada e a decisão.Clique num bloco para ver o que entra, o que o agente faz e o que sai. Setas do teclado andam pelo fluxo.

entradaprocessosaídaportão do diretorcofrelaço de calibração
Começar o projeto

O diretor transforma uma frase sua num projeto com nove etapas e uma pasta própria

Na IDE, você escreve uma frase e o diretor faz o resto: pergunta, cria a pasta, grava a configuração e para no primeiro portão. O ensaio abaixo segue o diálogo de teste do kit e as perguntas reais do diretor.Clique em Iniciar e escolha as respostas. A árvore de pastas nasce no explorador e o bloco correspondente do fluxograma acende.

O que você digita na IDE para começar
começar um projeto novo de [tema do estudo, por exemplo: teste de três embalagens de shampoo sólido]
Kit_3_Quantitativo · conversa com o agente · skill diretor-quantitativo
Explorador
    A metodologia

    O método troca a promessa de "pesquisa sem campo" por uma régua humana que ninguém tocou

    Antes do passo a passo, entenda a lógica inteira. Cada etapa existe para proteger uma garantia, e cada escolha tem uma alternativa que foi descartada por um motivo.

    O problema de pesquisa que o método resolve

    Um estudo quantitativo costuma ter uma chance de campo. Se o questionário está mal desenhado, se uma hipótese ficou de fora ou se o estímulo errado foi testado, não há segunda rodada. Ao mesmo tempo, modelos de linguagem e geradores por regra produzem milhares de respostas em minutos, e a tentação é tratar essas respostas como uma amostra. A literatura mostra por que isso é perigoso: médias que parecem certas convivem com variância encolhida, relações entre perguntas desfeitas e erros concentrados em públicos específicos.

    O método resolve as duas coisas juntas. Usa o sintético para ensaiar o estudo e levantar hipóteses, e cobra dele uma prova contra pessoas reais antes de qualquer uso na decisão.

    A lógica do método está no fluxograma

    Sete movimentos, na ordem do fluxograma: a pergunta vira parâmetros; a base humana responde ao mesmo questionário; a amostra de validação é sorteada e guardada; o gerador produz rodadas condicionadas por perfil; a calibração e a mixagem acontecem só no treino e ficam congeladas; a amostra de validação abre uma vez; a decisão sai por uso e por célula, com a base integrada marcando a origem de cada linha.

    Por que cada escolha foi feita assim, e a alternativa descartada
    Escolha do métodoPor quêAlternativa descartada
    Amostra de validação separada por sorteio antes de tudo e aberta uma vezQualquer ajuste feito depois de ver a régua aprende com a régua. Só gente que nenhum ajuste viu mede o métodoValidar no próprio treino. No treino o calibrado fica perto de zero de distância por construção
    Várias rodadas com sementes registradasSepara o acaso do gerador do vício do modelo e torna o lote reproduzívelUma rodada só, que não distingue erro de sorte
    Quotas tiradas dos alvos populacionaisO lote nasce com a composição do públicoDeixar o gerador escolher perfis, que repete a composição dos dados com que foi treinado
    Raking e mapeamento de quantis aprendidos no treinoCorrigem composição, nível e escala com regra transparente e reproduzívelColocar a média humana dentro do pedido ao modelo, que é calibração escondida e anula a validação
    Mixagem: estimar em cada base e combinar depoisO peso do sintético passa a depender do erro medido, célula por célulaEmpilhar as bases (pool cru), que dá ao sintético o peso do número de linhas
    Leitura célula por célula, com mínimo de 20 humanosO sintético pode acertar o total e errar um públicoLer só o total
    Decisão por uso, com regra escritaOrdenar conceitos, estimar nível e cruzar métricas exigem provas diferentesUm selo único de "o sintético funciona"
    Coluna de origem em toda tabela e na base integradaLinha sintética nunca vira pessoa ouvida, nem em margem de erroSomar sintético ao n humano para "engordar" a amostra

    O que o método promete

    • Saber, com número, se o sintético acerta a ordem dos estímulos no seu público.
    • Saber em que célula ele erra e de que tipo é o erro.
    • Um protocolo reproduzível: mesmas sementes, mesmos números.
    • Um disclosure que separa pessoas ouvidas de respondentes gerados.

    O que o método não promete

    • Dimensionar mercado ou estimar nível de intenção para previsão de vendas. O nível calibrado é o nível do treino humano emprestado.
    • Preencher célula pequena com sintético e chamar de amostra.
    • Substituir o campo humano na escolha final.
    • Valer para outra categoria, outro país ou outra pergunta sem nova validação.
    Onde o método se encaixa entre os métodos de pesquisa
    SituaçãoPapel do sintético quantitativo
    Pré-teste de questionário e pilotoComplementa. Ensaia o instrumento antes do campo. É o uso que a força-tarefa da AAPOR considera fora da zona de risco, desde que rotulado
    Triagem de muitos estímulosComplementa. Ordena e prioriza, com a ordem confirmada na amostra de validação
    Levantamento de hipóteses por públicoComplementa. Aponta células a investigar e dirige a coleta
    Escolha final, nível de intenção, tamanho de mercadoNão substitui. A decisão cita o dado humano
    Público difícil de alcançarCuidado redobrado. É onde o sintético tende a errar mais e onde há menos humanos para conferir
    Qualitativo com personas e grupos sintéticos (Kits 1 e 2)Antecede. As hipóteses dos kits 1 e 2 viram perguntas medidas aqui
    Fonte primáriaA força-tarefa da AAPOR sobre uso responsável de IA em pesquisa de survey (2026) escreve que respostas sintéticas trazem riscos sérios de validade e de transparência quando usadas além de pré-teste, piloto ou diagnóstico exploratório claramente rotulados, e que o custo de alcançar um público tende a andar junto com a imprecisão do sintético para ele. AAPOR, Responsible AI Integration in Survey Research.
    Exemplo do exercício: a lógica na Nuvem Casa

    Pergunta: qual conceito avança, medido por purchase_intent de 1 a 5. Base humana: 480 pessoas de treino. Amostra de validação: 240 pessoas, separadas e entregues num zip à parte, só na revelação. Geração por regra: 5 rodadas de 2.400 respondentes. Calibração e mixagem congeladas na etapa 7. Revelação na etapa 8. Decisão: 21 linhas na tabela, uma por uso e célula.

    No caso, a geração foi feita por regra, sem chamar modelo de linguagem: um motor em motor/ faz o papel do modelo do fornecedor e simula vícios descritos na literatura. Ele só é aberto depois da etapa 8.

    Antes de começar

    Você conduz o estudo conversando com o agente da IDE, e os scripts fazem as contas

    Nenhum passo exige terminal nem código escrito por você. Você pede em português, o agente explica o plano, roda o script da etapa e mostra o resultado.

    Abra a pasta do kit na IDE

    Use a IDE que preferir: Claude Code, Codex, Cursor ou Antigravity. Abra a pasta Kit_3_Quantitativo pelo menu de abrir pasta. O agente lê as regras em AGENTS.md e CLAUDE.md (o mesmo texto nos dois) no começo de toda conversa.

    CamadaOnde estáPapel
    Diretorskill diretor-quantitativoFaz o briefing, cria ou abre o projeto, conduz as nove etapas e para nos portões
    RegrasAGENTS.md e CLAUDE.mdO que vale sempre. Exemplo: a amostra de validação só abre depois da frase de liberação
    Skills.agents/skills/ (Codex, Cursor, Antigravity) e .claude/skills/ (Claude Code)Procedimento de cada etapa: passos, script, o que conferir, o que nunca fazer
    PedidosPEDIDO.md e CONFERIR.md em cada pasta de etapa do projetoO texto para colar na conversa e a lista do que conferir
    Scriptsscripts/As contas, só com a biblioteca padrão do Python. Mesma entrada, mesmo resultado

    Três frases abrem tudo

    "começar"

    O diretor se apresenta e oferece o exemplo guiado ou um projeto novo.

    "novo projeto"

    O diretor pergunta o nome, cria projetos/NOME_DO_ESTUDO/ e faz o briefing, uma pergunta de cada vez.

    "abrir o [nome do estudo]"

    O diretor lê o estado_do_projeto.md e continua de onde parou. Cada conversa nova começa sem memória, e esse arquivo é a memória.

    Prompt · abrir um estudo existente
    Abrir o [nome do estudo]. Leia o estado_do_projeto.md, me diga em três linhas a etapa atual, o que já foi feito e o próximo passo, e espere a minha confirmação antes de rodar qualquer script.

    Para ver as opções de qualquer script sem gravar nada, peça ao agente: "rode python scripts/NOME.py --help e me explique as opções".

    O seu estudo e a sua base

    Uma base própria bem preparada decide metade da qualidade do estudo

    O caminho principal deste kit é você rodar o seu estudo, com os seus dados. A Nuvem Casa serve para treinar o caminho. Esta seção diz o que trazer, em que formato, como separar a amostra de validação e onde colocar cada arquivo.

    Cada estudo vive numa pasta própria dentro de projetos/

    Todas as informações do estudo e a curadoria dos dados ficam em projetos/NOME_DO_ESTUDO/. Um estudo por pasta. O nome sai em minúsculas, sem acento e com sublinhado no lugar de espaço. O diretor e os scripts recebem sempre --projeto projetos/NOME_DO_ESTUDO e nunca misturam dois projetos.

    A árvore abaixo é a que scripts/novo_projeto.py cria de fato (conferida numa cópia do kit em 19/10/2026), ao lado do projeto de exemplo. Em verde, o que você coloca. Em coral, a parte separada para a validação.

    O seu estudo, logo depois de criadoprojetos/NOME_DO_ESTUDO/ ├── estado_do_projeto.md memória do projeto ├── registro_de_prompts.md ├── caso/LEIA.md briefing e estímulos ├── 01_pergunta/ PEDIDO e CONFERIR │ + pergunta.md, parametros.json │ (o diretor escreve no briefing) ├── 02_curadoria/ │ └── dados/ │ ├── LEIA.md │ ├── ficha_de_origem.md preencher │ + humanos_treino.csv │ + alvos_populacionais.csv │ + dicionario_de_dados.csv │ + questionario.md ├── 03_analise/ 04_vetores_e_rag/ ├── 05_construcao/ │ + regras_de_geracao.json │ (o diretor escreve antes da etapa 5) ├── 06_execucao/ 07_calibracao/ ├── 08_validacao/ │ └── amostra_validacao/ │ ├── LEIA.md │ + humanos_validacao.csv ├── 09_decisao/ └── resultados/ tudo o que o agente grava
    Exemplo do exercício: projetos/nuvem_casa/projetos/nuvem_casa/ ├── estado_do_projeto.md ├── registro_de_prompts.md ├── caso/ │ ├── 00_briefing_do_caso.md │ └── estimulos/ conceitos.md e 3 imagens ├── 01_pergunta/ │ ├── pergunta.md │ └── parametros.json ├── 02_curadoria/dados/ │ ├── humanos_treino.csv 480 pessoas │ ├── alvos_populacionais.csv │ ├── dicionario_de_dados.csv │ ├── questionario.md │ └── ficha_de_origem.md ├── 03_analise/ 04_vetores_e_rag/ ├── 05_construcao/regras_de_geracao.json ├── 06_execucao/ 07_calibracao/ ├── 08_validacao/amostra_validacao/ │ humanos_validacao.csv 240 pessoas, │ chega no zip da revelação ├── 09_decisao/ └── resultados/

    Que arquivos trazer e em que formato

    Arquivos CSV em UTF-8, separados por vírgula, com cabeçalho na primeira linha. Notas como números de 1 a 5. Esse é o formato que os scripts leem; planilha do Excel precisa ser salva como CSV UTF-8 antes.

    ArquivoOndeFormato
    humanos_treino.csv02_curadoria/dados/Uma linha por pessoa e por estímulo avaliado. Obrigatórias: respondent_id, origin_flag = human, split = train, concept_id, exposure_order, as variáveis de célula e de quota e as métricas de parametros.json. Grupo de controle com concept_id = NONE e notas vazias
    alvos_populacionais.csv02_curadoria/dados/Colunas variable, category, proportion, source, universe. As proporções de cada variável somam 1. Fonte com nome e ano
    dicionario_de_dados.csv02_curadoria/dados/Colunas variable, label, type, allowed_values (valores separados por barra vertical), level, missing_rule, notes. O script recusa valor fora do dicionário
    questionario.md02_curadoria/dados/As perguntas e escalas, na ordem em que foram aplicadas
    ficha_de_origem.md02_curadoria/dados/Todos os campos preenchidos, inclusive permissão de uso e base legal. Campo vazio reprova a curadoria
    humanos_validacao.csv08_validacao/amostra_validacao/As mesmas colunas do treino, com split = amostra de validação e nenhuma pessoa repetida do treino
    Valor exato do split na amostra de validaçãoEscreva amostra de validação no campo split de cada linha da amostra de validação, como pedem o 00_LEIA.md, a ficha do modelo de projeto e o dicionário de dados. O script da etapa 8 (scripts/validar_na_amostra_validacao.py) também aceita validation, o valor em inglês que o projeto de exemplo usa. Qualquer outro valor faz a etapa 8 parar sem registrar a abertura.

    Exemplo de arquivo mínimo

    Este é o começo de uma base de aluno fictícia que o kit usa nos testes de projeto novo: três conceitos (X, Y, Z), duas variáveis de quota, três métricas e dois campos abertos, 180 pessoas no treino e 90 na amostra de validação. Note a linha de controle e as duas linhas da mesma pessoa.

    respondent_id,origin_flag,split,design_cell,pair_id,order_group,concept_id,exposure_order,age_band,region,gender,purchase_frequency,appeal,credibility,purchase_intent,like_open,dislike_open AL0001,human,train,control,NONE,NONE,NONE,0,18-34,Capital,Homem,Mensal-ou-mais,,,,, AL0002,human,train,exposed,XZ,XZ,X,1,35-54,Capital,Mulher,Mensal-ou-mais,3,3,4,gostei do preço,não entendi o rótulo AL0002,human,train,exposed,XZ,XZ,Z,2,35-54,Capital,Mulher,Mensal-ou-mais,4,3,3,promete resultado rápido,faltou prova

    E o parametros.json desse estudo diz aos scripts quais colunas usar:

    { "metrica_principal": "purchase_intent", "metricas_de_apoio": ["credibility", "appeal"], "variaveis_de_celula": ["age_band", "region", "gender", "purchase_frequency"], "variaveis_de_quota": ["age_band", "region"], "campos_de_texto": ["like_open", "dislike_open"], "n_minimo_celula": 20, "rodadas_minimas_para_estabilidade": 3, "tolerancia_de_correlacao": 0.05 }

    Anonimização e permissão de uso

    • Tire nome, telefone, e-mail, documento, endereço e qualquer texto aberto que identifique a pessoa. O respondent_id é um código sem relação com a identidade.
    • Respostas abertas vão para o contexto do gerador na etapa 4. Releia e retire nomes próprios e detalhes que identifiquem alguém.
    • Na ficha de origem, escreva quem coletou, quando, com que consentimento e com que base legal. O código da Insights Association pede que, se os dados puderem ser usados em modelagem ou simulação, isso seja comunicado ao participante em termos claros. Confira se a permissão da sua base cobre esse uso.
    • Sem permissão escrita, o dado não entra, mesmo que o script aprove.

    Separe a amostra de validação antes de tudo

    1. Sorteie pessoas, nunca linhas: as duas avaliações de uma mesma pessoa vão juntas para o mesmo lado.
    2. Reserve cerca de um terço das pessoas, a sugestão da ficha do modelo de projeto. Na Nuvem Casa foram 240 de 720.
    3. Se uma célula crítica é pequena, sorteie dentro de cada célula (sorteio estratificado), para que a validação tenha gente nela.
    4. Grave a parte sorteada em 08_validacao/amostra_validacao/humanos_validacao.csv, com split = amostra de validação, e não abra mais esse arquivo até a etapa 8. Melhor ainda: peça a outra pessoa da equipe que guarde o arquivo e só entregue na revelação, como o professor faz no curso.
    Prompt · separar a amostra de validação
    Tenho a minha base em [caminho do arquivo]. Antes de qualquer análise, sorteie por respondent_id um terço das pessoas, estratificando por [variável da célula crítica], com a semente [número]. Grave as pessoas sorteadas em projetos/[nome_do_estudo]/08_validacao/amostra_validacao/humanos_validacao.csv com split=amostra de validação e o restante em projetos/[nome_do_estudo]/02_curadoria/dados/humanos_treino.csv com split=train. Me mostre só as contagens de pessoas e de linhas de cada lado, sem mostrar nenhuma nota da parte de validação.

    Crie o projeto e coloque os arquivos no lugar

    Prompt · novo projeto
    novo projeto. O nome do estudo é "[nome do estudo]". Depois de criar a pasta, me diga onde coloco cada arquivo da minha base e quais arquivos de configuração você vai escrever comigo no briefing.

    Por baixo, o agente roda python scripts/novo_projeto.py "Nome do estudo". O script normaliza o nome (por exemplo, "Teste de embalagem 2026" vira projetos/teste_de_embalagem_2026), copia _modelo_de_projeto/, troca o nome nos PEDIDO.md, cria o estado_do_projeto.md e recusa nome que já existe. A Nuvem Casa continua intacta.

    O que o diretor pergunta no briefing

    Uma pergunta por mensagem. Ele repete o que entendeu e pede exemplo quando a resposta vem vaga.

    1. Que decisão o número vai apoiar, e que número responde a ela? Qual métrica, em que escala?
    2. Qual é o negócio e a categoria?
    3. Qual é o público e em que células a decisão precisa valer? Quais células são críticas?
    4. Quais são os estímulos? Existe grupo de controle sem estímulo?
    5. Existe questionário? Que perguntas e escalas?
    6. Que base humana existe, de quando, com que colunas? Dá para separar uma amostra de validação por sorteio?
    7. Que alvos populacionais existem, de que fonte, para que variáveis?
    8. Com que permissão? O dado pessoal já saiu?
    9. Qual é o prazo e que nível de evidência a decisão exige: triagem, ordenar, estimar nível ou ler célula por célula?

    Com as respostas, ele grava 01_pergunta/briefing.md, preenche a ficha de origem e escreve pergunta.md e parametros.json, sempre mostrando antes de gravar. Se faltar dado, ele faz uma análise do que existe e propõe um plano com três partes: o que coletar, que lacuna declarar e se o método cabe.

    Minha base está pronta?

    Marque cada item. A marcação fica guardada só neste navegador.

    Erros típicos de base própria

    ErroComo apareceComo corrigir
    Base pequena por célulaA etapa 3 marca "célula pequena"; a tabela de decisão manda PARARColeta humana dirigida para a célula antes da geração. Completar com sintético não acrescenta pessoas
    Escala codificada diferentePARADA: "As notas precisam ser números de 1 a 5"; ou escala invertida (1 = muito, 5 = nada), que passa no script e inverte o resultadoRecodificar para 1 a 5 no mesmo sentido do questionário antes de colocar o arquivo. Confira uma pergunta conhecida
    Coluna com nome trocadoPARADA de coluna obrigatória ausente, citando o nomeRenomear no CSV ou ajustar parametros.json e o dicionário para o nome real
    Categoria escrita de dois jeitos"valores fora do dicionário", como 60+ e 60 +Padronizar na base; o dicionário é a referência
    Contar linhas como pessoasn inflado no relatórioOs scripts contam por respondent_id. Confira que a mesma pessoa tem o mesmo id nas duas linhas
    Validação com gente do treinoPARADA na etapa 8: "Pessoas repetidas no treino"Refazer o sorteio por pessoa, antes de qualquer análise
    Público da base diferente do briefingO diretor aponta, por exemplo, homens numa base de público femininoFiltrar a base ou corrigir o briefing, e declarar

    O que muda de um estudo para outro: os estímulos, as categorias, as métricas e os alvos. O que não muda: o formato dos arquivos, a separação da amostra de validação, a ordem das etapas e as travas. Os scripts funcionam com quaisquer estímulos, categorias e métricas nesse formato.

    Mapa do fluxo

    Nove etapas, cinco portões e uma única revelação

    As etapas 1 a 7 usam só a base de treino. A revelação separa o antes do depois: a partir dela, nada da construção nem da calibração muda.

    Clique numa etapa para ir até ela.
    etapa com treinoportão: você confirmarevelaçãodepois da abertura
    Exemplo do exercício: o tempo em aula

    As etapas 1 a 7 somam 62 minutos e, com o rascunho da tabela de decisão, ocupam a prática do Dia 3. As etapas 8 e 9 acontecem no bloco da revelação, quando o professor libera a amostra de validação pelo zip Kit_3_Revelacao_so_no_final.zip, que leva só a pasta projetos/nuvem_casa/08_validacao/amostra_validacao/. Fonte: 00_LEIA.md.

    Etapa 1 · 01_pergunta

    Uma decisão bem escrita define o que o estudo pode e o que não pode medir

    sem script4 min em aula
    Entra

    A decisão que você precisa tomar, o público e as células, ditos ao diretor

    Faz

    Escreve com você o formulário de dez campos e os parâmetros que os scripts leem

    Sai

    01_pergunta/pergunta.md e parametros.json

    Prompt · seu estudo
    Projeto: projetos/[nome_do_estudo]. Estamos na etapa 1. Leia 01_pergunta/pergunta.md e me explique em cinco linhas qual decisão o estudo apoia, qual número responde a ela e qual material fica separado para a validação até a etapa 8. Depois abra 01_pergunta/parametros.json, me diga linha por linha como cada campo virou parâmetro e confira se os nomes de coluna existem em 02_curadoria/dados/humanos_treino.csv. Não rode script e não abra 08_validacao/amostra_validacao.
    Versão preenchida, exemplo do exercício
    Prompt · Nuvem Casa
    Projeto: projetos/nuvem_casa. Os caminhos de arquivo deste pedido ficam dentro dessa pasta. Os scripts ficam em scripts/, na raiz do kit, e rodam a partir dela.
    Leia 00_LEIA.md, AGENTS.md e 01_pergunta/pergunta.md. Me explique em cinco linhas, em português simples, qual decisão este kit vai apoiar, qual número responde a ela e qual material fica separado para a validação até a etapa 8. Depois abra 01_pergunta/parametros.json e me diga, linha por linha, como cada campo do formulário virou um parâmetro. Não rode nenhum script nesta etapa e não abra a pasta 08_validacao/amostra_validacao.
    Aprofunde · dado, armadilha e passo prático

    Armadilha real. A AAPOR recomenda não usar "pesquisa", "survey" ou "sondagem" para dados gerados por IA, porque essas palavras implicam respondentes humanos, e diz que casos gerados não são "participantes". Escreva a pergunta e o relatório separando as duas origens desde o primeiro arquivo. AAPOR 2026.

    Passo prático. Antes de qualquer número, escreva no campo 8 o que o sintético não pode fazer, com as palavras que vão para o relatório.

    Por que e detalhes da etapa 1

    O que acontece

    Você preenche o formulário de dez campos em 01_pergunta/pergunta.md: a decisão, quem decide e quando, o número que responde, o público, as células, as métricas de apoio, o que o sintético pode e não pode fazer, o resultado que mudaria a decisão e o material separado para validação. Os campos 3, 5 e 6 viram parametros.json.

    Por que

    Este formulário é o contrato da análise: as etapas seguintes medem o que está escrito ali e nada além. Escrever antes de ver número evita a pesca de resultado, quando o pesquisador escolhe a métrica ou a célula depois de ver qual favorece a hipótese.

    O que sai

    01_pergunta/briefing.md (gravado pelo diretor) e parametros.json com a métrica principal, as de apoio, as variáveis de célula e de quota, o mínimo de 20 por célula, 3 rodadas mínimas e a tolerância de correlação de 0,05.

    O que conferir

    • A decisão cabe numa frase e cita os estímulos. "Entender o consumidor" volta para reescrita.
    • O número tem nome de coluna e escala.
    • As células da decisão estão em variaveis_de_celula.
    • O campo 8 diz o que o sintético não pode fazer; ele volta na tabela de decisão.
    • O agente não abriu a pasta da amostra de validação.

    Erros comuns

    • Objetivo vago. Reescreva como escolha entre opções nomeadas.
    • Métrica que não existe na base. O agente aponta o nome que falta; ajuste o parâmetro ou a base.
    • Prometer nível. Se a decisão pede previsão de vendas, o método não cabe para isso; declare no campo 8.
    Exemplo do exercício

    Decisão: escolher um entre A, B e C para o lançamento. Número: média de purchase_intent, de 1 a 5, e o ranking. Células: total, faixas de idade e regiões, com peso estratégico para 60 anos ou mais. Sintético pode: triagem. Não pode: substituir o campo, estimar nível para previsão de vendas, somar casos à amostra humana. Fonte: projetos/nuvem_casa/01_pergunta/pergunta.md.

    Etapa 2 · 02_curadoria

    A curadoria impede que dado sem origem ou fora do formato contamine o resto

    scripts/conferir_curadoria.pyportão: curadoria aprovada
    Entra

    humanos_treino.csv, alvos, dicionário e ficha de origem

    Faz

    conferir_curadoria.py confere colunas, valores, origem human/train, alvos e ficha

    Sai

    relatorio_curadoria.md com APROVADA ou REPROVADA

    Portão: curadoria aprovada
    Prompt · seu estudo
    Projeto: projetos/[nome_do_estudo]. Estamos na etapa 2, curadoria. Leia 02_curadoria/dados/ficha_de_origem.md e me diga em quatro linhas de onde vêm os dados, quem permitiu o uso e o que ficou de fora. Compare as colunas de humanos_treino.csv com dicionario_de_dados.csv e me diga o que falta ou sobra. Depois rode scripts/conferir_curadoria.py --projeto projetos/[nome_do_estudo] e me mostre o relatório. Se for reprovada, explique cada problema em linguagem simples e pare.
    Versão preenchida, exemplo do exercício
    Prompt · Nuvem Casa
    Projeto: projetos/nuvem_casa. Os caminhos de arquivo deste pedido ficam dentro dessa pasta. Os scripts ficam em scripts/, na raiz do kit, e rodam a partir dela.
    Estamos na etapa 2, curadoria. Leia 02_curadoria/dados/ficha_de_origem.md e me diga, em quatro linhas, de onde vêm os dados, quem permitiu o uso e o que ficou de fora. Depois rode o script scripts/conferir_curadoria.py --projeto projetos/nuvem_casa e me mostre o relatório. Se a curadoria for reprovada, me explique cada problema em linguagem simples e pare. Não abra a pasta 08_validacao/amostra_validacao.
    Aprofunde · dado, armadilha e passo prático

    Fonte primária. O Código de Conduta da Insights Association, na revisão sobre dados sintéticos, pede que relatórios indiquem se o achado vem de participantes humanos, sintéticos ou de uma combinação, e que dado sintético não seja apresentado como equivalente a resposta humana observada sem validação. Insights Association, Code in Action: Synthetic Data Revisited.

    Passo prático. Abra a ficha de origem e confira se a permissão cobre uso em modelagem ou simulação.

    Por que e detalhes da etapa 2

    O que acontece

    O agente lê a ficha de origem e roda a conferência: colunas obrigatórias, valores dentro do dicionário, só linhas humanas de treino, alvos somando 1 e ficha sem campo vazio. Ele não altera nada.

    Por que

    Uma linha sintética ou de validação esquecida na base de treino entra no raking, no mapa de quantis e na escolha do peso, e a validação deixa de ser independente. Permissão de uso é condição ética e legal, anterior a qualquer conta.

    O script por baixo

    python scripts/conferir_curadoria.py --projeto projetos/NOME_DO_ESTUDO

    Única opção além de --help: --projeto. Grava em resultados/02_curadoria/.

    O que sai

    Exemplo do exercício · trecho real
    | Linhas na base humana de treino | 912 | | Pessoas únicas (respondent_id) | 480 | | Expostas a conceito | 432 | | Controle | 48 | APROVADA. A base pode seguir para a etapa 3.

    Fonte: resultados/02_curadoria/relatorio_curadoria.md da saída do professor.

    O que conferir

    • O relatório diz APROVADA. Se disser REPROVADA, nada segue.
    • Pessoas e linhas aparecem separadas.
    • Toda linha é human/train.
    • A ficha tem permissão de uso escrita.
    • Os alvos têm fonte (source) com pesquisa de referência e ano.
    • O aviso sobre o arquivo de validação só confirma que ele existe; o agente não o abriu.

    Erros comuns

    • "falta alvos_populacionais.csv". Sem alvos não há quota nem raking. Busque os alvos ou declare a lacuna.
    • Ficha com campo vazio. Preencha ou marque "pendente" e resolva antes do portão.
    • Linhas fora de human/train. Retire da base de treino o que for sintético ou de validação.
    Etapa 3 · 03_analise

    A análise da base humana mostra onde o sintético vai ter mais dificuldade antes de ele existir

    scripts/analisar_base.py9 min em aula
    Entra

    A base de treino e os parâmetros

    Faz

    analisar_base.py mede composição, notas, células pequenas e correlações

    Sai

    relatorio_analise.md e cinco CSV

    Prompt · seu estudo
    Projeto: projetos/[nome_do_estudo]. Estamos na etapa 3. Antes de rodar, me explique em até cinco linhas o que scripts/analisar_base.py --projeto projetos/[nome_do_estudo] vai calcular. Depois rode e me mostre, nesta ordem: (1) onde a amostra mais se afasta dos alvos, (2) o ranking dos estímulos no total e em cada [variável de célula crítica], com o n ao lado, (3) as células pequenas e (4) a correlação de [métrica principal] com [métricas de apoio]. Termine com três hipóteses para as etapas 7 e 8, cada uma com a célula e o número que a sustenta.
    Versão preenchida, exemplo do exercício
    Prompt · Nuvem Casa
    Projeto: projetos/nuvem_casa. Os caminhos de arquivo deste pedido ficam dentro dessa pasta. Os scripts ficam em scripts/, na raiz do kit, e rodam a partir dela.
    Estamos na etapa 3, análise aprofundada da base humana. Antes de rodar, me explique em até cinco linhas o que o script scripts/analisar_base.py --projeto projetos/nuvem_casa vai calcular. Depois rode o script e me mostre, nesta ordem: (1) onde a amostra mais se afasta dos alvos populacionais, (2) o ranking dos conceitos no total e em cada faixa de idade, com o n ao lado, (3) a lista de células pequenas e (4) a correlação da intenção de compra com credibilidade, relevância e apelo. Termine com três hipóteses que a etapa 7 e a etapa 8 vão precisar testar, cada uma com a célula e o número que a sustenta. Não abra a pasta 08_validacao/amostra_validacao.
    Aprofunde · dado, armadilha e passo prático

    Fonte primária. Santurkar e colegas compararam opiniões de modelos de linguagem com 60 grupos demográficos dos EUA e acharam desalinhamento que persiste mesmo quando o modelo é instruído a responder como o grupo. Pessoas de 65 anos ou mais estão entre os grupos mais mal representados. Uma célula de idade avançada pequena na base humana é, ao mesmo tempo, a mais difícil de gerar e a mais difícil de conferir. Santurkar et al. 2023, Whose Opinions Do Language Models Reflect?

    Passo prático. Anote o menor n de cada célula crítica. Abaixo de 20, planeje coleta humana antes da geração.

    Por que e detalhes da etapa 3

    O que acontece

    O script calcula a composição contra os alvos, a distribuição de notas por estímulo, a média da métrica principal em cada célula com o n, as células pequenas (inclusive no cruzamento de idade por região) e as correlações entre métricas.

    Por que

    Três coisas da base humana viram metas para o sintético: a composição que o raking vai corrigir, o ranking por célula que a validação vai cobrar, e a estrutura de correlações, que é a parte que se perde com mais facilidade. Correlação de Pearson mede de -1 a 1 o quanto duas notas sobem juntas; correlações baixas, como 0,10, somem com pouco ruído.

    O script por baixo

    python scripts/analisar_base.py --projeto projetos/NOME_DO_ESTUDO

    Lê só 02_curadoria/dados. Grava cinco CSV e relatorio_analise.md em resultados/03_analise/.

    O que sai

    Exemplo do exercício · trecho real
    | age_band | 60+ | 42 | 8,8% | 15,0% | -6,25 | | region | Norte | 16 | 3,3% | 7,0% | -3,67 | | age_band=60+ | 3,39 (28) | 3,73 (26) | 3,83 (24) | C > B > A | 24 | | region=Norte | 3,31 (13) | 4,00 (4) | 3,64 (11) | B > C > A | 4 | célula pequena |

    Ranking humano do total: C > B > A, repetido nas quatro faixas de idade. Treze células pequenas. Fonte: resultados/03_analise/relatorio_analise.md.

    O que conferir

    • As maiores lacunas contra o alvo: elas voltam no raking e na decisão.
    • O menor n de cada célula crítica. Perto de 20 é aviso.
    • Células pequenas ficam como hipótese, nunca achado.
    • As hipóteses do final citam célula e número.

    Erros comuns

    • Contar linhas no lugar de pessoas. A composição é por pessoa.
    • Ler ranking de célula pequena. Com 4 pessoas, a ordem muda com uma resposta.
    • Hipótese sem número. Volte ao agente pedindo a célula e o valor.
    Etapa 4 · 04_vetores_e_rag

    O contexto do público condiciona o gerador com falas citáveis e nunca com médias

    scripts/contexto_do_target.pyopcional na geração por regra
    Entra

    As respostas abertas do treino

    Faz

    contexto_do_target.py corta trechos com id e monta um cartão por segmento, sem médias

    Sai

    contexto_*.md e indice_de_trechos.csv

    Prompt · seu estudo
    Projeto: projetos/[nome_do_estudo]. Estamos na etapa 4. Rode scripts/contexto_do_target.py --projeto projetos/[nome_do_estudo] --segmento [variável] e abra o cartão de [categoria crítica] em resultados/04_vetores_e_rag/. Me mostre o que esse público disse sobre [estímulo], com as citações. Confira que o cartão não traz média de nota. Se eu for gerar com modelo de linguagem, preencha 04_vetores_e_rag/instrucao_do_modelo.md para esse segmento e me mostre o pedido pronto, sem enviar a nenhum modelo.
    Versão preenchida, exemplo do exercício
    Prompt · Nuvem Casa
    Projeto: projetos/nuvem_casa. Os caminhos de arquivo deste pedido ficam dentro dessa pasta. Os scripts ficam em scripts/, na raiz do kit, e rodam a partir dela.
    Estamos na etapa 4, vetorização e contexto do target. Leia 04_vetores_e_rag/LEIA.md e me diga em três linhas por que, no caso Nuvem Casa, esta etapa é demonstração. Depois rode scripts/contexto_do_target.py --projeto projetos/nuvem_casa e abra o cartão de 60 anos ou mais em resultados/04_vetores_e_rag/. Me mostre o que esse público disse sobre o conceito A, com as citações.
    Prompt · busca opcional
    Rode a busca com o texto "argumento ambiental" e o filtro age_band=60+ e me diga se a base sustenta a ideia de que pessoas mais velhas preferem o argumento ambiental.
    Aprofunde · dado, armadilha e passo prático

    Fonte primária. Argyle e colegas condicionaram um modelo de linguagem com milhares de histórias de fundo em primeira pessoa tiradas de respondentes reais e chamaram de "fidelidade algorítmica" a capacidade de reproduzir distribuições de subgrupos. A mesma tabela mostra fidelidade menor em alguns grupos do que no total. Arora e colegas relatam que, no quantitativo, a qualidade do dado sintético melhora com exemplos e com recuperação de contexto real. Argyle et al. 2023, Out of One, Many · Arora et al. 2025, Journal of Marketing.

    Passo prático. Antes de mandar um cartão a qualquer modelo, procure nele uma média de nota. Se achar, tire.

    Por que e detalhes da etapa 4

    O que acontece

    O script corta as respostas abertas da base de treino em trechos, cada um com um id que volta à fonte (respondent_id/conceito/campo). Vetoriza os trechos com TF-IDF, uma lista de pesos por palavra, e monta um cartão por segmento com o perfil e as falas mais representativas. Com --buscar, procura trechos por semelhança. RAG (geração com recuperação) é o nome do processo: o gerador recebe os trechos recuperados como única evidência sobre o público.

    Por que

    Quando a geração usa modelo de linguagem, o condicionamento demográfico sozinho ("responda como uma mulher de 60 anos do Sul") produz estereótipo. Falas reais do público, com citação, ancoram a resposta. O cartão deixa de fora as médias de nota de propósito: média humana dentro do pedido ao modelo é calibração escondida, e a etapa 8 deixaria de medir o modelo.

    O script por baixo

    python scripts/contexto_do_target.py --projeto projetos/NOME_DO_ESTUDO python scripts/contexto_do_target.py --projeto projetos/NOME_DO_ESTUDO --segmento region python scripts/contexto_do_target.py --projeto projetos/NOME_DO_ESTUDO --buscar "texto" --filtro VAR=CAT

    Opções: --segmento VAR (sem ela, a primeira variável de quota), --buscar TEXTO e --filtro VAR=CAT, que só vale com --buscar.

    O que sai

    Exemplo do exercício · trecho real
    ## Perfil do segmento (42 pessoas na base de treino) ## Conceito A: o que este segmento disse (95 trechos) 1. "faltou explicar a potência" [HT00025/A/dislike_open, HT00054/A/dislike_open, HT00069/A/dislike_open e mais 13] 1. "reduzir embalagens reutilizando a garrafa" [HT00025/A/message_takeout, ... e mais 8]

    A busca por "argumento ambiental" não acha trecho: TF-IDF reconhece só palavra igual, e o público fala em "embalagens", "descarte" e "proposta sustentável". Fonte: resultados/04_vetores_e_rag/contexto_age_band_60.md e resultados/04_vetores_e_rag/busca.md.

    O que conferir

    • Todo trecho tem citação; procure um id no indice_de_trechos.csv.
    • O cartão não traz média de nota.
    • Segmento pequeno traz aviso.
    • Se a busca não achar nada, o agente explica o limite de vocabulário.

    Erros comuns

    • Ler busca vazia como "o público não pensa nisso". TF-IDF não entende sinônimo; vetores de sentido (embeddings) resolvem isso.
    • Cartão com dado pessoal. Releia os trechos antes de mandar a qualquer modelo.
    Etapa 5 · 05_construcao

    Quotas e regras escritas tornam a geração conferível e reproduzível

    scripts/montar_regras.pyportão: regras aprovadas
    Entra

    Alvos populacionais e regras_de_geracao.json

    Faz

    montar_regras.py transforma alvos em quotas e fixa perfil, centros e efeitos

    Sai

    quotas.csv e relatorio_regras.md

    Portão: regras aprovadas
    Prompt · seu estudo
    Projeto: projetos/[nome_do_estudo]. Estamos na etapa 5. Escreva comigo 05_construcao/regras_de_geracao.json no formato do projeto de exemplo, com [n respondentes por rodada] respondentes, [proporção] de controle e as sementes [lista de pelo menos 3 sementes]. Mostre antes de gravar. Depois rode scripts/montar_regras.py --projeto projetos/[nome_do_estudo] --recalcular-a-partir-da-base e me mostre a tabela de quotas, os centros de nota que saíram da minha base e quantos respondentes de [célula crítica] cada rodada deve ter.
    Versão preenchida, exemplo do exercício
    Prompt · Nuvem Casa
    Projeto: projetos/nuvem_casa. Os caminhos de arquivo deste pedido ficam dentro dessa pasta. Os scripts ficam em scripts/, na raiz do kit, e rodam a partir dela.
    Estamos na etapa 5, construção do gerador. Leia 05_construcao/regras_de_geracao.json e me explique em linguagem simples o que cada bloco faz: quotas, distribuições sem alvo, centros de nota por conceito e efeitos declarados. Depois rode scripts/montar_regras.py --projeto projetos/nuvem_casa e me mostre a tabela de quotas e quantos respondentes de 60 anos ou mais cada rodada deve ter. Não abra a pasta motor/ nem a pasta 08_validacao/amostra_validacao.
    Aprofunde · dado, armadilha e passo prático

    Armadilha real: ordem e rótulo das opções. Dominguez-Olmedo e colegas aplicaram o questionário do censo americano a 43 modelos de linguagem e viram respostas governadas pela ordem e pelo rótulo das opções (por exemplo, preferência pela opção marcada "A"). Com a ordem sorteada, as respostas tenderam ao aleatório. Ao gerar com modelo, sorteie a ordem das opções e dos estímulos e registre a ordem em exposure_order. Dominguez-Olmedo et al. 2024.

    Passo prático. Sorteie a ordem dos estímulos e das opções, e confira que exposure_order está preenchido.

    Por que e detalhes da etapa 5

    O que acontece

    O script transforma os alvos em quotas (quantos respondentes sintéticos de cada categoria) e copia as regras de geração para resultados/05_construcao/. O arquivo de regras tem quatro blocos: quotas, distribuições sem alvo, centros de nota por estímulo e efeitos declarados. Com dados próprios, a opção --recalcular-a-partir-da-base troca os centros pelas médias da sua base de treino e zera os efeitos do caso.

    Por que

    Toda hipótese sobre o público vira regra com número. Regra sem número não gera nada que se possa medir. O template de prompt em 05_construcao/TEMPLATE_PROMPT_BASE.md mostra a mesma lógica para quem gera com modelo de linguagem: cada bloco do JSON corresponde a uma seção do prompt.

    O script por baixo

    python scripts/montar_regras.py --projeto projetos/NOME_DO_ESTUDO python scripts/montar_regras.py --projeto projetos/NOME_DO_ESTUDO --recalcular-a-partir-da-base

    O que sai

    Exemplo do exercício

    Quotas = alvos vezes 2.400. Para 60 anos ou mais, 15% dão 360 respondentes esperados por rodada. Fonte: resultados/05_construcao/quotas.csv e resultados/05_construcao/relatorio_regras.md.

    O que conferir

    • Quotas = alvos vezes o n por rodada.
    • As quotas entram como probabilidade de sorteio; a composição final fica perto do alvo, com pequenas sobras e faltas.
    • Cada efeito declarado tem número e estímulo.
    • Os centros ficam perto das médias humanas da etapa 3.

    Erros comuns

    • Esquecer o --recalcular-a-partir-da-base com dados próprios. As regras ficam com centros que não são do seu público.
    • Menos de 3 sementes. A estabilidade da etapa 7 precisa de pelo menos 3 rodadas.
    • Mudar o texto do estímulo entre rodadas. Comparar estímulos exige estímulo constante.
    Etapa 6 · 06_execucao · skill gerar-lote

    Várias rodadas com semente separam o acaso do gerador do vício do modelo

    scripts/gerar_lote.py4 min em aula
    Entra

    Regras e quotas da etapa 5

    Faz

    gerar_lote.py gera a audiência inteira, uma rodada por semente

    Sai

    lote_sintetico.csv e registro_de_geracao.md

    Prompt · seu estudo
    Projeto: projetos/[nome_do_estudo]. Estamos na etapa 6. Rode scripts/gerar_lote.py --projeto projetos/[nome_do_estudo]. Não abra motor/. Me mostre o registro de geração e me diga em três linhas: quantos respondentes por rodada, quantas pessoas reais isso acrescenta à pesquisa e o que muda de uma rodada para outra.
    Siga a skill gerar-lote deste kit.
    Versão preenchida, exemplo do exercício
    Prompt · Nuvem Casa
    Projeto: projetos/nuvem_casa. Os caminhos de arquivo deste pedido ficam dentro dessa pasta. Os scripts ficam em scripts/, na raiz do kit, e rodam a partir dela.
    Estamos na etapa 6, execução. Rode scripts/gerar_lote.py --projeto projetos/nuvem_casa, que gera a audiência sintética com as regras da etapa 5, uma rodada por semente. Não abra os arquivos de motor/: eles fazem o papel do modelo do fornecedor, e eu só posso ver o interior dele depois da etapa 8. Me mostre o registro de geração e me diga, em três linhas: quantos respondentes por rodada, quantas pessoas reais isso acrescenta à pesquisa, e o que muda de uma rodada para outra.
    Siga a skill gerar-lote deste kit para os passos e as conferências.
    Aprofunde · dado, armadilha e passo prático

    Fonte primária. Bisbee e colegas mostraram que a distribuição de respostas sintéticas muda com pequenas alterações na redação do pedido e que o mesmo pedido, repetido meses depois, devolveu resultados diferentes. Com modelo de linguagem, registre a versão do modelo, a data, a temperatura e o texto exato do pedido em registro_de_prompts.md. Bisbee et al. 2024, Synthetic Replacements for Human Survey Data?

    Passo prático. Copie modelo, data, sementes e o texto exato do pedido para registro_de_prompts.md.

    Por que e detalhes da etapa 6

    O que acontece

    Para cada semente da lista, o script gera a audiência sintética inteira e grava as rodadas empilhadas, com a coluna rodada, e um registro de geração com modelo, data, sementes e composição alcançada. Semente é o número que controla o sorteio: a mesma semente devolve exatamente o mesmo lote.

    Por que

    Se uma célula sai errada numa rodada, pode ser sorte. Se sai errada em todas, é o modelo. O registro de modelo, data e sementes é o que torna o lote reproduzível e citável no disclosure.

    O script por baixo

    python scripts/gerar_lote.py --projeto projetos/NOME_DO_ESTUDO

    As sementes e o n por rodada vêm de 05_construcao/regras_de_geracao.json.

    O que sai

    Exemplo do exercício · trecho real
    | Rodada | Semente | Respondentes | Linhas | A | B | C | | R01 | 20260917 | 2400 | 4560 | 3,43 | 3,56 | 3,78 | | R02 | 20260918 | 2400 | 4560 | 3,44 | 3,55 | 3,81 | | R05 | 20260921 | 2400 | 4560 | 3,41 | 3,56 | 3,79 |

    Cinco rodadas, 2.160 expostos com duas linhas e 240 de controle. Pessoas reais acrescentadas: zero. Fonte: resultados/06_execucao/registro_de_geracao.md.

    O que conferir

    • Número de rodadas e de respondentes por rodada.
    • A resposta para "quantas pessoas reais" é zero.
    • O ranking se repete e as médias mudam pouco.
    • O registro traz modelo, data e sementes.
    • O agente não abriu motor/.

    Erros comuns

    • Somar 2.400 às pessoas da base. Corrija na hora: linha sintética nunca é pessoa ouvida.
    • Comemorar a composição perfeita. O lote bate com o alvo porque foi sorteado a partir dele; o acerto é circular.
    Etapa 7 · 07_calibracao · skill calibrar-no-treino

    A calibração no treino conserta o total e deixa à vista o que só a célula revela

    scripts/calibrar.pyscripts/mixar_fontes.pyportão: calibração aceita
    Entra

    O lote sintético e a base de treino

    Faz

    calibrar.py faz raking, quantis, métricas e estabilidade; mixar_fontes.py escolhe o peso de cada origem

    Sai

    registro_calibracao.json e mixagem/mixagem.json, congelados

    Portão: calibração aceita
    Prompt · calibração, seu estudo
    Projeto: projetos/[nome_do_estudo]. Estamos na etapa 7. Antes de rodar, me explique em até cinco linhas raking, mapeamento de quantis, KS e Wasserstein. Depois rode scripts/calibrar.py --projeto projetos/[nome_do_estudo] e me mostre, nesta ordem: (1) composição antes e depois do raking e o tamanho efetivo de Kish, (2) [métrica principal] por estímulo no humano, no sintético cru e no calibrado, (3) as correlações e a estrutura que se perdeu, (4) as células com alerta antes e depois e (5) a estabilidade entre as rodadas. Termine dizendo o que a calibração consertou e o que não conseguiu consertar. Não abra 08_validacao/amostra_validacao.
    Siga a skill calibrar-no-treino deste kit.
    Prompt · mixagem, seu estudo
    Projeto: projetos/[nome_do_estudo]. Estamos na etapa 7, mixagem de fontes. Antes de rodar, me explique a diferença entre pós-estratificação e mixagem e o que é a divergência de Jensen-Shannon. Depois rode scripts/mixar_fontes.py --projeto projetos/[nome_do_estudo] e me mostre: a curva de distância por composição em pontos e em Jensen-Shannon, quanto o pool cru dá ao sintético no total e quanto o peso ótimo dá, a tabela do peso ótimo por célula e as células em que o pool cru troca o ranking do real.
    Siga a skill calibrar-no-treino deste kit.
    Versões preenchidas, exemplo do exercício
    Prompt · Nuvem Casa, calibração
    Projeto: projetos/nuvem_casa. Os caminhos de arquivo deste pedido ficam dentro dessa pasta. Os scripts ficam em scripts/, na raiz do kit, e rodam a partir dela.
    Estamos na etapa 7, calibração no treino. Antes de rodar, me explique em até cinco linhas o que são raking, mapeamento de quantis e as métricas KS e Wasserstein, em linguagem de quem pesquisa. Depois rode scripts/calibrar.py --projeto projetos/nuvem_casa e me mostre, nesta ordem: (1) a composição antes e depois do raking e o tamanho efetivo de Kish, (2) a intenção de compra por conceito no humano, no sintético cru e no calibrado, (3) as correlações e qual estrutura se perdeu, (4) as células com alerta antes e depois da calibração e (5) a estabilidade entre as cinco rodadas. Termine dizendo, em três linhas, o que a calibração consertou e o que ela não conseguiu consertar. Não abra a pasta 08_validacao/amostra_validacao.
    Siga a skill calibrar-no-treino deste kit para os passos e as conferências.
    Prompt · Nuvem Casa, ampliação opcional
    Projeto: projetos/nuvem_casa. Os caminhos de arquivo deste pedido ficam dentro dessa pasta. Os scripts ficam em scripts/, na raiz do kit, e rodam a partir dela.
    Rode scripts/calibrar.py --projeto projetos/nuvem_casa com --ampliar age_band=60+ --alvo 100 e me mostre a tabela da ampliação. Para o conceito A, compare o erro padrão aparente com o N honesto e me diga, em duas linhas, o que posso declarar ao cliente sobre o tamanho dessa célula.
    Siga a skill calibrar-no-treino deste kit para os passos e as conferências.
    Aprofunde · dado, armadilha e passo prático

    Fonte primária: achatamento. No estudo de Peng, Toubia e colegas com 19 estudos pré-registrados, o desvio padrão das respostas de "gêmeos digitais" ficou abaixo do humano em 154 de 164 desfechos (93,9%). Bisbee e colegas também acharam menos variação nas respostas sintéticas do que nos surveys reais. Razão de desvio padrão abaixo de 1 é o padrão esperado, e o mapa de quantis existe para corrigir isso no total. Peng et al. 2025, Digital Twins as Funhouse Mirrors.

    Passo prático. Leia a razão de desvio padrão do cru antes da calibrada: ela mostra o achatamento real do gerador.

    Por que e detalhes da etapa 7

    O que acontece

    1. Raking (ajuste proporcional iterativo): o peso de cada pessoa é multiplicado, variável por variável, até a amostra ponderada bater com os alvos. É a pós-estratificação, ponderação que corrige a composição. O custo aparece no tamanho efetivo de Kish.
    2. Mapeamento de quantis: cada nota sintética recebe a nota humana que ocupa a mesma posição na fila. Corrige nível e achatamento no total.
    3. Métricas antes e depois: diferença de médias, razão de desvio padrão, variação total, KS, Wasserstein e correlações.
    4. Células no treino, com os quatro tipos de erro.
    5. Estabilidade entre rodadas.
    6. Mixagem de fontes: quanto o real e o sintético pesam no número final, célula por célula, escolhido por validação cruzada em cinco partes do treino.

    Por que

    Raking e quantis são ferramentas clássicas de ajuste, com regra aberta. A mixagem trata o sintético como uma fonte com viés: o peso dele sobe onde provou estar fiel ao real e cai onde erra. Tudo fica congelado com impressão digital (um código calculado do arquivo, que muda se o arquivo mudar) antes da abertura da amostra de validação.

    Os scripts por baixo

    python scripts/calibrar.py --projeto projetos/NOME_DO_ESTUDO python scripts/calibrar.py --projeto projetos/NOME_DO_ESTUDO --ampliar VAR=CAT --alvo 100 python scripts/mixar_fontes.py --projeto projetos/NOME_DO_ESTUDO

    --ampliar VAR=CAT completa uma célula com sintético de quatro jeitos e mostra o N honesto; --alvo N é o número de casos por estímulo (padrão 100). --pos-abertura existe só para o professor: roda uma calibração exploratória depois da abertura, gravada à parte em resultados/07_calibracao_pos_abertura/ e marcada como contaminada.

    O que sai

    Exemplo do exercício · trecho real
    Tamanho efetivo de Kish: 413,68 para 480 pessoas. | purchase_intent | C | 3,89 | 3,78 | 3,89 | razão DP cru 0,72 | calibrado 1,03 | KS cru 0,13 (distinta) | 0,01 | | purchase_intent e credibility | 0,10 | 0,01 | 0,02 | -0,08 | estrutura deslocada | | age_band=60+ | 24 | C > B > A | C > A > B | inversão com evidência | C > A > B | inversão com evidência | Veredito de estabilidade: ESTÁVEL. Rankings em 60 anos ou mais: {'C > A > B': 5}

    Mixagem: o pool cru dá ao sintético 83,3% do peso no total só porque o lote tem mais linhas; o peso ótimo dá 11,9% (o real fica com 88,1%). Em 60 anos ou mais, o pool cru troca a ordem do real; a mixagem com o peso da célula (62,6% de real) mantém C, B, A. Fonte: resultados/07_calibracao/relatorio_calibracao.md e resultados/07_calibracao/mixagem/relatorio_mixagem.md.

    O que conferir

    • No treino o calibrado fica quase igual ao humano por construção. Esse número não é validação.
    • Erro de célula que sobrevive à calibração (o mapa aprendido no total desloca todas as células juntas).
    • Correlação que a calibração não recupera sai dos usos autorizados.
    • Existem registro_calibracao.json e mixagem/mixagem.json: sem eles, a etapa 8 não abre.
    • A mixagem não cria pessoas: n e margem de erro continuam os do humano.

    Erros comuns

    • Chamar o KS calibrado de 0,01 de "validação". Corrija.
    • Achar que mais rodadas consertam a célula. Estável quer dizer reprodutível; erro reprodutível continua erro.
    • Usar a ampliação para declarar n maior ao cliente. Declare o N honesto.
    Etapa 8 · 08_validacao · skill abrir-amostra-validacao

    A amostra de validação diz o que o sintético acerta com gente que nenhum ajuste viu

    scripts/validar_na_amostra_validacao.pyscripts/mixar_fontes.py --contra-amostra-validacaoportão irreversível
    Entra

    A amostra de validação, que sai do cofre, e a calibração congelada

    Faz

    validar_na_amostra_validacao.py --confirmo-abertura-unica registra a abertura e compara total, correlações e células

    Sai

    ABERTURA_DA_AMOSTRA_VALIDACAO.json e relatorio_validacao.md

    Portão: abertura da amostra de validação, irreversível
    Prompt · seu estudo
    Projeto: projetos/[nome_do_estudo]. [Frase de liberação combinada com a equipe]. Estamos na etapa 8. Antes de rodar, me diga em duas linhas por que a amostra de validação só abre uma vez e o que acontece com a etapa 7 depois. Rode scripts/validar_na_amostra_validacao.py --projeto projetos/[nome_do_estudo] --confirmo-abertura-unica e me mostre, nesta ordem: o ranking do total na validação, no cru e no calibrado; as diferenças de nível em erros padrão; as correlações; as células com alerta e o tipo de erro. Para cada inversão, mostre a distância entre as duas médias humanas e o erro padrão. Depois rode scripts/mixar_fontes.py --projeto projetos/[nome_do_estudo] --contra-amostra-validacao e diga em que lugar ficou a composição escolhida no treino.
    Siga a skill abrir-amostra-validacao deste kit.
    Versão preenchida, exemplo do exercício
    Prompt · Nuvem Casa
    Projeto: projetos/nuvem_casa. Os caminhos de arquivo deste pedido ficam dentro dessa pasta. Os scripts ficam em scripts/, na raiz do kit, e rodam a partir dela.
    O professor liberou a abertura da amostra de validação. Estamos na etapa 8, validação. Antes de rodar, me diga em duas linhas por que a amostra de validação só pode ser aberta uma vez e o que acontece com a etapa 7 depois da abertura. Depois rode scripts/validar_na_amostra_validacao.py --projeto projetos/nuvem_casa com a opção --confirmo-abertura-unica e me mostre, nesta ordem: (1) o ranking do total na amostra de validação, no sintético cru e no calibrado, (2) as diferenças de nível em erros padrão, (3) as correlações, (4) as células com alerta, com o tipo de erro de cada uma, e (5) se a etapa 7 rodou a ampliação, a tabela da ampliação contra a amostra de validação. Para cada inversão de ranking, me mostre a distância entre as duas médias humanas que trocaram de posição e o erro padrão dela.
    Siga a skill abrir-amostra-validacao deste kit para os passos e as conferências.
    Aprofunde · dado, armadilha e passo prático

    Fonte primária: a régua tem teto. Park e colegas relataram que agentes generativos reproduzem respostas do General Social Survey com 85% da precisão com que as próprias pessoas repetem suas respostas duas semanas depois. Esse 85% é uma acurácia normalizada, a precisão bruta dividida pela consistência humana; a precisão bruta fica perto de 66%. O kit usa a mesma ideia de teto: a coluna "teto humano" mede a distância entre duas amostras humanas do mesmo público, e nenhum sintético pode ser cobrado abaixo dela. Park et al. 2024.

    Passo prático. Antes de concluir sobre uma célula, compare a distância com o teto humano e com o erro padrão.

    Por que e detalhes da etapa 8

    O que acontece

    Com a calibração e o peso da mixagem congelados, você escreve a frase de liberação e o agente abre a amostra de validação uma vez. O script confere as impressões digitais, registra a abertura com data e hora e compara o cru e o calibrado com a amostra de validação: no total, nas correlações e célula por célula, lendo duas vezes (só a validação, e treino com validação juntos). Depois, a mixagem é medida contra a mesma régua, com o peso que a etapa 7 escolheu. Só então o agente abre motor/modelo_simulado.json para comparar cada vício declarado com o que a validação achou.

    Por que

    Depois de ver a régua, todo ajuste aprende com ela. Por isso a abertura é registrada, a etapa 7 se recusa a recalibrar e rodar de novo só mostra o resultado já gravado.

    A frase de liberaçãoNo curso, a amostra de validação só abre depois de você escrever: o professor liberou a abertura da amostra de validação. No seu estudo, combine com a equipe quem libera e registre no estado do projeto.

    Os scripts por baixo

    python scripts/validar_na_amostra_validacao.py --projeto projetos/NOME_DO_ESTUDO --confirmo-abertura-unica python scripts/mixar_fontes.py --projeto projetos/NOME_DO_ESTUDO --contra-amostra-validacao

    Sem --confirmo-abertura-unica, o script só explica e não abre nada. Ele exige a calibração congelada e o peso da mixagem gravado. Depois da abertura, ele só mostra o resultado registrado.

    O que sai

    ABERTURA_DA_AMOSTRA_VALIDACAO.json com data, hora e três impressões digitais (amostra de validação, lote calibrado e peso da mixagem), 01_total.csv, 02_correlacoes.csv, 03_celulas.csv, o relatório e a pasta mixagem/.

    Exemplo do exercício · resultados da revelação (abra depois de rodar a etapa 8)
    Ranking de purchase_intent: amostra de validação C > B > A, sintético cru C > B > A, calibrado C > B > A. | age_band=60+ | 14 | inversão em célula pequena | 39 | C > B > A | C > A > B | inversão com evidência | A 0,31 | 3,03 | sim | | purchase_intent e credibility | 0,14 | 0,02 | -0,12 | estrutura deslocada | A composição escolhida no treino, 70/30, fica em 3º lugar de 7 contra a amostra de validação.

    O total confirma a ordem. A célula de 60 anos ou mais inverte A e B: o calibrado põe A 0,31 ponto acima do humano, 3,03 erros padrão, e o erro aponta para o mesmo lado no treino e na validação. A calibração no total piorou essa célula. As três correlações com a intenção ficam deslocadas. Aberto o motor, os vícios declarados batem: encolhimento de 0,78 para o meio da escala, soma de 0,16 em credibilidade, compreensão e aderência à marca, soma de 0,28 em A para 60 anos ou mais e de 0,22 em C para o Nordeste. Fonte: resultados/08_validacao/relatorio_validacao.md, resultados/08_validacao/mixagem/relatorio_mixagem_validacao.md e motor/modelo_simulado.json.

    O que conferir

    • O agente pediu a sua confirmação antes de abrir.
    • Existe o registro da abertura, com data e hora.
    • Cada célula lida duas vezes, com o n do menor estímulo ao lado.
    • Inversão com médias humanas muito próximas conta como empate.
    • O peso da mixagem veio da etapa 7; a validação mediu e não escolheu nada.

    Erros comuns

    • Opção errada. O script recusa e mostra o comando certo; as opções são --confirmo-abertura-unica e --contra-amostra-validacao.
    • Mensagem de ALERTA. Algum arquivo mudou depois da abertura. Pare, não apague nada e avise o responsável.
    • Concluir em célula pequena na validação sozinha. A conclusão sai das duas leituras juntas.
    Etapa 9 · 09_decisao · skills decidir-por-celula e gerar-relatorio

    A decisão sai por uso e por célula, com a condição escrita ao lado

    scripts/decidir.pyscripts/base_integrada.pyscripts/relatorio_validacao.pyportão: entrega
    Entra

    O que as etapas 7 e 8 gravaram

    Faz

    decidir.py, base_integrada.py e relatorio_validacao.py, sem recalcular

    Sai

    tabela_de_decisao.md, disclosure.md, base_integrada.xlsx e o relatório em PDF

    Portão: entrega
    Prompt · seu estudo
    Projeto: projetos/[nome_do_estudo]. Estamos na etapa 9. Rode scripts/decidir.py --projeto projetos/[nome_do_estudo]. Me mostre a tabela de decisão e explique, linha por linha, a regra que levou a cada AVANÇAR, REVISAR e PARAR. Abra o rascunho do disclosure e o relatório de auditoria. Não preencha a Leitura do grupo. Aponte as duas linhas mais discutíveis e por quê. Depois rode scripts/base_integrada.py e scripts/relatorio_validacao.py com --projeto projetos/[nome_do_estudo] e me diga onde estão os arquivos.
    Siga as skills decidir-por-celula e gerar-relatorio deste kit.
    Aprofunde · dado, armadilha e passo prático

    Fonte primária. A AAPOR pede que, quando a IA atua como entrevistador, respondente ou analista, o pesquisador declare a tarefa da IA, se houve supervisão ou validação humana e o número de respondentes humanos, e considera desnecessário informar o número de instâncias geradas. O disclosure do kit segue essa linha. AAPOR 2026.

    Passo prático. Releia o disclosure e confira que pessoas ouvidas e respondentes gerados aparecem em linhas separadas.

    Por que e detalhes da etapa 9

    O que acontece

    O script de decisão lê o que as etapas 7 e 8 gravaram, sem recalcular, e aplica uma regra escrita por uso. Monta a tabela de decisão, o rascunho do disclosure e o relatório de auditoria com o espaço da Leitura do grupo. Em seguida vêm a base integrada e o relatório de calibração e validação em HTML e PDF.

    As regras de decisão, como estão no script

    UsoRegra
    Ordenar os estímulos no totalAVANÇAR se o ranking calibrado é igual ao da validação e estável entre rodadas. Senão, REVISAR
    Estimar o nível no totalAVANÇAR se o cru fica a menos de um erro padrão da validação em todos os estímulos. Senão, PARAR: o nível calibrado é o do treino emprestado
    Cruzar a métrica principal com outraPARAR se a correlação do calibrado se afasta da validação mais que a tolerância
    Escolher estímulo numa célulaCélula pequena: PARAR. Inversão com evidência: REVISAR com coleta dirigida. Inversão por empate: AVANÇAR com ressalva. Erro de nível: AVANÇAR para ordenar, PARAR para nível. Sem alerta: AVANÇAR
    Prompt · gravar a Leitura do grupo
    Grave em resultados/09_decisao/relatorio_de_auditoria.md a nossa Leitura do grupo, com o texto abaixo, e o nome de quem assina. Não altere mais nada no relatório.
    [cole aqui a leitura e os nomes]

    Os scripts por baixo

    python scripts/decidir.py --projeto projetos/NOME_DO_ESTUDO python scripts/base_integrada.py --projeto projetos/NOME_DO_ESTUDO python scripts/relatorio_validacao.py --projeto projetos/NOME_DO_ESTUDO

    A base integrada sai em CSV e, se o pacote openpyxl existir, em xlsx. O PDF do relatório sai pelo Chrome sem interface; sem navegador compatível, abra o HTML e use Imprimir, Salvar como PDF.

    Exemplo do exercício · a tabela de decisão (abra depois da revelação)

    21 linhas: 13 AVANÇAR, 1 REVISAR e 7 PARAR. Ordenar os conceitos no total: AVANÇAR. Estimar nível: PARAR. Os três cruzamentos com a intenção: PARAR. A célula de 60 anos ou mais: REVISAR, com coleta humana dirigida de cerca de 100 pessoas por conceito, para erro padrão de 0,07. Norte e as duas categorias pequenas de gênero: PARAR, porque nem o humano sustenta leitura. Centro-Oeste: AVANÇAR com ressalva, porque as médias humanas de A e B ficam a 0,01 uma da outra. Fonte: resultados/09_decisao/tabela_de_decisao.md e resultados/09_decisao/relatorio_de_auditoria.md.

    O que conferir

    • Cada decisão traz a célula, o número e a condição.
    • Ordenar e estimar nível são usos separados.
    • O disclosure nunca soma pessoas ouvidas com respondentes gerados.
    • A Leitura do grupo foi escrita pelo grupo, contesta pelo menos uma célula com número e vem assinada.
    • A base integrada não tem nenhuma linha da amostra de validação.

    Erros comuns

    • Pedir ao agente que escreva a Leitura do grupo. Ele recusa; a leitura é de quem assina.
    • Usar peso_mixagem numa célula. Ele vale só para o total por estímulo.
    Calibração em detalhe

    Cada métrica do kit responde a uma pergunta diferente sobre o sintético

    Estas são exatamente as medidas que os scripts calculam, com a fórmula do código, o limiar usado e o valor real do exercício no treino. Os valores de validação ficam no bloco da revelação.

    Distribuição de purchase_intent no conceito C, humano contra sintético cru Nota 1: humano 0,0%, sintético 0,0%. Nota 2: 1,4% e 0,1%. Nota 3: 24,0% e 25,1%. Nota 4: 56,9% e 71,2%. Nota 5: 17,7% e 3,5%. 0%20%40%60%80% 24,025,1 56,971,2 17,73,5 1,40,1 nota 1nota 2nota 3nota 4nota 5 humano de treino (288 avaliações, média 3,91) sintético cru R01 (1.440, média 3,78)
    Exemplo do exercício. Intenção de compra no conceito C. O sintético empilha respostas na nota 4 e quase some da nota 5 (3,5% contra 17,7%): achatamento, medido pela razão de desvio padrão de 0,72. Humano: resultados/03_analise/02_distribuicoes.csv, sem peso. Sintético: rodada R01, semente 20260917, recalculada do lote que gerar_lote.py refaz idêntico.

    Uma conta curta diz se o erro é de nível e se a escala achatou

    Mexa nos valores. Os iniciais são do conceito C no treino do exercício; 0,04 é o menor erro padrão humano por conceito, do relatório de calibração.

    diferença = (sintético − humano) ÷ erro padrão

    Regra do kit: 1,96 erros padrão ou mais, com o mesmo ranking, é erro de nível.

    razão de desvio padrão

    Abaixo de 1 é achatamento. O kit não fixa corte; esta calculadora marca abaixo de 0,90 ou acima de 1,10. No exercício, o cru fica entre 0,72 e 0,76.

    MétricaO que medeFórmula no kitLimiar no kitValor no exercício (treino)
    RankingAcerto direcional: a ordem dos estímulosMédias ordenadas da maior para a menorIgual ao humano, no total e em cada célulaC > B > A no humano, cru e calibrado
    Diferença em erros padrãoErro de nível, em unidades de incerteza humana(média sintética − média humana) / erro padrão humano1,96 ou mais: "erro de nível"Total: maior viés 4,02 EP
    Razão de desvio padrãoAchatamento da escalaDP sintético / DP humano1 é igual; o kit lê a faixa, sem corte fixoCru 0,72 a 0,76; calibrado 1,00 a 1,03
    Variação totalQuanto as proporções de cada nota diferem½ Σ |pk − qk|, k de 1 a 50 é idênticoCru 0,10 a 0,14; calibrado 0,00 a 0,02
    KS (Kolmogorov Smirnov)Maior distância entre as distribuições acumuladasmax |Fp(k) − Fq(k)|<0,05 muito próxima; <0,10 próxima; <0,20 distinta; acima, muito distinta. Sem p-valorC cru 0,13 (distinta); calibrado 0,01
    WassersteinQuanto de nota, em média, é preciso moverΣ |Fp(k) − Fq(k)|, k de 1 a 40 é idêntico; em pontos da escalaC cru 0,16; calibrado 0,02
    Correlação de Pearson entre métricasEstrutura: se as notas andam juntas como no humanoCovariância / produto dos desviosDiferença acima de 0,05 (tolerância de parametros.json): "estrutura deslocada"Intenção e credibilidade: 0,10 humano, 0,02 calibrado
    Tamanho efetivo de KishCusto em precisão do raking(Σw)² / Σw²Quanto menor que n, mais o peso custou413,68 para 480 pessoas
    Estabilidade entre rodadasAcaso do geradorAmplitude das médias entre rodadas e contagem de rankingsESTÁVEL se o ranking é único e a amplitude é menor que o menor erro padrão humanoAmplitude 0,03 contra EP 0,04: ESTÁVEL
    Divergência de Jensen-ShannonQuanto duas distribuições de notas se distinguem½ KL(p, m) + ½ KL(q, m), m = (p + q)/2, base 2De 0 (iguais) a 1 (sem nota em comum)Curva no treino: 0,063 (100/0) a 0,057 (ótimo por célula)
    Distância média em pontosErro da composição na média|média da composição − média da régua|, média das células e estímulosMenor é melhor; validação cruzada em 5 partes100/0 0,155; 70/30 0,153; pool cru 0,175; só sintético 0,185
    Peso ótimo do real (w*)Quanto o real pesa na mistura(viés² + var S) / (var R + viés² + var S)Células com menos de 20 humanos ficam sem pesoTotal 88,1% real; 60+ 62,6%; menos frequente 26,5%
    N honestoQuantas pessoas reais o lote ampliado valeσ² humano / erro quadrático esperado da misturaComparar com o erro padrão aparente60+, A: EP aparente 0,06; N honesto 11 (cru) e 5 (quantis), contra 28 pessoas

    Tipos de erro por célula, na regra de scripts/kit.py: célula pequena (algum estímulo com menos de 20 humanos); inversão por empate (rankings diferentes, médias humanas que trocaram de posição a menos de um erro padrão); inversão com evidência (rankings diferentes, distância maior que um erro padrão); erro de nível (mesmo ranking, algum estímulo a 1,96 erros padrão ou mais); sem alerta.

    O kit não calcula "acurácia normalizada". Esse é o indicador de Park e colegas, que divide a precisão do sintético pela consistência humana em reteste. O papel equivalente aqui é o do teto humano, o KS entre a base de treino e a amostra de validação, calculado na etapa 8.

    Exemplo do exercício · as mesmas métricas contra a amostra de validação
    MétricaValor na validação
    Ranking do totalValidação, cru e calibrado: C > B > A
    Diferença do calibrado, total, intençãoA −0,13 EP; B −0,42 EP; C −0,28 EP
    KS calibrado e teto humano, intençãoA 0,01 e 0,01; B 0,05 e 0,05; C 0,02 e 0,02
    Correlações com a intenção (validação e calibrado)Credibilidade 0,14 e 0,02; relevância 0,14 e 0,06; apelo 0,20 e 0,08
    Pior célula60+: A 0,31 ponto acima, 3,03 EP, inversão com evidência
    Mixagem contra a validação88/12 0,095; 100/0 0,096; 70/30 0,100 (3º de 7); pool cru 0,135; só sintético 0,150

    Fonte: resultados/08_validacao/relatorio_validacao.md e resultados/08_validacao/mixagem/relatorio_mixagem_validacao.md.

    A amostra de validação abre uma vez, e o kit trava o que vem depois

    • Antes de abrir, o script confere que a calibração e o peso da mixagem existem e grava ABERTURA_DA_AMOSTRA_VALIDACAO.json com três impressões digitais.
    • Depois da abertura, calibrar.py se recusa a recalibrar e mixar_fontes.py sem opção recusa escolher peso novo.
    • Se a amostra de validação, o lote calibrado ou o peso da mixagem mudar, qualquer script responde ALERTA e para: os números das etapas 8 e 9 deixaram de valer.
    • Se alguém apagar o registro da abertura, o kit também responde ALERTA, porque a validação já rodou.
    • Uma calibração depois da abertura só existe com --pos-abertura, a pedido do professor, gravada à parte e marcada como contaminada.
    Exemplo do exercício
    { "aberto_em": "19/10/2026 09:10", "hash_amostra_validacao": "ef6264b8…", "hash_lote_calibrado": "6dd88c86…", "hash_mixagem": "72cbc368…", "regra": "a amostra de validação abre uma vez; depois disto a etapa 7 não recalibra e esta etapa não recalcula" }

    Fonte: resultados/08_validacao/ABERTURA_DA_AMOSTRA_VALIDACAO.json.

    Calibrar no meio do caminho

    Cada sintoma do sintético tem uma mudança concreta e uma medida para refazer

    Todo ajuste desta seção acontece antes da abertura da amostra de validação, olhando só o treino. Depois de qualquer mudança na construção, refaça as etapas 5, 6 e 7 na ordem, e registre o motivo em Decisões no estado do projeto.Escolha onde o sinal apareceu e qual é ele. A árvore mostra o ajuste, o que medir de novo e o limiar.

    1 · Onde o sinal apareceu?

    2 · Qual é o sinal?

    A tabela completa dos sintomas e as fontes
    SintomaComo aparece no kitMudança concretaO que medir de novo
    Achatamento: todo mundo no meio da escalaRazão de DP cru bem abaixo de 1; nota 5 quase vaziaO mapeamento de quantis corrige no total. Com modelo de linguagem, condicione com falas reais (etapa 4) e peça a distribuição de respostas do perfil, em vez de uma resposta "típica". Rótulos de escala completos em todos os pontosRazão de DP e Wasserstein do cru; na validação, o KS contra o teto humano
    Viés de desejabilidade ou cortesiaCredibilidade e métricas de "aprovação" acima do humano no cruRedação neutra, sem adjetivo no estímulo; incluir no condicionamento as falas negativas da base (dislike_open)Diferença em EP nas métricas de apoio; correlações
    Otimismo de intençãoMédia de intenção acima do humano, top 2 infladoNão use o nível sintético: a regra é PARAR para nível. Para ordenar, o raking e os quantis bastamRanking e diferença em EP; a linha "estimar nível" da tabela
    Segmento que não diferenciaTodas as células com o mesmo ranking do total, ou estrutura deslocada nas correlaçõesCondicionamento por respondente com o perfil completo e falas do segmento; conferir se o efeito existe na base humana (etapa 3) antes de cobrá-loTabela de células no treino; correlações
    Ordem de resposta influenciandoEstímulo visto primeiro sempre melhor; preferência pela primeira opçãoSortear a ordem dos estímulos e das opções; registrar exposure_order; no JSON, o efeito de "segunda posição" fica declarado com númeroMédias por exposure_order no humano e no sintético
    Erro concentrado numa célulaInversão com evidência que sobrevive à calibração e se repete nas rodadasRaking e quantis no total não alcançam. Revise o condicionamento dessa célula (estereótipo); se persistir, coleta humana dirigidaTipo da célula no treino; peso ótimo da célula na mixagem
    Base pequena por célula"célula pequena" na etapa 3; peso de mixagem vazioColeta humana dirigida. Ampliar com sintético só mostra o N honeston por célula; N honesto da ampliação
    Resultado instávelVeredito SENSÍVEL; ranking muda entre rodadasMais rodadas (acrescente sementes) e revisão da temperatura ou do pedidoAmplitude entre rodadas contra o menor EP humano
    Composição fora do alvoDiferença grande na etapa 3; Kish muito abaixo de nRaking (pós-estratificação). Se o Kish cair demais, rever alvos ou coletar a categoria que faltaKish e peso máximo
    O limite do ajusteAjustar o gerador até o treino ficar perfeito é sobreajuste: o modelo aprende o treino e não o público. É por isso que o calibrado no treino fica perto de zero e só a amostra de validação diz se valeu.
    Fonte primáriaTjuatja e colegas testaram vieses clássicos de questionário (aquiescência, ordem de resposta, formulação) e concluíram que os modelos em geral não reproduzem o comportamento humano e reagem a perturbações que não mudam a resposta das pessoas. Ou seja: não presuma que um viés humano conhecido aparece no sintético do mesmo jeito; meça. Tjuatja et al. 2024, Do LLMs exhibit human-like response biases?
    Conversas de melhoria

    Um bom ajuste começa por uma pergunta precisa ao agente e termina numa medida nova

    Diálogos curtos, com números reais. Os quatro primeiros usam o exemplo do exercício; o quinto usa a base de aluno fictícia dos testes do kit, um projeto próprio com conceitos X, Y e Z.Clique em Tocar para ver a conversa acontecer.

    Números da conversa 5 obtidos rodando os scripts do kit sobre a base de aluno fictícia dos testes, numa cópia do kit, em 19/10/2026.

    Os outputs finais

    As saídas finais carregam a origem de cada número até o cliente

    Base integrada

    Base humana de treino e todas as rodadas do sintético cru numa tabela só, com as mesmas colunas, mais cinco: origem (humano ou sintético), rodada, semente, peso (raking da etapa 7, média 1 em cada origem e rodada) e peso_mixagem (o peso que reproduz, no total de cada estímulo, a mixagem escolhida na etapa 7).

    Aba do xlsxConteúdo
    dadosUma linha por pessoa ou respondente gerado e por estímulo, com as cinco colunas novas
    metodologiaO que é a base, de onde vem cada parte, as regras dos pesos, o que não fazer e os testes do script
    dicionarioO dicionário do projeto mais as cinco colunas novas. O dicionário original não muda

    Como filtrar no Excel

    1. Abra a aba dados, selecione o cabeçalho e ligue o filtro (Dados, Filtro).
    2. Em origem, deixe só humano para qualquer contagem de pessoas ou margem de erro.
    3. Para ler o sintético, filtre origem = sintético e uma rodada por vez, nunca as rodadas somadas como se fossem gente diferente.
    4. Para a média mixada de um estímulo no total, use a média ponderada por peso_mixagem (SOMARPRODUTO da nota pelo peso dividido pela SOMA do peso), com as linhas humanas e a rodada principal. Não multiplique por peso de novo: o raking já está dentro.
    5. Em célula, não use peso_mixagem: cada célula tem o próprio peso em 07_calibracao/mixagem/07_peso_otimo_por_celula.csv.
    Exemplo do exercício

    23.712 linhas (912 humanas e 22.800 sintéticas em 5 rodadas) e 48 colunas (43 da base humana e 5 novas). Peso do real no total: 88,1%. Cinco testes do script: contagem de linhas, de colunas, nenhuma linha da validação, a média com peso_mixagem igual a w × real + (1 − w) × sintético, e o Kish de 413,68 reproduzido. Fonte: resultados/09_decisao/base_integrada/base_integrada_LEIA.md e resultados/09_decisao/base_integrada/base_integrada.xlsx.

    Por que a base integrada nunca contém a amostra de validação

    A amostra de validação é a régua. Se ela entrasse na base integrada, qualquer análise futura feita sobre essa base (um novo peso, um novo modelo, uma nova calibração) aprenderia com a régua, e não haveria mais como medir o método. Ela fica guardada para provar, e o script confere por teste que nenhuma linha dela entrou.

    Tabela de decisão e relatório de validação

    A tabela de decisão traz uso, célula, n humano, evidência com arquivo e número, decisão e condição. O relatório de calibração e validação responde três perguntas com gráfico: se a calibração no treino conserta o sintético (total contra célula), quanto o sintético pode pesar (mixagem) e o que a amostra de validação confirma (maior diferença por célula, com a linha de 1,96 erros padrão).

    Como apresentar ao cliente

    • Rótulo de simulação na primeira linha de todo arquivo e de todo slide com número sintético.
    • Pessoas ouvidas e respondentes gerados em linhas separadas, nunca somados.
    • O uso autorizado com a condição: por exemplo, "ordenar os conceitos, para triagem; a escolha final cita o dado humano".
    • A célula que exige campo humano, com o tamanho de amostra proposto.
    • O protocolo: modelo, data, sementes, regras e a data da abertura da amostra de validação.
    Exemplo do exercício · parágrafo do disclosure

    "Foram ouvidas 432 pessoas na base de treino e 240 na amostra de validação. Foram gerados 2400 respondentes sintéticos por rodada pelo modelo synthetic-shrunk-v1, em 5 rodadas, com quotas iguais aos alvos populacionais, e calibrados só com a base de treino. Os grupos nunca são somados." Fonte: resultados/09_decisao/disclosure.md. As 432 são as pessoas expostas a conceito; as 48 de controle não avaliaram conceito.

    Limites e ética

    O sintético quantitativo serve para ensaiar e priorizar, e a decisão final cita gente

    Serve

    • Pré-teste de questionário: escala, ordem, redação.
    • Gerar e priorizar hipóteses por célula.
    • Triagem de estímulos, com a ordem confirmada na validação.
    • Planejar a coleta humana: onde gastar a amostra.

    Não serve

    • Dimensionar mercado ou prever vendas.
    • Estimar nível de intenção para meta comercial.
    • Substituir o campo humano na escolha final.
    • Completar célula pequena e chamar de amostra.
    • Calcular margem de erro com linhas sintéticas.

    Disclosure, sempre

    Declare que houve material sintético, como foi gerado (modelo, data, sementes, regras), contra o que foi validado, para que usos ele vale e quantas pessoas reais sustentam o estudo. O Código Internacional ICC/ESOMAR, revisado em 2025, pede transparência com clientes e participantes; o guia "20 Questions" da ESOMAR lista o que perguntar a quem fornece serviços com IA. Use as duas listas para conferir o seu disclosure.

    Regra de origem do kitLinha sintética nunca entra em contagem de pessoas ouvidas, em margem de erro amostral nem em peso humano. A coluna de origem aparece em toda tabela. Célula humana com menos de 20 casos recebe o aviso "célula pequena" e não sustenta conclusão.
    Glossário e fontes

    Os termos do método cabem em uma linha cada

    TermoSignificado
    Amostra de validaçãoParte da base humana separada por sorteio antes de tudo, aberta uma vez na etapa 8
    Base de treinoOs humanos usados para construir, calibrar e escolher pesos
    CondicionamentoDar ao respondente sintético um perfil e um contexto antes de ele responder
    SementeNúmero que fixa o sorteio do gerador; a mesma semente refaz o mesmo lote
    RodadaO mesmo pedido de geração com outra semente
    RakingAjuste proporcional iterativo dos pesos até a amostra bater com os alvos
    Pós-estratificaçãoPonderação que corrige a composição de uma amostra para a da população
    Mapeamento de quantisTroca cada nota sintética pela nota humana na mesma posição da fila
    Variância e desvio padrãoO quanto as notas se espalham em torno da média
    AchatamentoVariância sintética menor que a humana; respostas presas no meio da escala
    Erro padrãoIncerteza de uma média por causa do tamanho da amostra
    Distância entre distribuiçõesMedidas (variação total, KS, Wasserstein, Jensen-Shannon) de quanto duas distribuições de notas diferem; zero é igual
    Acurácia normalizadaPrecisão do sintético dividida pela consistência humana em reteste; não é calculada pelo kit
    Teto humanoDistância entre duas amostras humanas do mesmo público; abaixo dela nenhum método pode ser cobrado
    Mixagem de fontesEstimar em cada base e combinar depois, com o peso de cada origem
    Pool cruBases empilhadas sem peso, em que o sintético pesa pelo número de linhas
    N honestoQuantas pessoas reais dariam o mesmo erro que um lote ampliado com sintético
    Tamanho efetivo de KishQuantas pessoas sem peso dariam a mesma precisão que a amostra ponderada
    Impressão digitalCódigo calculado do conteúdo de um arquivo; muda se o arquivo mudar
    RAG e TF-IDFGeração com recuperação de trechos; TF-IDF pesa palavras frequentes no trecho e raras no conjunto
    DisclosureDeclaração ao cliente sobre o uso de material sintético e seus limites

    Fontes

    Links conferidos em 19/10/2026. Os achados citados estão registrados na base de referências do curso.

    1. Argyle, L. P. et al. (2023). Out of One, Many: Using Language Models to Simulate Human Samples. Political Analysis 31(3), 337 a 351. arxiv.org/abs/2209.06899
    2. Bisbee, J. et al. (2024). Synthetic Replacements for Human Survey Data? The Perils of Large Language Models. Political Analysis 32(4), 401 a 416. doi.org/10.1017/pan.2024.5
    3. Peng, T., Gui, G., Toubia, O. et al. (2025). Digital Twins as Funhouse Mirrors: Five Key Distortions. arxiv.org/abs/2509.19088
    4. Santurkar, S. et al. (2023). Whose Opinions Do Language Models Reflect? ICML. arxiv.org/abs/2303.17548
    5. Dominguez-Olmedo, R., Hardt, M., Mendler-Dünner, C. (2024). Questioning the Survey Responses of Large Language Models. arxiv.org/abs/2306.07951
    6. Tjuatja, L. et al. (2024). Do LLMs exhibit human-like response biases? A case study in survey design. TACL. arxiv.org/abs/2311.04076
    7. Park, J. S. et al. (2024). Generative Agent Simulations of 1,000 People. arxiv.org/abs/2411.10109
    8. Arora, N., Chakraborty, I., Nishimura, Y. (2025). AI and Human Hybrids for Marketing Research. Journal of Marketing 89(2), 43 a 70. doi.org/10.1177/00222429241276529
    9. AAPOR Task Force (2026). Responsible AI Integration in Survey Research. aapor.org
    10. ICC/ESOMAR International Code on Market, Opinion and Social Research and Data Analytics. esomar.org
    11. ESOMAR. 20 Questions to help buyers of AI-based services. esomar.org
    12. Insights Association. Code in Action: Synthetic Data Revisited. insightsassociation.org
    13. Deming, W. E., Stephan, F. F. (1940). On a least squares adjustment of a sampled frequency table when the expected marginal totals are known. Annals of Mathematical Statistics 11(4). Origem do raking. doi.org/10.1214/aoms/1177731829
    14. Lin, J. (1991). Divergence measures based on the Shannon entropy. IEEE Transactions on Information Theory 37(1). Origem da divergência de Jensen-Shannon. doi.org/10.1109/18.61115

    No kit: 00_LEIA.md, AGENTS.md, as skills em .claude/skills/, os PEDIDO.md e CONFERIR.md de cada etapa em projetos/nuvem_casa/ e os scripts em scripts/.

    Guia do Kit 3 · Curso ABEP Dados e Personas Sintéticas para Pesquisa de Mercado · 20 a 22/10/2026 · Professor Cassiano Albuquerque. Números do exercício: execução de 19/10/2026 da saída completa do kit.
    ↑ Topo