BDJobs Job Apply
Use this skill to help a user manage BDJobs job searching and applying without needing to know APIs or code.
What this skill does
- Save resume text/LaTeX into
data/resume.md - Save credentials and preferences into
data/userDetails.json - Log in and save auth data into
data/loggedInData.json - Refresh applied jobs into
data/appliedJobIds.json - Keep a not-liked list in
data/notLikedJobIds.json - Search jobs and return raw job details for AI matching
- Auto-apply to matched jobs when asked
- Undo/cancel an applied job when asked
- Update expected salary for an already applied job
Onboarding flow
When the user first sets up this skill, ask for these values in plain language:
- BDJobs username
- BDJobs password
- Resume text or LaTeX
everyDayApplyCount(default: 2)everyDayCronTime(default:12:00 PM)isFresher(yes/no)Experiencein years- Preferred
jobLocation(optional, leave blank for all)
Save them in:
data/userDetails.jsondata/resume.md
If the user has extra search filters or matching rules, store them in data/preferences.json.
Login flow
Before search/apply work, always ensure data/loggedInData.json exists.
If missing:
- run
ChecKUsername - take
guidId - run
Login - save
token,refreshToken,encryptId,decodeId, andguidIdtodata/loggedInData.json
If login returns 401 at any point:
- run
ChecKUsernameagain - run
Loginagain - overwrite
data/loggedInData.json
Search flow
When the user asks for fresh jobs:
- Clear
data/suggestedJobs.json - Run
scripts/bdjobs-refresh-applied.jsto updatedata/appliedJobIds.jsonfromGetApplyPositionInfoV1 - Run
scripts/bdjobs-fetch-jobs.jswith--keyword,--isFresher,--postedWithin,--pg, and--jobLocationto fetch raw job lists fromGetJobSearch - Run
scripts/bdjobs-filter-jobs.jsto exclude already-applied and not-liked job IDs beforeJob-Details - For selected job IDs, run
scripts/bdjobs-job-details.jsto fetch full job details - Let AI compare the raw job details with
data/resume.mdanddata/preferences.json - Run
scripts/bdjobs-rank-jobs.jsto save the top 5 matched jobs intodata/suggestedJobs.json - Show the contents of
data/suggestedJobs.jsonto the user
Recommended match threshold:
- show apply suggestions only if match is above 40%
- if the user asks for a looser list, show 30%+
AI matching details:
- Compare the raw job details with
data/resume.mdanddata/preferences.json - Judge fit from skills, education, age, experience, responsibilities, location, and preferences
- Output a suggested job list with match percentages
Auto-apply flow
When the user asks to auto-apply:
- Ensure login exists
- Refresh applied jobs first
- Search fresh jobs
- Let AI score the raw job details against the resume and preferences
- For each approved job:
- call
JobApply - read
MinimumSalary - use it as
expectedSalaryinJobApplyPost - call
JobApplyPost - if successful, always show
matchingScore - if successful, add the job ID to
data/appliedJobIds.json - save result in
data/lastApplyResult.json
- call
- Send Telegram notification only after success
Undo/cancel flow
When the user asks to undo an application:
- Ensure login exists
- Call
UndoJobApplywith job ID andFormValue - If successful, remove the job ID from
data/appliedJobIds.json - Save result in
data/lastUndoResult.json
Expected salary update flow
When the user asks to update salary for an applied job:
- Ensure login exists
- Call
UpdateExpectedSalary - Save result in
data/lastSalaryUpdateResult.json
Files used by this skill
Important files live inside this skill folder:
data/resume.mddata/userDetails.jsondata/loggedInData.jsondata/appliedJobIds.jsondata/notLikedJobIds.jsondata/preferences.jsondata/suggestedJobs.jsondata/lastApplyResult.jsondata/lastUndoResult.jsondata/lastSalaryUpdateResult.json
Script entry points
Run scripts from the skill folder, not the workspace root:
scripts/init-job-profile.jsscripts/bdjobs-login.jsscripts/bdjobs-refresh-applied.jsscripts/bdjobs-fetch-jobs.js
bdjobs-fetch-jobs.js accepts:
--keyword=...--isFresher=true|false--postedWithin=...(optional day count, any number)--pg=...--jobLocation=...scripts/bdjobs-filter-jobs.jsscripts/bdjobs-job-details.jsaccepts--jobId=...or a positional job idscripts/bdjobs-rank-jobs.jsscripts/bdjobs-apply.jsscripts/bdjobs-undo.jsscripts/bdjobs-update-salary.js
Matching rules
Use the resume and these signals:
- Job title
- Company name
- Job description
- Education requirements
- Age requirement
- Experience requirement
- Additional job requirements
- Suggested skills
- Job location
- Job nature
- User preferences from
data/preferences.json
Helpful behavior
When presenting jobs to the user:
- keep language simple
- explain only what matters
- include the direct job link
- mention whether it looks worth applying
When the user wants automation, do the work directly with the scripts.