Tech Radar: extraindo sinal do feed de uma comunidade de desenvolvedores
- Do que se tratava
- Meu próprio serviço: coleta mensagens de uma comunidade profissional, filtra o ruído com regras explicáveis e monta um resumo. Roda no meu servidor.
- Meu papel
- Definição do problema, arquitetura, desenvolvimento, operação — sozinho
- Período
- 2026, em andamento
- Resultado
- 7.627 mensagens de 581 autores arquivadas; o serviço roda sem supervisão.
Contexto e problema original
Uma comunidade de desenvolvedores que discute novas bibliotecas, ferramentas e preços de APIs. O valor é real, mas está espalhado por centenas de mensagens por dia, e ler tudo manualmente não é uma opção.
Tarefa de negócio
Não perder nada útil sem precisar ler tudo. Receber um resumo diário curto em vez de um feed e conseguir explicar por que uma mensagem foi selecionada.
Restrições e incógnitas
- Um servidor, 2 CPU / 4 GB, sem GPU
- As mensagens são de terceiros: o arquivo coletado fica privado, e só aparecem links e trechos
- Precisa rodar sem supervisão — estou ocupado com outros trabalhos
- Nenhuma API paga
Minha responsabilidade
Tudo: coleta via Telethon, esquema do banco de dados, regras de seleção, resumo, a unidade do systemd, testes e operação.
Decisões-chave e trade-offs
- O arquivo de dados brutos é intocável: o processamento nunca apaga nada de items, e cada veredito derivado fica separado em item_analysis. As regras podem ser reescritas e reaplicadas a todo o histórico.
- Primeiro regras determinísticas, só depois um LLM. As regras são baratas, reproduzíveis e se explicam com uma lista de motivos; um modelo em dois núcleos sem GPU é lento e não consegue se explicar.
- O LLM fica atrás de uma interface ItemAnalyzer, e não dentro do código de processamento. Adicionar um modelo local significa mais uma implementação do mesmo protocolo, não uma reescrita.
- Coleta incremental por cursor: um reinício não relê o histórico.
- Observabilidade desde o primeiro dia — cada execução do coletor é registrada com seu status, inclusive em caso de encerramento anormal.
O que mudou
- 7.627 mensagens de 581 autores coletadas entre março e agosto de 2026
- Deduplicação por texto normalizado e por links canonicalizados, com remoção dos parâmetros de rastreamento
- O resumo informa uma pontuação, uma categoria e a lista de motivos pelos quais a mensagem foi selecionada
- O serviço roda sob o systemd e sobrevive a uma reinicialização do servidor sem nenhuma intervenção manual
- 1.148 linhas de código próprio, quatro dependências externas, três suítes de testes
Limites de divulgação e de resultado
Próximo passo para uma tarefa parecida
Uma tarefa semelhante: extrair sinal de um fluxo de mensagens, e-mails ou solicitações recebidas. Começaríamos definindo o que conta como sinal.