IA de reuniões no seu servidor
Notetaker de Reuniões
O notetaker com IA que fica no seu servidor: grava Meet, Teams e Zoom e converte cada conversa em decisões e tarefas.
- plataformas: Meet, Teams e Zoom
- 3
- commits em 11 semanas
- 296
- arquivos de teste
- 140
- migrações de banco
- 34
Números medidos no repositório.
Contexto e problema
Times comerciais passam o dia em reunião, e quase nada do que é dito sobrevive a ela. Anotar compete com conduzir a conversa, gravar depende de alguém lembrar, e as ferramentas prontas de notetaker guardam o conteúdo, às vezes sensível, fora do controle do time.
O notetaker cobre o caminho todo, da agenda até um resumo que dá para compartilhar. Um bot entra na reunião sozinho, grava, transcreve identificando quem falou e entrega notas com marcações de tempo clicáveis, decisões, itens de ação e riscos. Tudo fica hospedado pelo próprio time, com o banco, o storage e o modelo de IA que ele escolher.
Restrições que eu me impus
- Self-hosted e plugável. Storage (qualquer S3 compatível, como AWS, Backblaze e MinIO, ou SharePoint), transcrição e LLM (Anthropic, OpenAI ou Google) são provedores trocáveis, configuráveis pelo próprio painel.
- Entrar como convidado. O bot não pode depender de conta corporativa em cada plataforma para funcionar.
- Nenhuma gravação duplicada. Dois bots escrevendo na mesma gravação é pior do que perder a reunião.
- Status honesto. Quem olha a lista precisa saber por que uma reunião não gravou, sem ler log de container.
- Dados escopados por papel (admin, gestor, membro) direto nas consultas, não só na interface.
Decisões que definiram o produto
Arquitetura
A agenda ou o botão "Gravar agora" colocam a reunião na fila. Um navegador headless entra como convidado e captura áudio e vídeo. Cada arquivo passa por um portão de qualidade antes do upload. Depois vêm a transcrição com falantes, as notas e os insights gerados pelo LLM, e a indexação para busca.Se o bot fica na sala de espera, ele verifica a cada 3 segundos e distingue "negado", "não admitido" e "reunião não começou". A política de retry só reenfileira antes da captura começar: depois que a gravação inicia, a falha é registrada e a reunião não é reenfileirada, para evitar um segundo bot na mesma sala.
Tudo roda como um monólito modular em contêineres: API, scheduler e workers de gravação compartilham código e banco, e escalam por réplicas. O bot nunca espera a rede “ficar ociosa” no Teams, porque a plataforma mantém websockets abertos para sempre. Um teste de guarda impede que alguém reintroduza essa espera.
Meu papel
Desenhei e implementei o pipeline de ponta a ponta e cuidei da operação: CI em runner próprio (de 10 min para cerca de 3 min), imagens sem vulnerabilidades altas e watchdogs que marcam como falha qualquer etapa travada, em vez de deixá-la presa para sempre.
O que o produto entrega
- Entrada automática pelo calendário do Microsoft 365, pelo botão “Gravar agora”, por convite de e-mail ou por extensão de navegador.
- Transcrição com falantes (AssemblyAI ou Deepgram, com retry e backoff) e notas com marcações de tempo que levam ao momento exato do vídeo.
- Insights estruturados (resumo, decisões, itens de ação e riscos), com prompts por time e um painel para perguntar à IA sobre a reunião.
- Busca, pastas e compartilhamento por e-mail, domínio, time ou link público, com papéis e escopo por time.
O que eu faria diferente
- Começar pelo bot autenticado no Teams. Entrar como convidado foi uma restrição consciente e simplificou tudo, mas reuniões restritas a usuários da organização não deixam o bot entrar. Hoje esse é o maior limitador da taxa de gravação.
- Não construir a arquitetura multi-worker antes da hora. Ela existe e está testada, mas o volume ainda não justifica; réplicas do monólito bastaram.
- Tornar visível a falha de transcrição. Hoje uma transcrição que falha em segundo plano não aparece com destaque na interface.







