v1.3.0
career-ops-hq/career-opsv1.3.0Apr 10, 2026by santifer
AI Summary
A community-focused release defining the roadmap to local AI, introducing a zero-token scanner, ghost job detection, follow-up cadence tracking, and support for Korean and Russian languages.
Key Highlights
- Zero-token portal scanner for Greenhouse/Ashby/Lever
- Block G: ghost job detection
- Follow-up cadence tracker mode
- Contact mode by type (recruiter/HM/peer/interviewer)
- Support for Korean and Russian languages
New Features
- Zero-token portal scanner (scan.mjs)
- Block G: ghost job detection
- Follow-up cadence tracker mode
- Contact mode by contact type
- 10 bug fixes (resource leaks, command injection, Unicode, navigation)
- Liveness fix for expired pages with generic 'Apply' text
- Resume filename uses actual name from profile.yml
- Nix flake devshell
- Code of Conduct and Governance documents
- Security policy and Support guide
- PR template and Issue templates
- GitHub Discussions and Discord integration
- Languages: Brazilian Portuguese, Korean, Japanese, Russian
Full Release Notes
 ### The Vision We published our roadmap: **career-ops will run on your own machine with free local AI models — no API keys, no subscriptions. Or connect your preferred AI provider if you want the power of cloud models. Your choice.** Job hunting shouldn't be a premium feature. [Read the full vision →](https://github.com/santifer/career-ops/discussions/156) ### What's new **Zero-token portal scanner** — `scan.mjs` hits Greenhouse/Ashby/Lever APIs directly. 73+ companies scanned with zero LLM tokens. Resolves #98. **Block G: ghost job detection** — new evaluation block that flags suspicious listings using free signals (JD quality, reposting history, market data). Doesn't affect the 1-5 score — it's an independent legitimacy check. (@FReptar0) **Follow-up cadence tracker** — new mode that tracks when to follow up on applications, with configurable cadence rules per status. (@Alfredao) **Contact mode by type** — LinkedIn outreach now adapts the message framework based on whether you're reaching out to a recruiter, hiring manager, peer, or interviewer. (@FReptar0) **10 bug fixes** — resource leaks in PDF generation, command injection in merge-tracker, Unicode truncation in dashboard (fixes Japanese/Korean display), sed injection in batch runner, and more. (@hobostay) **Liveness fix** — expired job pages with generic "Apply" text in navigation no longer fool the liveness checker. (@lawrence3699) **Resume filename** — generated PDFs now use your actual name from profile.yml instead of "candidate". (@shra1-honade) ### Languages 4 new languages, bringing the total to 8: 🇧🇷 Brazilian Portuguese · 🇰🇷 Korean · 🇯🇵 Japanese (with full market modes) · 🇷🇺 Russian (with interview prep for Yandex, VK, Ozon, T-Bank) Previously shipped: 🇺🇸 English · 🇪🇸 Spanish · 🇩🇪 German · 🇫🇷 French ### Community - **Code of Conduct** — Contributor Covenant 2.1 with enforcement actions - **Governance** — BDFL model with contributor ladder (Participant → Contributor → Triager → Reviewer → Maintainer) - **Security policy** — private vulnerability reporting - **Support guide** — routes how-to questions to Discord/Discussions - **PR template** — checklist for contributors - **Issue templates** — CoC checkbox, duplicate search, CLI/OS fields - **GitHub Discussions** — now enabled - **Discord** integrated across all touchpoints ### Dev experience - **Nix flake** — `nix develop` sets up the full environment with Playwright browsers. (@Enriquefft) ### Contributors Thanks to everyone who made this release possible: @Arc-the · @Alfredao · @FReptar0 · @hobostay · @lawrence3699 · @shra1-honade · @Enriquefft · @filipemarraa · @minwoo-data · @eltociear · @Fighter90