An autonomous AI agent that automatically screens PDF resumes, scores them, and maintains a pipeline of qualified candidates. Built with FastAPI and Perplexity AI.
- 🔄 Autonomous Monitoring: Watches a folder for new PDF resumes automatically
- 🎯 Goal-Driven: Agent works toward a specific goal (e.g., "Find 3 candidates with score ≥ 75")
- 🧠 Multi-Step Planning: LLM decides whether to score, skip, or stop based on current state
- 📊 Real-Time Dashboard: Live updates as resumes are processed
- ⚡ Fast Processing: Automatic PDF extraction and AI scoring
cd resume-agent
pip install -r requirements.txtCreate a .env file:
cp .env.example .envEdit .env and add your Perplexity API key:
PERPLEXITY_API_KEY=your_actual_api_key_here
GOAL_QUALIFIED_COUNT=3
GOAL_MIN_SCORE=75
JOB_DESCRIPTION_PATH=job_description.txt
Edit job_description.txt with your specific role requirements. The agent will score resumes based on how well they match this job description.
python main.pyThe dashboard will be available at: http://localhost:8000
Drop PDF resumes into the ./resumes/ folder and watch the agent work autonomously!
- Monitor: Agent watches the
./resumes/folder for new PDFs - Plan: LLM decides the next action based on current goal progress
- Extract: Text is extracted from the PDF
- Score: Resume is evaluated on 4 criteria (Technical Skills, Experience, Education, Career Progression)
- Decide: Agent accepts/rejects based on score threshold
- Track: Progress toward goal is tracked and displayed in real-time
- Stop: Agent achieves goal and stops accepting new candidates
Resumes are scored out of 100 points:
- Technical Skills (40 points): Relevant technical abilities
- Work Experience (30 points): Quality and relevance of work history
- Education (15 points): Academic background
- Career Progression (15 points): Career growth trajectory
- Progress Bar: Visual goal progress
- Real-Time Stats: Qualified candidates, total processed, acceptance rate
- Resume Cards: Detailed scores, strengths, weaknesses
- Agent Reasoning: See the agent's decision-making process
- Reset Button: Clear all data and start fresh
GET /- Dashboard UIGET /api/state- Current agent stateGET /api/results- All processed resumesGET /api/events- SSE stream for real-time updatesPOST /api/reset- Reset agent state
resume-agent/
├── agent.py # Core agent logic and LLM integration
├── monitor.py # Folder watcher for autonomous detection
├── main.py # FastAPI server
├── templates/
│ └── index.html # Dashboard UI
├── resumes/ # Drop PDFs here
├── data/ # Agent state and results (auto-created)
├── requirements.txt
├── .env # Your configuration
└── README.md
For a quick demo:
- Start the agent:
python main.py - Open dashboard: http://localhost:8000
- Drop 5 sample resumes into
./resumes/ - Watch the agent autonomously process them until goal is reached!
- ✅ Autonomous Triggering: No manual uploads needed
- ✅ Goal-Driven Behavior: Stops when goal is achieved
- ✅ Multi-Step Planning: LLM decides actions dynamically
- ✅ Continuous Operation: Runs 24/7 monitoring the folder
- FastAPI: Web framework
- Perplexity AI: LLM for scoring and planning
- Watchdog: File system monitoring
- pypdf: PDF text extraction
- SSE: Real-time updates
- Perplexity API key required (get one at https://www.perplexity.ai)
- Resumes must be in PDF format
- Agent persists state across restarts
- Use "Reset Agent" button to clear all data
What makes this an "agent"?
- Autonomy: No human intervention needed once started
- Goal-Oriented: Works toward specific objective
- Decision Making: LLM plans each action based on context
- State Management: Tracks progress and adapts behavior
- Continuous Operation: Runs indefinitely until goal met
Enjoy your AI Resume Screening Agent! 🚀