Look4Job is a Python-based job search and resume matching application. It automatically finds jobs from multiple job boards and ranks them based on how well they match a user's resume.
The system allows users to upload a resume (PDF), extract skills, search job platforms, and display the most relevant job listings.
- Upload resume in PDF format
- Automatically convert PDF resume to text
- Extract skills from resume
- Smart job search based on resume content
- Scrape jobs from multiple job websites
- Remove duplicate job listings
- Filter jobs based on experience level
- Rank jobs based on skill match
- Detect internship vs regular jobs
- Simple web interface
Look4Job collects jobs from multiple platforms including:
- Indeed
- ZipRecruiter
- Glassdoor
- Google Jobs
- Naukri
- Bayt
- BDJobs
Jobs from these sites are scraped concurrently for faster results.
look4job/
|-- __init__.py Main job scraping engine
|-- web.py FastAPI web application
|-- matcher.py Resume parsing and job ranking logic
|-- model.py Data models and job structures
|-- util.py Utility functions
|-- exception.py Custom exceptions
`-- requirements.txt Project dependencies
Backend
- Python
- FastAPI
Data Processing
- Pandas
- NumPy
- Regex
Web Scraping
- Requests
- BeautifulSoup
- TLS Client
Resume Processing
- PyPDF
Web Templates
- Jinja2
Clone the repository:
git clone https://github.com/tharunsridhar/look4job-app.git
cd look4job-appInstall dependencies:
pip install -r requirements.txtStart the server:
uvicorn web:app --reloadOpen in browser:
http://127.0.0.1:8000
- User uploads a resume (PDF).
- The system converts the PDF into text.
- Skills are extracted from the resume.
- A job search query is inferred from the resume.
- Job listings are scraped from multiple job boards.
- Jobs are filtered based on experience requirements.
- Jobs are ranked based on skill matching and relevance.
- The best matching jobs are displayed to the user.
Jobs are ranked using multiple signals:
Skill Match Counts how many skills from the resume appear in the job description.
Experience Match Compares required experience with the candidate's experience.
Title Relevance Filters out irrelevant roles such as sales or marketing.
Seniority Rules Adjusts ranking based on titles like:
- Intern
- Junior
- Senior
- Lead
The final ranking score determines which jobs appear first.
Resume must be:
- PDF format
- Contain readable text (not scanned image only)
The application displays ranked job results with:
- Job Title
- Company
- Location
- Date Posted
- Match Score
- Matched Skills
- Experience Fit
- Job URL
Possible improvements:
- NLP based skill extraction
- Resume semantic analysis
- AI job recommendation system
- Resume-job embedding matching
- Automatic job application support
Tharun Sridhar Natarajan