Khi Thị Trường Lao Động Dùng AI Lọc Bạn, Bạn Dùng Gì Để Lọc Ngược?
TL;DR
- Công ty dùng AI lọc CV bạn, giờ bạn có AI để lọc ngược lại công ty.
- Career-Ops chấm điểm A-F theo 10 chiều, khuyên không nộp nếu dưới 4.0/5.
- 14 modes từ quét portal tới tạo PDF tối ưu ATS tới chuẩn bị phỏng vấn.
- Kết quả thật: 740 evaluations, 100+ CV, 1 vai Head of Applied AI.
- Dành cho dev không muốn xin việc theo kiểu nhắm mắt bắn đạn ghém.
Bán xong rồi lại phải đi xin việc
Santiago vừa bán công ty.
Cái giai đoạn sau đó mà ai cũng tưởng là sẽ thong thả, thực ra lại là địa ngục theo cách riêng. Mỗi tin tuyển dụng là một bài thi viết luận được chấm bởi thuật toán. Nộp đơn không có tailored CV thì rớt ngay vòng ATS trước khi mắt người nhìn tới. Nộp đơn có CV cẩn thận thì mất 45 phút một chỗ. Nhân với số lượng job posting bạn thấy trong một tuần và bạn hiểu bài toán.
Santiago nhận ra nghịch lý này theo cách đau hơn hầu hết. Anh đã xây và bán một công ty nhưng giờ đang ngồi tailoring từng CV như sinh viên mới ra trường. Trong lúc đó, recruiter bên kia đang dùng AI để sort-out hàng trăm ứng viên một lúc.
Anh quyết định không chịu thua.
“Companies use AI to filter candidates. I gave candidates AI to choose companies.”
Câu này không phải tagline marketing. Nó là lý do repo này tồn tại. Nhưng vấn đề không hẳn là thiếu công cụ AI. Vấn đề là cách dùng nó ra sao mà không biến mình thành máy nộp đơn hàng loạt.
Career-Ops là gì, và nó làm gì cho bạn
Câu ngắn cho người mới vô: Career-Ops là AI recruiter cá nhân của bạn, chạy hoàn toàn trong terminal, đánh giá mỗi job listing theo 10 chiều rồi cho điểm từ A đến F, và không bao giờ tự submit đơn thay bạn.
Cái phần cuối quan trọng hơn nghe. Rule sắt đá là dưới 4.0/5 thì hệ thống khuyên bạn đừng nộp. Không phải nó lười, mà vì triết lý của repo là chất lượng hơn số lượng. Đây là filter, không phải spammer.
Stack kỹ thuật gọn: Node.js làm pipeline, Go với Bubble Tea làm TUI dashboard, Playwright để scrape portals và xuất PDF, Claude Code điều phối toàn bộ. Dữ liệu lưu trong TSV và Markdown files, không có database, không có server. Chạy local, thông tin nhạy cảm không rời máy.
Santiago dùng ẩn dụ này trong README: “Train nó như nhân viên tuyển dụng mới.” Tuần đầu nó cần hiểu về bạn, sau đó nó trở nên vô giá. Bạn bỏ CV vào cv.md, profile vào config/profile.yml, rồi Claude đọc cả hai trước khi đánh giá bất kỳ offer nào. Hệ thống còn được thiết kế để tự customise qua Claude, tức là bạn nói chuyện với Claude để config chính Claude dùng. Meta nhưng hợp lý.
Nhưng setup xong thực ra nó làm được những gì?
6 khối đánh giá mà recruiter thật không bao giờ làm cho bạn
Mỗi lần Career-Ops đánh giá một offer, nó đi qua đủ 6 khối:
| Khối | Nội dung |
|---|---|
| A | Tóm tắt role, ngôn ngữ thật của JD |
| B | So khớp CV với JD, chỉ ra gaps và cách xử lý |
| C | Chiến lược level và seniority, nên apply vị trí nào |
| D | Research lương thị trường qua WebSearch |
| E | Kế hoạch tailoring CV cho offer cụ thể |
| F | Câu chuyện STAR+Reflection chuẩn bị phỏng vấn |
Khối D và F là chỗ hầu hết ứng viên bỏ qua vì không có thời gian, nhưng lại là chỗ quyết định có offer letter hay không. Career-Ops làm hết 6 khối cho mỗi offer, ngay cả khi bạn đang batch evaluate 40 offers một lúc bằng claude -p workers chạy song song.
Theo thời gian, khối F tích luỹ thành một story bank: 5 đến 10 master stories có thể trả lời bất kỳ câu hành vi nào trong phỏng vấn mà không cần bịa lại từ đầu mỗi lần.
Nhưng trước khi đến batch processing, bạn cần setup.
Cài đặt và 14 modes
# Clone và install
git clone https://github.com/santifer/career-ops.git
cd career-ops && npm install
npx playwright install chromium # bắt buộc cho PDF generation
# Validate prerequisites
npm run doctor
# Setup profile
cp config/profile.example.yml config/profile.yml
# Sửa: tên, email, target roles, narrative, proof points
# Thêm CV dạng Markdown
# Tạo cv.md ở thư mục root
# Mở Claude Code
claude
npm run doctor là bước hay nhất trong setup. Nó validate mọi thứ trước khi bạn phát hiện ra lỗi ở bước chín. Node.js >= 18, Claude Code đã cài, Playwright có Chromium, cv.md tồn tại.
Vào Claude rồi, bạn có 14 modes:
/career-ops {paste JD hoặc URL}- full auto-pipeline cho một offer/career-ops scan- quét 45+ portal công ty đã pre-configure/career-ops batch- evaluate nhiều offers song song/career-ops pdf- tạo ATS-optimized CV tailored theo offer/career-ops tracker- xem trạng thái toàn pipeline/career-ops deep {công ty}- research sâu company intelligence/career-ops contacto- viết LinkedIn outreach message/career-ops pipeline- xử lý URL inbox từ danh sách chờ/career-ops apply- điền form ứng tuyển, không submit/career-ops training- đánh giá khóa học hoặc chứng chỉ mới/career-ops project- đánh giá portfolio project trước khi dùng làm proof pointinterview-prep- chuẩn bị phỏng vấn với câu chuyện STAR+Reflectionfollowup- draft email follow-up sau phỏng vấnpatterns- phân tích patterns từ toàn bộ pipeline, biết đâu đang filter sai
Interaction trong thực tế sẽ ra như ri:
45+ công ty đã pre-configure trong config/portals.yml: Anthropic, OpenAI, ElevenLabs, Retool, Mistral, Cohere, n8n, Temporal và hàng loạt tên quen khác trong AI/automation space.
Walkthrough đầy đủ: từ URL đến PDF
Để thấy toàn bộ vòng lặp, theo quy trình auto-pipeline:
- Copy URL job listing từ trang careers của bất kỳ công ty nào.
- Trong Claude:
/career-ops https://anthropic.com/careers/senior-engineer - Career-Ops fetch JD, chạy 6-block evaluation, output markdown report.
- Report nằm ở
reports/001-anthropic-2026-04-12.mdvới điểm số và full analysis. - Nếu score trên 4.0, chạy tiếp:
/career-ops pdf - CV ra
cv-you-anthropic-2026-04-12.pdfvới Space Grotesk + DM Sans, keywords inject từ JD.
💡 Tip: Sau khi setup, chạy
node verify-pipeline.mjstrước lần batch đầu tiên. Script này kiểm tra cấu trúc output và report format. Bắt lỗi sớm hơn là tốt hơn nhiều.
Với batch processing:
# Trong Claude, paste nhiều URLs
/career-ops batch
# Hoặc verify pipeline trước
node verify-pipeline.mjs
node cv-sync-check.mjs
Mỗi URL là một worker claude -p riêng. Không phải queue, là thật sự chạy song song. Output là folder reports với timestamp, tracker rows trong tracker.tsv, và sau đó xem trong dashboard.
┌─ Career-Ops Dashboard ─────────────────────────────────────────┐
│ [All] Evaluada Aplicado Entrevista Top ≥4 No Aplicar │
├────────────────────────────────────────────────────────────────┤
│ ★ 4.7 Anthropic Senior Engineer Hôm nay │
│ 4.5 ElevenLabs Applied AI Engineer Hôm qua │
│ 4.3 Retool Staff Engineer 2 ngày trước │
│ 3.8 BigCorp Inc Principal Engineer Hôm nay ← skip │
└────────────────────────────────────────────────────────────────┘
Dashboard là Go TUI với Bubble Tea và Catppuccin Mocha theme. 6 tab lọc, 4 sort modes, lazy-load report preview ngay trong terminal. Khi đạt 4.0 trở lên, bạn mới cân nhắc apply. Khi dưới 4.0, system nhắc: no aplicar. Không cấm bạn nộp, nhưng nó cũng không chuẩn bị CV cho bạn.
Hiểu được flow thì dùng được. Nhưng biết khi nào nên tránh vẫn tốt hơn.
Dùng khi nào, tránh khi nào
Career-Ops hợp cho bạn nếu:
- Đang job search active, xem nhiều offers một lúc và muốn tránh cherry-pick bằng cảm tính
- Target market là AI companies và tech startups, nơi 45+ công ty đã pre-configure sẵn
- Có CV tiếng Anh ổn và muốn tailoring nhanh theo từng JD mà không mất 45 phút mỗi lần
- Cần story bank STAR+Reflection cho phỏng vấn, không phải bịa lại từ đầu mỗi lần
Không hợp nếu bạn apply vào công ty không có trang careers công khai, không có Claude Code đang active, hoặc muốn hệ thống tự submit đơn thay bạn. Career-Ops không làm vậy theo thiết kế có chủ ý.
Reality check: chỗ cùi bắp và chỗ cần cẩn thận
Cái đẹp của Career-Ops là nó thật. Không có SaaS pricing, không có waitlist, Santiago open source hẳn cái system ông thực sự dùng. Nhưng rough edges cũng rất thật.
Batch processing có thể burn Claude tokens khá nhanh nếu bạn evaluate 50 offers cùng lúc. Mỗi offer là full 6-block evaluation. Không phải free, anh em tính toán trước. Playwright cần Chromium và một số môi trường container không có sẵn display server, cần xử lý thêm. Dashboard Go TUI cần build riêng, nếu chưa có Go setup thì thêm một bước friction. Data store là TSV và Markdown files, không có schema enforcement nghiêm chỉnh: nếu sửa tay sai format, verify-pipeline.mjs sẽ bắt nhưng cần nhớ chạy thủ công.
⚠️ Warning:
applymode điền form tự động nhưng không submit. Bạn review và submit tay. Đọc kỹ trước khi chạy trên trang careers của công ty bạn thật sự muốn vào vì Playwright scraping có thể trigger anti-bot warning ở một số portal lớn.
Trust boundary là thứ repo này làm rõ hơn hầu hết tool tương tự: AI đánh giá và gợi ý, bạn quyết định và hành động. Cái filter 4.0/5 là lời khuyên, không phải khoá cửa. Quyết định cuối cùng vẫn là của bạn.
740 lần, 100+ lần, 1 lần đúng
Santiago dùng Career-Ops cho job search của chính ông. Con số ông để lại: 740 tin tuyển dụng được đánh giá, 100+ CV được tạo và tailored, kết quả là một vai Head of Applied AI.
Không phải 740 offers gửi đi. Hầu hết bị cái filter 4.0/5 từ phía ứng viên chặn lại trước cả khi recruiter nhìn tới hồ sơ. Đó là điểm mà người ta hay hiểu ngược: Career-Ops không giúp bạn nộp nhiều hơn, nó giúp bạn nộp ít và đúng hơn. Hai cái sieve chạy ngược chiều nhau, và người thắng là người cầm sieve chặt hơn.
Santiago bắt đầu từ nghịch lý đơn giản: thị trường dùng AI để lọc anh, thì anh dùng AI để lọc ngược lại. Cái logic này đủ phổ quát để repo đạt 30.824 sao trong vài ngày đầu. Không phải vì nó cool, mà vì pain point là thật và solution cũng thật.
Bạn cũng đang bị lọc bởi ATS của ai đó ngay lúc này. Câu hỏi là bạn đang dùng gì để lọc ngược.
santifer/career-ops · MIT · 30.824★
Hoang Yell
Một nhà phát triển phần mềm và là người kể chuyện kỹ thuật. Tôi dành thời gian để khám phá những repository mã nguồn mở thú vị nhất trên GitHub và trình bày chúng dưới dạng những câu chuyện dễ hiểu cho mọi người.