Voltar as noticias
Como construí um Super App de IA 'Sem Bot' usando Electron, GitNExus, BullMQ, Qdrant e MCP
Casos de UsoMediaEN

Como construí um Super App de IA 'Sem Bot' usando Electron, GitNExus, BullMQ, Qdrant e MCP

Dev.to - MCP·12 de maio de 2026

Se você trabalha na área de tecnologia, provavelmente notou a súbita explosão de "tomadores de notas de IA". Toda vez que você participa de uma chamada no Zoom ou Google Meet, dois ou três bots de navegador sem cabeça se juntam como participantes.

Honestamente, eu fiquei cansado disso. Parece intrusivo, interrompe o fluxo da reunião e os departamentos de TI corporativos odeiam as implicações de privacidade de enviar áudio bruto de reuniões de diretoria para nuvens de terceiros aleatórias. Além disso, apesar de ter uma transcrição, ainda me vi gastando 30 minutos traduzindo manualmente a discussão em tickets do Jira ou Linear perfeitamente definidos.

Então, decidi construir Plan AI.

Em vez de construir mais um bot, eu construí um gravador de áudio do sistema local, focado em privacidade, que orquestra um complexo pipeline assíncrono de IA. Ele gera automaticamente tickets de engenharia, documentos Markdown e diagramas de arquitetura Mermaid.js.

Se você ama design de sistemas, filas distribuídas, bancos de dados vetoriais e ferramentas de IA de ponta (como o Protocolo de Contexto de Modelo), pegue um café. Aqui está uma análise técnica massiva de como este monorepo realmente funciona nos bastidores.

1. Derrotando o "Bot" (Áudio do Sistema via Electron)

O maior obstáculo do produto foi se livrar do participante virtual da reunião. A solução foi capturar o áudio do sistema operacional diretamente.

Aqui está a diferença fundamental entre a abordagem padrão da indústria e a arquitetura do Plan AI:

O Velho Método (Bots Intrusivos)**

Velho Método

O Método Plan AI (Captura Nativa)**

Novo Método

Eu usei Electron para o aplicativo desktop. Ao utilizar APIs nativas de desktop (desktopCapturer e getUserMedia), o aplicativo escuta a saída do sistema (o que você ouve pelos alto-falantes) e a entrada do microfone simultaneamente. Os streams são misturados localmente.

O desafio aqui é o inchaço de memória. Você não pode simplesmente manter um arquivo WAV não comprimido de 2 horas na RAM. O aplicativo Electron grava o stream de áudio no disco local em partes usando um MediaRecorder, produzindo um arquivo WebM/Opus otimizado. Assim que a reunião termina (ou periodicamente para transcrição ao vivo), o arquivo é enviado com segurança para o backend via um stream multipart para evitar bloquear o servidor Node.

Para completar o ecossistema, eu também construí um aplicativo móvel React Native (Expo) para reuniões presenciais, e uma plataforma web React onde você pode conversar com um "Assistente de Reunião Ao Vivo" (consultando a transcrição a cada 15 segundos) enquanto a reunião ainda está acontecendo.

2. O Orquestrador Assíncrono (BullMQ + Redis)

Processar grandes arquivos de áudio e acessar múltiplos LLMs é incrivelmente intensivo em CPU e rede. Se você tentar processar um arquivo de áudio de 100MB de forma síncrona em uma rota Express, o loop de eventos do Node.js será bloqueado, e seu servidor imediatamente perderá conexões.

Eu projetei um pipeline distribuído usando BullMQ e Redis. Quando o aplicativo Electron termina de enviar o áudio, o controlador Express imediatamente retorna um 200 OK e envia um trabalho para o Redis.

// Enviando tarefas pesadas para o segundo plano
export async function queueAudioProcessing(meetingId: string, filePath: string) {
  await meetingQueue.add('process-audio', {
    meetingId,
    audioPath: filePath,
  }, {
    attempts: 5,
    backoff: { type: 'exponential', delay: 5000 },
    removeOnComplete: true,
  });
}

A partir daí, o trabalhador em segundo plano pega o trabalho e orquestra um pipeline de múltiplas etapas:

  1. Transcrição (Deepgram): O áudio é enviado para a API do Deepgram. Eu escolhi o Deepgram porque é incrivelmente rápido e lida com diarização de falantes (Falante 1, Falante 2) de forma nativa.
  2. Biometria de Voz (SpeechBrain): Confiar apenas no Deepgram para identificação de falantes em múltiplas reuniões não funciona. Então, eu criei um microserviço Python local usando FastAPI e SpeechBrain. O trabalhador Node envia fatias de áudio para o Python, que extrai embeddings de voz e verifica se "Falante 1" é realmente o CTO.
  3. Resiliência & Limitação de Taxa: Como estamos acessando APIs externas (Deepgram, Jira, Linear), o BullMQ me permite implementar limitação de taxa rigorosa e Filas de Mensagens Mortas (DLQ). Se a API do Jira ficar fora do ar, o trabalho pausa e tenta novamente exponencialmente sem perder a carga de áudio.

3. OpenRouter & BYOK (Traga Sua Própria Chave)

Ao construir um aplicativo de IA, codificar gpt-4o ou claude-3.5-sonnet é uma receita para o desastre. APIs ficam fora do ar, taxas mudam e algumas tarefas requerem diferentes níveis de inteligência.

Em vez de ficar preso diretamente ao OpenAI ou Anthropic, o Plan AI usa OpenRouter como um gateway LLM unificado. No backend, roteamos dinamicamente tarefas com base em suas necessidades cognitivas específicas:

  • Investigação Agente: Roteado para openai/gpt-4o-mini (incrivelmente rápido e econômico para fazer coleta rápida de contexto e buscas semânticas antes da criação de tarefas).
  • Extração da Tarefa Final: Roteado para anthropic/claude-opus-4.7 (caro, mas incomparável em entender profundamente o contexto do projeto e estruturar tickets perfeitamente definidos).
  • Diagramas Arquitetônicos: Roteado para anthropic/claude-sonne
Contexto Triplo Up

A construção de soluções que evitam bots em reuniões pode melhorar a privacidade e a eficiência nas empresas brasileiras. A adoção de tecnologias como MCP e sistemas de captura de áudio nativos pode ser um diferencial competitivo. Isso pode impactar positivamente a forma como as equipes gerenciam suas reuniões e tarefas.

Noticias relacionadas

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.