<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kell da Cereja Flamejante</title>
    <description>The latest articles on DEV Community by Kell da Cereja Flamejante (@eusouakell).</description>
    <link>https://dev.to/eusouakell</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F465306%2F06fb7a5e-2f09-42e0-972d-e01e9ce79f88.png</url>
      <title>DEV Community: Kell da Cereja Flamejante</title>
      <link>https://dev.to/eusouakell</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eusouakell"/>
    <language>en</language>
    <item>
      <title>Como criar uma wiki LLM</title>
      <dc:creator>Kell da Cereja Flamejante</dc:creator>
      <pubDate>Sun, 11 Oct 2026 12:38:16 +0000</pubDate>
      <link>https://dev.to/eusouakell/como-criar-uma-wiki-llm-237i</link>
      <guid>https://dev.to/eusouakell/como-criar-uma-wiki-llm-237i</guid>
      <description>&lt;p&gt;Conheci a ideia por um tutorial sobre criar uma wiki com LLM e navegar pelas notas no Obsidian. O vídeo partia do &lt;a href="https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f" rel="noopener noreferrer"&gt;texto LLM Wiki, de Andrej Karpathy&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A possibilidade de organizar conhecimento e consultá-lo depois, sem reconstruir tudo a cada conversa, me interessou. Na Cereja Flamejante, comecei pela procedência das fontes. Só que registrar um arquivo ainda não entrega uma wiki: faltavam leitura, páginas relacionadas, consulta e manutenção.&lt;/p&gt;

&lt;p&gt;Para fechar esse percurso, fizemos um teste assistido com dois documentos fictícios próprios. O assistente LLM leu as fontes, escreveu as páginas e atualizou a resposta quando chegou uma mudança. Os scripts cuidaram dos arquivos e das verificações estruturais. Nenhum material da empresa entrou no exemplo.&lt;/p&gt;

&lt;p&gt;Aqui está o caminho para você montar uma versão mínima e repetir esse ciclo.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que você vai construir
&lt;/h2&gt;

&lt;p&gt;Uma pasta de documentos vira uma wiki quando ganha páginas que explicam, relacionam e ajudam a consultar o conteúdo. Neste exemplo, a organização é esta:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vault/
  AGENTS.md       instruções de manutenção para o agente
  raw/            documentos originais preservados
  sources/        procedência e notas de leitura
  wiki/           sínteses, conceitos e respostas registradas
  index.md        mapa das páginas
  log.md          histórico das mudanças
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esses nomes são uma escolha do exemplo. A separação que importa é entre os documentos recebidos, o conhecimento produzido a partir deles e as instruções de manutenção. O &lt;a href="https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f" rel="noopener noreferrer"&gt;modelo de Karpathy&lt;/a&gt; ajuda a pensar essa organização; não exige um conjunto único de pastas ou ferramentas.&lt;/p&gt;

&lt;p&gt;Você vai precisar de Python 3.10 ou superior para os comandos abaixo e de um agente LLM capaz de ler e escrever arquivos locais. O helper não chama uma API nem produz sínteses sozinho. Obsidian é opcional: você pode abrir a pasta como vault para navegar pelos links Markdown.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Comece com uma pergunta e uma fonte pequena
&lt;/h2&gt;

&lt;p&gt;O caso fictício é um clube de leitura. A primeira fonte informa quatro encontros de 60 minutos, com início em &lt;strong&gt;23/10/2026 às 19h&lt;/strong&gt;. Não informa preço nem vagas.&lt;/p&gt;

&lt;p&gt;A pergunta que a wiki deve responder é concreta: &lt;strong&gt;quando é o primeiro encontro e quanto custa?&lt;/strong&gt; Isso permite conferir se a resposta usa a fonte e se reconhece uma informação ausente.&lt;/p&gt;

&lt;p&gt;O &lt;a href="https://github.com/eusouakell/cereja-knowledge-system/tree/main/examples/wiki-lab" rel="noopener noreferrer"&gt;exemplo completo, com os prompts e resultados&lt;/a&gt; está no repositório da Cereja. O exemplo já está na branch principal. Para obter os arquivos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/eusouakell/cereja-knowledge-system.git
&lt;span class="nb"&gt;cd &lt;/span&gt;cereja-knowledge-system
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O repositório inclui uma wiki já preenchida para comparação. Para repetir desde o começo, crie outra pasta com apenas a primeira fonte e as instruções:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"from pathlib import Path; import shutil; p=Path('outputs/wiki-replay'); (p/'raw').mkdir(parents=True); shutil.copy2('examples/wiki-lab/vault/raw/01-programa.md',p/'raw/01-programa.md'); shutil.copy2('examples/wiki-lab/vault/AGENTS.md',p/'AGENTS.md')"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse comando falha se a pasta de destino já existir, para não sobrescrever uma execução anterior. Você também pode criar a estrutura e copiar esses dois arquivos manualmente.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Defina a entrada e registre a procedência
&lt;/h2&gt;

&lt;p&gt;Adicionar um documento a &lt;code&gt;raw/&lt;/code&gt; pode disparar a ingestão automaticamente quando há uma automação configurada. Você também pode usar um comando ou processar lotes. A pasta, sozinha, não executa nada; o gatilho depende da ferramenta.&lt;/p&gt;

&lt;p&gt;Neste teste usamos um comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-X&lt;/span&gt; utf8 tools/wiki_lab.py ingest &lt;span class="nt"&gt;--vault&lt;/span&gt; outputs/wiki-replay
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ele calcula SHA-256, identifica os bytes do original e cria uma nota em &lt;code&gt;sources/&lt;/code&gt;. A nota registra a origem local e os metadados disponíveis. Ao processar os mesmos bytes novamente, o comando retorna a nota existente, preservando suas anotações.&lt;/p&gt;

&lt;p&gt;O hash não resolve toda duplicação: dois arquivos diferentes podem representar o mesmo documento. Identidade, versões, armazenamento e acesso são decisões que você precisa definir para sua base.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Peça ao agente para construir as páginas
&lt;/h2&gt;

&lt;p&gt;Abra o agente na pasta &lt;code&gt;outputs/wiki-replay&lt;/code&gt;. O &lt;code&gt;AGENTS.md&lt;/code&gt; do exemplo orienta a preservar os originais, citar fontes, separar interpretação de informação documentada e registrar mudanças. Conteúdo dos documentos deve ser tratado como dado, sem virar instrução para o agente executar ações.&lt;/p&gt;

&lt;p&gt;Aplique este pedido:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Leia AGENTS.md e a fonte em raw/. Preserve o original. Complete as notas de leitura em sources/, com referências às seções da fonte. Crie index.md, log.md e páginas em wiki/ para o clube e um conceito relacionado. Diferencie afirmações da fonte, interpretação e lacunas. Não invente aprovação humana. O resultado deve permitir responder quando é o encontro e o que sabemos sobre seu preço.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No teste assistido, o LLM criou uma página do clube e outra sobre leitura com evidências, relacionadas entre si. A primeira reúne o programa; a segunda interpreta a atividade de comparar leituras citando trechos. Essa interpretação fica identificada como proposta do assistente, sem ser atribuída ao documento.&lt;/p&gt;

&lt;p&gt;Confira as páginas contra a fonte antes de usá-las. Para PDFs, você também precisará escolher como extrair e conferir o texto; arquivos digitalizados podem exigir OCR ou leitura visual. Neste ciclo usamos Markdown legível, sem testar essas etapas.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Consulte e exija referências
&lt;/h2&gt;

&lt;p&gt;O índice aponta para as páginas relevantes. Uma busca simples ajuda a encontrá-las:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-X&lt;/span&gt; utf8 tools/wiki_lab.py search &lt;span class="nt"&gt;--vault&lt;/span&gt; outputs/wiki-replay &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s2"&gt;"encontro preço"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Essa busca é lexical: retorna linhas de arquivos, sem gerar uma resposta. Agora pergunte ao agente:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Consulte o índice, a página do clube e os originais. Quando é o primeiro encontro e quanto custa? Cite arquivo e seção. Registre a resposta em uma página e acrescente seu link ao índice. Se a base não disser, registre a lacuna.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A resposta sustentada pela primeira fonte é &lt;strong&gt;23/10 às 19h; preço não informado&lt;/strong&gt;. Não informar preço não significa que o encontro é gratuito.&lt;/p&gt;

&lt;p&gt;O que entra no contexto do modelo é o material necessário para essa pergunta. Você pode acrescentar outras formas de recuperação conforme a base crescer; este ciclo pequeno funciona com índice, links e leitura de arquivos.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Acrescente uma fonte que muda a resposta
&lt;/h2&gt;

&lt;p&gt;A segunda fonte fictícia substitui explicitamente a previsão inicial: o primeiro encontro passa para &lt;strong&gt;24/10/2026 às 10h&lt;/strong&gt;. Copie a atualização para a entrada:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"import shutil; shutil.copy2('examples/wiki-lab/vault/raw/02-atualizacao.md','outputs/wiki-replay/raw/02-atualizacao.md')"&lt;/span&gt;
python &lt;span class="nt"&gt;-X&lt;/span&gt; utf8 tools/wiki_lab.py check &lt;span class="nt"&gt;--vault&lt;/span&gt; outputs/wiki-replay
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Antes de processá-la, a verificação deve apontar uma fonte pendente. Registre a nova procedência:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-X&lt;/span&gt; utf8 tools/wiki_lab.py ingest &lt;span class="nt"&gt;--vault&lt;/span&gt; outputs/wiki-replay
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois peça ao agente:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Leia a atualização e compare com as páginas existentes. Atualize apenas o que a fonte sustenta, preservando o programa original. Registre a previsão anterior e o motivo da substituição no histórico. Atualize páginas e índice; refaça a consulta com referências. Não trate a data mais recente de um arquivo como prova suficiente de que ele substitui outro.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No ciclo executado, o LLM atualizou a página do clube e o índice, preservou o original e registrou a previsão anterior. O conceito relacionado não precisou mudar. A consulta passou a responder &lt;strong&gt;24/10 às 10h; preço não informado&lt;/strong&gt;, citando a atualização. A ausência de preço permaneceu uma lacuna.&lt;/p&gt;

&lt;p&gt;Esse é o ponto em que a manutenção faz diferença: uma nova fonte precisa chegar às páginas e respostas que dependem dela.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Confira a estrutura e revise o conteúdo
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-X&lt;/span&gt; utf8 tools/wiki_lab.py check &lt;span class="nt"&gt;--vault&lt;/span&gt; outputs/wiki-replay
python &lt;span class="nt"&gt;-X&lt;/span&gt; utf8 tools/wiki_lab.py ingest &lt;span class="nt"&gt;--vault&lt;/span&gt; outputs/wiki-replay
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O primeiro comando verifica caminhos de links, originais e registros de procedência. O segundo permite conferir a reingestão: as notas existentes devem ser preservadas. Essas verificações não avaliam a verdade das afirmações nem garantem que todos os conflitos foram encontrados.&lt;/p&gt;

&lt;p&gt;Defina também como você vai revisar conteúdo: o que exige aprovação, quem pode aprovar e como essa passagem fica registrada. Neste experimento, as páginas continuam identificadas como propostas geradas pelo assistente, sem aprovação humana. Aprovar uma nota e escrever seu conteúdo são coisas diferentes.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que o experimento permitiu concluir
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Verificação&lt;/th&gt;
&lt;th&gt;Resultado observado&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Criar páginas a partir de uma fonte&lt;/td&gt;
&lt;td&gt;Índice, síntese e conceito relacionado produzidos pelo LLM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Consultar com referências&lt;/td&gt;
&lt;td&gt;Data e horário ligados à seção da fonte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reconhecer uma lacuna&lt;/td&gt;
&lt;td&gt;Preço ausente, sem inventar gratuidade&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Incorporar uma atualização&lt;/td&gt;
&lt;td&gt;Resposta alterada para 24/10 às 10h, com histórico preservado&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reprocessar os mesmos arquivos&lt;/td&gt;
&lt;td&gt;Notas de leitura preservadas&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Detectar problemas estruturais&lt;/td&gt;
&lt;td&gt;Fonte pendente, original alterado e link quebrado detectados nos testes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Passaram os quatro testes novos do helper e os dois testes existentes de ingestão. Esse é o recorte testado; não foi executada a suíte integral dos outros sistemas do repositório.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que aprendemos
&lt;/h2&gt;

&lt;p&gt;A parte mais útil deste teste foi acompanhar o caminho de uma informação: de onde ela veio, em quais páginas apareceu e o que precisou mudar quando chegou uma atualização. A wiki ganhou valor quando conseguimos refazer a consulta e encontrar a resposta atual, sem perder a previsão anterior.&lt;/p&gt;

&lt;p&gt;Também ficou clara a diferença entre registrar um arquivo e incorporá-lo ao conhecimento da base. O comando criou a procedência; o agente precisou ler, relacionar e atualizar as páginas. E “preço não informado” foi uma resposta importante: uma lacuna precisa continuar visível até aparecer uma fonte que a resolva.&lt;/p&gt;

&lt;p&gt;Os checks ajudaram a detectar problemas de estrutura. Conferir se uma síntese representa bem o documento continua sendo outro trabalho. Com dois documentos fictícios, conseguimos observar esse ciclo pequeno, mas ainda não avaliar qualidade em escala, autonomia ou economia de tempo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Da demonstração à curadoria com fontes públicas
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Atualização de 16/10/2026.&lt;/strong&gt; Depois do ciclo fictício, ampliamos o piloto para um acervo de curadoria. A pergunta agora é: o que merece ser lido e incorporado à wiki, sem acumular material que não vamos usar?&lt;/p&gt;

&lt;p&gt;Começamos com 22 registros de procedência e três leituras em rascunho, sobre memória de agentes, arte e autoria e uma missão científica. Esses números descrevem a primeira rodada: registrar metadados não significa ler 22 obras, e as leituras ainda precisam de revisão.&lt;/p&gt;

&lt;p&gt;O catálogo reúne caminhos diferentes de descoberta:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenAlex e Crossref, para referências bibliográficas;&lt;/li&gt;
&lt;li&gt;SciELO e Europe PMC, para localizar pesquisa e conferir a licença de cada texto;&lt;/li&gt;
&lt;li&gt;NASA, Smithsonian e Met, para ciência, história e cultura;&lt;/li&gt;
&lt;li&gt;Pesquisa FAPESP, para jornalismo científico brasileiro;&lt;/li&gt;
&lt;li&gt;releases e documentação de repositórios selecionados, incluindo projetos do Akita.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nem todo conector é um radar completo. Algumas entradas começaram com uma página selecionada; procurar material novo continua sendo trabalho de pesquisa. O Smithsonian retornou 403 na coleta inicial e ficou como referência, sem contornar o bloqueio.&lt;/p&gt;

&lt;h3&gt;
  
  
  Um curador antes de uma pilha de downloads
&lt;/h3&gt;

&lt;p&gt;O perfil de curadoria usa um papel de pesquisa que já existia no sistema da Cereja. Antes da leitura integral, ele precisa dizer a que pergunta a fonte contribui, o que acrescenta e se há permissão para processá-la. Duplicatas, spam e atualizações cosméticas ficam de fora; materiais interessantes sem uso imediato podem ser adiados com um motivo.&lt;/p&gt;

&lt;p&gt;Também reservamos espaço para cultura, ciência e contexto brasileiro. Uma base editorial perde parte do seu valor se tudo acaba virando mais uma pasta sobre IA.&lt;/p&gt;

&lt;p&gt;No piloto, o coletor consulta até três itens por fonte e 30 candidatos por rodada. A política limita a produção a seis sínteses por dia, compartilhadas entre as rotinas. Esse último limite depende do registro de trabalho do agente; o script não controla sozinho um orçamento global de sínteses.&lt;/p&gt;

&lt;p&gt;Um exemplo concreto de seleção foi o material do Akita. Estudamos a documentação de produção do &lt;a href="https://github.com/akitaonrails/ai-book-2026" rel="noopener noreferrer"&gt;ai-book-2026&lt;/a&gt;, distinguindo suas ferramentas do manuscrito. A &lt;a href="https://github.com/akitaonrails/ai-book-2026/blob/main/LICENSE.md" rel="noopener noreferrer"&gt;licença&lt;/a&gt; libera o software de construção sob MIT e reserva os direitos do livro, inclusive mineração de texto e dados. Guardamos uma proposta própria de tutorial para futuros livros da Cereja, sem ingerir os capítulos. Ser acessível na web não basta para autorizar todo uso.&lt;/p&gt;

&lt;h3&gt;
  
  
  O que automatizamos — e o que ainda exige validação
&lt;/h3&gt;

&lt;p&gt;Há um &lt;a href="https://github.com/eusouakell/cereja-knowledge-system/blob/main/tools/curation_pipeline.py" rel="noopener noreferrer"&gt;coletor público e limitado&lt;/a&gt;, separado do helper didático usado acima. Ele registra metadados, reúne a procedência de diferentes provedores e verifica a entrada local. Para um original seguir à leitura, exigimos um arquivo de metadados ao lado dele, com classificação pública e permissão de processamento. O coletor não chama um LLM nem escreve a síntese.&lt;/p&gt;

&lt;p&gt;Para conferir a base local, os comandos são:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-X&lt;/span&gt; utf8 tools/curation_pipeline.py health
python &lt;span class="nt"&gt;-X&lt;/span&gt; utf8 tools/curation_pipeline.py collect
python &lt;span class="nt"&gt;-X&lt;/span&gt; utf8 tools/curation_pipeline.py inbox
python &lt;span class="nt"&gt;-X&lt;/span&gt; utf8 tools/curation_pipeline.py ingest-metadata
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esses comandos atuam no catálogo local de curadoria do repositório; não substituem os comandos do exemplo do clube de leitura. A &lt;a href="https://github.com/eusouakell/cereja-knowledge-system/blob/main/config/curation-sources.json" rel="noopener noreferrer"&gt;configuração das fontes&lt;/a&gt; e a &lt;a href="https://github.com/eusouakell/cereja-knowledge-system/blob/main/governance/curation-automation-policy.md" rel="noopener noreferrer"&gt;política do piloto&lt;/a&gt; estão disponíveis para consulta.&lt;/p&gt;

&lt;p&gt;Criamos três agendas: descoberta de fontes, verificação periódica da entrada e manutenção semanal. Verificação periódica não é um watcher instantâneo. E uma agenda ativa não comprova execução: no teste de 16/10, o modo padrão deste chat conseguiu consultar a saúde da base, mas falhou ao gravar no banco local por falta de permissão. Com autorização interativa, a rodada manual terminou: consultou 20 candidatos, registrou cinco novos itens e deixou o catálogo com 27 registros, sem notas de procedência faltantes. Não houve novas sínteses nessa rodada. Isso valida essa execução manual; a execução agendada completa ainda precisa ser validada no ambiente correto.&lt;/p&gt;

&lt;p&gt;Os seis testes locais do coletor passaram: cobrem duplicação, procedência de múltiplos provedores, preservação de anotações, classificação da entrada e restrições de URL. Eles não medem a qualidade das sínteses nem comprovam autonomia. A &lt;a href="https://learn.chatgpt.com/docs/automations?surface=app" rel="noopener noreferrer"&gt;documentação das tarefas agendadas&lt;/a&gt; explica que as permissões do ambiente também valem para as execuções sem supervisão.&lt;/p&gt;

&lt;h2&gt;
  
  
  Os próximos passos na Cereja
&lt;/h2&gt;

&lt;p&gt;O próximo teste é usar as leituras selecionadas numa pauta real da newsletter, depois de revisar seus originais. Também precisamos concluir a validação das execuções agendadas e observar o histórico de algumas rodadas. Quero comparar as sínteses com os originais, revisar as relações propostas e observar o que acontece quando duas fontes discordam sem que uma substitua explicitamente a outra.&lt;/p&gt;

&lt;p&gt;Também precisamos registrar o esforço de revisão e as correções necessárias. Isso vai ajudar a decidir onde a automação vale a pena. Extração de PDFs e OCR entram conforme a necessidade desse uso. A verificação periódica da entrada já foi configurada; agora precisamos comprovar seu funcionamento sem intervenção e tratar as falhas que aparecerem.&lt;/p&gt;

&lt;h2&gt;
  
  
  E na sua wiki?
&lt;/h2&gt;

&lt;p&gt;Que assunto você gostaria de organizar numa base assim? Se já usa uma wiki com LLM, conta nos comentários como faz uma informação nova chegar às páginas antigas e o que ainda precisa conferir à mão. Quero conhecer esses caminhos e trocar aprendizados conforme os testes da Cereja avançarem.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>learning</category>
      <category>llm</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Uma simulação financeira precisa explicar o esforço</title>
      <dc:creator>Kell da Cereja Flamejante</dc:creator>
      <pubDate>Sat, 10 Oct 2026 21:26:45 +0000</pubDate>
      <link>https://dev.to/eusouakell/uma-simulacao-financeira-precisa-explicar-o-esforco-4gc</link>
      <guid>https://dev.to/eusouakell/uma-simulacao-financeira-precisa-explicar-o-esforco-4gc</guid>
      <description>&lt;p&gt;Um plano pode parecer atraente porque termina rápido. Mas o prazo, sozinho, não explica o compromisso que a pessoa está assumindo.&lt;/p&gt;

&lt;p&gt;Na Bússola, essa diferença apareceu durante a revisão de uma simulação financeira. A interface destacava um cenário chamado “Acelerado”, com valor mensal e prazo. Faltava deixar claro que parte daquele valor dependia de mudanças nos gastos.&lt;/p&gt;

&lt;p&gt;A Bússola é uma prova de conceito criada por uma equipe de Produto, Design e Engenharia na Batalha de Agentes Itaú, Google Cloud e SantoDigital. Depois do evento, o projeto passou por refinamentos de UX e conteúdo. Este artigo trata de um desses refinamentos; não descreve um serviço bancário em operação.&lt;/p&gt;

&lt;h2&gt;
  
  
  O valor estava visível. A condição precisava aparecer.
&lt;/h2&gt;

&lt;p&gt;O estado anterior reconstituído no case apresentava:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Acelerado — 80% da sobra — R$ 1.660,85 por mês — 19 meses.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;O problema era a relação entre as informações. A menção à sobra não explicava os cortes adicionais que compunham o valor mensal.&lt;/p&gt;

&lt;p&gt;Imagine ler esse resumo e concluir que basta reservar parte do que já sobra. Se o plano também exige reduzir despesas, essa condição precisa aparecer antes da escolha.&lt;/p&gt;

&lt;p&gt;Não é uma questão de deixar o texto mais simpático. É uma questão de explicar o que o número exige.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mostrar a composição antes de pedir a decisão
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi554halavdytfr9aihxy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi554halavdytfr9aihxy.png" alt="Antes e depois do cenário Acelerado: a versão posterior identifica a sobra, os cortes necessários e o compromisso de 19 meses." width="800" height="633"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figura 1. Reconstituições baseadas no código e no roteiro. Não são capturas das versões executadas. Os valores são exemplos da simulação.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Na revisão, o cenário passou a apresentar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Exige mudanças&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;R$ 1.660,85 por mês · 19 meses&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Da sobra: R$ 1.383,20&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cortes: + R$ 277,65&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Economias precisam acontecer.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O botão também passou a identificar o compromisso: “Escolher plano de 19 meses”.&lt;/p&gt;

&lt;p&gt;Os valores são exemplos da simulação apresentada no projeto. Não representam resultados obtidos por uma pessoa real nem agregados da base do desafio.&lt;/p&gt;

&lt;p&gt;A decomposição permite conferir uma relação simples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;R$ 1.383,20 disponíveis da sobra
+ R$ 277,65 dependentes de cortes
= R$ 1.660,85 de compromisso mensal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Essa apresentação separa o dinheiro disponível da economia que ainda precisa acontecer. As duas parcelas somam o mesmo valor, mas têm condições diferentes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm981ukov5x5zuxs01lpb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm981ukov5x5zuxs01lpb.png" alt="Diagrama da composição mensal: R$ 1.383,20 da sobra mais R$ 277,65 dependentes de cortes somam R$ 1.660,85 por mês, durante 19 meses." width="800" height="633"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figura 2. Diagrama editorial, não uma tela da Bússola. A barra representa as proporções das duas parcelas do exemplo; não representa uma distribuição de usuários ou um resultado financeiro observado.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Copy e cálculo precisam concordar
&lt;/h2&gt;

&lt;p&gt;Se o cálculo inclui uma condição, a interface precisa comunicar essa condição. Se a interface apresenta um valor como disponível, o sistema precisa sustentar essa interpretação.&lt;/p&gt;

&lt;p&gt;Uma revisão útil começa com perguntas concretas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;De onde vem cada parcela do valor?&lt;/li&gt;
&lt;li&gt;O que depende de uma mudança futura?&lt;/li&gt;
&lt;li&gt;Essa condição está visível antes da escolha?&lt;/li&gt;
&lt;li&gt;O botão identifica o compromisso ou apenas diz “continuar”?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Esse trabalho envolve conteúdo, produto e engenharia. Um texto claro não corrige, sozinho, uma lógica de recomendação inadequada.&lt;/p&gt;

&lt;h2&gt;
  
  
  Referências que ajudam a revisar a decisão
&lt;/h2&gt;

&lt;p&gt;A documentação do W3C para &lt;a href="https://www.w3.org/WAI/WCAG22/Understanding/labels-or-instructions.html" rel="noopener noreferrer"&gt;WCAG 2.2, critério 3.3.2: rótulos ou instruções&lt;/a&gt; orienta a fornecer informações para que a pessoa saiba o que está selecionando. Não se trata de explicar tudo: a instrução precisa apoiar a tarefa.&lt;/p&gt;

&lt;p&gt;O &lt;a href="https://www.w3.org/WAI/WCAG22/Understanding/headings-and-labels.html" rel="noopener noreferrer"&gt;critério 2.4.6: títulos e rótulos&lt;/a&gt; pede que descrevam o assunto ou a finalidade. É uma referência útil para revisar “Escolher plano” e perguntar se o rótulo identifica suficientemente o compromisso apresentado. Esse recorte de escrita não demonstra conformidade com WCAG; semântica, interação e testes assistivos também precisam ser verificados.&lt;/p&gt;

&lt;p&gt;Para experiências com IA, a &lt;a href="https://www.microsoft.com/en-us/haxtoolkit/guideline/make-clear-why-the-system-did-what-it-did/" rel="noopener noreferrer"&gt;diretriz 11 do Microsoft HAX Toolkit&lt;/a&gt; recomenda permitir acesso a explicações sobre as saídas do sistema. Ela também alerta que uma explicação pode aumentar a confiança sem que o sistema mereça essa confiança. No nosso exemplo, mostrar a composição do valor explica uma conta; não valida a recomendação financeira nem o prazo.&lt;/p&gt;

&lt;p&gt;Essas referências ajudam a definir critérios de revisão. Não são evidência de que a mudança da Bússola melhorou a compreensão das pessoas.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que esta revisão permite afirmar
&lt;/h2&gt;

&lt;p&gt;A versão revisada explicita a composição do compromisso mensal. Isso é observável na interface.&lt;/p&gt;

&lt;p&gt;Ainda não permite afirmar que as pessoas entenderam melhor, escolheram planos mais adequados ou melhoraram sua saúde financeira. Essas conclusões exigem pesquisa com participantes e validação da lógica dos cenários.&lt;/p&gt;

&lt;p&gt;As comparações do case são reconstituições visuais baseadas no código e no roteiro, não capturas das versões executadas. A revisão de escrita e interface aconteceu depois da entrega coletiva da hackathon.&lt;/p&gt;

&lt;p&gt;Minha conclusão de trabalho é simples: antes de tornar um plano mais atraente, precisamos tornar suas condições mais visíveis.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fontes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/eusouakell/bussola" rel="noopener noreferrer"&gt;Repositório da Bússola&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/eusouakell/bussola/blob/99377296f17f470c2f74d5037a4cb5644a6c82c5/web/public/case/index.html" rel="noopener noreferrer"&gt;Estados reconstituídos do case, no commit 9937729&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.microsoft.com/en-us/research/publication/guidelines-for-human-ai-interaction/" rel="noopener noreferrer"&gt;Amershi et al. — Guidelines for Human-AI Interaction, CHI 2019&lt;/a&gt;: pesquisa que fundamenta as diretrizes usadas pelo HAX Toolkit.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O projeto original é coletivo. Este recorte aborda o refinamento posterior de UX e conteúdo.&lt;/p&gt;

</description>
      <category>ux</category>
      <category>design</category>
      <category>ai</category>
    </item>
    <item>
      <title>API Connect Conference free com mais de 60 palestrantes</title>
      <dc:creator>Kell da Cereja Flamejante</dc:creator>
      <pubDate>Sat, 10 Apr 2021 14:17:59 +0000</pubDate>
      <link>https://dev.to/eusouakell/olha-a-pizzaaaa-pessoal-estamos-com-uma-campanha-de-incentivo-para-divulgar-o-api-connect-conference-free-acj</link>
      <guid>https://dev.to/eusouakell/olha-a-pizzaaaa-pessoal-estamos-com-uma-campanha-de-incentivo-para-divulgar-o-api-connect-conference-free-acj</guid>
      <description>&lt;p&gt;Olha a 🍕 pizzaaaa. &lt;br&gt;
Pessoal, estamos com uma campanha de incentivo para divulgar o APICON. Os 5 que mais indicarem ganham iFood Card de R$50,00&lt;br&gt;
Eu vou participar da abertura e vai ser 100% on-line e gratuito de 13 a 15 de abril.&lt;br&gt;
&lt;a href="http://bit.ly/apiconpizza" rel="noopener noreferrer"&gt;http://bit.ly/apiconpizza&lt;/a&gt;&lt;br&gt;
Veja o conteúdo das atividades aqui &lt;a href="https://prensa.li/apicon/api-connect-conference-2021/" rel="noopener noreferrer"&gt;https://prensa.li/apicon/api-connect-conference-2021/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>graphql</category>
      <category>devops</category>
      <category>microservices</category>
    </item>
  </channel>
</rss>
