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.
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.
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.
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.
AI Job Agent aggregates job opportunities from multiple hiring platforms.
- 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.
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 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.
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
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 Upload
β
Resume Parser
β
Extract Resume Information
β
Structured Resume
β
Candidate Profile
β
Job Matching
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.
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.
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.
AI JOB AGENT
β
βββββββββββββββ΄ββββββββββββββ
β β
Frontend Backend
β β
Streamlit Python Services
β β
β ββββββββββββββΌβββββββββββββ
β β β β
β Job Sources AI/LLM Database
β β β β
β β Groq Supabase
β β β
β β Job Scoring
β β
β βββββββ΄ββββββ
β β β
β Greenhouse Lever
β Ashby Workable
β
βββββββββββββββββββββββββββββββββββββββββ
- Python
- Streamlit
- HTML
- CSS
- JavaScript where required
- Python
- REST APIs
- ATS integrations
- Modular service architecture
- Supabase Auth
- Google OAuth
- Email/password authentication
- Gmail SMTP
- Google App Passwords
- Supabase
- PostgreSQL
- Row Level Security (RLS)
- Groq
openai/gpt-oss-120b- Embeddings
- NLP
- Resume parsing
- Structured job analysis
- Semantic matching
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.
User Search
β
βΌ
Job Aggregator
β
ββββββββββββββββββΌβββββββββββββββββ
β β β
βΌ βΌ βΌ
Greenhouse Lever Ashby
β β β
ββββββββββββββββββΌβββββββββββββββββ
β
βΌ
Workable
β
βΌ
Normalize Jobs
β
βΌ
Filter Jobs
β
βΌ
Search Results
β
βΌ
User
Job Description
β
βΌ
Job Parser
β
βΌ
Structured Job Data
β
β
βββββββββββββββ΄ββββββββββββββ
β β
βΌ βΌ
Candidate Profile Resume
β β
βββββββββββββββ¬ββββββββββββββ
β
βΌ
Groq LLM
openai/gpt-oss-120b
β
βΌ
Job Fit Analysis
β
βΌ
Match Explanation
User
β
βΌ
Create Account
β
βΌ
Supabase Auth
β
βΌ
Gmail SMTP
β
βΌ
Confirmation Email
β
βΌ
Email Confirmation
β
βΌ
Authenticated User
User
β
βΌ
Continue with Google
β
βΌ
Google OAuth
β
βΌ
Supabase Callback
β
βΌ
Authorization Code
β
βΌ
Session Exchange
β
βΌ
Authenticated Application
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
git clone https://github.com/YOUR_USERNAME/AI-Job-Agent.git
cd AI-Job-AgentWindows:
python -m venv job-agent-envActivate it:
.\job-agent-env\Scripts\Activate.ps1pip install -r requirements.txtCreate 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_keyAdditional environment variables may be required as the application grows.
streamlit run frontend\streamlit_app.pyThe application will normally be available at:
http://localhost:8501
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.tomlTests are located in:
tests/
Run all tests:
pytestRun a specific test:
pytest tests/test_greenhouse.pyHandles:
- Sign up
- Sign in
- Sign out
- Google OAuth
- Session management
Handles Supabase client initialization and authentication session storage.
Coordinates multiple job sources and combines their results.
Filters jobs according to search criteria.
Extracts structured information from job descriptions.
Handles AI-assisted job-fit analysis.
Provides the LLM interface used by the application.
Provides embedding functionality for semantic matching.
Processes uploaded resumes and extracts relevant information.
- Streamlit application
- Supabase integration
- Email authentication
- Email confirmation
- Gmail SMTP
- Google OAuth
- Persistent authentication
- Light/dark theme
- Navigation
- Profile menu
- Greenhouse integration
- Lever integration
- Ashby integration
- Workable integration
- Job aggregation
- Job filtering
- Job search interface
- Profile interface
- Profile editor
- Profile photo upload
- Phone number
- Date of birth
- Gender
- Education
- Skills
- Experience
- Job preferences
- Resume upload
- Resume parsing
- Structured resume extraction
- Resume editing
- Multiple resumes
- Resume-job matching
- Job parsing
- Groq LLM integration
- AI job-fit analysis
- Job scoring
- Improved semantic retrieval
- Embedding-based matching
- Skill-gap analysis
- Candidate-job similarity
- Save jobs
- Application tracking
- Application status management
- Application history
- Application reminders
- Application analytics
- Tailored resume generation
- Cover-letter generation
- Application preparation
- Browser-based application assistance
- Playwright automation
- Manual fallback for unsupported application flows
- Production deployment
- Production OAuth configuration
- Production database configuration
- Secure secrets management
- Monitoring
- Error logging
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.
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.