GitHub·· 8 天前AI 评分50
Konicamaheshwarii/job-autoapply:自动监控招聘群并投递的 WhatsApp 求职机器人
Konicamaheshwarii/job-autoapply
AI 导读
GitHub 项目 job-autoapply 是一个 WhatsApp 求职机器人,自动监控招聘群、按 CV 给每条帖子打分,并为匹配岗位生成 ATS 友好简历后通过邮件或 WhatsApp 投递。
正文
Job Auto-Apply
A WhatsApp bot that watches job-opening groups, scores every post against your CV, builds a tailored ATS-friendly CV for the good matches and applies by email or WhatsApp. It runs unattended on a home PC.
Highlights
- AI only where it pays off. Text posts are parsed with rules, using no tokens. A vision LLM is called only for image posters and for tailoring CVs that will actually be sent.
- Multi-provider LLM fallback. A configurable
provider:modelchain (Groq → Gemini) with retries and daily-quota detection, so free-tier limits never stop the bot. - ATS-style scoring. 70% skill-keyword coverage plus 30% role fit, with skill synonyms (e.g.
nodejs=Node.js,restful=REST API), checks on stack mismatch and years of experience, and de-duplication against past applications. - Honest tailoring. Bullets are reordered and filtered, never invented. CV content stays word-for-word from the master CV, and a sanitizer drops any skill, number or seniority claim the model adds.
- Self-healing. Watchdogs re-scan groups, restart after PC sleep or a lost connection, and recover when WhatsApp Web stalls. A daily cap and random delays keep activity human-paced.
- Dry-run first.
DRY_RUN=trueruns the whole pipeline, including the PDF, without sending anything.
How it works
flowchart LR
A[WhatsApp group post] --> B{Text or image?}
B -- text --> C[Rule parser<br/>no AI]
B -- image --> D[Vision LLM<br/>extract jobs]
C --> E[Score vs CV<br/>keywords + role fit]
D --> E
E -- below MIN_SCORE / duplicate / wrong stack --> X[Skip + log]
E -- match --> F[Tailor CV<br/>LLM or rules fallback]
F --> G[Render ATS PDF<br/>Puppeteer]
G --> H{Contact}
H -- email --> I[Gmail / Nodemailer]
H -- phone --> J[WhatsApp DM]
I --> K[Notify self + CSV log]
J --> K
Loading
| Module | Responsibility |
|---|---|
src/index.js |
WhatsApp client, group backfill, watchdogs, graceful shutdown |
src/pipeline.js |
Orchestrates one post end to end |
src/parse.js / src/extract.js |
Rule-based parsing / LLM extraction for posters |
src/ats.js / src/match.js |
Keyword coverage, role fit, experience rules |
src/ai.js |
Provider-agnostic JSON LLM client with fallback chain |
src/tailor.js / src/tailor-rules.js |
LLM tailoring with sanitizing, plus a rules-only fallback |
src/pdf.js |
HTML → single-column ATS PDF |
src/mailer.js / src/store.js |
Gmail sending, application history and daily caps |
Setup
Requires Node.js 20+ on Windows, macOS or Linux.
npm install cp .env.example .env # then fill it in cp cv/master-cv.example.json cv/master-cv.json # then put your real CV in it
| Key | What |
|---|---|
GROQ_API_KEY |
Free key from https://console.groq.com/keys (primary AI) |
GEMINI_API_KEY |
Free key from https://aistudio.google.com/apikey (backup AI) |
WHATSAPP_GROUPS |
Exact group name(s), comma-separated |
GMAIL_USER / GMAIL_APP_PASSWORD |
Gmail address + App Password |
DRY_RUN |
true = do everything except send. Start with this. |
MIN_SCORE, MAX_APPLICATIONS_PER_DAY |
Match threshold (default 70) and daily cap (default 12) |
Run
npm run try -- sample-job.txt # test one post, no WhatsApp needed npm start # scan the QR once (WhatsApp > Linked devices)
On Windows, scripts/run-bot.cmd starts the bot and restarts it if it exits. To run it at login, put a shortcut to it in shell:startup.
Notes
patches/holds fixes for whatsapp-web.js 1.34.7, which broke after the July 2026 WhatsApp Web update. They are applied automatically afternpm install.- WhatsApp does not allow bots on personal accounts. Use at your own risk.
cv/master-cv.json,.env,data/andout/are git-ignored because they contain personal data.
License
来源:GitHub · github.com