Quick overview
This workflow collects job applications via Gmail, deduplicates candidates in Airtable, extracts resume text with LlamaParse, scores candidates against an Airtable role rubric using a DeepSeek chat model, and routes results to gotoHuman for approve/reject decisions that update the candidate’s stage.
How it works
- Receives a job application submission from Gmail, including the applicant’s name, email, role, and resume file.
- Searches Airtable Candidates by email to detect duplicates and either creates a new candidate record or updates the existing record.
- Extracts text from the uploaded resume with LlamaParse and runs a basic quality check to detect likely mis-parsed or incomplete text.
- If parsing looks poor, updates the candidate in Airtable to “Needs Manual Review” with a “poor” parse quality flag.
- If parsing looks good, fetches the role-specific scoring rubric from the Airtable Roles table, sanitizes the resume text, and sends both to a DeepSeek chat model (via LangChain) to produce a structured JSON scorecard.
- Validates and normalizes the AI’s JSON output, saves the score, reasoning, confidence, red flags, and recommendation back to Airtable, and submits the scorecard to gotoHuman for a human decision.
- Updates the candidate’s Airtable stage to “Advanced” (and sets “Awaiting Interview”) or “Rejected” based on the gotoHuman approve/reject response.
Setup
- Create or update your Airtable base with Candidates and Roles tables (including fields for email dedupe, stage, rubric fields, and AI scoring outputs) and connect an Airtable Personal Access Token.
- Install the community nodes @llamaindex/n8n-nodes-llamacloud and @gotohuman/n8n-nodes-gotohuman, then add LlamaParse API credentials and gotoHuman API credentials.
- Add a DeepSeek API credential for the LangChain chat model (or swap to another supported LangChain chat model and update the workflow accordingly).
- In gotoHuman, configure a Review Board/template and select its agent and template IDs in the workflow so the human approval step can return “approved” or a rejection response.