A comprehensive job search assistant plugin that runs directly inside LM Studio. Search listings, track applications, analyse job descriptions, verify companies, generate cover letters, and navigate international work permits — all from a single chat session.
cd job-search-plugin npm install npm run build # compile TypeScript → JS lms push # push to LM Studio
For live development (auto-recompile on save):
npm run dev
Open Settings → Plugins → job-search in LM Studio to configure:
| Setting | Default | Description |
|---|---|---|
| Data Path | ~/job-search-data | Directory where applications.json is stored |
| Resume File Path | (blank) | Path to your resume (plain text or Markdown). Used by match_resume_to_job and generate_cover_letter |
| Max Search Results | 8 | Results returned per search query (3–20) |
| Preferred Job Location | India | Default location for searches when none is specified |
| Home Country | India | Used to detect international roles automatically |
| Citizenship | Indian | Used by check_work_permit to determine visa eligibility |
| Open to International Roles | false | Global toggle — when off, international searches are blocked to keep results focused |
search_jobsSearch for job listings using location-aware queries.
Open to International Roles is disabledincludeInternational parameter overrides the global toggle for a single searchfetch_job_pageFetch and parse a job posting page from a URL. Strips HTML and returns clean text. Use after search_jobs to get the full job description before saving it.
search_companySearch for company culture, reviews, recent news, funding rounds, team size, and tech stack. Useful for interview prep and due diligence before applying.
All applications are stored in a local applications.json file in your configured data directory.
add_applicationSave a new job application. Auto-detects the country from the location string, sets isInternational, and pre-fills workPermitStatus.
update_applicationUpdate any fields on an existing application by ID. Includes postedDate, followUpDate, totalComp, workPermitStatus, and workPermitNotes.
list_applicationsList all tracked applications with pipeline stats. Supports filtering by:
status — saved / applied / interview / offer / rejected / withdrawn / allsearch — keyword in company or role nameinternationalOnly — show only cross-border applicationsworkPermitStatus — filter by visa/permit statusget_applicationGet full details of a single application including stored job description and notes.
delete_applicationPermanently delete an application by ID.
analyze_job_descriptionAnalyse a raw job description and extract:
match_resume_to_jobCompare your resume against a job description. Returns:
Reads your resume from the configured Resume File Path or accepts inline text.
verify_company_legitimacyScore a company's legitimacy (0–100) before applying. Checks:
Returns a LIKELY LEGITIMATE / UNCERTAIN / SUSPICIOUS / HIGH RISK verdict with red flags, green flags, and a verification checklist.
get_application_urgencyCalculate how urgent it is to apply based on when a job was posted. Accepts natural language ("3 days ago", "just posted") or YYYY-MM-DD.
| Days since posted | Urgency | Callback rate |
|---|---|---|
| 0–2 days | CRITICAL | 2–3× higher |
| 3–7 days | HIGH | 1.5–2× |
| 8–14 days | MEDIUM | ~1× |
| 15–30 days | LOW | 0.3–0.6× |
| 30+ days | STALE | ~0× |
Optionally saves postedDate and followUpDate back to the application record.
list_followupsShow all applications with a follow-up action due today or within the next N days. Sorted overdue-first.
calculate_total_compCalculate true total compensation beyond base salary:
Returns first-year TC, steady-state TC, and change vs current comp.
generate_cover_letterGenerate a tailored cover letter (under 350 words) with a hook opening, specific company interest, 2–3 achievements with numbers, and a confident close. Reads resume from configured path or inline text.
generate_resume_bulletsGenerate achievement-oriented resume bullet points using the "Accomplished X by doing Y, resulting in Z" format. Accepts rough notes and tailors bullets to a target role.
prepare_interview_questionsGenerate role-specific interview questions with answer frameworks for: phone screen, technical, behavioural, system design, or final rounds.
export_applications_reportExport a full Markdown pipeline report to disk — includes stats, status breakdown, and per-application details.
find_hidden_jobsSearch unadvertised opportunities across:
Includes a hidden market strategy guide (direct outreach, alumni networks, Slack communities, newsletters).
find_recently_funded_companiesFind startups that recently raised funding (seed through Series C). Funded companies hire 30–60% more aggressively in the 6 months after a round. Searches TechCrunch and general news with dynamic year (always current).
get_current_locationDetect your current location via IP-based geolocation (no API key required). Returns city, region, country, and coordinates. Flags if your detected location differs from your configured home country.
Note: Uses your public IP address — VPNs will affect accuracy. LM Studio plugins have no GPS access.
toggle_international_searchShows current international search settings and explains how to enable/disable globally (plugin settings) or per-search (includeInternational parameter on search_jobs).
check_work_permitFull work permit and visa guide for Indian citizens (or your configured citizenship) for 9 major destination countries.
| Country | Difficulty | Primary Visa | Sponsorship |
|---|---|---|---|
| USA | Very Hard | H-1B (annual lottery) | Required |
| UK | Moderate | Skilled Worker Visa | Required |
| Canada | Moderate | Express Entry / Global Talent Stream | Optional |
| Australia | Moderate | TSS 482 / Skilled Independent 189 | Depends |
| Germany | Moderate | EU Blue Card / Chancenkarte | Required |
| Singapore | Easy | Employment Pass (EP) | Required |
| UAE | Easy | Employment Visa / Green Visa | Required |
| Netherlands | Easy | Highly Skilled Migrant (HSM) | Required |
| Japan | Hard | Engineer Visa / HSP | Required |
For each country returns: visa types, salary thresholds, processing times, eligibility conditions, restrictions, and an action plan specific to your citizenship. Also runs a live web search for recent policy changes.
Optionally saves the permit status back to an application record.
All data is stored locally in a single JSON file:
Each application stores: company, role, location, country, isInternational, status, dates, job description, contacts, salary, total comp, work permit status, and follow-up date.
MIT
Parameters:
query — Role, skills, or keywords
location — e.g. "Bangalore", "Remote India", "USA" (blank = use setting)
includeInternational— Override international toggle for this search
jobType — any | full_time | part_time | contract | internship | remote
max — Max results (overrides plugin setting)
Parameters:
company, role, url, location, status, jobDescription, notes, salary, nextStep
~/job-search-data/
applications.json ← all tracked applications
report-YYYY-MM-DD.md ← exported reports (optional)
# 1. Find roles in Bangalore
search_jobs("Senior Backend Engineer", location="Bangalore")
# 2. Read the full JD
fetch_job_page("https://...")
# 3. Analyse it
analyze_job_description("<paste JD>")
# 4. Check your fit
match_resume_to_job("<JD>", resumeText="<your resume>")
# 5. Save it
add_application(company="Razorpay", role="Senior SDE-2", location="Bangalore")
# 6. Check urgency (posted 2 days ago)
get_application_urgency("2 days ago", applicationId="...")
# 7. Write cover letter
generate_cover_letter(company="Razorpay", role="Senior SDE-2", jobDescription="...")
# 8. For a USA role — check visa situation
check_work_permit(destinationCountry="USA", role="Senior Backend Engineer")
# 9. See everything due for follow-up
list_followups(daysAhead=7)
# 10. Export pipeline report
export_applications_report()