107 lines
4.5 KiB
Markdown
107 lines
4.5 KiB
Markdown
# Semillero AI Recruitment Platform (ATS)
|
|
|
|
A modern Applicant Tracking System (ATS) built with Next.js App Router, Tailwind CSS, Supabase, pgvector, Google Gemini, and n8n automation. It parses PDF resumes, ranks candidates with semantic vector similarity search, and manages candidate pipelines with real-time comments, pinning, and n8n-powered next-step AI suggestions.
|
|
|
|
---
|
|
|
|
## 🔒 Security & Access Control
|
|
|
|
The application is protected by a global secure access gate at startup.
|
|
|
|
* **Security Lock Screen**: Any access to the platform redirects to a bilingual lock screen requiring a password.
|
|
* **Encrypted Transmission**: The password is submitted encrypted over HTTPS to a secure server-side endpoint `/api/auth`.
|
|
* **Environment Configuration**: Store your password in the `.env` file under `APP_PASSWORD`.
|
|
* **Default Fallback**: If no `APP_PASSWORD` env variable is set, the system defaults to:
|
|
```
|
|
Semillero2026!
|
|
```
|
|
* **Auto Logoff**: Sessions are tracked via a secure timestamp. Users are automatically logged off and returned to the lock screen after **24 hours (1 day)** of inactivity.
|
|
|
|
---
|
|
|
|
## 🛠️ Setup & Environment Configuration
|
|
|
|
Create a `.env` file at the root of the project with the following variables:
|
|
|
|
```env
|
|
# Database Credentials
|
|
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
|
|
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
|
|
SUPABASE_SECRET_KEY=your_supabase_service_role_key
|
|
|
|
# Security Access Lock
|
|
APP_PASSWORD=Semillero2026!
|
|
|
|
# LLM Core API Key
|
|
GEMINI_API_KEY=your_gemini_api_key
|
|
|
|
# n8n Automation Engine Settings
|
|
N8N_HOST=https://n8n.yourdomain.com
|
|
N8N_API_KEY=your_n8n_api_key
|
|
NEXT_PUBLIC_N8N_WEBHOOK_URL=https://n8n.yourdomain.com/webhook/evaluate-candidate
|
|
```
|
|
|
|
---
|
|
|
|
## 🚀 Installation & Running
|
|
|
|
### 1. Install Dependencies
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
### 2. Run Development Server
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
### 3. Production Build & Verification
|
|
```bash
|
|
npm run build
|
|
npm run lint
|
|
```
|
|
|
|
### 4. Deploy n8n Workflow
|
|
To deploy or update the recruitment workflows inside your n8n workspace, run:
|
|
```bash
|
|
npx ts-node -O '{"module": "commonjs"}' scripts/deploy-n8n-v2.ts --fallback --fallback-provider=gemini
|
|
```
|
|
|
|
---
|
|
|
|
## 📋 Interactive Demo Script (Presentation Walkthrough)
|
|
|
|
Follow these steps to demonstrate the end-to-end capabilities during your presentation:
|
|
|
|
### Step 1: Secure Login & Startup
|
|
1. Open the application. You will be greeted by the **Secure Access Lock Screen**.
|
|
2. Select your preferred language (English or Spanish) and toggle between **Light/Dark Mode** using the top-right controls.
|
|
3. Enter the password `Semillero2026!` and click **Unlock**.
|
|
|
|
### Step 2: Define a Job Vacancy
|
|
1. Navigate to the **Vacancies** (Vacantes) tab.
|
|
2. Click **Create Vacancy**. Enter a Title (e.g. `Senior Frontend Engineer`) and requirements.
|
|
3. Observe the newly created card appear in the vacancy sidebar.
|
|
|
|
### Step 3: Ingest Candidate CVs (RAG parsing)
|
|
1. Select the newly created vacancy.
|
|
2. Drag and drop or upload a candidate CV in PDF format.
|
|
3. The system parses the PDF, generates a text vector embedding, inserts the candidate record, and automatically creates an initial **Screening** interview.
|
|
|
|
### Step 4: Run AI Suitability Match
|
|
1. Click **Run AI Evaluation** on the candidate.
|
|
2. Observe the suitabilty score (0-100), risk level (Low, Medium, High), classification, and a concise 3-sentence summary generated by Gemini.
|
|
3. Check the A-Z list of candidates in the **Candidates** (Candidatos) tab to see the details, linked vacancies, and duplicate file warnings if you re-upload the same PDF.
|
|
|
|
### Step 5: Pipeline Interview Management
|
|
1. Go to the **Interviews** (Entrevistas) tab.
|
|
2. Observe the **Open Positions** sidebar showing positions and candidate counts.
|
|
3. Click on a candidate. Watch the **Open Positions** sidebar slide out of view with a smooth CSS transition, and the Candidate List + Detail Pane expand to fill the open space.
|
|
4. Toggle the **Pin** button next to the candidate's name to move them to the top of the list.
|
|
|
|
### Step 6: Interactive Timestamps & AI next steps
|
|
1. Click **Get AI Suggestion** inside the candidate's interview detail pane.
|
|
2. An n8n webhook will query Gemini and append a concise markdown list of recommended next steps as a comment in the timeline.
|
|
3. Try clicking on any comment card. Observe it collapse/uncollapse with a chevron icon transition.
|
|
4. Modify the interview **Stage** dropdown. The stage updates instantly in the database with a timestamp log in the comment timeline.
|
|
5. Click **Back to All Interviews** in the top navigation. Watch the **Open Positions** sidebar animate back into view.
|