Score WhatsApp PDF resumes with OpenAI GPT-4o-mini and Supabase
Workflow preview
$20/month : Unlimited workflows
2500 executions/month
THE #1 IN WEB SCRAPING
Scrape any website without limits
HOSTINGER
Early Deal
DISCOUNT 20% Try free
DISCOUNT 20%
Self-hosted n8n
Unlimited workflows - from $4.99/mo
#1 hub for scraping, AI & automation
6000+ actors - $5 credits/mo
Overview
WhatsApp Resume Ranking Bot — AI-Powered Career Score via PDF Upload
Let job seekers check their resume strength directly on WhatsApp — no app, no sign-up, no friction. Users send a keyword, answer 2 quick questions, upload their PDF resume, and receive a personalized career score, ATS feedback, and rejection analysis in under 60 seconds.
Who is this for?
Career coaches, job portals, HR-tech startups, or recruitment agencies who want to offer a self-serve resume evaluation tool directly inside WhatsApp — where their audience already is.
What this workflow does
- Listens for incoming WhatsApp messages via the WhatsApp Business Cloud API
- Manages multi-turn conversation state in Supabase — tracks each user's progress through the flow (idle → name → role → resume → processing)
- Guides the user step-by-step to provide their name, target job role, and PDF resume
- Downloads the resume PDF from WhatsApp's media server using the Business API
- Extracts resume text for analysis
- Runs a Scoring Engine that calculates a career score (0–100) based on resume content and target role
- Calls OpenAI (GPT-4o-mini) in parallel to generate rejection reasons and actionable improvement tips
- Merges both results and formats a final WhatsApp message
- Sends the personalized report back to the user — score, weaknesses, and what to fix
Prerequisites
- A WhatsApp Business Cloud API account (Meta Developer App in Live mode)
- A Supabase project with a
whatsapp_sessionstable - An OpenAI API key (GPT-4o-mini recommended)
- A self-hosted n8n instance or n8n Cloud
Supabase table setup
Create a table called whatsapp_sessions with these columns:
| Column | Type | Notes |
|---|---|---|
phone |
text | Primary key / unique |
state |
text | Conversation state (IDLE, WAITING_NAME, etc.) |
name |
text | User's name |
target_role |
text | Job role they're targeting |
started_at |
timestamptz | Session start time |
updated_at |
timestamptz | Last activity timestamp |
Setup steps
- Connect WhatsApp Business API credentials in n8n (Meta App token + Phone Number ID)
- Connect OpenAI credentials in n8n
- Update the Supabase URL and API key inside the
Conversation State ManagerCode node - Replace
YOUR_PHONE_NUMBER_HEREin the Send nodes with your WhatsApp Phone Number ID - Set up Meta webhook pointing to your n8n WhatsApp Trigger URL, subscribed to
messages - Activate the workflow — users can now send
CHECK MY RANKto trigger the bot
Conversation flow
User: CHECK MY RANK
Bot: Intro + "Type YES to start"
User: YES
Bot: "What's your full name?"
User: Rahul Sharma
Bot: "Which job role are you targeting?"
User: Data Analyst
Bot: "Upload your resume as a PDF"
User: [uploads PDF]
Bot: "Analyzing... hang tight 🔍"
Bot: [sends career score + rejection reasons + tips]
Customization
- Modify the Scoring Engine Code node to adjust how the score is calculated (weights for skills, experience, formatting, etc.)
- Edit the OpenAI prompt to change the tone or depth of feedback
- Add a Supabase insert after analysis to log all submissions for your own analytics
- Extend the flow to offer a paid detailed report or booking link after the free score
⚠️ Important notes
- The WhatsApp App must be in Live mode (not sandbox) to receive messages from non-whitelisted numbers — requires completing Meta Business Verification
- Only PDF resumes are supported; DOCX files are rejected with a helpful prompt
- Session state persists in Supabase, so users can resume mid-flow if they get disconnected
- The bot handles concurrent users independently via phone number as the session key