Skip to content

About

AI-powered job discovery, resume tailoring, and application assistant.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

AI Job Agent

An AI-powered job discovery and application assistant that helps users discover relevant software and AI/ML opportunities, analyze job fit using LLMs, manage resumes, and track applications from a single platform.

πŸš€ Overview

AI Job Agent is a full-stack AI application designed to simplify the job-search process.

The platform aggregates jobs from multiple hiring platforms, allows users to search and filter opportunities, and provides AI-powered analysis to help candidates understand their suitability for a particular role.

The application also provides user authentication, profile management, resume management, and application tracking.


✨ Features

πŸ” Authentication

Authentication is handled using Supabase Auth.

Supported authentication methods:

  • Email/password authentication
  • Email confirmation
  • Google OAuth
  • Persistent authentication sessions
  • Secure sign-out

Email confirmation emails are configured through Gmail SMTP using a Google App Password.

πŸ“§ Email System

The application uses:

  • Supabase Auth for authentication
  • Gmail SMTP for transactional authentication emails
  • Email confirmation for newly created accounts

The email flow is:

Create Account
      ↓
Supabase Auth
      ↓
Gmail SMTP
      ↓
Confirmation Email
      ↓
User confirms email
      ↓
Account activated

Gmail SMTP configuration uses:

SMTP Host: smtp.gmail.com
SMTP Port: 465
Authentication: Gmail App Password

The Gmail App Password is stored securely in the Supabase SMTP configuration and is never stored in the source code.


πŸ’Ό Job Discovery

AI Job Agent aggregates job opportunities from multiple hiring platforms.

Supported Sources

  • Greenhouse
  • Lever
  • Ashby
  • Workable

Users can search jobs using:

  • Job role
  • Location
  • Seniority
  • Remote-only preference

The architecture allows additional ATS/job-board integrations to be added independently.


πŸ€– AI-Powered Job Matching

The application uses Groq for fast LLM inference.

The current job-fit analysis uses:

Groq
  ↓
openai/gpt-oss-120b

AI analysis can consider:

  • Job description
  • Required skills
  • Candidate skills
  • Candidate experience
  • Technical background
  • Matching qualifications
  • Missing qualifications

The analysis is triggered when the user chooses to calculate their fit for a job.

Job Fit Pipeline

Job Description
       ↓
Job Parser
       ↓
Structured Job Data
       ↓
Candidate Profile
       ↓
Resume Information
       ↓
Groq LLM
       ↓
AI Job Fit Analysis
       ↓
Match Explanation

The application does not run an expensive LLM analysis for every job during the initial search. AI analysis is performed when the user actually requests a fit analysis.


🧠 Embeddings & Semantic Matching

The backend also contains an embedding service for semantic job/candidate matching.

The architecture supports embedding-based retrieval where job descriptions and candidate information can be converted into vector representations and compared based on semantic similarity.

This allows the system to move beyond simple keyword matching.

Planned/ongoing improvements include:

  • Semantic job retrieval
  • Resume-job similarity
  • Skill-gap analysis
  • Candidate ranking based on relevance
  • Hybrid retrieval + LLM reasoning

πŸ“„ Resume Management

The resume system is designed to support:

  • Resume upload
  • Resume parsing
  • Resume information extraction
  • Structured resume data
  • Resume management
  • Resume-job matching

The resume information can later be used by the AI job-matching pipeline.

Resume Pipeline

Resume Upload
      ↓
Resume Parser
      ↓
Extract Resume Information
      ↓
Structured Resume
      ↓
Candidate Profile
      ↓
Job Matching

πŸ‘€ Profile Management

Users can manage their personal information through the profile section.

Profile information includes:

  • First name
  • Last name
  • Phone number
  • Date of birth
  • Gender
  • Profile photo
  • Education
  • Skills
  • Experience
  • Job preferences
  • Resume

The profile is associated with the authenticated Supabase user.


πŸ“‹ Application Tracking

The application includes an application-tracking system for managing job applications.

Supported/planned application states include:

Saved
  ↓
Applied
  ↓
Interview
  ↓
Offer / Rejected

Users can maintain application history and track the status of opportunities they have applied to.


🎨 User Interface

The frontend is built with Streamlit and customized using HTML/CSS.

The application includes:

  • Modern navigation bar
  • Profile dropdown
  • Floating profile card
  • Light/dark theme
  • Responsive layout
  • Job search interface
  • Job cards
  • Profile management
  • Resume management
  • Application tracking

The UI is designed around a clean, minimal interface inspired by modern job-search platforms.


πŸ—οΈ Architecture

                         AI JOB AGENT
                              β”‚
                β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                β”‚                           β”‚
             Frontend                    Backend
                β”‚                           β”‚
           Streamlit                  Python Services
                β”‚                           β”‚
                β”‚              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                β”‚              β”‚            β”‚            β”‚
                β”‚          Job Sources   AI/LLM      Database
                β”‚              β”‚            β”‚            β”‚
                β”‚              β”‚          Groq       Supabase
                β”‚              β”‚            β”‚
                β”‚              β”‚       Job Scoring
                β”‚              β”‚
                β”‚        β”Œβ”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”
                β”‚        β”‚           β”‚
                β”‚    Greenhouse    Lever
                β”‚    Ashby         Workable
                β”‚
                └────────────────────────────────────────

πŸ› οΈ Tech Stack

Frontend

  • Python
  • Streamlit
  • HTML
  • CSS
  • JavaScript where required

Backend

  • Python
  • REST APIs
  • ATS integrations
  • Modular service architecture

Authentication

  • Supabase Auth
  • Google OAuth
  • Email/password authentication
  • Gmail SMTP
  • Google App Passwords

Database

  • Supabase
  • PostgreSQL
  • Row Level Security (RLS)

AI / ML

  • Groq
  • openai/gpt-oss-120b
  • Embeddings
  • NLP
  • Resume parsing
  • Structured job analysis
  • Semantic matching

πŸ—„οΈ Database

The application uses Supabase PostgreSQL for persistent data.

Current tables include:

profiles
resumes
jobs
saved_jobs
applications
job_fit_analyses
recent_searches

Row Level Security is enabled to protect user-specific data.


πŸ”„ Job Aggregation Pipeline

                         User Search
                              β”‚
                              β–Ό
                     Job Aggregator
                              β”‚
             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
             β”‚                β”‚                β”‚
             β–Ό                β–Ό                β–Ό
        Greenhouse          Lever            Ashby
             β”‚                β”‚                β”‚
             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
                              β–Ό
                          Workable
                              β”‚
                              β–Ό
                     Normalize Jobs
                              β”‚
                              β–Ό
                       Filter Jobs
                              β”‚
                              β–Ό
                       Search Results
                              β”‚
                              β–Ό
                         User

πŸ€– AI Job Fit Pipeline

                    Job Description
                           β”‚
                           β–Ό
                      Job Parser
                           β”‚
                           β–Ό
                  Structured Job Data
                           β”‚
                           β”‚
             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
             β”‚                           β”‚
             β–Ό                           β–Ό
      Candidate Profile               Resume
             β”‚                           β”‚
             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
                           β–Ό
                       Groq LLM
                  openai/gpt-oss-120b
                           β”‚
                           β–Ό
                   Job Fit Analysis
                           β”‚
                           β–Ό
                 Match Explanation

πŸ” Authentication Architecture

Email Authentication

User
 β”‚
 β–Ό
Create Account
 β”‚
 β–Ό
Supabase Auth
 β”‚
 β–Ό
Gmail SMTP
 β”‚
 β–Ό
Confirmation Email
 β”‚
 β–Ό
Email Confirmation
 β”‚
 β–Ό
Authenticated User

Google OAuth

User
 β”‚
 β–Ό
Continue with Google
 β”‚
 β–Ό
Google OAuth
 β”‚
 β–Ό
Supabase Callback
 β”‚
 β–Ό
Authorization Code
 β”‚
 β–Ό
Session Exchange
 β”‚
 β–Ό
Authenticated Application

πŸ“ Project Structure

AI-Job-Agent/
β”‚
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ models/
β”‚   β”‚   β”œβ”€β”€ job.py
β”‚   β”‚   β”œβ”€β”€ resume.py
β”‚   β”‚   └── structured_job.py
β”‚   β”‚
β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”œβ”€β”€ auth_service.py
β”‚   β”‚   β”œβ”€β”€ embedding_service.py
β”‚   β”‚   β”œβ”€β”€ job_aggregator.py
β”‚   β”‚   β”œβ”€β”€ job_filter.py
β”‚   β”‚   β”œβ”€β”€ job_parser.py
β”‚   β”‚   β”œβ”€β”€ job_scorer.py
β”‚   β”‚   β”œβ”€β”€ llm_service.py
β”‚   β”‚   β”œβ”€β”€ resume_parser.py
β”‚   β”‚   └── supabase_service.py
β”‚   β”‚
β”‚   └── sources/
β”‚       β”œβ”€β”€ ashby.py
β”‚       β”œβ”€β”€ base.py
β”‚       β”œβ”€β”€ greenhouse.py
β”‚       β”œβ”€β”€ lever.py
β”‚       └── workable.py
β”‚
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   └── navbar.py
β”‚   β”‚
β”‚   β”œβ”€β”€ styles/
β”‚   β”‚   └── theme.py
β”‚   β”‚
β”‚   β”œβ”€β”€ views/
β”‚   β”‚   β”œβ”€β”€ applications.py
β”‚   β”‚   β”œβ”€β”€ auth.py
β”‚   β”‚   β”œβ”€β”€ jobs.py
β”‚   β”‚   β”œβ”€β”€ profile.py
β”‚   β”‚   └── resume.py
β”‚   β”‚
β”‚   └── streamlit_app.py
β”‚
β”œβ”€β”€ tests/
β”‚
β”œβ”€β”€ .env
β”œβ”€β”€ .gitignore
β”œβ”€β”€ requirements.txt
└── README.md

βš™οΈ Installation

1. Clone the repository

git clone https://github.com/YOUR_USERNAME/AI-Job-Agent.git
cd AI-Job-Agent

2. Create a virtual environment

Windows:

python -m venv job-agent-env

Activate it:

.\job-agent-env\Scripts\Activate.ps1

3. Install dependencies

pip install -r requirements.txt

4. Configure environment variables

Create a .env file in the project root.

Example:

SUPABASE_URL=your_supabase_project_url
SUPABASE_KEY=your_supabase_publishable_key
GROQ_API_KEY=your_groq_api_key

Additional environment variables may be required as the application grows.

5. Run the application

streamlit run frontend\streamlit_app.py

The application will normally be available at:

http://localhost:8501

πŸ”‘ Environment & Security

Never commit credentials to GitHub.

The following must remain private:

  • .env
  • Supabase credentials
  • Groq API key
  • Gmail App Password
  • OAuth secrets
  • Database credentials

Recommended .gitignore entries:

.env
.env.*
!.env.example

__pycache__/
*.py[cod]

.venv/
venv/
job-agent-env/

.streamlit/secrets.toml

πŸ§ͺ Testing

Tests are located in:

tests/

Run all tests:

pytest

Run a specific test:

pytest tests/test_greenhouse.py

🧩 Backend Services

auth_service.py

Handles:

  • Sign up
  • Sign in
  • Sign out
  • Google OAuth
  • Session management

supabase_service.py

Handles Supabase client initialization and authentication session storage.

job_aggregator.py

Coordinates multiple job sources and combines their results.

job_filter.py

Filters jobs according to search criteria.

job_parser.py

Extracts structured information from job descriptions.

job_scorer.py

Handles AI-assisted job-fit analysis.

llm_service.py

Provides the LLM interface used by the application.

embedding_service.py

Provides embedding functionality for semantic matching.

resume_parser.py

Processes uploaded resumes and extracts relevant information.


πŸ—ΊοΈ Roadmap

Phase 1 β€” Foundation

  • Streamlit application
  • Supabase integration
  • Email authentication
  • Email confirmation
  • Gmail SMTP
  • Google OAuth
  • Persistent authentication
  • Light/dark theme
  • Navigation
  • Profile menu

Phase 2 β€” Job Discovery

  • Greenhouse integration
  • Lever integration
  • Ashby integration
  • Workable integration
  • Job aggregation
  • Job filtering
  • Job search interface

Phase 3 β€” Candidate Profile

  • Profile interface
  • Profile editor
  • Profile photo upload
  • Phone number
  • Date of birth
  • Gender
  • Education
  • Skills
  • Experience
  • Job preferences

Phase 4 β€” Resume Intelligence

  • Resume upload
  • Resume parsing
  • Structured resume extraction
  • Resume editing
  • Multiple resumes
  • Resume-job matching

Phase 5 β€” AI Matching

  • Job parsing
  • Groq LLM integration
  • AI job-fit analysis
  • Job scoring
  • Improved semantic retrieval
  • Embedding-based matching
  • Skill-gap analysis
  • Candidate-job similarity

Phase 6 β€” Applications

  • Save jobs
  • Application tracking
  • Application status management
  • Application history
  • Application reminders
  • Application analytics

Phase 7 β€” AI Application Assistant

  • Tailored resume generation
  • Cover-letter generation
  • Application preparation
  • Browser-based application assistance
  • Playwright automation
  • Manual fallback for unsupported application flows

Phase 8 β€” Deployment

  • Production deployment
  • Production OAuth configuration
  • Production database configuration
  • Secure secrets management
  • Monitoring
  • Error logging

🚧 Project Status

AI Job Agent is currently under active development.

The core foundation includes:

  • Supabase authentication
  • Google OAuth
  • Email confirmation
  • Gmail SMTP
  • Supabase PostgreSQL
  • Row Level Security
  • Multiple ATS integrations
  • Job aggregation
  • Job filtering
  • AI-powered job-fit analysis
  • Groq LLM integration
  • Embedding infrastructure
  • Resume parsing infrastructure
  • Modern Streamlit UI
  • Light/dark themes
  • User profile interface
  • Application tracking infrastructure

The next development stages focus on completing the candidate profile, resume intelligence, semantic job matching, application tracking, and AI-assisted application workflow.


πŸ“„ License

This project is currently intended for educational and development purposes.

A formal open-source license can be added when the project is ready for public release.


AI Job Agent

Discover jobs. Understand your fit. Apply smarter.

About

AI-powered job discovery, resume tailoring, and application assistant.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages