Quick overview
This workflow collects resume uploads via an n8n form, stores the file in Google Drive, extracts and parses the resume with OpenAI into structured candidate data, calculates a simple fit score, saves the result to PostgreSQL, and notifies HR in Slack.
How it works
- Receives a candidate submission through an n8n Form trigger with a PDF resume attachment.
- Uploads the resume file to a specified Google Drive folder and extracts the resume text from the uploaded PDF.
- Sends the extracted resume text to OpenAI (gpt-4o-mini) to return key candidate fields as JSON.
- Parses the AI response, cleans and normalizes fields like name casing, email formatting, and numeric experience years.
- Calculates a candidate score based on experience and the presence of specific skills (React, Node.js, PostgreSQL).
- Inserts the structured candidate record and score into a PostgreSQL candidates table.
- Posts a Slack message to an HR channel with the candidate’s details and score.
Setup
- Configure the n8n Form trigger and share the form URL with candidates to upload their PDF resumes.
- Connect Google Drive OAuth credentials and select the target Drive and folder where resumes should be stored.
- Add an OpenAI API credential and confirm the model and prompt match the fields you want to extract.
- Set up a PostgreSQL credential and ensure a public.candidates table exists with columns that match the workflow mappings.
- Connect Slack OAuth credentials and choose the channel where HR should receive candidate notifications.