Skip to content

Instantly share code, notes, and snippets.

@jonathanbsilva
Created March 10, 2020 14:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jonathanbsilva/4c4a4b24fb4704842a7b8cc068e6356a to your computer and use it in GitHub Desktop.
Save jonathanbsilva/4c4a4b24fb4704842a7b8cc068e6356a to your computer and use it in GitHub Desktop.
Na Kenoby, milhares de candidatos se candidatam diariamente as vagas de várias empresas clientes da Kenoby.
Como uma empresa SaaS, além de termos que garantir alta disponibilidade, precisamos ser performáticos e consistentes com os nossos dados.
Um dos nossos objetivos como empresa é garantir o melhor candidato para a melhor vaga. Aqui, ao invés de pensarmos como um usuário perdido, olhamos para esse problema como uma pessoa que pode perder a chance de recolocação e a empresa perder o funcionário ideal. Então prezamos muito por performance, alta disponibilidade e consistência.
Proposta arquitetural:
* Definir uma arquitetura escalável que permita que vários candidatos possam se candidatar em varias vagas já previamente cadastradas.
* Deverá ser possível realizar uma busca textual sobre as informações cadatradas no candidato e na vaga, retornando os candidatos ordenados pela melhor similiaridade entre o que foi digitado e as informações cadatras. (Obs: a entrada da busca e somente um texto livre digitado pelo usuário)
Ex: Caso o usuário digite um email, devera retornar o candidato com aquele email.
Caso o usuario digite uma cidade, devera retornar os candidatos daquela cidade.
Caso o usuário digite um texto, retornar os candidatos que possuam aquele texto descrito na cover letter.
* Devera existir um mecanismo de autenticação único, tanto para os candidatos quando para os usuários recrutadores.
Entidades:
* Usuário: Nome, email, senha
* Vaga: Nome, codigo incremental.
* Candidato: Nome, email, senha, telefones, endereço e um texto com sua cover letter.
* Candidatura: Vaga, Candidato, Status da Candidatura, histórico do candidato pelos status.
Regras:
Cada vaga possuirá um limite máximo de contratação, então novas candidaturas deverão ser bloqueadas quando atingir esse limite.
A candidatura poderá possuir 3 estados:
ASSESSING: Quando o candidato está sendo avaliado.
HIRED: Quando o candidato é contratado.
INCOMPATIBLE: Quando o candidato não é compatível com a vaga.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment