Inspiration
As college students entering an increasingly competitive job market, we often found ourselves juggling multiple job platforms, repeating the same keyword searches, and manually tailoring resumes for each application. The process was slow, exhausting, and highly repetitive. We realized two major issues job seekers face every day:
- Finding relevant roles quickly
- Submitting resumes that actually pass ATS filters This motivated us to create CareerScrape a tool designed to simplify job discovery and help applicants present stronger, more relevant resumes.
What it does
CareerScrape is a web application that brings together automated job scraping, job-matching analysis, and resume customization tools in one place. Core Features:
Multi-Platform Job Scraping - Scrapes active job listings from Indeed and LinkedIn Supports filters such as skills, sponsorship, experience level, salary, and location Collects full job descriptions, company details, and application links Stores everything in a structured database for easy viewing
Job Matching & Scoring - Compares user skills and experience with job requirements Generates compatibility scores Highlights opportunities that match user preferences Automatically identifies sponsorship friendly roles
Resume Tailoring - Analyzes job descriptions to identify required skills and terminology Generates clean, ATS-friendly text resumes for each job Achieves high keyword alignment while remaining readable and professional
Batch Resume Generation - Allows generating resumes for up to five jobs at once (for testing purpose) Displays progress for each job processed Users can download resumes individually
Job Tracking Dashboard - Displays all scraped job listings in one interface Allows filtering by match score, skills, and job type Supports tracking of application status Exportable for future review or analysis
How we built it
Backend - Python (Flask) - API layer and backend logic Selenium + Undetected ChromeDriver - Platform-specific scraping MySQL - Job and profile data storage Pandas - Parsing and managing extracted job data Gemini API - Resume generation logic
Frontend – HTML/CSS/Bootstrap - Responsive UI JavaScript - Asynchronous API interactions
Libraries – selenium pandas mysql-connector-python scikit-learn
Challenges we ran into
Scraping multiple job platforms was tricky because of dynamic content, changing layouts, and anti-bot measures, so we used undetected ChromeDriver with cookie-based sessions, dynamic waits, and retries to keep the scrapers stable. Optimizing resumes for ATS while keeping them readable required careful keyword alignment and terminology adjustments, so we focused on generating clean, plain-text templates that worked for each job. Performance was a concern since scraping and generating content could be slow, so we reduced wait times, implemented batch processing, and limited job counts to speed things up. We wanted our code to feel natural for the hackathon, so we simplified function names, removed unnecessary comments, and kept the code readable and straightforward. Initially, structured resume formats were too complicated for users, so we switched to plain-text resumes that are easy to use and universally compatible.
Accomplishments that we're proud of
We successfully built a multi-platform job scraper capable of handling dynamic content, authentication, and anti-bot measures without relying on official APIs. Our AI-powered resume generator produces ATS-friendly, tailored resumes that align closely with each job’s requirements, improving keyword match rates while keeping resumes human-readable. Batch resume generation allows users to create multiple optimized resumes simultaneously, saving significant time compared to manual editing. We designed a user-friendly dashboard that lets users track job listings, match scores, and application progress all in one place.
What we learned
We gained firsthand experience dealing with how large job platforms structure their data, load dynamic components, and implement bot-detection systems. This helped us understand why scraping at scale is challenging and how small UI changes can break pipelines. Throughout development, we learned to think beyond “getting the feature to work.” We focused on how a user would experience the tool, how much time each action takes, what information is most valuable, and how to make the workflow feel smooth. This shifted our mindset toward practical usability.
What's next for CareerScrape
This process helps users save hours of manual work by making job searching faster and more organized. Users can easily discover relevant jobs, generate tailored resumes, and track their application progress in one place. For future enhancements, we plan to expand support to additional job boards such as Glassdoor and ZipRecruiter, implement automated application submission, and add LinkedIn connection or request automation. We also aim to include analytics on job-market trends and develop a mobile app version for users to access the platform on the go.
Built With
- and-an-html/css/bootstrap-+-javascript-frontend;-uses-selenium
- gemini-api-for-resume-generation
- mysql-connector-python
- mysql-storage
- pandas
- pandas-data-parsing
- python-(flask)-backend-with-selenium+undetected-chromedriver-scraping
- scikit-learn
Log in or sign up for Devpost to join the conversation.