Executando verificação de segurança...
8

Trab: Construindo uma Plataforma de Otimização de Currículos com IA

O mercado de tecnologia no Brasil está aquecido, mas o processo de contratação ainda tem um gargalo enorme: a seleção de currículos. A grande maioria dos sistemas de rastreamento de candidatos, os famosos ATS (Applicant Tracking Systems), funcionam como um filtro impiedoso. Se o seu currículo não "fala a língua" do ATS — ou seja, não tem as palavras-chave certas e o formato ideal — ele é descartado antes mesmo de chegar a um recrutador.

Isso é injusto. O problema não é sua competência técnica, mas sim a forma como você se apresenta. Foi para resolver essa dor que, nas minhas férias do trabalho como Engenheiro de Software Sênior na VTEX, decidi construir a Trab.app, uma plataforma inteligente que otimiza currículos e automatiza candidaturas. O resultado é uma jornada de paixão e engenharia, e a pergunta que mais me fazem é: como você construiu isso?


A Escolha Radical: Uma Stack 100% Cloudflare

Para a Trab, agilidade e performance são fundamentais. Decidi construir a stack inteira com a Cloudflare, aproveitando sua rede de edge computing. Em vez de usar VMs, optei por uma arquitetura de Cloudflare Workers. O resultado é uma plataforma que opera a partir de servidores globalmente distribuídos, garantindo baixa latência para todos os usuários.

Minha arquitetura é dividida em dois Workers separados, mas complementares:

  • Frontend Worker: Roda o TanStack Start, um framework de React que suporta tanto SSR (Server-Side Rendering) quanto SPA (Single-Page Application). A escolha do SSR foi crucial para o SEO, garantindo que minhas páginas sejam indexáveis e que o conteúdo seja acessível para os robôs dos buscadores.
  • Backend Worker: Utiliza o Hono, um micro-framework de alta performance, para expor a API da plataforma.

Essa abordagem de Workers separados me permite gerenciar e escalar cada parte da aplicação de forma independente, mas com a simplicidade de um ecossistema unificado.


Cache e Performance: Otimizando Cada Milissegundo

Lidar com picos de acesso, especialmente após viralizar no LinkedIn e X (antigo Twitter) ao mesmo tempo, é um desafio. Para isso, minha estratégia de cache e estado é baseada em dois pilares da Cloudflare:

  1. Workers KV (Key-Value): Uso o KV para dados que precisam de acesso rápido, como a validação de sessões de usuário. A cada visita, valido o estado de autenticação consultando o Workers KV, garantindo uma experiência segura e ágil.
  2. Estratégias de Cache Avançadas: Implemento Cache-Control com max-age para controlar a validade do cache e uso stale-revalidation, que permite servir conteúdo em cache enquanto uma nova versão é baixada em segundo plano. Além disso, utilizo o ETag baseado na data de atualização do recurso, garantindo que o cache seja invalidado de forma eficiente sempre que houver uma mudança.

O Coração da Plataforma: Inteligência Artificial na Edge

A inteligência da Trab não vem de um modelo de IA genérico, mas de uma orquestração de agentes específicos. Uso um modelo para extrair dados da descrição da vaga (raspagem), outro para fazer OCR (Optical Character Recognition) no currículo do usuário, um terceiro para analisar categorias, e assim por diante. Essa arquitetura modular me permite ter um controle granular sobre a qualidade e a performance.

Para gerenciar essa orquestração, uso duas ferramentas poderosas:

  • Cloudflare AI Gateway: Esta é a peça-chave. Em vez de me conectar diretamente a APIs de IA como a da OpenAI ou Gemini, uso o AI Gateway como um proxy. Isso me permite centralizar o acesso, ter uma única fatura e, o mais importante: usar diferentes modelos para casos de uso distintos. Por exemplo, posso configurar um modelo mais rápido e caro para usuários pagos e um mais lento para os gratuitos, otimizando os custos sem sacrificar a experiência essencial.
  • Vercel AI SDK: Embora não use a infraestrutura da Vercel, o AI SDK é uma biblioteca agnóstica de provedor que simplifica a integração de modelos de linguagem (LLMs) no meu código.

Dados e Segurança: Construindo Confiança

A privacidade dos dados é minha maior prioridade. Por lidar com informações sensíveis, adotei uma abordagem rigorosa: não armazeno os currículos. Uso o arquivo apenas para gerar o relatório de otimização, e ele é descartado imediatamente depois. Isso minimiza o risco e constrói confiança com os usuários.

Para persistência de dados essenciais, como perfis de usuário, utilizo o D1, o banco de dados SQL da Cloudflare, gerenciado através do Drizzle-ORM. Essa combinação me permite ter um banco de dados relacional distribuído globalmente, sem a complexidade de gerenciar uma base de dados tradicional.

O processo de desenvolvimento local é simplificado com o Scalar e OpenAPI, que me permitem testar os endpoints da API diretamente do navegador, garantindo que tudo funcione como esperado antes de ser implantado na edge.


A jornada de construir a Trab.app tem sido um aprendizado constante. A stack baseada em Cloudflare me desafiou a pensar de forma diferente sobre arquitetura e performance. O resultado é uma plataforma ágil, segura e inteligente, pronta para transformar o mercado de trabalho brasileiro.

Carregando publicação patrocinada...
2

Muito massa Emerson, estava trabalhando em uma stack parecida em um side project também parecido, mas bem mais simples e de uso pessoal. Muito obrigado por compartilhar seus insíghts. Deu uma.olhada no Trab e achei massa. parabéns

1
0
1
1
1
1