Skip to main content

Screen CVs with OpenAI and PostgreSQL using chained prompts

Workflow preview

Screen CVs with OpenAI and PostgreSQL using chained prompts preview
Open on n8n.io

Overview

How it works

  • Webhook receives a job ID and list of candidate IDs from your database
  • If the job has no template yet, Prompt 0 reads the job description and automatically extracts mandatory requirements, differentials, behavioral competencies and sets the weight of each criterion
  • For each candidate, 3 prompts run sequentially with accumulated context:
  • Prompt 1 scores the candidate (0–100) against the job template using calibration anchors to avoid score inflation, plus a breakdown score per criterion
  • Prompt 2 receives the score as context and identifies strengths with concrete resume evidence, separating critical gaps (missing mandatory requirements) from secondary gaps (missing differentials)
  • Prompt 3 receives the gaps as context and generates personalized interview questions for that specific candidate — not generic HR templates
  • Results are saved directly to PostgreSQL after each candidate
  • When all candidates are processed, Prompt 4 automatically generates an executive summary of the entire pool with recommendations on who to interview

Set up steps

  • Add your OpenAI credentials to all AI nodes (~2 min)
  • Add your PostgreSQL credentials to all Postgres nodes (~2 min)
  • Create the required tables using the SQL schema provided in the workflow sticky note (~5 min)
  • Trigger via POST /webhook/cv-analyze with { "job_id": 1, "candidate_ids": [1, 2, 3] }