Pular para o conteúdo
Matheus Prates

Hora em Goiânia: Goiânia

ENCurrículo
Voltar para os projetos

01Busca Vagas

As vagas de tecnologia de Goiânia e as remotas, num lugar só.

Um robô lê nove plataformas, junta a mesma vaga anunciada em lugares diferentes e deixa tudo pesquisável, com filtro e link para o anúncio original.

Sem IA, por decisão: regra clara, resultado explicável e nenhum custo de modelo.

  • Next.js
  • Fastify
  • PostgreSQL
  • GSAP
  • Vitest
Ver no ar
Página inicial do Busca Vagas: o total de vagas em número gigante sobre uma foto de Goiânia à noite
Busca Vagas aberto no celular

O problema

Quem procura vaga de tecnologia em Goiânia abre cinco sites por dia e encontra a mesma vaga repetida em três deles. As remotas ficam espalhadas em outros tantos.

O que eu construí

  • Coleta automática em nove plataformas, com agenda e ritmo próprios para cada fonte.
  • A mesma vaga anunciada em lugares diferentes vira uma só.
  • Busca em português que entende acento, com filtro por categoria, salário, modalidade, contrato, nível e cidade.
  • Recorte de Goiânia e dos 21 municípios da região metropolitana, mais as vagas remotas do Brasil inteiro.
  • Conta de usuário com vagas salvas, currículo em seis modelos com nota de leitura por sistemas de recrutamento e painel de administração.

As telas

Prints do sistema de verdade. Clique numa tela para ver em tamanho real.

  • Resultado de busca por React: filtros de lugar e área à esquerda e as vagas em cartões

    Busca: filtros por lugar e área, e cada vaga com a fonte, a data e o link para o anúncio.

  • Página de uma vaga de DevOps com os detalhes, o aviso de anúncio antigo e a faixa de salário estimada

    Vaga: os detalhes num lugar só, com aviso quando o anúncio está no ar há tempo demais.

  • Painel do mercado: vagas no ar, empresas anunciando, vagas novas em sete dias e salário mediano

    Mercado: vagas no ar, empresas, vagas novas da semana e salário mediano, refeitos a cada 10 minutos.

  • Gráficos de barras: onde estão as vagas por área e as tecnologias mais pedidas

    Onde estão as vagas e as tecnologias mais pedidas, contadas no título e na descrição.

  • Faixas de salário por área, com a mediana marcada em cada uma

    Quanto se paga por área: a faixa do meio e a mediana, só onde há salário suficiente.

  • Calculadora que compara salário CLT com valor PJ

    Calculadora CLT ou PJ: o que sobra de verdade em cada formato, com as tabelas do ano.

Como funciona

  1. Coleta

    Um processador lê as fontes na agenda de cada uma e grava o que encontrou numa fila dentro do próprio PostgreSQL.

  2. Limpeza

    Cada vaga passa por regras de classificação editáveis no painel e é comparada com as que já existem, para não repetir.

  3. Busca

    A API em Fastify responde com busca de texto em português, filtros e paginação.

  4. Site

    O site em Next.js mostra tudo, e o botão leva direto ao anúncio original.

Decisões que importaram

  1. Sem IA

    Por quê: Classificar vaga é regra, não opinião. Regra escrita é previsível, testável e não custa nada por vaga.

  2. O que coletar é dado, não código

    Por quê: Fonte, termo, cidade e ramo ficam em tabelas. Levar o site para outra cidade ou outra área é cadastrar, não programar.

  3. Fila dentro do PostgreSQL

    Por quê: Um banco a menos para cuidar. O mesmo padrão já estava provado em outro sistema que eu fiz.

  4. Site e API na mesma origem

    Por quê: Sem CORS e com o cookie de sessão protegido. O nginx separa o caminho da API do resto.

O que deu errado

Todo sistema de verdade quebra de algum jeito. Estes foram os tropeços que mais ensinaram, e o que mudou por causa deles.

  1. A coleta rodava, e as vagas novas pararam de chegar

    O que aconteceu

    Em setembro, a entrada de vagas novas caiu para quase nada sem nenhum erro. Todas as coletas terminavam bem: as buscas cadastradas só reliam sempre o mesmo conjunto.

    O que mudou

    Passei a vigiar o que entra, e não só se rodou. Hoje há alerta quando as vagas novas do dia caem abaixo de um quarto da média da semana, e cada busca mostra quanto aproveita do que lê.

  2. A página que não existia respondia que existia

    O que aconteceu

    Uma vaga removida mostrava a tela de não encontrada, mas o servidor respondia 200. Para o Google isso é conteúdo, e num site de vagas, onde anúncio expira toda hora, a busca se enche de página morta.

    O que mudou

    A tela de carregamento que causava isso ficou só onde serve. E depois de mexer em rota, eu confiro o código de resposta, não só a tela.

  3. Um campo novo derrubou os currículos antigos

    O que aconteceu

    Acrescentei certificações ao currículo e passei a exigir o campo. Todo currículo gerado antes disso começou a dar erro 500, e o teste passava porque só criava currículo novo.

    O que mudou

    Campo novo em dado já guardado se completa na leitura. E há um teste que grava o formato antigo à mão e exige que ele abra.

Onde está hoje

No ar desde setembro de 2026, atualizando sozinho.