Skip to main content

⚡ JobAgent - Autonomous Multi-Platform AI Job Application Agent

PyPI version Python 3.10+ License: MIT Playwright

An autonomous AI agent designed to search, evaluate, match technical skills, dynamically fill application forms, and submit job applications across LinkedIn Easy Apply and Naukri.com Quick Apply.

Equipped with a Web UI Control Center, Interactive Conversational AI Chat, ATS Resume Reviewer, Multi-Page Pagination, and Strict Technical Skill Matching.


📌 IMPORTANT NOTES FOR NEW USERS (READ BEFORE FIRST RUN)

[!IMPORTANT]

  1. Zero Credential / Password Storage: JobAgent never asks for, accesses, or saves your LinkedIn or Naukri passwords in plaintext or files. Authentication occurs strictly inside a visible Playwright Chromium browser window.

  2. One-Time Platform Sign-In (Option [1] / jobagent --signin): When you first launch jobagent, choose Option [1] 🔑 Sign In / Verify Platform Accounts (or run jobagent --signin). A visible browser opens allowing you to log into LinkedIn and/or Naukri once (including entering your 2FA/OTP if enabled). Your authenticated session cookies and security tokens are permanently saved inside your local user data directory (.browser_context/). All subsequent runs reuse these saved sessions without asking you to log in again.

  3. Automatic Playwright Browser Installation: JobAgent features self-healing browser launching. If Playwright's Chromium browser is missing on your machine (common on new pip installs or Python 3.14+), JobAgent detects this and downloads Chromium binaries automatically on first startup. You do not need to run manual terminal commands.

  4. Safe DRY-RUN Mode Available: If you want to test the entire automation pipeline safely without actually submitting applications, toggle Safe DRY-RUN Mode (--dry-run or select Yes when prompted). The agent will search, evaluate, load jobs, and fill out forms up to the final review step, then cleanly dismiss the dialog.

  5. Candidate Profile as Single Source of Truth: During the first-time setup wizard, JobAgent parses your resume PDF, extracts your technical skills, experience, designation, and target roles, and saves your profile to candidate_profile.json. You can update your resume PDF anytime via Option [8] or edit preferences via Option [7].


🚀 Quick Start (Under 60 Seconds)

1. Install via pip

pip install --upgrade jobagent

2. Launch JobAgent

Run in any terminal (PowerShell, Command Prompt, macOS/Linux Terminal):

jobagent

On your first run:

  1. JobAgent guides you through an onboarding wizard to configure your resume, target roles, location, and CTC preferences.
  2. Select Option [1] to log into your LinkedIn / Naukri accounts once.
  3. Select Option [2] to start applying, Option [5] to launch the Web UI Dashboard, or Option [3] to chat with the agent!

🎮 Interactive Menu Options

When you run jobagent, you are greeted with the interactive assistant:

=====================================================
           AI Job Application Agent CLI              
  Autonomous Multi-Platform Applications: LinkedIn & Naukri 
=====================================================

What would you like to do?
  [1] 🔑 Sign In / Verify Platform Accounts (Save LinkedIn & Naukri login permanently)
  [2] 🚀 Direct Apply to Jobs (LinkedIn, Naukri, or Both)
  [3] 💬 Chat with Agent (Search & apply, update details, ask questions)
  [4] 📋 View All Applied Jobs (Full history, links & status)
  [5] 🖥️  Launch Professional Web UI Dashboard
  [6] 📄 Run AI ATS Resume Review & Gap Analysis
  [7] ✏️  Edit Candidate Profile & Preferences
  [8] 📎 Update Resume PDF
  [9] 📊 View Session History & Memory Rules
  [0] 🚪 Exit

💻 CLI Command Line Shortcuts

You can also run specific modes directly via CLI flags:

Command Action
jobagent Launch interactive menu
jobagent --signin Open visible browser to sign into LinkedIn/Naukri and save session
jobagent --ui Launch Web UI Control Center at http://127.0.0.1:8000
jobagent --chat Start interactive conversational chat mode
jobagent --applied-jobs View full history table of applied jobs (with local timestamps)
jobagent --review-resume Run AI ATS Resume Review & Gap Analysis
jobagent --keyword "SDET" --location "Hyderabad" --max-jobs 10 Direct search & apply
jobagent --keyword "QA" --dry-run Run in safe simulation mode (no submissions)
jobagent --auto-approve Autonomous mode (skips manual confirmation step)

🧠 Core Architecture Highlights

1. Strict Technical Skill Matching & Incompatible Stack Gate

  • 50% Technical Skills | 30% Experience Fit | 20% Role Relevance.
  • Detects incompatible programming languages and frameworks (e.g. skips Python/C# postings if candidate's core stack is Java/Selenium/Playwright).
  • Requires at least 50% technical match before proceeding; non-matching posts are automatically skipped and logged with clear reasoning.

2. LinkedIn Multi-Page Search Pagination & Query Precision

  • Supports paginating across pages (start=0, 25, 50, 75...) to process up to 100+ job applications.
  • Enriches short queries (e.g. expanding "QA" to '"QA" OR "Quality Assurance" OR "SDET" OR "Test Automation"') to eliminate irrelevant postings.
  • Deep scrolling ensures up to 25 job cards per page are extracted.

3. Dynamic Form Filling & Memory Engine

  • Traverses multi-step Easy Apply and Quick Apply modals.
  • Intelligently maps text fields, dropdowns, radio buttons, numbers, and resume uploads.
  • Remembers previously answered employer questions (e.g., notice period, CTC, work authorization) in local memory so you never answer the same question twice.

4. Human-in-the-Loop (HITL) Gate

  • Pause before submitting each job application to inspect candidate CTC, notice period, and match breakdown, or enable Auto-Apply for 100% autonomous operation.

🛠️ Troubleshooting & FAQs

Q: Why is LinkedIn asking for login again?

Run Option [1] 🔑 Sign In / Verify Platform Accounts (or jobagent --signin). Sign into LinkedIn completely in the open browser. Once verified, session cookies are saved to .browser_context/ and persist indefinitely across all future runs.

Q: What happens if LinkedIn prompts for 2FA or CAPTCHA?

JobAgent detects security challenges, pauses automation, and displays an alert in the console. You can approve the prompt on your mobile LinkedIn app or solve the CAPTCHA in the open browser. The agent automatically detects verification and resumes where it left off.

Q: How do I change my target location, role, or CTC?

  • Select Option [7] ✏️ Edit Candidate Profile & Preferences from the interactive menu.
  • Or select Option [8] 📎 Update Resume PDF to upload an updated resume.

Q: Do I need an OpenAI or Gemini API Key?

An API key is optional. If you supply GEMINI_API_KEY or OPENAI_API_KEY, JobAgent uses LLM semantic reasoning. If left empty, JobAgent's built-in offline NLP heuristics perform deterministic extraction and matching automatically.


📄 License

MIT License. Created & maintained by Yaswanth Asapu.

Metadata

Release files for jobagent 1.0.21

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jobagent 1.0.21
File Size Uploaded Provenance Actions
jobagent-1.0.21.tar.gz 128.8 kB Without provenance Details for jobagent-1.0.21.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for jobagent 1.0.21
File Interpreter ABI Platform Actions
jobagent-1.0.21-py3-none-any.whl Python 3 none any Details for jobagent-1.0.21-py3-none-any.whl

Total release size: 268.2 kB

Release files / jobagent-1.0.21.tar.gz

Download URL jobagent-1.0.21.tar.gz
Size 128.8 kB
Tags Source
SHA-256 checksum
How to use checksums
f6aa5f3a70e271857b284d959b1c48e1321d3d80fd185353bd87d78bb57b9202
BLAKE2b-256 checksum
How to use checksums
23613ed7089eafa8e8cc154fc67f58b383817a992756c840b5480e5e1f0ad6ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.5

Release files / jobagent-1.0.21-py3-none-any.whl

Download URL jobagent-1.0.21-py3-none-any.whl
Size 139.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5082526bf31a2ff933b38d40d9a4055cc5add0fb5ea4f24a8adb4a2e221429e8
BLAKE2b-256 checksum
How to use checksums
6836f476e47a74aa7382fd84ab179dcf022eddbb198707b53b85c164fef09b02
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.5

Security for jobagent 1.0.21

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page