Files
santifer--career-ops/modes/id/pipeline.md
T
wehub-resource-sync d083df1fdb
CodeQL Analysis / Analyze (javascript-typescript) (push) Failing after 2s
Web CI / web typecheck + build (push) Failing after 1s
Release Please / release-please (push) Failing after 1s
CodeQL Analysis / Analyze (go) (push) Failing after 16s
chore: import upstream snapshot with attribution
2026-07-13 12:02:43 +08:00

64 lines
3.1 KiB
Markdown

# Mode: pipeline -- Inbox URL (Second Brain)
Memproses URL lowongan yang menumpuk di `data/pipeline.md`. Kandidat menambahkan URL kapan pun ia mau lalu menjalankan `/career-ops pipeline` untuk memproses semuanya sekaligus.
## Alur kerja
1. **Baca** `data/pipeline.md` -> temukan item `- [ ]` di bagian "Menunggu" / "Pending" / "Pendientes"
2. **Untuk setiap URL yang menunggu**:
a. Pesan `REPORT_NUM` urut berikutnya secara atomik dengan menjalankan `node reserve-report-num.mjs` (dan lepas sentinel dengan menjalankan `node reserve-report-num.mjs --release <num>` setelah report ditulis)
b. **Ekstrak lowongan** dengan Playwright (`browser_navigate` + `browser_snapshot`) -> WebFetch -> WebSearch
c. Jika URL tidak bisa diakses -> tandai sebagai `- [!]` dengan catatan dan lanjutkan
d. **Jalankan auto-pipeline lengkap**: Evaluasi A-F -> Report .md -> PDF (jika score >= 3.0) -> Tracker
e. **Pindahkan dari "Menunggu" ke "Diproses"**: `- [x] #NNN | URL | Perusahaan | Role | Score/5 | PDF ya/tidak`
3. **Jika ada 3+ URL menunggu**, jalankan agen paralel (Agent tool dengan `run_in_background`) untuk memaksimalkan kecepatan.
4. **Di akhir**, tampilkan tabel ringkasan:
```text
| # | Perusahaan | Role | Score | PDF | Tindakan yang disarankan |
```
## Format pipeline.md
```markdown
## Menunggu
- [ ] https://jobs.example.com/posting/123
- [ ] https://boards.greenhouse.io/company/jobs/456 | Company PT | Senior PM
- [!] https://private.url/job -- Error: perlu login
## Diproses
- [x] #143 | https://jobs.example.com/posting/789 | Acme PT | AI PM | 4.2/5 | PDF ya
- [x] #144 | https://boards.greenhouse.io/xyz/jobs/012 | BigCo | SA | 2.1/5 | PDF tidak
```
> Catatan: Header bagian bisa dalam EN ("Pending"/"Processed"), ES ("Pendientes"/"Procesadas"), DE ("Offen"/"Verarbeitet"), atau ID ("Menunggu"/"Diproses"). Bersikaplah fleksibel saat membaca, konsisten dengan gaya yang ada saat menulis.
## Deteksi cerdas lowongan dari URL
1. **Playwright (diutamakan):** `browser_navigate` + `browser_snapshot`. Berfungsi dengan semua SPA.
2. **WebFetch (fallback):** Untuk halaman statis atau ketika Playwright tidak tersedia.
3. **WebSearch (upaya terakhir):** Cari di portal sekunder yang mengindeks lowongan.
**Kasus khusus:**
- **LinkedIn**: Bisa memerlukan login -> tandai `[!]` dan minta kandidat menempelkan teksnya
- **PDF**: Jika URL menunjuk ke PDF, baca langsung dengan Read tool
- **Prefiks `local:`**: Baca file lokal. Contoh: `local:jds/linkedin-pm-ai.md` -> baca `jds/linkedin-pm-ai.md`
- **Glints / Jobstreet / Kalibrr**: Portal Indonesia yang umum. Playwright menangani cookie banner dengan baik
- **LinkedIn ID / Indeed ID**: Lowongan terstruktur, mudah dibaca mesin. WebFetch biasanya cukup
## Penomoran otomatis
1. Jalankan `node reserve-report-num.mjs` untuk memesan nomor urut berikutnya secara atomik (stdout mengembalikan `{###}`).
2. Tulis report dengan nomor tersebut.
3. Lepas sentinel dengan menjalankan `node reserve-report-num.mjs --release {###}` setelah report ditulis.
## Sinkronisasi sumber
Sebelum memproses URL, verifikasi sinkronisasi:
```bash
node cv-sync-check.mjs
```
Jika terjadi desinkronisasi, beri peringatan kepada kandidat sebelum melanjutkan.