Skip to content
ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

48 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ HIRE - Intelligent Job Application Automation Engine

License Node TypeScript PRs Welcome

An AI-powered job application automation platform that scrapes jobs, matches them to your profile, and automates the application process.

Getting Started ยท Contributing ยท Documentation ยท Architecture


๐Ÿ“– Table of Contents


๐Ÿ’ก What is HIRE?

HIRE is an intelligent job application automation engine that streamlines the job hunting process using AI and browser automation. Instead of spending hours applying to jobs manually, HIRE does the heavy lifting for you!

How It Works

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  1. SCRAPE      โ”‚ โ”€โ”€โ–ถ โ”‚  2. MATCH       โ”‚ โ”€โ”€โ–ถ โ”‚  3. TAILOR      โ”‚ โ”€โ”€โ–ถ โ”‚  4. APPLY       โ”‚
โ”‚  Jobs from      โ”‚     โ”‚  Jobs to your   โ”‚     โ”‚  Resume for     โ”‚     โ”‚  Automatically  โ”‚
โ”‚  platforms      โ”‚     โ”‚  profile        โ”‚     โ”‚  each job       โ”‚     โ”‚  using AI       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐ŸŽฏ Why HIRE?

The Problem

Applying to jobs is time-consuming and repetitive. Job seekers spend hours:

Pain Point Time Wasted
๐Ÿ” Searching for relevant jobs 2-3 hours/day
๐Ÿ“ Tailoring resumes 30 mins/application
โœ๏ธ Filling forms repeatedly 15-20 mins/application
๐Ÿ’Œ Writing cover letters 20-30 mins/application

The Solution

HIRE automates the entire workflow:

Feature What HIRE Does
๐Ÿ•ท๏ธ Smart Scraping Scrapes jobs from platforms based on your skills
๐ŸŽฏ AI Matching Ranks jobs by relevance using vector embeddings
๐Ÿ“„ Resume Tailoring Customizes your resume for each job using LLM
๐Ÿค– Auto-Apply Fills applications with AI-generated answers
๐Ÿ”„ Handles Complexity Manages popups, multi-page forms, file uploads

โœจ Features

Core Features

  • ๐Ÿ•ท๏ธ Multi-Platform Job Scraping - Currently supports Internshala, with more platforms coming!
  • ๐ŸŽฏ AI-Powered Job Matching - Uses vector similarity (pgvector) to find relevant jobs
  • ๐Ÿ“„ Smart Resume Tailoring - LLM-powered resume customization for each application
  • ๐Ÿค– Automated Form Filling - Playwright-based browser automation with AI-generated responses
  • ๐Ÿ“Š Application Dashboard - Track all your applications in one place

Automation Capabilities

Capability Description
Smart Form Detection Detects all form fields and their labels
Multi-Page Forms Navigates through form pages automatically
Popup Handling Auto-dismisses alerts, modals, and cookie popups
File Uploads Uploads resume to file inputs (PDF, DOCX, DOC)

๐Ÿ”ง Tech Stack

Layer Technology Purpose
Backend NestJS + TypeScript REST API, business logic
Database PostgreSQL + pgvector Data storage, vector similarity
Automation Playwright Browser automation
AI/LLM Google Gemini / OpenAI Resume tailoring, form answers
Frontend React + Vite User interface
Containerization Docker + Docker Compose Easy deployment, development

๐Ÿ“ Project Structure

HIRE/
โ”œโ”€โ”€ ๐Ÿ“‚ backend/                 # NestJS Backend
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ src/
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ applications/    # Application workflow management
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ jobs/            # Job listing management
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ scrapers/        # โญ Job scraping services
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ services/        # Core services (LLM, automation)
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ users/           # User management & resume handling
โ”‚   โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ config/          # Database & app configuration
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ resumes/             # Tailored resume storage
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ screenshots/         # Automation screenshots
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ uploads/             # User uploaded files
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ frontend/                # React Frontend (Vite)
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ src/
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ components/      # Reusable UI components
โ”‚   โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ pages/           # Application pages
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ .github/                 # GitHub Actions & Issue Templates
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ ISSUE_TEMPLATE/      # Issue templates for contributors
โ”‚
โ”œโ”€โ”€ ๐Ÿ“„ docker-compose.yml       # PostgreSQL container setup
โ”œโ”€โ”€ ๐Ÿ“„ CONTRIBUTING.md          # Contribution guidelines
โ”œโ”€โ”€ ๐Ÿ“„ ARCHITECTURE.md          # System architecture details
โ””โ”€โ”€ ๐Ÿ“„ README.md                # You are here! ๐Ÿ‘‹

๐Ÿš€ Quick Start

Prerequisites

Before you begin, make sure you have:

Option 1: Docker Setup

The easiest way to get started! Docker handles all dependencies including Playwright browsers.

# Clone the repository
git clone https://github.com/JAYATIAHUJA/HIRE.git
cd HIRE

# Configure environment
cp .env.docker .env
# Edit .env with your API keys and credentials

# Start all services (database, backend, frontend)
npm run docker:dev

# View logs
npm run docker:logs

# Access the application
# Frontend: http://localhost:5173
# Backend API: http://localhost:3000

That's it! All services are running in containers with hot reload enabled.

Docker notes:

  • Local development uses Docker Compose (Postgres + backend + frontend) with hot reload.
  • Backend uses mcr.microsoft.com/playwright:v1.40.1-jammy-chromium for Playwright + Chromium.
  • Keep Docker Playwright version aligned with backend/package.json Playwright version.
  • Docker is intended for local development; production deployment should use managed cloud services.

Option 2: Local Development Setup

If you prefer running services locally:

Step 1: Clone & Install

# Clone the repository
git clone https://github.com/JAYATIAHUJA/HIRE.git
cd HIRE

# Install backend dependencies
cd backend && npm install

# Install frontend dependencies
cd ../frontend && npm install

Step 2: Start Database

# From project root
docker compose up -d postgres

# Verify database is running
docker compose ps

Step 3: Configure Environment

# Copy example environment file
cp env.example backend/.env

Edit backend/.env with your values:

DATABASE_URL=postgresql://postgres:postgres@localhost:5432/hire_db
LLM_PROVIDER=gemini
GEMINI_API_KEY=your_gemini_api_key_here
INTERNSHALA_EMAIL=your_internshala_email
INTERNSHALA_PASSWORD=your_internshala_password

Step 4: Start the Application

# Terminal 1: Start Backend
cd backend
npm run start:dev

# Terminal 2: Start Frontend (Optional)
cd frontend
npm run dev

Step 5: Verify Setup

# Test the API
curl http://localhost:3000/api/scrapers/stats

# Expected response:
# {"message":"Job statistics","total":0,...}

๐ŸŽ‰ Congratulations! You're all set up!


๐Ÿ“ก API Reference

Quick Reference

Endpoint Method Description
/api/users POST Create user with resume
/api/users/:id GET Get user profile
/api/users/:id/upload-resume POST Upload PDF/Word resume
/api/feed?userId=X GET Get personalized job feed
/api/scrapers/stats GET Get job statistics
/api/scrapers/scrape-for-user POST Scrape jobs for user's skills
/api/applications POST Create job application
/api/applications/:id GET Get application status
/api/applications/:id/approve POST Approve & submit

For detailed API documentation, see DOCUMENTATION.md.


๐Ÿค Contributing

We love contributions! Whether you're fixing a bug, adding a feature, or improving documentation, we appreciate your help.

Quick Contribution Guide

  1. Fork the repository
  2. Clone your fork
  3. Create a feature branch (git checkout -b feature/amazing-feature)
  4. Commit your changes (git commit -m 'feat: add amazing feature')
  5. Push to your branch (git push origin feature/amazing-feature)
  6. Open a Pull Request

Contribution Types

Type Description Good For
๐Ÿ› Bug Fixes Fix reported issues Everyone
โœจ Features Add new functionality Intermediate+
๐Ÿ“ Documentation Improve docs, fix typos Beginners
๐Ÿงช Tests Add or improve tests All levels
๐Ÿ•ท๏ธ Scrapers Add new job platform support Intermediate+

๐Ÿ•ท๏ธ Scraper Contributions

We especially welcome scrapers for new job platforms! You can contribute:

Option 1: Individual Platform Scrapers

Create a dedicated scraper for a specific job platform:

Platforms we'd love scrapers for:

  • LinkedIn Jobs
  • Indeed
  • Glassdoor
  • Naukri
  • AngelList/Wellfound
  • RemoteOK
  • WeWorkRemotely
  • Hacker News Jobs

Option 2: Unified Multi-Platform Scraper

Build a single scraper that aggregates jobs from multiple platforms using libraries like JobSpy.

See CONTRIBUTING.md for detailed scraper guidelines.


๐ŸŒŸ Apertre 3.0 Contributors

Welcome, Apertre 3.0 Mentees! ๐ŸŽ‰

If you're participating in Apertre 3.0, we're excited to have you here! This project is beginner-friendly and we're here to help you succeed.

๐Ÿ“‹ Important: Identifying Yourself

โš ๏ธ When creating any issue (bug report, feature request, scraper proposal), please add Apertre 3.0 in your issue description if you are a participant!

This helps maintainers identify and prioritize your contributions during the program.

How to Mention Apertre 3.0

When creating an issue, add this at the top of your description:

**Program:** Apertre 3.0 Participant

Or use our dedicated Apertre 3.0 Contributor Template when requesting to work on issues!

Good First Issues for Apertre 3.0

Look for issues labeled:

  • ๐Ÿท๏ธ good first issue - Perfect for beginners
  • ๐Ÿท๏ธ apertre3.0 - Specifically for program participants
  • ๐Ÿท๏ธ documentation - Great for getting started
  • ๐Ÿท๏ธ help wanted - We need your help!

๐Ÿท๏ธ PR Labels

Maintain proper labels before merging any Pull Requests.

Available Labels: easy, medium, hard, apertre3.0

Rule Description
โš ๏ธ MANDATORY apertre3.0 label is required for all PRs from program participants
โš ๏ธ ONE Only Admin should give only ONE difficulty label (easy, medium, or hard) per PR

๐Ÿšจ Points System

Earn points for your contributions based on difficulty!

Difficulty Points
EASY 5 PTS
MEDIUM 7 PTS
HARD 10 PTS

๐Ÿ† Points contribute to the Apertre 3.0 leaderboard!

Getting Help

  • ๐Ÿ’ฌ Discord: Join our community server
  • ๐Ÿ“ Issues: Ask questions on GitHub issues
  • ๐Ÿ“š Docs: Read CONTRIBUTING.md and ARCHITECTURE.md

๐Ÿ”ฎ Roadmap

Current Focus

  • Internshala scraper
  • Basic automation pipeline
  • LinkedIn scraper
  • Indeed scraper
  • Multi-platform unified scraper

Future Plans

  • Chrome extension for quick applications
  • Mobile app
  • Interview preparation AI
  • Salary negotiation assistant

๐Ÿ“Š Architecture Overview

For a detailed technical deep-dive, see ARCHITECTURE.md.

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                      Frontend (React)                        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                         โ”‚ REST API
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              Backend API (NestJS + TypeScript)               โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”‚
โ”‚  โ”‚ ScrapersService โ”‚ MatchingService โ”‚ LlmService      โ”‚    โ”‚
โ”‚  โ”‚ ApplicationsService โ”‚ AutomationService โ”‚ ...       โ”‚    โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ–ผ                 โ–ผ                 โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  PostgreSQL   โ”‚ โ”‚   Playwright  โ”‚ โ”‚  LLM Provider โ”‚
โ”‚  + pgvector   โ”‚ โ”‚   Browser     โ”‚ โ”‚ (Gemini/GPT)  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ›ก๏ธ Security

  • ๐Ÿ”’ Never commit .env files
  • ๐Ÿ”‘ Rotate API keys regularly
  • ๐Ÿ” Use environment variables for secrets
  • ๐Ÿ•ต๏ธ Credentials are only used during automation sessions

๐Ÿ“ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿ™ Acknowledgments


Built with โค๏ธ by Jayati Ahuja and contributors

โญ Star this repo if you find it helpful! โญ

Report Bug ยท Request Feature ยท Join Community

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages