Conectando jovens talentos com empresas através de Inteligência Artificial
Sobre • Funcionalidades • Tecnologias • Instalação • Uso • Arquitetura
RecruitFlow é uma plataforma inovadora de recrutamento que utiliza Inteligência Artificial Multi-Agente para conectar jovens talentos com oportunidades de emprego, focando no potencial dos candidatos ao invés de apenas experiência prévia.
- Triagem manual demorada: Processos de 3 dias reduzidos para 8 minutos
- Viés inconsciente: IA analisa candidatos de forma objetiva
- Dificuldade de jovens talentos: Foco em potencial, não apenas experiência
- Baixa taxa de resposta: Automação via WhatsApp aumenta engajamento
✅ Análise de CV com IA: Agentes Google ADK analisam currículos automaticamente ✅ Matching Inteligente: Score de compatibilidade entre candidatos e vagas ✅ Automação WhatsApp: Contato automático com candidatos via N8N ✅ Banco de Talentos: Base de dados de candidatos pré-qualificados ✅ Dashboard Completo: Visualização de métricas e gestão de processos seletivos
- 📝 Cadastro de Vagas: Criação de vagas com requisitos detalhados
- 🔍 Busca Inteligente: Encontre talentos por habilidades, formação e experiência
- 📊 Dashboard Analytics: Métricas de candidatos, vagas e processos
- 🤖 Matching Automático: IA sugere os melhores candidatos para cada vaga
- 💬 Comunicação Automatizada: Mensagens via WhatsApp para candidatos
- 📄 Cadastro Simplificado: Formulário intuitivo com informações relevantes
- 🎓 Foco em Potencial: Valorização de formação e soft skills
- 🔔 Notificações Automáticas: Receba oportunidades via WhatsApp
- 📈 Score de Compatibilidade: Veja seu match com cada vaga
- React 18.3.1 - Biblioteca UI
- TypeScript 5.8.3 - Tipagem estática
- Vite 5.4.19 - Build tool e dev server
- Tailwind CSS 3.4.17 - Framework CSS
- shadcn-ui - Componentes UI
- React Router 6.30.1 - Roteamento
- React Query 5.83.0 - Gerenciamento de estado assíncrono
- React Hook Form 7.61.1 - Formulários
- Zod 3.25.76 - Validação de schemas
- Python 3.x - Linguagem principal
- Google ADK - Agents Development Kit
- Vertex AI - Plataforma de IA do Google Cloud
- Gemini 2.5 Flash - Modelo de linguagem
- Langfuse - Observabilidade de agentes IA
- Pydantic - Validação de dados
- python-dotenv - Gerenciamento de variáveis de ambiente
- Supabase - Backend as a Service (PostgreSQL)
- Google Cloud Storage - Armazenamento de arquivos
- N8N - Automação de workflows (WhatsApp)
- Edge Functions - Funções serverless
- Node.js 18+ e npm/yarn/pnpm
- Python 3.9+
- Conta Google Cloud com Vertex AI habilitado
- Conta Supabase
- Conta Langfuse (opcional, para observabilidade)
git clone https://github.com/seu-usuario/desafio-final-equipe-4.git
cd desafio-final-equipe-4cd front-end
npm installCrie um arquivo .env na pasta front-end:
VITE_SUPABASE_URL=https://seu-projeto.supabase.co
VITE_SUPABASE_ANON_KEY=sua_chave_publica_aqui
VITE_API_BASE_URL=http://localhost:8000cd ../back-end
pip install -r requirements.txtCrie um arquivo .env na pasta raiz do projeto (copie do .env.example):
# Google Cloud / Vertex AI
GOOGLE_API_KEY=sua_api_key_aqui
GOOGLE_CLOUD_PROJECT=seu_projeto_gcp
GOOGLE_CLOUD_LOCATION=us-central1
GOOGLE_CLOUD_BUCKET=gs://seu_bucket
# Langfuse (Observabilidade)
LANGFUSE_PUBLIC_KEY=sua_chave_publica
LANGFUSE_SECRET_KEY=sua_chave_secreta
LANGFUSE_BASE_URL=https://cloud.langfuse.com
LANGFUSE_DEBUG=true
# Configurações do Agente
AGENT_NAME=curriculum
AGENT_MODEL=gemini-2.5-flash
AGENT_STAGING_BUCKET=gs://seu_bucket/staging
AGENT_PLANNER=PlanReActPlanner
# Supabase
VITE_SUPABASE_URL=https://seu-projeto.supabase.co
VITE_SUPABASE_ANON_KEY=sua_chave_publica_aqui
# Configurações Gerais
ENVIRONMENT=development
LOG_LEVEL=INFO
PORT=8000
HOST=0.0.0.0- Crie um projeto no Supabase
- Execute as migrations na pasta
front-end/supabase/migrations/ - Configure as Edge Functions em
front-end/supabase/functions/
cd front-end
npx supabase login
npx supabase link --project-ref seu-projeto-ref
npx supabase db push
npx supabase functions deploy match-talentscd front-end
npm run devAcesse: http://localhost:8080
cd back-end/agente_1
python agent.py# Configure o Google Cloud CLI
gcloud auth login
gcloud config set project seu-projeto-gcp
# Deploy do agente
cd back-end/agente_1
# Siga as instruções do Google ADK para deploy┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Frontend │─────▶│ Supabase │─────▶│ Edge Func │
│ (React) │ │ (PostgreSQL) │ │ match-talents│
└─────────────┘ └──────────────┘ └─────────────┘
│ │
│ ▼
│ ┌─────────────┐
│ │ Agente IA │
│ │ (Google ADK)│
│ └─────────────┘
│ │
▼ ▼
┌──────────────┐ ┌─────────────┐
│ N8N │ │ Langfuse │
│ (WhatsApp) │ │(Observab.) │
└──────────────┘ └─────────────┘
- Interface para empresas e candidatos
- Dashboard com métricas e analytics
- Formulários de cadastro de vagas e talentos
- Visualização de candidatos e scores de match
- Agente 1: Análise de currículos e matching
- Recebe dados do candidato e da vaga
- Analisa compatibilidade usando Gemini 2.5 Flash
- Retorna score (0-100) e justificativa
- Tabelas:
jobs,talents,candidates,companies - Edge Functions para processamento serverless
- Triggers automáticos para matching
- Workflows de WhatsApp
- Envio de mensagens para candidatos
- Agendamento de entrevistas
- Empresa cria uma vaga no frontend
- Supabase salva a vaga no banco de dados
- Edge Function
match-talentsé acionada automaticamente - Função busca todos os talentos cadastrados no banco
- Para cada talento:
- Cria uma sessão no Agente IA
- Envia dados do talento e da vaga
- Agente analisa usando Gemini 2.5 Flash
- Retorna score de compatibilidade (0-100) e justificativa
- Candidatos são salvos na tabela
candidatescom seus scores - N8N envia mensagens via WhatsApp para candidatos com alto score
- Empresa visualiza candidatos ranqueados no dashboard
desafio-final-equipe-4/
├── front-end/
│ ├── src/
│ │ ├── components/ # Componentes React
│ │ │ ├── ui/ # Componentes shadcn-ui
│ │ │ ├── layout/ # Layouts da aplicação
│ │ │ ├── CandidateDetailPanel.tsx
│ │ │ ├── TalentDetailPanel.tsx
│ │ │ └── JobMatchSection.tsx
│ │ ├── pages/ # Páginas da aplicação
│ │ │ ├── Landing.tsx
│ │ │ ├── Auth.tsx
│ │ │ ├── Dashboard.tsx
│ │ │ ├── Jobs.tsx
│ │ │ ├── NewJob.tsx
│ │ │ ├── JobCandidates.tsx
│ │ │ ├── TalentSignup.tsx
│ │ │ ├── SearchTalents.tsx
│ │ │ └── TalentBank.tsx
│ │ ├── hooks/ # Custom hooks
│ │ │ ├── useAuth.ts
│ │ │ └── use-toast.ts
│ │ ├── integrations/ # Integração Supabase
│ │ │ └── supabase/
│ │ └── lib/ # Utilitários
│ │ └── utils.ts
│ ├── supabase/
│ │ ├── functions/ # Edge Functions
│ │ │ └── match-talents/
│ │ └── migrations/ # Migrations SQL
│ ├── package.json
│ └── vite.config.ts
│
├── back-end/
│ ├── agente_1/ # Agente de análise de CV
│ │ ├── agent.py # Código principal do agente
│ │ └── __init__.py
│ ├── agente_2/ # Workflows N8N (JSON)
│ │ ├── PRIMEIRA MENSAGEM RECRUIT FLOW.json
│ │ └── RESPONDER MESAGENS.json
│ └── requirements.txt
│
├── .env.example # Exemplo de variáveis de ambiente
└── README.md
| Variável | Descrição | Exemplo |
|---|---|---|
VITE_SUPABASE_URL |
URL do projeto Supabase | https://xxx.supabase.co |
VITE_SUPABASE_ANON_KEY |
Chave pública do Supabase | eyJhbGc... |
VITE_API_BASE_URL |
URL da API backend | http://localhost:8000 |
| Variável | Descrição | Exemplo |
|---|---|---|
GOOGLE_API_KEY |
API Key do Google Cloud | AIzaSy... |
GOOGLE_CLOUD_PROJECT |
ID do projeto GCP | meu-projeto |
GOOGLE_CLOUD_LOCATION |
Região do GCP | us-central1 |
GOOGLE_CLOUD_BUCKET |
Bucket do GCS | gs://meu-bucket |
LANGFUSE_PUBLIC_KEY |
Chave pública Langfuse | pk-lf-... |
LANGFUSE_SECRET_KEY |
Chave secreta Langfuse | sk-lf-... |
AGENT_NAME |
Nome do agente | curriculum |
AGENT_MODEL |
Modelo de IA | gemini-2.5-flash |
id- UUIDtitle- Título da vagadescription- Descrição detalhadarequired_skills- Habilidades obrigatórias (array)desired_skills- Habilidades desejadas (array)benefits- Benefícios oferecidosstatus- Status da vaga (open, closed)created_at- Data de criação
id- UUIDfull_name- Nome completoemail- E-mailphone- Telefonecpf- CPFinstitution- Instituição de ensinocourse- Cursotechnical_skills- Habilidades técnicas (array)soft_skills- Soft skills (array)has_experience- Possui experiênciastatus- Status (cadastrado, em_processo, contratado)
id- UUIDjob_id- ID da vaga (FK)full_name- Nome do candidatoemail- E-mailmatch_score- Score de compatibilidade (0-100)ai_justification- Justificativa da IAstatus- Status (received, screening, interview, approved, rejected)
Contribuições são bem-vindas! Para contribuir:
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/MinhaFeature) - Commit suas mudanças (
git commit -m 'Adiciona MinhaFeature') - Push para a branch (
git push origin feature/MinhaFeature) - Abra um Pull Request
Este projeto foi desenvolvido como parte do desafio final da Equipe 4.
Desenvolvido pela Equipe 4 como projeto final.
Para dúvidas ou suporte, entre em contato através das issues do GitHub.
⭐ Se este projeto foi útil, considere dar uma estrela!