Na Lynxmind sempre acreditámos que a inovação a sério acontece quando a tecnologia está nas nossas próprias mãos. Desta vez, decidimos levar isso à letra.

Construímos o nosso próprio servidor de automação com IA, em instalações próprias, da montagem do hardware à instalação de toda a stack de IA e orquestração de fluxos, para alimentar a automação interna sem custos de subscrição e com controlo total dos nossos dados.


A montagem do LYNXMIND

Levou-me de volta à adolescência, quando passava horas a montar computadores para jogos e a afinar cada configuração à procura de desempenho.

Mas o objetivo, desta vez, era bem mais ambicioso: desenhar um servidor de automação com IA de nível de produção, que desse à Lynxmind total independência e controlo.

Especificações do hardware:

  • Motherboard: Asus TUF Gaming A620M-Plus (Micro-ATX)
  • Processador: AMD Ryzen 7 8700G “Zen 4” (8 núcleos, 4,2–5,1 GHz, 24 MB de cache)
  • Memória: 128 GB Corsair Vengeance RGB DDR5 a 6000 MHz (CL30)
  • Armazenamento: 4 TB WD Green SN350 (2 × 2 TB NVMe PCIe 3.0 ×4)

E sim, brilha lindamente quando está a trabalhar.


A base: Ubuntu, Kubernetes e Rancher

Sobre este hardware instalámos o Ubuntu 24.04 LTS (kernel 6.14.0-29-generic) e montámos um cluster Kubernetes leve com K3s, gerido através do Rancher.

Painel Kubernetes do Rancher


A nossa stack privada de LLM: Ollama e Open WebUI

Em vez de depender de APIs externas, instalámos o Ollama, um executor de modelos com alojamento próprio que nos permite correr LLMs localmente. Nesta experiência usámos o gpt-oss:20b, um modelo open source com excelente capacidade de raciocínio e de síntese, ideal para tarefas em que a privacidade e o controlo de custos são decisivos.

Acrescentámos o Open WebUI por cima, para dar uma interface de conversa simples aos modelos. Juntos, formam um ambiente de IA interno, sem consumo de tokens e totalmente privado.

Interface de conversa do Open WebUI


A camada de automação: n8n com alojamento próprio

A seguir instalámos o n8n, uma plataforma de automação open source, dentro do mesmo ambiente Kubernetes.

Funciona como tecido conjuntivo entre os nossos serviços e os modelos de IA locais: capta eventos, transforma dados e executa lógica através de uma interface visual simples.

As maiores vantagens:

  • 💰 Custo zero: sem tokens, sem escalões de subscrição.
  • 🔒 Dados privados: cada instrução, ficheiro e resultado fica dentro da nossa infraestrutura, sem exposição.

Exemplo de fluxo n8n


Automatizar a forma como tratamos candidaturas

Um dos primeiros desafios que decidimos atacar com o LynxServer foi algo muito real em qualquer empresa em crescimento: o fluxo interminável de currículos.

Até então, analisar currículos era um processo manual e demorado. Cada nova candidatura significava abrir ficheiros, procurar palavras-chave e tentar recordar quem tinha experiência em quê. Era lento, inconsistente e claramente não era o melhor uso do nosso tempo.

Construímos, por isso, um sistema para resolver o problema.

Agora, quando chega um currículo, por e-mail ou por upload, o n8n entra em ação. Extrai automaticamente o anexo, converte-o de PDF para texto e envia-o para o nosso LLM local, a correr no Ollama. A IA lê o documento e produz um resumo estruturado: competências principais, anos de experiência, nível de senioridade e até uma breve descrição do perfil.

Esses dados estruturados são depois inseridos diretamente no Supabase, a nossa base de dados interna em PostgreSQL, também alojada no Kubernetes. A partir daí, podemos pesquisar e filtrar candidatos por competência de imediato, sem que ninguém tenha lido um único currículo.

No fim, a equipa de Recursos Humanos recebe uma mensagem sobre o fluxo processado.

Fluxo n8n para processamento de currículos


Encontrar o perfil certo num instante

Não ficámos por aí. Com os candidatos estruturados na base de dados, invertemos o fluxo.

Quando é criada uma nova vaga, o n8n envia a descrição para o Ollama, que identifica as competências e a experiência essenciais.

Depois, através de consultas ao Supabase, o sistema compara automaticamente esses requisitos com os perfis guardados e devolve uma lista ordenada dos melhores candidatos, com pontuação de correspondência e resumo.

O que antes levava horas de leitura passou a acontecer em segundos, em privado, dentro da nossa própria infraestrutura. É como ter um assistente de recrutamento inteligente, que nunca dorme e nunca deixa fugir dados.

Fluxo de automação para correspondência de currículos


Notas finais

Este projeto lembrou-me porque me apaixonei pela tecnologia.

Da montagem do hardware ao momento em que vi os nós do Kubernetes a acender, foi como construir o meu primeiro computador de jogos, só que desta vez alimenta algo bem maior.

Na Lynxmind, estamos a provar que a IA não tem de viver na cloud de outra pessoa.

Interior do servidor


Resumo da stack

  • Hardware: computador montado à medida (Ryzen 7 8700G, 128 GB de RAM, 4 TB NVMe)
    Computação local de elevado desempenho e eficiente em energia
  • Sistema operativo: Ubuntu 24.04 LTS
    Distribuição Linux estável e amiga de quem desenvolve
  • Orquestração: K3s e Rancher
    Kubernetes leve, com gestão visual
  • Runtime de IA: Ollama e Open WebUI
    Alojamento e utilização de LLMs locais
  • Plataforma de automação: n8n
    Automação visual de fluxos de trabalho
  • Base de dados: Supabase (PostgreSQL)
    Armazenamento de dados de candidatos e vagas
Pedro Monteiro
Pedro Monteiro

Arquiteto, programador e administrador de integração de aplicações empresariais (EAI), com percurso comprovado em TI, especializo-me em arquitetura orientada a serviços (SOA) e microsserviços. Com mais de dez anos a desenvolver e a dar suporte a soluções de middleware, ganhei competências em Apache Kafka, TIBCO, MuleSoft, Java Spring, Apache Camel e React.js. A minha capacidade de liderança tem-me permitido conduzir equipas na entrega de projetos bem-sucedidos.