gohorsejobs/docs/CAREERJET_GAP_ANALYSIS.md

4.3 KiB

Gap Analysis: GoHorseJobs vs Careerjet (2026)

Objetivo

Mapear o que já existe no GoHorseJobs e o que ainda falta para alcançar um fluxo equivalente ao Careerjet, com backlog acionável.

Escopo analisado

  • Busca pública de vagas (home + listagem + detalhe)
  • Filtros e parâmetros de URL
  • Recursos de candidato (alerta, salvar vaga, currículo)
  • Recursos de empresa/recrutador

Achados principais (resumo executivo)

O que já está bom no GoHorseJobs

  1. Fluxo base de busca já existe com listagem, paginação e filtros essenciais (q, localização, tipo, modalidade).
  2. Detalhe de vaga e candidatura já cobrem o núcleo do funil candidato.
  3. Estrutura multi-perfil (candidato/recrutador/admin) e módulo de empresas já está presente.

Lacunas mais críticas para paridade com Careerjet

  1. Compatibilidade de URL estilo Careerjet (s/l) não estava completa de ponta a ponta.
  2. Filtros “Date posted”, empresa e jornada de trabalho ainda não estão consolidados no fluxo público.
  3. Alertas de vaga por e-mail ainda não estão evidentes no fluxo público principal.
  4. Página de empresas pública com foco em descoberta precisa de reforço (seguir empresa, vagas da empresa com filtros rápidos).

Melhorias implementadas neste ciclo

1) Compatibilidade de URL estilo Careerjet

  • Home agora envia também os aliases s e l (além de q e location) para facilitar compartilhamento e importação de links externos.
  • Home também envia workMode além de mode para reduzir inconsistência entre páginas.
  • Página /jobs agora consome s/l/mode/workMode além dos parâmetros antigos.

2) Correção de re-fetch para filtros avançados

  • A listagem de vagas não reexecutava busca ao alterar alguns filtros avançados (salário, moeda, ordenação, suporte a visto).
  • Ajustado para atualizar resultados ao mudar esses filtros.

3) Backend com alias Careerjet

  • Endpoint GET /api/v1/jobs passou a aceitar s como alias de termo de busca e l como alias de localização.
  • Incluído teste automatizado cobrindo esse comportamento.

Backlog recomendado (priorizado)

P0 (alta prioridade, impacto imediato)

  1. Date Posted no backend + frontend
    • Backend: aceitar datePosted (24h, 7d, 30d) e filtrar por created_at.
    • Frontend: filtro visível na listagem com UX similar ao Careerjet.
  2. Filtro por empresa no público
    • Endpoint de jobs com companyId já existe; falta UX forte para seleção por empresa.
  3. Persistência de buscas recentes
    • LocalStorage para anônimos + conta autenticada (sincronização opcional).

P1 (médio prazo)

  1. Alerta de vagas público
    • “Create alert” com confirmação por e-mail e gerenciamento no painel do candidato.
  2. Melhorias na página de empresas
    • Botão “seguir”, filtro por data e exibição de vagas com metadados completos.
  3. Salvar vaga
    • Reforçar botão “Salvar” em cards e detalhe para usuários autenticados.

P2 (evolução)

  1. Navegação Previous/Next no detalhe da vaga
  2. Origem da vaga (source link) quando for agregação externa
  3. Ranking de relevância para ordenação “relevance”

Critérios de aceite sugeridos

Busca / URL

  • Dado um link /jobs?s=Data+Engineer&l=Recife, a tela carrega com termo e local preenchidos e lista filtrada.
  • Dado um link /jobs?mode=remote, o filtro de modalidade entra como “remote”.

Filtros avançados

  • Ao alterar ordenação/moeda/faixa salarial, a lista atualiza sem refresh manual.

Backend

  • GET /api/v1/jobs?s=qa&l=Lisboa retorna os mesmos resultados que q e location equivalentes.

Plano técnico (sprint recomendado de 2 semanas)

Semana 1

  • Implementar datePosted no backend e cobertura de testes.
  • Expor filtro na UI pública e validar UX.
  • Persistir “recent searches” localmente.

Semana 2

  • Criar fluxo de alertas (CRUD mínimo + envio inicial).
  • Melhorar página pública de empresas (seguir + vagas + filtros).
  • Ajustes de observabilidade (métricas de conversão busca → clique → candidatura).

Riscos e dependências

  • Dependência de modelagem de dados para alertas e follows.
  • Qualidade dos dados de salário/empresa impacta filtros e ordenação.
  • Internacionalização: novas labels e mensagens precisam entrar no i18n.