64 lines
3.3 KiB
Markdown
64 lines
3.3 KiB
Markdown
# Tryb: pipeline -- Inbox URL-i (Second Brain)
|
|
|
|
Przetwarza URL-e ofert nagromadzone w `data/pipeline.md`. Kandydat dodaje URL-e, kiedy chce, a potem uruchamia `/career-ops pipeline`, by przetworzyć je wszystkie naraz.
|
|
|
|
## Workflow
|
|
|
|
1. **Przeczytaj** `data/pipeline.md` -> znajdź itemy `- [ ]` w sekcji "Oczekujące" / "Pending" / "Pendientes"
|
|
2. **Dla każdego oczekującego URL-a**:
|
|
a. Zarezerwuj następny kolejny `REPORT_NUM` atomowo, uruchamiając `node reserve-report-num.mjs` (i zwolnij sentinel, uruchamiając `node reserve-report-num.mjs --release <num>`, gdy report zostanie zapisany)
|
|
b. **Wyciągnij ofertę** za pomocą Playwright (`browser_navigate` + `browser_snapshot`) -> WebFetch -> WebSearch
|
|
c. Jeśli URL jest niedostępny -> oznacz jako `- [!]` z notatką i kontynuuj
|
|
d. **Wykonaj pełny auto-pipeline**: Ocena A-F -> Report .md -> PDF (jeśli score >= 3.0) -> Tracker
|
|
e. **Przenieś z "Oczekujące" do "Przetworzone"**: `- [x] #NNN | URL | Firma | Rola | Score/5 | PDF tak/nie`
|
|
3. **Jeśli 3+ oczekujących URL-i**, uruchom agentów równolegle (Agent tool z `run_in_background`), aby zmaksymalizować szybkość.
|
|
4. **Na końcu** wyświetl tabelę podsumowującą:
|
|
|
|
```
|
|
| # | Firma | Rola | Score | PDF | Rekomendowana akcja |
|
|
```
|
|
|
|
## Format pipeline.md
|
|
|
|
```markdown
|
|
## Oczekujące
|
|
- [ ] https://jobs.example.com/posting/123
|
|
- [ ] https://boards.greenhouse.io/company/jobs/456 | Company Sp. z o.o. | Senior PM
|
|
- [!] https://private.url/job -- Błąd: wymagane logowanie
|
|
|
|
## Przetworzone
|
|
- [x] #143 | https://jobs.example.com/posting/789 | Acme Sp. z o.o. | AI PM | 4.2/5 | PDF tak
|
|
- [x] #144 | https://boards.greenhouse.io/xyz/jobs/012 | BigCo | SA | 2.1/5 | PDF nie
|
|
```
|
|
|
|
> Uwaga: Nagłówki sekcji mogą być w EN ("Pending"/"Processed"), ES ("Pendientes"/"Procesadas"), DE ("Offen"/"Verarbeitet") lub PL ("Oczekujące"/"Przetworzone"). Bądź elastyczny przy czytaniu, wierny istniejącemu stylowi przy pisaniu.
|
|
|
|
## Inteligentne wykrywanie oferty z URL-a
|
|
|
|
1. **Playwright (preferowane):** `browser_navigate` + `browser_snapshot`. Działa ze wszystkimi SPA.
|
|
2. **WebFetch (fallback):** Dla stron statycznych lub gdy Playwright jest niedostępny.
|
|
3. **WebSearch (ostateczność):** Szukaj na portalach drugorzędnych, które indeksują ofertę.
|
|
|
|
**Przypadki szczególne:**
|
|
- **LinkedIn**: Może wymagać logowania -> oznacz `[!]` i poproś kandydata o wklejenie tekstu
|
|
- **PDF**: Jeśli URL wskazuje na PDF, przeczytaj go bezpośrednio narzędziem Read
|
|
- **Prefiks `local:`**: Przeczytaj plik lokalny. Przykład: `local:jds/linkedin-pm-ai.md` -> przeczytaj `jds/linkedin-pm-ai.md`
|
|
- **Pracuj.pl / No Fluff Jobs / Just Join IT**: Popularne polskie portale. Playwright dobrze radzi sobie z bannerami cookie
|
|
- **Bulldogjob / LinkedIn PL**: Oferty ustrukturyzowane, dobrze czytelne maszynowo. WebFetch zwykle wystarcza
|
|
|
|
## Automatyczna numeracja
|
|
|
|
1. Uruchom `node reserve-report-num.mjs`, aby zarezerwować następny kolejny numer atomowo (stdout zwraca `{###}`).
|
|
2. Zapisz report z tym numerem.
|
|
3. Zwolnij sentinel, uruchamiając `node reserve-report-num.mjs --release {###}`, gdy report zostanie zapisany.
|
|
|
|
## Synchronizacja źródeł
|
|
|
|
Przed przetworzeniem URL-a sprawdź synchronizację:
|
|
|
|
```bash
|
|
node cv-sync-check.mjs
|
|
```
|
|
|
|
W razie desynchronizacji ostrzeż kandydata przed kontynuowaniem.
|