Skip to content

About

AI-powered personal job discovery and automation system for finding, filtering, scoring, and tracking relevant opportunities.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

ย 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

โšก AI JOB SEARCH AUTOMATION

๐Ÿง  A Personal Intelligent Job-Discovery System

Search less. Filter smarter. Find better opportunities. ๐Ÿš€

AI Job Search Automation animated workflow

Python APIs Automation Google Sheets Status


๐Ÿ’ก Why I Built This

Job hunting is one of those things that looks simple until you do it every day.

Open a portal.
Search the same roles.
Change the location.
Read the experience requirement.
Check the skills.
Remove duplicate listings.
Remember which jobs you've already seen.
Repeat it all again tomorrow.

I didn't want to keep doing the repetitive part manually.

So I treated my own job search like an engineering problem.

As a Data Analytics / Data Science learner, I built a personal automation system that brings together multiple job sources, processes hundreds of listings, evaluates relevance, ranks opportunities, and tracks what has already been seen.

And I built it with a very deliberate philosophy:

๐Ÿค Let automation handle the repetitive work. Keep important decisions human.

This isn't a tool I built because I wanted another portfolio project.

I built it because I actually needed it.


๐ŸŽฏ The Mission

Turn hundreds of noisy job listings into a small, useful shortlist.

The system is optimized around my current career stage and preferences:

๐ŸŽฏ Area Current Focus
Primary roles Data Analyst โ€ข Data Analyst Intern โ€ข Junior Data Analyst
Additional roles Data Analytics Intern โ€ข Data Science Intern
Secondary roles BI Analyst โ€ข Reporting Analyst โ€ข MIS Analyst โ€ข Analytics Associate
Experience Fresher / Entry-Level / ~0โ€“1 year
Locations Delhi โ€ข Noida โ€ข Gurgaon / Gurugram โ€ข Remote
Priority skills SQL โ€ข Excel โ€ข Power BI โ€ข Python โ€ข Pandas โ€ข EDA
Freshness Prefer recent opportunities
Final action Human review before applying

๐Ÿš€ What It Actually Does

๐ŸŒ MULTIPLE JOB SOURCES
          โ†“
๐Ÿ“ฅ COLLECT RAW LISTINGS
          โ†“
๐Ÿงน NORMALIZE & TRANSFORM
          โ†“
๐Ÿ”Ž EXTRACT SKILLS / EXPERIENCE / ELIGIBILITY
          โ†“
๐ŸŽฏ FILTER ROLE + LOCATION + EXPERIENCE + FRESHNESS
          โ†“
โ™ป๏ธ DETECT DUPLICATES & POSSIBLE REPOSTS
          โ†“
๐Ÿ“Š CALCULATE MATCH SCORE
          โ†“
๐Ÿ›ก๏ธ ASSESS QUALITY + RISK
          โ†“
๐Ÿ† RANK RESULTS
          โ†“
๐Ÿ“‹ TRACK NEW JOBS IN GOOGLE SHEETS
          โ†“
๐Ÿ‘ค HUMAN DECISION

๐ŸŒ Multi-Source Job Collection

The collector layer currently supports:

Source Role
๐Ÿ”ต Adzuna Job discovery
๐ŸŸ  Jooble Job discovery
๐ŸŸฃ The Muse Job discovery
๐ŸŒŽ Himalayas Remote-focused discovery
๐ŸŒŽ Jobicy Remote-focused discovery
๐ŸŒŽ Remotive Remote-focused discovery

The point isn't simply to collect more jobs.

The point is to avoid depending on one source and create a broader search surface before the filtering pipeline removes noise.


๐Ÿง  The Intelligence Pipeline

01 โ€” ๐Ÿ“ฅ Collection

Each source returns job listings in its own structure.

The collector layer brings those listings into one pipeline.

02 โ€” ๐Ÿงน Transformation

Different APIs use different field names and formats.

The transformation layer standardizes:

  • Company
  • Role
  • Location
  • Work mode
  • Salary
  • Description
  • URL
  • Posted date
  • Experience
  • Eligibility
  • Skills
  • Job ID

03 โ€” ๐Ÿ”Ž Description Parsing

The parser extracts signals from job descriptions.

Skills include:

SQL โ€ข Microsoft Excel โ€ข Power BI โ€ข Python โ€ข Pandas โ€ข NumPy โ€ข Data Cleaning โ€ข EDA โ€ข Statistical Analysis โ€ข Data Visualization โ€ข Feature Engineering โ€ข MySQL โ€ข Machine Learning โ€ข Scikit-learn โ€ข XGBoost โ€ข Git โ€ข GitHub โ€ข Matplotlib โ€ข Seaborn โ€ข Plotly

04 โ€” ๐ŸŽฏ Eligibility

The system evaluates:

  • ๐Ÿ“ Location
  • ๐Ÿ’ผ Role relevance
  • ๐Ÿง‘โ€๐Ÿ’ป Experience compatibility
  • ๐Ÿ• Freshness

05 โ€” โ™ป๏ธ Deduplication

The system checks:

  • Same source + job ID
  • Same job URL
  • Identical descriptions
  • Same company + role + similar description
  • Same company + role + location + description similarity

06 โ€” ๐Ÿ“Š Matching

Relevant skills, role relevance, experience, location, and supporting signals contribute to the match score.

07 โ€” ๐Ÿ† Decision & Ranking

The strongest opportunities rise to the top.


๐Ÿ“ˆ Match Scoring Philosophy

I intentionally avoided building an extremely hard filter.

Why?

Because real job descriptions are messy.

A good Data Analyst opening may:

  • omit some skills,
  • leave experience unknown,
  • use different terminology,
  • have an incomplete description,
  • or appear slightly different across sources.

So the system follows:

Filter what is clearly incompatible. Score what is potentially relevant.

That gives the pipeline a better balance between precision and recall.


๐Ÿท๏ธ Decision System

Decision Meaning
๐ŸŸข APPLY Very strong match worth prioritizing
๐ŸŸข STRONG MATCH Highly relevant opportunity
๐ŸŸก REVIEW Relevant, but manually verify
๐ŸŸก CONSIDER Potentially useful
โšช SKIP Low relevance for the current profile
๐Ÿ”ด DO NOT APPLY High risk or strong incompatibility

Important

This system does not blindly apply to jobs.

It helps me discover, evaluate, prioritize, and track opportunities.

The final application decision remains mine.


๐Ÿ›ก๏ธ Quality & Risk Layer

A job title alone doesn't tell the whole story.

The pipeline also considers job quality and potential scam risk.

This gives the final output another layer of context:

MATCH SCORE
     +
QUALITY
     +
RISK
     =
BETTER DECISION

๐Ÿ“‹ Google Sheets Tracking

Relevant new opportunities can be stored in a personal Google Sheet.

Typical fields include:

Date โ€ข Source โ€ข Company โ€ข Role โ€ข Location โ€ข Work Mode โ€ข Experience โ€ข Skills โ€ข Score โ€ข Risk โ€ข Quality โ€ข Decision โ€ข Job URL

This turns the search process into a lightweight personal job-search database.


๐Ÿ“Š Google Sheets Output

The automation tracks newly discovered job opportunities in a dedicated Google Sheet, keeping the search results structured, reviewable, and easy to act on.

The sheet captures the key decision-making fields used by the pipeline, including:

Date โ€ข Source โ€ข Company โ€ข Role โ€ข Location โ€ข Work Mode โ€ข Experience โ€ข Skills โ€ข Score โ€ข Risk โ€ข Quality โ€ข Decision โ€ข Job URL

Live Output Example

AI Job Search Automation Google Sheets output

This provides a practical view of how the automation turns filtered job listings into a personal, searchable job-tracking workflow.


๐Ÿง  Job History

The system keeps a local history of previously seen job URLs.

That means:

Seen before?
   โ”‚
   โ”œโ”€โ”€ YES โ†’ already seen
   โ”‚
   โ””โ”€โ”€ NO  โ†’ new opportunity

This is especially useful when multiple sources surface the same listing.

๐Ÿ”’ Personal history remains outside the public repository.


โฐ Automation

The system can be scheduled with Windows Task Scheduler.

My personal workflow is configured around:

๐Ÿ•— Start: ~8:00 AM

๐Ÿ” Repeat: every hour

So instead of manually opening the project again and again:

8:00 AM
   โ†“
SEARCH
   โ†“
FILTER
   โ†“
SCORE
   โ†“
TRACK

9:00 AM
   โ†“
SEARCH AGAIN

10:00 AM
   โ†“
SEARCH AGAIN

...

The machine handles the repetitive search cycle while I focus on learning, projects, applications, and interview preparation.


๐Ÿ“Š Example Output

A real run can start with hundreds of raw listings and reduce them dramatically.

Example:

RAW JOBS:            800+
LOCATION REJECTED:   290+
ROLE REJECTED:       340+
OLD JOBS:            100+

And then surface something like:

๐Ÿ† ICG Medical | Data Analyst
๐Ÿ“ Noida
๐Ÿง‘โ€๐Ÿ’ป Experience: 1 year
๐Ÿ› ๏ธ Skills: SQL, Power BI, Python, Reporting, Dashboarding

๐Ÿ“Š Score: 86
๐Ÿ›ก๏ธ Risk: LOW
โญ Quality: HIGH
๐ŸŽฏ Decision: STRONG MATCH

The objective isn't:

"Show me as many jobs as possible."

The objective is:

"Show me the opportunities most worth my attention."


๐Ÿ—๏ธ Architecture

AI-Job-Search-Automation/
โ”‚
โ”œโ”€โ”€ config/
โ”‚   โ””โ”€โ”€ profile.yaml
โ”‚
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ collectors/
โ”‚   โ”‚   โ”œโ”€โ”€ adzuna.py
โ”‚   โ”‚   โ”œโ”€โ”€ the_muse.py
โ”‚   โ”‚   โ”œโ”€โ”€ jooble.py
โ”‚   โ”‚   โ”œโ”€โ”€ himalayas.py
โ”‚   โ”‚   โ”œโ”€โ”€ jobicy.py
โ”‚   โ”‚   โ”œโ”€โ”€ remotive.py
โ”‚   โ”‚   โ””โ”€โ”€ multi_source.py
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ processing/
โ”‚   โ”‚   โ”œโ”€โ”€ batch_processor.py
โ”‚   โ”‚   โ”œโ”€โ”€ transform.py
โ”‚   โ”‚   โ”œโ”€โ”€ job_parser.py
โ”‚   โ”‚   โ”œโ”€โ”€ freshness.py
โ”‚   โ”‚   โ”œโ”€โ”€ deduplication.py
โ”‚   โ”‚   โ”œโ”€โ”€ location_eligibility.py
โ”‚   โ”‚   โ”œโ”€โ”€ experience_eligibility.py
โ”‚   โ”‚   โ”œโ”€โ”€ work_mode.py
โ”‚   โ”‚   โ”œโ”€โ”€ scam_detector.py
โ”‚   โ”‚   โ”œโ”€โ”€ quality.py
โ”‚   โ”‚   โ””โ”€โ”€ filters.py
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ matching/
โ”‚   โ”‚   โ”œโ”€โ”€ score.py
โ”‚   โ”‚   โ”œโ”€โ”€ match_result.py
โ”‚   โ”‚   โ”œโ”€โ”€ decision.py
โ”‚   โ”‚   โ””โ”€โ”€ ranking.py
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ storage/
โ”‚       โ”œโ”€โ”€ json_store.py
โ”‚       โ”œโ”€โ”€ google_sheets.py
โ”‚       โ””โ”€โ”€ job_history.py
โ”‚
โ”œโ”€โ”€ run.py
โ”œโ”€โ”€ requirements.txt
โ”œโ”€โ”€ .env.example
โ”œโ”€โ”€ .gitignore
โ”œโ”€โ”€ LICENSE
โ””โ”€โ”€ README.md

๐Ÿงฉ Core Components

Component Responsibility
collectors/ Multi-source job collection
processing/ Cleaning, parsing, filtering & deduplication
matching/ Scoring, decisions & ranking
storage/ JSON, history & Google Sheets
config/ Personal job-search preferences
run.py Main pipeline entry point

โš™๏ธ Setup

git clone <YOUR_REPOSITORY_URL>
cd AI-Job-Search-Automation

python -m venv .venv
.venv\Scripts\activate

pip install -r requirements.txt

Create your local .env file and add the required API credentials.

Configure:

config/profile.yaml

Then:

python run.py

๐Ÿ” Security

Private information is intentionally excluded from Git:

.env
credentials/
data/
.venv/
__pycache__/
*.pyc

Never publish API keys, Google credentials, or personal job history.


๐Ÿง  Built With AI โ€” But Directed By Me

One of the most meaningful parts of this project was the development process itself.

I worked closely with AI throughout the build to accelerate:

  • ๐Ÿงฉ architecture exploration
  • ๐Ÿ› debugging
  • ๐Ÿ”ง implementation
  • ๐Ÿ”„ iteration
  • ๐Ÿง  problem solving
  • ๐Ÿงช testing ideas
  • ๐Ÿ“ system design

But the project was driven by a real problem, my own requirements, and my decisions about how the system should behave.

AI was the development partner. I was the system designer and decision-maker.

That distinction matters to me.

The goal wasn't to ask AI for a random project.

The goal was to take my own problem, define the requirements, build the system, test it against real outputs, identify weaknesses, iterate, and turn it into something I can actually use.


๐Ÿ’ผ What This Project Demonstrates

This project brings together practical engineering concepts:

  • ๐Ÿ Python
  • ๐ŸŒ REST APIs
  • ๐Ÿ”„ Multi-source data collection
  • ๐Ÿงน Data transformation
  • ๐Ÿ”Ž Regular expressions
  • ๐Ÿง  Rule-based intelligence
  • ๐Ÿ“Š Scoring systems
  • ๐Ÿ† Ranking
  • โ™ป๏ธ Similarity-based deduplication
  • ๐Ÿ›ก๏ธ Risk detection
  • ๐Ÿ“‹ Google Sheets integration
  • ๐Ÿ’พ Local persistence
  • โฐ Windows automation
  • ๐Ÿงฑ Modular architecture
  • ๐Ÿค– AI-assisted development

More importantly:

It demonstrates problem-solving around a real personal workflow.


๐Ÿ”ฎ Future Improvements

The architecture leaves room for:

  • ๐Ÿ”Ž Better semantic job matching
  • ๐Ÿข Stronger company-quality signals
  • ๐Ÿ“ Improved work-mode detection
  • ๐Ÿ’ฐ Better salary normalization
  • ๐Ÿ“ฉ Email / notification integration
  • ๐Ÿ“‹ Application-status tracking
  • ๐Ÿ“ˆ Historical job-search analytics
  • ๐Ÿง  Ranking calibration from real application outcomes
  • ๐ŸŒ Additional job sources

The system can evolve without throwing away the existing architecture.


โš ๏ธ Disclaimer

This is a personal job-discovery and decision-support system.

It does not guarantee:

  • job availability
  • listing accuracy
  • recruiter response
  • interviews
  • selection
  • application success

Third-party sources can provide incomplete, duplicated, outdated, or inconsistent information.

Always verify the original listing before applying.


๐Ÿ‘จโ€๐Ÿ’ป About

ALIN KUMAR

Data Analytics โ€ข Data Science โ€ข Automation

I enjoy taking repetitive real-world problems and turning them into practical systems.

This project is one example of that approach:

Problem โ†’ Data โ†’ Logic โ†’ Automation โ†’ Better Workflow


โญ Final Thought

I didn't want another tool telling me to search for jobs.

I wanted to build the system that searches with me. โšก

Built for my journey.
Built to save time.
Built to keep moving forward. ๐Ÿš€


๐ŸŸข PERSONAL PROJECT โ€ข BUILT FOR REAL USE โ€ข AI-ASSISTED DEVELOPMENT

About

AI-powered personal job discovery and automation system for finding, filtering, scoring, and tracking relevant opportunities.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages