π Setup & User Documentation: https://developerosindia.github.io/career-engine/
π CareerOS Web App (Application Tracker): https://careeros.developeros.in/
developerOS is a suite of free tools for engineers' careers, covering learning, tracking and applying:
- CloudPrep: Teaches cloud certifications hands-on (AWS, GCP, Azure).
- ResumeOS: Tailors your ATS resume with semantic AI matching.
- CareerOS: Tracks applications, interviews, and offers in βΉ lakhs.
- DevTrack: Analyses developer engineering activity and git metrics.
- Insights: The engineering blog and industry salary benchmarks.
- Toolkit: Browser-native utilities for everyday developer workflows.
- CareerEngine (This Repository): The open-source automation layer: it applies to jobs through your own Chrome and runs on your machine. CareerOS is where you then track and compare what comes back.
βΉοΈ Everything shares one developerOS sign-in, one design system and the same dark palette. CareerEngine is a standalone tool and does not sync with CareerOS yet.
Automating job applications can breach the terms of service of platforms like LinkedIn and Naukri, and risks account restriction. CareerEngine uses authentic Google Chrome CDP remote debugging with human-like delays to minimize detection, but we strongly advise:
- Always run with
--previewor--dry-runfirst to inspect forms before submitting. - Keep application volume conservative (5β15 jobs per session).
- Do not run continuous unattended high-frequency loops.
- What stays strictly local: Your candidate master profile (
profile_config.json), resume PDFs, API keys (.env), and SQLite database (jobs.db) remain entirely on your local machine and are protected by git pre-push security hooks. - What uses the cloud: Only the raw text prompts of individual job screening questionnaires are evaluated via the Google Gemini API keys that you provide in
.env.
- CDP Remote Debugging Integration: Controls your authentic Google Chrome browser over port
9222, inheriting your active LinkedIn and Naukri sessions, cookies, and 2FA credentials. - Dynamic Form Intelligence:
- Automatically parses screening questionnaires across dropdowns (
<select>), radio buttons, text fields, and file upload modals. - Rotational Multi-LLM Engine: Round-robin rotation across multiple Google Gemini 3.x Flash-lite API keys (
gemini-3.5-flash-lite,gemini-3.1-flash-lite) with DeepSeek fallback to prevent rate limits. - Permanent QA Memory: Caches answered questions locally in
profile_config.jsonto resolve recurring prompts instantly without redundant API calls. - Form Validation Guardrails: Restricts numeric experience inputs to prevent form validation length errors (
maxlength=20).
- Automatically parses screening questionnaires across dropdowns (
- Contextual Multi-Role Resume Selector:
- Analyzes the job title and description in real-time and attaches the best matching resume PDF from
resumes/(_DE,_DS,_AI,_SWE,_MLOps).
- Analyzes the job title and description in real-time and attaches the best matching resume PDF from
- Recruiter InMail Auto-Reply Engine:
- Inspects incoming LinkedIn messaging threads and drafts personalized responses highlighting candidate strengths, confirmed notice period (e.g. 30 days), and expected compensation.
- 8 Fully Supported Platforms:
- LinkedIn: Easy Apply automation, multi-step screening Q&A, and Recruiter InMail auto-responder.
- Naukri: Batch Quick Apply, keyword and location filtering, chatbot question solver.
- Wellfound (AngelList): Startup opportunities with dynamic personalized cover pitch notes.
- Instahyre: Curated tech openings with automated compensation and experience solving.
- Indeed: Global and India Easily Apply modal automation, resume uploading, and dry-run preview verification.
- Glassdoor: Easy Apply automation, salary expectations, and screening form completion.
- Foundit (Monster India): Quick Apply pipeline with instant dry-run audits and job card pagination.
- Hirist: Premium tech & startup opportunities in India with automated experience matching and one-click application support.
- AI Cover Letter & Executive Memo Generator:
- Synthesizes personalized, high-converting cover letters across 3 tones (
startup,enterprise,concise). - Injects candidate metrics, solves hiring manager salutations, matches ATS keywords, and saves to
cover_letters/in Markdown and plain text.
- Synthesizes personalized, high-converting cover letters across 3 tones (
- Salary & Offer Negotiation Copilot:
- Benchmarks current vs offered compensation against empirical tech market distributions (
india_inr_lpa,us_remote_usd_k,eu_remote_eur_k). - Evaluates offers across P25, P50, P75, and P90 market bands.
- Generates 3 tactical counter-offer scenarios: standard counter, competing offer leverage, and total rewards pivot (sign-on bonus, equity/RSUs, remote flexibility).
- Supplies word-for-word email negotiation templates and live telephone talking points.
- Benchmarks current vs offered compensation against empirical tech market distributions (
- Stealth & Bot-Detection Safety Auditor:
- Pre-flight diagnostic engine checking Chrome CDP profile integrity, circadian pacing compliance (09:00β19:00), randomized jitter, session health, and daily velocity caps.
- Computes a comprehensive 0β100 Safety Score with risk classification (
OPTIMAL_STEALTH,MODERATE_RISK,HIGH_RISK).
- ATS Resume Keyword Tailor & Achievement Bullet Synthesizer:
- Compares any Job Description against your candidate profile facts and role tags.
- Detects high-priority keyword gaps and calculates baseline vs optimized ATS match scores.
- Synthesizes 3-4 quantified Google/Amazon XYZ-format achievement bullets and bespoke recruiter outreach pitch notes via multi-provider AI (Claude, OpenAI, Gemini, NVIDIA).
- Application Pipeline Analytics & Multi-Format Exporter:
- Computes conversion rates, daily velocity, platform distribution, and top targeted companies.
- Exports tracking history to standardized CSV, structured JSON, and executive Markdown reports.
- Relational Local History:
- Stored in SQLite database (
jobs.db) with preview screenshots saved inscreenshots/.
- Stored in SQLite database (
career-engine/
βββ docs/ # GitHub Pages Documentation Website (developerosindia.github.io/career-engine)
β βββ index.html # Responsive documentation & interactive playground
β βββ styles.css # Glassmorphism dark mode aesthetic
β βββ script.js # Tab switching, copy code, config generator
β βββ .nojekyll # Direct GitHub Pages asset serving
βββ resumes/ # Multi-Role Resumes Folder
β βββ copy_your_resume_here.txt # Placeholder & role tagging instructions
β βββ README.md # Documentation for _DE, _DS, _AI, _SWE tags
βββ .env # Private API keys and local configuration (GITIGNORED)
βββ .env.example # Public template for environment variables
βββ .gitignore # Git exclusion rules (protects credentials and databases)
βββ LICENSE # Open-source MIT License
βββ config.yaml # Application settings, keywords, and search preferences
βββ profile_config.json # Candidate master profile facts & learned memory
βββ main.py # Unified CLI entrypoint (apply, inmail, status, setup)
βββ setup_agent.py # Interactive profile & secrets configuration wizard
βββ agent.py # Backward-compatible wrapper for LinkedIn agent
βββ requirements.txt # Python dependencies
β
βββ core/ # Core framework infrastructure
β βββ __init__.py
β βββ config_loader.py # Loads .env & YAML with strict validation
β βββ browser_engine.py # Playwright CDP connection & stealth Chrome manager
β βββ tracker.py # SQLite (jobs.db) & CSV (applied_jobs.csv) tracking
β βββ models.py # Typed dataclasses (JobPosting, ApplicationRecord, InMailMessage)
β βββ cover_letter.py # AI Cover Letter & Executive Memo Generator
β βββ salary_negotiator.py # Salary & Offer Negotiation Copilot
β βββ stealth_auditor.py # Stealth & Anti-Bot Safety Pre-Flight Auditor
β βββ ats_tailor.py # ATS resume keyword matching & XYZ bullet engine
β βββ dedup_auditor.py # Cross-platform SHA-256 deduplication
β βββ recruiter_outreach.py # Recruiter cold email & LinkedIn InMail synthesizer
β βββ interview_prep.py # System design & behavioral STAR drill generator
β βββ studio/ # Local Web Studio GUI (port 8501)
β βββ server.py # Python ThreadingHTTPServer REST API
β βββ static/ # Pure CSS/JS dark-mode dashboard & Kanban
β
βββ ai/ # Multi-LLM reasoning engine
β βββ __init__.py
β βββ ai_solver.py # Rotational Gemini 3.x Flash-lite + NVIDIA DeepSeek + Claude + OpenAI
β βββ prompts.py # Structured system prompts (Form QA, InMail, Negotiation)
β
βββ platforms/ # Multi-platform job board architecture
β βββ __init__.py
β βββ base.py # BasePlatform abstract contract
β βββ linkedin/ # LinkedIn Easy Apply implementation
β βββ naukri/ # Naukri.com automated batch applicant & chatbot solver
β βββ wellfound/ # Connector for Wellfound / AngelList
β βββ instahyre/ # Connector for Instahyre curated tech openings
β βββ indeed/ # Connector for Indeed Apply
β βββ glassdoor/ # Connector for Glassdoor Easy Apply
β βββ foundit/ # Connector for Foundit (Monster India)
β βββ hirist/ # Connector for Hirist India tech jobs
β
βββ messaging/ # Recruiter InMail auto-reply engine
β βββ __init__.py
β βββ inmail_scanner.py # Scans /messaging/ for recruiter threads & InMails
β βββ message_drafter.py # Synthesizes personalized, professional replies
β βββ auto_responder.py # Review & send coordinator (preview vs live send)
β
βββ scripts/ # Utility & launch scripts
β βββ launch_chrome.sh # Launches Chrome on port 9222 with isolated profile
β
βββ .agents/skills/career-automator/ # Agent Skill definition for Antigravity / Claude
βββ SKILL.md
git clone https://github.com/developerOSindia/career-engine.git
cd career-engine
# Install required Python packages
pip install -r requirements.txtRun the interactive CareerEngine Setup Agent to automatically configure your profile, resume, search keywords, and API keys:
python3 main.py setup
# Or directly:
python3 setup_agent.pyThe setup agent will walk you through setting up your:
- Full name, contact details, and location
- Resume PDF path
- Target job keywords and experience years
- Current and expected compensation (CTC)
- Free Gemini API keys (from Google AI Studio)
- Local configuration (
.env,profile_config.json,config.yaml,jobs.db)
Note: All generated configuration files are strictly gitignored to keep your personal data local.
Run the launcher script in a separate terminal:
./scripts/launch_chrome.shNote: If you are not already logged into LinkedIn in this Chrome window, log in once. Your session will remain safely cached in
~/.chrome-job-agentacross restarts.
Navigates to matching jobs, fills every form step, attaches resume, captures review screenshots, and pauses without clicking submit:
python3 main.py apply --platform linkedin --dry-run --limit 5Applies and submits applications directly:
python3 main.py apply --platform linkedin --live --limit 10python3 main.py apply --keyword "Databricks Engineer" --location "Bengaluru" --live --limit 5Automatically queries Naukri across keywords (Senior Data Engineer, Databricks Engineer, AWS Data Engineer, etc.) in Bengaluru/Remote, scans 20 job cards per page, skips already applied jobs, fills applications via Quick Apply, and answers chatbot screening questions:
# Preview batch of 20 Naukri jobs in dry-run mode:
python3 main.py apply --platform naukri --dry-run --limit 20
# Live auto-submit 20 jobs on Naukri:
python3 main.py apply --platform naukri --live --limit 20
# Filter by custom keyword & location:
python3 main.py apply --platform naukri --keyword "Databricks Engineer" --location "Bengaluru" --live --limit 20Apply directly to any specific job link (such as top-tier email alerts or Aurus early-jobs):
# Preview application on a direct Naukri job link:
python3 main.py apply --platform naukri --url "https://www.naukri.com/aurus/early-jobs?jobId=290626926058..." --dry-run
# Live auto-apply on a direct Naukri job link:
python3 main.py apply --platform naukri --url "https://www.naukri.com/aurus/early-jobs?jobId=290626926058..." --live# Preview Wellfound startup applications with dynamic pitch notes:
python3 main.py apply --platform wellfound --dry-run --limit 5
# Live auto-submit applications on Wellfound:
python3 main.py apply --platform wellfound --live --limit 5
# Preview curated applications on Instahyre with automated screening Q&A:
python3 main.py apply --platform instahyre --dry-run --limit 5# Preview Indeed Easily Apply jobs in dry-run mode:
python3 main.py apply --platform indeed --dry-run --limit 5
# Live auto-submit Indeed applications:
python3 main.py apply --platform indeed --live --limit 10
# Preview Glassdoor Easy Apply jobs:
python3 main.py apply --platform glassdoor --dry-run --limit 5
# Preview Foundit (Monster India) Quick Apply jobs:
python3 main.py apply --platform foundit --dry-run --limit 5
# Preview Hirist tech job openings:
python3 main.py apply --platform hirist --dry-run --limit 5python3 main.py apply --platform all --dry-run --limit 10Analyze any job description against your candidate profile facts, calculate baseline vs optimized ATS match scores, detect missing high-priority technical keywords, and synthesize 3-4 quantified Google/Amazon XYZ-format achievement bullets and personalized recruiter pitch notes:
# Tailor resume by pasting job description text:
python3 main.py tailor --title "Senior Backend Engineer" --company "Stripe" --jd "Looking for Python, FastAPI, PostgreSQL, Distributed Systems, Redis, and Kubernetes..."
# Tailor resume from a local JD text file:
python3 main.py tailor --title "Lead Data Engineer" --company "Snowflake" --file path/to/job_description.txt
# Tailor resume directly for an already tracked application in jobs.db:
python3 main.py tailor --job-id "ind_104928"Export your full job application history from SQLite (jobs.db) to standard formats for spreadsheet analysis or team sharing:
# Export all applications to CSV:
python3 main.py export --format csv
# Export to structured JSON:
python3 main.py export --format json
# Export an executive Markdown pipeline report:
python3 main.py export --format markdown --output weekly_report.md
# View real-time pipeline conversion rates and platform breakdown:
python3 main.py analyticsLaunch the zero-dependency developerOS Web Studio dashboard in your browser to inspect database metrics, preview form screenshots, manage candidate profile memory, and trigger CLI runs:
# Launch Studio on default port 8501:
python3 main.py studio
# Specify custom port or bind address:
python3 main.py studio --port 8599 --host 127.0.0.1- Dashboard: Real-time KPI counters (
Applied,Dry Run Completed,Failed), status breakdown, and recent applications. - Applications Explorer: Searchable, filterable table of every job record with direct URLs, salary notes, timestamps, and 1-click Export to CSV.
- Resume Tailor: Dedicated interactive ATS keyword optimizer, bullet generator, and recruiter pitch writer.
- Run Orchestrator: Select platform (LinkedIn, Naukri, Wellfound, Instahyre, Indeed, Glassdoor, Foundit), mode (
LiveorDry Run), and application limit with real-time terminal output streaming. - Screenshot Lightbox: Visual gallery of review screenshots captured during
--previewand live runs. - Profile JSON Editor: Live viewer and editor for
profile_config.jsoncandidate facts and learned screening memory. - 100% On-Device: Built natively on Python's standard library
ThreadingHTTPServerwith zero cloud telemetry or data leaks.
Run CareerEngine on autonomous background auto-pilot with human circadian pacing, daily safety quota limits, multi-platform round-robin cycling across all 7 supported job boards, and automatic recruiter InMail answering:
# Launch Auto-Pilot in preview mode with safe defaults (180 min interval, 20 daily apps cap):
python3 main.py auto --interval 180 --daily-limit 20 --dry-run
# Launch Auto-Pilot in live auto-submit mode:
python3 main.py auto --interval 120 --daily-limit 15 --live
# Custom cycle interval and 24/7 unrestricted hours:
python3 main.py auto --interval 60 --session-limit 3 --all-hours --dry-run- Circadian Pacing: Only operates during business hours (09:00 - 19:00 local time) by default to avoid unnatural overnight bot activity.
- Daily Safety Quotas: Enforces hard caps (e.g. 20 applications/day total) in SQLite
jobs.db. Once reached, rests until the next day. - Round-Robin Multi-Platform: Cycles evenly across LinkedIn, Naukri, Wellfound, Instahyre, Indeed, Glassdoor, and Foundit.
- InMail Monitoring Loop: Automatically inspects and answers unread recruiter inquiries after each batch.
- Randomized Jitter: Varies sleep intervals by Β±10% to eliminate static cron fingerprints.
- GUI Controls: Can also be started, paused, and monitored visually from the Web Studio dashboard (
http://localhost:8501).
Scans your unread LinkedIn messages, analyzes recruiter inquiries, and displays proposed replies in the terminal without sending:
python3 main.py inmail --preview --limit 5Types and delivers AI-crafted responses directly into the message thread:
python3 main.py inmail --send --limit 5python3 main.py inmail --preview --allInspect your complete application pipeline, status breakdown, and recent recruiter contacts:
python3 main.py statusExample Output:
============================================================
π CareerEngine - Application Status Dashboard
π Database: ./jobs.db
============================================================
π Applications Breakdown by Status:
β
Applied : 35
π― Dry Run Completed : 4
βοΈ Failed : 7
β οΈ Needs Review : 3
βοΈ Skipped : 72
π Last 10 Submitted Applications:
β’ Full Stack Engineer with Mobile @ Full Stack Engineer wi [Remote] | Hirer: Gayatri A
β’ Software Engineer Intern (golang @ Software Engineer Inte [Remote]
β’ Cloud Support Engineer @ Cloud Support Engineer [Remote]
β’ Senior AI Compiler Engineer @ Senior AI Compiler Eng [Remote] | Hirer: Uday Bhaskar
β’ Senior Statistical Programmer wi @ Senior Statistical Pro [Remote] | Hirer: Anchal Panchal
β’ Linux Kernel Engineer @ Linux Kernel Engineer [Remote]
β’ Software Engineer @ Software Engineer [Remote] | Hirer: Khursheed Ahmed
β’ Remote Java Developer @ Remote Java Developer [Remote]
β’ (Senior) ServiceNow AI Engineer @ (Senior) ServiceNow AI [Remote] | Hirer: Ravi prajapati
============================================================
Audit and benchmark your candidate profile completeness, market readiness, and ATS fit before launching automated application campaigns:
# Run local deterministic ATS scoring and audit:
python3 main.py score
# Run scoring with AI executive critique from connected LLM (Claude, OpenAI, or Gemini):
python3 main.py score --llmEvaluated Criteria (100 Points Total):
- Contact & Online Presence (15 pts): Full name, verified email, telephone with country code, location anchor, and active LinkedIn / GitHub / portfolio links.
- Work Experience & Compensation Fundamentals (25 pts): Current role, company, years of experience, metric-rich achievement descriptions, notice period calibration, and current vs. expected CTC in LPA.
- Technical Skill Density & Recency (20 pts): Skill catalog breadth, core programming languages, relational/NoSQL databases, cloud infrastructure, and modern specializations.
- Multi-Role Resume Tag Readiness (20 pts): Physical PDF resumes in
resumes/folder tagged with_DE,_DS,_AI,_SWE, and_MLOpsfor automated dynamic role switching. - Screening Memory & Automation Defaults (20 pts): Legal work authorization, visa sponsorship flags, joining availability, and cached
custom_answersdepth.
Produces an overall score, letter grade (A+, A, B+, B, C), multi-role fit % for 5 engineering tracks, and prioritized actionable recommendations to achieve 100%.
Generate high-converting, ATS-tailored cover letters that automatically pull your verified profile facts, match target role requirements, and export clean Markdown into cover_letters/:
# Generate a startup-tone cover letter:
python3 main.py cover-letter --company "Netflix" --title "Senior Distributed Systems Engineer" --tone startup
# Enterprise executive tone with specific hiring manager salutation:
python3 main.py cover-letter --company "Goldman Sachs" --title "Lead Cloud Architect" --hiring-manager "Sarah Jenkins" --tone enterprise
# Concise 3-paragraph executive memo:
python3 main.py cover-letter --company "Stripe" --title "Staff Software Engineer" --tone concise --save custom_letter.md- 3 Calibrated Tones:
startup(mission-driven, high agency),enterprise(structured impact, governance, scale),concise(tight executive pitch under 250 words). - Fact-Grounded: Uses your actual skills, experience, and key accomplishments from
profile_config.json. - Zero Cloud Leak Fallback: If no AI API key is configured or offline, seamlessly falls back to a deterministic heuristic template generator.
Data-driven compensation benchmarking and tactical counter-offer script generator. Evaluates candidate offers against real-world tech salary distributions across India, US, and European markets:
# Benchmark an offer for a Senior Backend Engineer in India (INR LPA):
python3 main.py negotiate --role "Senior Backend Engineer" --experience 6 --offered 34 --current 26 --market india_inr_lpa
# Benchmark a US Remote Staff Engineer offer (USD $k):
python3 main.py negotiate --role "Staff Software Engineer" --experience 9 --offered 195 --target 225 --market us_remote_usd_k
# Leverage a competing offer in tactical negotiation scripts:
python3 main.py negotiate --role "Lead Data Engineer" --experience 7 --offered 42 --competing 48 --market india_inr_lpa- Empirical Market Benchmarks: Built-in P25, P50, P75, and P90 compensation distributions across India (INR LPA), US Remote (USD $k), and EU Remote (EUR β¬k) for SWE, Data, Cloud, and Engineering Leadership.
- Offer Health Rating: Classifies offers from
BELOW_MARKETtoTOP_PERCENTILE. - 3 Tactical Action Plans:
- Standard Counter-Offer: Assertive, grounded in target percentiles.
- Competing Offer Leverage: High-urgency professional counter script.
- Total Rewards Pivot: Structured trade-offs for sign-on bonus, equity/RSU vesting, and remote schedule flexibility when base salary is fixed.
- Ready-to-Send Deliverables: Generates word-for-word email draft responses and bulleted telephone talking points.
Pre-flight diagnostic test checking your local automation environment to verify anti-bot compliance, humanized pacing, and Chrome CDP profile hygiene:
# Run local stealth and account safety audit:
python3 main.py audit-stealth- Audited Vectors:
- Chrome CDP Profile: Checks for authentic isolated user profile directory (
~/.chrome-job-agent). - Circadian Pacing: Verifies current time falls within human working hours (09:00β19:00 local time).
- Timing Jitter: Confirms randomized delay ranges (3.0s β 12.0s) to prevent static cron signature detection.
- Daily Velocity Quota: Audits
jobs.dbapplication count over the last 24 hours against safe daily caps (max 25/day). - Platform Session Status: Checks for cached authentication cookies and active sessions across LinkedIn and Naukri.
- Chrome CDP Profile: Checks for authentic isolated user profile directory (
- Safety Score: Produces an overall 0β100 rating with clear risk tiers:
OPTIMAL_STEALTH(85+),MODERATE_RISK(60β84), andHIGH_RISK(<60).
CareerEngine pairs candidate profiles with deep job description evaluation:
- Semantic Scoring (0β100%): Uses Google Gemini to score role alignment against candidate experience before applying.
- Resume Tag Alignment: Recommends the optimal resume tag (
_DE,_DS,_AI,_SWE,_MLOps) and pairs it with matching resume PDFs. - Dynamic Startup Pitch Generator: Automatically synthesizes high-converting, personalized 2β3 sentence notes to founders and recruiters on platforms like Wellfound and LinkedIn InMail, emphasizing verified achievements and notice period without fluff.
CareerEngine can automatically choose between multiple tailored resumes depending on the job you are applying to. Simply place your resume PDFs into the resumes/ folder using role tags:
| Target Role | Filename Pattern | Examples |
|---|---|---|
| Data Engineering | *_DE*.pdf, *_data_engineer*.pdf |
resumes/Alex_DE_resume.pdf |
| Data Science / ML | *_DS*.pdf, *_data_science*.pdf |
resumes/Alex_DS_resume.pdf |
| AI / GenAI Platforms | *_AI*.pdf, *_genai*.pdf, *_llm*.pdf |
resumes/Alex_AI_resume.pdf |
| Software Engineering | *_SWE*.pdf, *_software*.pdf, *_backend*.pdf |
resumes/Alex_SWE_resume.pdf |
| MLOps / Cloud | *_MLOps*.pdf, *_devops*.pdf |
resumes/Alex_MLOps_resume.pdf |
CareerEngine analyzes the job title and description in real-time and attaches the best matching resume automatically.
The candidate facts used to answer form questions and compose recruiter messages are defined locally in profile_config.json:
| Metric / Fact | Default Example | Rules Enforced |
|---|---|---|
| Total Experience | Configurable (e.g. 5 yrs) | Used for experience verification |
| Current Role | Configurable | Verified from profile summary |
| Current CTC | Configurable (e.g. 30 LPA) | Fixed base + variable split |
| Expected CTC | Configurable (e.g. 40 LPA) | Enforced on compensation fields |
| Notice Period | Configurable (e.g. 30 days) | Answered across dropdowns & numeric inputs |
| Core Technical Skills | Configurable | Filtered against role requirements |
| Location Authorization | Configurable | Work authorization & relocation preferences |
Whenever a new unique question is encountered, the AI generates the appropriate response based on your profile and records it into profile_config.json["custom_answers"]. You can edit or fine-tune any saved response directly in that file.
- Realistic Delays:
- Dwell time on job pages (2.5s) before interacting.
- Delays between questionnaire steps (1.2s β 1.8s).
- Human keystroke jitter (30ms β 90ms per character).
- 3.5s cooldown between consecutive job applications.
- Batch Processing: Designed to run in batches of 5 to 15 applications per session to keep account activity completely organic.
- Safe Form Discard: Incomplete applications or unsupported multi-stage assessments are cleanly discarded using LinkedIn's
Discardmodal, preventing unwanted draft accumulations on your profile.
To implement a new job board (e.g. naukri, wellfound, indeed):
- Navigate to
platforms/<platform_name>/connector.py. - Inherit from
BasePlatformand implement:authenticate_or_check_session(): Validates session cookies.search_jobs(): Extracts job listings and IDs.apply_to_job(): Automates form filling on that platform.
- The platform is immediately runnable via
python3 main.py apply --platform <name>.
| Feature / Architecture | CareerEngine (Open Source) | Legacy Python Bots (Selenium) | Browser Extensions |
|---|---|---|---|
| Execution Architecture | Authentic Chrome CDP (9222) | Headless / Selenium | In-page DOM Injection |
| Detection Evasion | Genuine Session & 2FA Cookies | Flagged / Triggers CAPTCHA | Detected by security scripts |
| Questionnaire AI | Rotational Gemini 3.x Flash-lite | Hardcoded regex lists | Single key / Paid cloud |
| Multi-Role Resume Selector | Contextual Auto-Routing (_DE, _DS, _AI) |
Single static PDF | Static upload |
| InMail Auto-Reply | Autonomous Recruiter Negotiator | β Not Supported | β Not Supported |
| Data Privacy | 100% Local (Git-safe, zero egress) | Plaintext credentials | Cloud-stored data |
| Cost | Free & Open Source (MIT) | Abandoned / Broken | $30β$80 / month |
CareerOS (careeros.developeros.in) is the web platform where engineers track and compare job applications, interviews, and offers in βΉ lakhs. CareerEngine is the open-source automation companion: it runs locally on your machine, attaches to your Google Chrome browser via CDP port 9222, and assists with filling job applications across LinkedIn and Naukri. Note: CareerEngine is an independent open-source tool and does not sync automatically with CareerOS web yet.
Yes. Automated job applications can breach platform terms of service on LinkedIn and Naukri, and risk account restriction. CareerEngine controls your genuine Chrome browser with organic dwell times and typing jitter to minimize detection, but we strongly advise testing with --dry-run / --preview first, inspecting applications, and keeping application limits conservative (5β15 jobs per session).
CareerEngine features a multi-provider fallback pipeline:
- Google Gemini (Gemini 3.5 Flash-lite / 3.1 Flash-lite via
GEMINI_API_KEY_1..3) - Anthropic Claude (Claude 3.5 Haiku / Sonnet via
ANTHROPIC_API_KEYorCLAUDE_API_KEY) - OpenAI (GPT-4o / GPT-4o-mini via
OPENAI_API_KEY) - NVIDIA DeepSeek (DeepSeek V4 via
NVIDIA_API_KEY) - Local Ollama (Offline zero-cost model via
http://localhost:11434)
Learned answers are cached locally in profile_config.json["custom_answers"] to eliminate repetitive API latency and costs.
CareerEngine inspects the job title and requirements, matching them against tagged PDFs in resumes/ (e.g. _DE for Data Engineering, _DS for Data Science, _AI for GenAI Platforms, _SWE for Backend, and _MLOps for DevOps).
Your candidate profile, resumes, API keys, and local SQLite database (jobs.db) stay strictly on your local machine. Only the raw questionnaire text prompts are sent to the LLM API keys that you configure in .env to evaluate answers.
CareerEngine is open-sourced under the MIT License. Β© 2026 developerOS. All rights reserved.