Project
Recruitment & Candidate Management System (ATS)
Full-stack recruitment platform with candidate registration, visual pipeline (Kanban), interview scheduling with calendar and WhatsApp notifications, analytics, demographics, insights, questionnaires, scoring and exports — built with Django/DRF backend and React/TypeScript frontend.
This is a recruitment system I built to centralize the entire hiring process in one place: candidate registration, pipeline management, interview scheduling, analytics and reports — all in an internal dashboard for the HR team.
Project Overview
The goal of this project was to move away from the chaotic flow of spreadsheets and scattered forms and build a complete, tailor-made ATS (Applicant Tracking System) with:
- Detailed candidate registration
- Visual recruitment pipeline (including Kanban view)
- Interview scheduling and calendar
- WhatsApp notifications (Z-API)
- Analytics, demographics and insights modules
- Custom questionnaires and job position management
- Activity logs and report exports (PDF/Excel)
Key Features
1. Candidate Registration & Management
I implemented an application flow with:
Job position selection (forms change according to the selected position)

- Personal data (name, CPF, date of birth, contact, address)
- Work experience, education, skills and certifications
- Resume upload with disk storage
2. Internal HR Dashboard (frontend)
On the frontend, I built a React + TypeScript dashboard focused on recruiter productivity:
- JWT authentication and protected routes

-
Dashboard page with:
-
Candidate list with filters, search and sorting
-
Multiple view modes (including Kanban by pipeline stage)
-
Status counters (pending, under review, interviewed, accepted, etc.)

-
Candidate detail page, with:
-
Full profile
-
Interview history
3. Interviews, Calendar & WhatsApp
I implemented a complete interview module:
-
Interview model containing:
-
Candidate, interviewer, title, type (phone, video, in-person, technical, HR)
-
Date, time, duration, location/link and description
-
Status:
scheduled,completed,cancelled,rescheduled,no_show -
Interviewer feedback and rating
-
-
Z-API (WhatsApp) integration:
- Automatic messages for scheduled, rescheduled and cancelled interviews
- Error handling and logs to monitor delivery
4. Analytics, Demographics & Insights
I created dedicated pages to help HR work with data:
-
Analytics
- Conversion funnel between stages
- Average time at each process stage
- Candidate score distribution
-
Demographics
- Candidate breakdown by gender, disability status, employment situation, etc.
- Filters that can be sent to the Dashboard to analyze specific segments.
-
Insights
- Consolidated view of funnel indicators and behaviors
- Navigation between insights and filtered candidate lists.
5. Questionnaires & Candidate Scoring
I implemented two important modules to enrich selection process data:
-
Questionnaires
- Questionnaire templates, questions and options
- API for candidate responses
- Endpoint for dynamic form initialization
-
Scoring
- Score calculation per candidate based on multiple criteria
- Bulk score reprocessing
- Scoring weight configuration via dashboard, with frontend caching
6. Logs, Audit & Reports
To ensure traceability:
-
I built an Activity Log module that records:
- Interview creation, updates, rescheduling and cancellations
- Candidate status changes and important system actions
-
I implemented exports:
- Candidates to PDF and Excel
- Analytical reports (by year, for example) to PDF and Excel
Stack & Technical Decisions
-
Backend
- Django + Django REST Framework
- Authentication with SimpleJWT (access/refresh tokens)
- Default permissions for authenticated users, with specific exceptions (e.g. public endpoints to initialize and partially save forms)
-
Frontend
- React + TypeScript
- Context API for authentication (
AuthContext) and sidebar - Axios with interceptors to inject/refresh JWT tokens
- TailwindCSS for styling and rapid responsive component development
🇧🇷 Esta página também está disponível em Português
Este é um sistema de recrutamento que desenvolvi para centralizar todo o processo seletivo em um único lugar: cadastro de candidatos, gestão do funil, agendamento de entrevistas, análises e relatórios — tudo em um painel interno para o time de RH.
Visão geral do projeto
O objetivo deste projeto foi sair do fluxo caótico de planilhas e formulários soltos e criar uma solução completa de ATS (Applicant Tracking System) sob medida, com:
- Cadastro detalhado de candidatos
- Funil visual de recrutamento (incluindo visão Kanban)
- Agendamento e calendário de entrevistas
- Notificações via WhatsApp (Z-API)
- Módulos de analytics, demografia e insights
- Questionários personalizados e gestão de cargos
- Logs de atividade e exportação de relatórios (PDF/Excel)
Principais funcionalidades
1. Cadastro e gestão de candidatos
Implementei um fluxo de candidatura com:
Seleção de cargo pretendido (Formulários mudam de acordo com o cargo selecionado.)

- Dados pessoais (nome, CPF, data de nascimento, contato, endereço)
- Experiência profissional, formação, habilidades e certificações
- Upload de currículo com armazenamento em disco
2. Painel interno para RH (frontend)
No frontend, desenvolvi um painel em React + TypeScript focado na produtividade do recrutador:
- Autenticação com JWT e rotas protegidas

-
Página de Dashboard com:
-
Lista de candidatos com filtros, busca e ordenação
-
Diferentes modos de visualização (incluindo Kanban por etapa do funil)
-
Contadores por status (pendentes, em análise, entrevistados, aceitos, etc.)

-
Página de detalhes do candidato, com:
-
Perfil completo
-
Histórico de entrevistas
3. Entrevistas, calendário e WhatsApp
Implementei um módulo completo de entrevistas:
-
Modelo de entrevista contendo:
-
Candidato, entrevistador, título, tipo (telefone, vídeo, presencial, técnica, RH)
-
Data, horário, duração, local/link e descrição
-
Status:
scheduled,completed,cancelled,rescheduled,no_show -
Feedback e rating do entrevistador
-
-
Integração com Z-API (WhatsApp):
- Envio de mensagens automáticas para entrevistas agendadas, reagendadas e canceladas
- Tratamento de erros e logs para monitorar o envio
4. Analytics, Demografia e Insights
Criei páginas específicas para auxiliar o RH a trabalhar com dados:
-
Analytics
- Funil de conversão entre etapas
- Tempo médio em cada estágio do processo
- Distribuição de pontuações dos candidatos
-
Demografia
- Quebra da base de candidatos por gênero, PCD, situação profissional, etc.
- Filtros que podem ser enviados para o Dashboard para analisar segmentos específicos.
-
Insights
- Visão consolidada de indicadores e comportamentos do funil
- Navegação entre insights e lista de candidatos filtrados.
5. Questionários e pontuação de candidatos
Implementei dois módulos importantes para enriquecer os dados do processo seletivo:
-
Questionários
- Templates de questionário, perguntas e opções
- API para respostas dos candidatos
- Endpoint para inicialização dinâmica de formulários
-
Scoring (pontuação)
- Cálculo de score por candidato com base em múltiplos critérios
- Reprocessamento em massa das pontuações
- Configuração de pesos de scoring via painel, com cache no frontend
6. Logs, auditoria e relatórios
Para garantir rastreabilidade:
-
Criei um módulo de Activity Log que registra:
- Criação, atualização, reagendamento e cancelamento de entrevistas
- Mudanças de status de candidatos e ações importantes do sistema
-
Implementei exportações:
- Candidatos para PDF e Excel
- Relatórios analíticos (por ano, por exemplo) em PDF e Excel
Stack e decisões técnicas
-
Backend
- Django + Django REST Framework
- Autenticação com SimpleJWT (access/refresh tokens)
- Permissões padrão para usuários autenticados, com exceções pontuais (ex: endpoints públicos para inicializar e salvar parcialmente formulários)
-
Frontend
- React + TypeScript
- Context API para autenticação (
AuthContext) e sidebar - Axios com interceptors para injetar/renovar tokens JWT
- TailwindCSS para estilização e criação rápida de componentes responsivos
🇺🇸 This page is also available in English