init
Release Please / release-please (push) Failing after 4m2s
Web CI / web typecheck + build (push) Successful in 3m39s
CodeQL Analysis / Analyze (javascript-typescript) (push) Failing after 1h1m49s
CodeQL Analysis / Analyze (go) (push) Failing after 1h1m49s

This commit is contained in:
redlineo committed 2026-07-13 10:14:00 +03:00
commit d295c7f139
1527 files changed
+270726

No files matched your search

+105
View File
@@ -0,0 +1,105 @@
# career-ops -- Modalità in italiano (`modes/it/`)
Questa cartella contiene le traduzioni in italiano delle principali modalità di career-ops per i candidati che si rivolgono al mercato italiano.
## Quando usare queste modalità?
Usa `modes/it/` se si verifica almeno una di queste condizioni:
- Ti candidi principalmente ad **annunci di lavoro in italiano** (LinkedIn IT, Indeed IT, portali aziendali)
- Il tuo **CV è in italiano** (o alterni tra italiano e inglese a seconda dell'annuncio)
- Hai bisogno di risposte e lettere di presentazione scritte in un **italiano tech naturale**, non tradotte da una macchina
- Devi gestire **specificità contrattuali italiane**: contratti a tempo indeterminato o determinato, CCNL, TFR, buoni pasto, assicurazione sanitaria integrativa, tredicesima, quattordicesima, periodo di prova, preavviso, permessi retribuiti e inquadramento come Quadro.
Se la maggior parte delle tue offerte è in inglese, ti conviene rimanere sulle modalità standard in `modes/`. Le modalità in inglese funzionano anche per le offerte in Italia, ma non conoscono in dettaglio le specificità del mercato italiano.
## Come attivarle?
### Opzione 1 -- Per singola sessione
All'inizio della sessione, dì all'agente:
> "Usa le modalità in italiano sotto `modes/it/`."
L'agente leggerà quindi i file di questa cartella anziché quelli di `modes/`.
### Opzione 2 -- In modo permanente
Aggiungi nel file `config/profile.yml`:
```yaml
language:
primary: it
modes_dir: modes/it
```
Ricordalo all'agente durante la tua prima sessione ("Guarda in `profile.yml`, ho configurato `language.modes_dir`"). L'agente utilizzerà automaticamente le modalità in italiano.
## Quali modalità sono tradotte?
Questa prima iterazione copre le quattro modalità a più alto impatto:
| File | Tradotto da | Ruolo |
|------|-------------|-------|
| `_shared.md` | `modes/_shared.md` (EN) | Contesto condiviso, archetipi, regole globali, specificità del mercato italiano |
| `annuncio.md` | `modes/oferta.md` (ES) | Valutazione completa di un annuncio di lavoro (Blocchi A-F) |
| `candidarsi.md` | `modes/apply.md` (EN) | Assistente live per compilare i moduli di candidatura |
| `pipeline.md` | `modes/pipeline.md` (ES) | Inbox di URL / Second Brain per gli annunci raccolti |
Le altre modalità (`scan`, `batch`, `pdf`, `tracker`, `auto-pipeline`, `deep`, `contacto`, `ofertas`, `project`, `training`) rimangono in inglese/spagnolo. Il loro contenuto riguarda principalmente il tooling, i percorsi e i comandi, e deve rimanere indipendente dalla lingua.
## Cosa rimane in inglese
Volutamente non tradotto perché fa parte del vocabolario tecnologico standard:
- `cv.md`, `pipeline`, `tracker`, `report`, `score`, `archetype`, `proof point`
- Nomi degli strumenti (`Playwright`, `WebSearch`, `WebFetch`, `Read`, `Write`, `Edit`, `Bash`)
- Valori di stato nel tracker (`Evaluated`, `Applied`, `Interview`, `Offer`, `Rejected`)
- Porzioni di codice, percorsi, comandi
Le modalità utilizzano un italiano tech naturale, come quello parlato nei team di engineering: testo corrente in italiano, termini tecnici in inglese laddove è d'uso comune. Evitiamo traduzioni forzate (ad esempio, lasciamo "Pipeline" invece di "Canalizzazione" o "Deploy" invece di "Dispiegamento").
## Lessico di riferimento
Per mantenere un tono coerente se decidi di modificare o estendere le modalità:
| Inglese | Italiano (in questa codebase) |
|---------|-------------------------------|
| Job posting | Annuncio di lavoro |
| Application | Candidatura |
| Cover letter | Lettera di presentazione |
| Resume / CV | CV / Curriculum Vitae |
| Salary | Stipendio / Retribuzione |
| Compensation | Retribuzione |
| Skills | Competenze |
| Interview | Colloquio |
| Hiring manager | Responsabile della selezione |
| Recruiter | Recruiter / Selezionatore |
| AI | IA (Intelligenza Artificiale) |
| Requirements | Requisiti |
| Career history | Percorso professionale |
| Notice period | Periodo di preavviso |
| Probation | Periodo di prova |
| Vacation | Ferie |
| 13th month salary | Tredicesima |
| Permanent contract | Contratto a tempo indeterminato |
| Fixed-term contract | Contratto a tempo determinato |
| Freelance | Libero Professionista |
| Collective agreement | CCNL (Contratto Collettivo Nazionale di Lavoro) |
| Works council | RSU / Rappresentanza Sindacale |
| Profit sharing | Premio di risultato / MBO / Partecipazione agli utili |
| Meal vouchers | Buoni pasto |
| Health insurance | Assicurazione sanitaria integrativa / Cassa sanitaria |
| Disability/life insurance | Assicurazione vita |
| RTT | Permessi retribuiti |
| Cadre status | Quadro |
## Contribuire
Per migliorare una traduzione o aggiungere una modalità:
1. Apri una Issue con la tua proposta (vedi `CONTRIBUTING.md`)
2. Rispetta il lessico indicato sopra per mantenere un tono coerente
3. Traduci in modo idiomatico -- evita traduzioni letterali o da traduttore automatico
4. Conserva gli elementi strutturali (Blocchi A-F, tabelle, blocchi di codice, istruzioni strumenti) esattamente come nell'originale
5. Esegui un test con un vero annuncio in italiano prima di inviare la PR
+206
View File
@@ -0,0 +1,206 @@
# Contesto condiviso -- career-ops (Italiano)
<!-- ============================================================
PERSONALIZZAZIONE DI QUESTO FILE
============================================================
Questo file contiene il contesto condiviso per tutte le modalità
career-ops in versione italiana. Prima di usare career-ops, DEVI:
1. Compilare config/profile.yml con le tue informazioni personali
2. Creare cv.md nella cartella principale del progetto (CV in Markdown)
3. (Opzionale) Creare article-digest.md con i tuoi proof point misurabili
4. Adattare le sezioni contrassegnate come [PERSONALIZZARE] qui sotto
============================================================ -->
## Fonti di verità (Leggere SEMPRE prima di ogni valutazione)
| File | Percorso | Quando |
|------|----------|--------|
| cv.md | `cv.md` (radice del progetto) | SEMPRE |
| article-digest.md | `article-digest.md` (se presente) | SEMPRE (proof point dettagliati) |
| profile.yml | `config/profile.yml` | SEMPRE (identità e ruoli target) |
**REGOLA: Non hardcodare MAI metriche provenienti dai proof point.** Leggerle da `cv.md` e `article-digest.md` al momento della valutazione.
**REGOLA: Per metriche di articoli/progetti, `article-digest.md` ha priorità su `cv.md`** (`cv.md` può contenere dati meno recenti).
---
## North Star -- Ruoli target
Il sistema tratta TUTTI i ruoli target con la stessa cura. Nessuno è primario o secondario: ognuno è un successo se retribuzione e prospettive di crescita sono in linea:
| Archetipo | Assi tematici | Cosa compra l'azienda |
|-----------|---------------|-----------------------|
| **AI Platform / LLMOps Engineer** | Evaluation, Observability, Affidabilità, Pipeline | Qualcuno che porta l'IA in produzione con metriche concrete |
| **Agentic Workflows / Automation** | HITL, Tooling, Orchestrazione, Multi-Agent | Qualcuno che costruisce sistemi agentici affidabili |
| **Technical AI Product Manager** | GenAI/Agent, PRD, Discovery, Delivery | Qualcuno che traduce il business in prodotti IA |
| **AI Solutions Architect** | Iperautomazione, Enterprise, Integrazioni | Qualcuno che progetta architetture IA end-to-end |
| **AI Forward Deployed Engineer** | Client-facing, Consegna rapida, Prototipazione | Qualcuno che distribuisce soluzioni IA rapidamente dal cliente |
| **AI Transformation Lead** | Change management, Adozione, Enablement | Qualcuno che guida la trasformazione IA nelle organizzazioni |
<!-- [PERSONALIZZARE] Adatta gli archetipi sopra ai tuoi ruoli target.
Esempio per backend engineering:
- Senior Backend Engineer
- Staff Platform Engineer
- Engineering Manager
ecc. -->
### Framing adattivo per archetipo
> **Metriche concrete: leggerle da `cv.md` e `article-digest.md` al momento della valutazione. Non hardcodarle MAI qui.**
| Se il ruolo è... | Mettere in evidenza... | Fonti di proof point |
|------------------|------------------------|----------------------|
| Platform / LLMOps | Esperienza in produzione, observability, evals, closed-loop | article-digest.md + cv.md |
| Agentic / Automation | Orchestrazione multi-agent, HITL, affidabilità, ottimizzazione costi | article-digest.md + cv.md |
| Technical AI PM | Product discovery, PRD, metriche, gestione degli stakeholder | cv.md + article-digest.md |
| Solutions Architect | Progettazione di sistemi, integrazioni, enterprise-ready | article-digest.md + cv.md |
| Forward Deployed Engineer | Consegna rapida, vicinanza al cliente, da prototipo a produzione | cv.md + article-digest.md |
| AI Transformation Lead | Change management, enablement dei team, adozione | cv.md + article-digest.md |
<!-- [PERSONALIZZARE] Associa i tuoi progetti/articoli concreti agli archetipi qui sopra -->
### Narrativa di transizione (usare in TUTTI i framing)
<!-- [PERSONALIZZARE] Sostituisci con la tua narrativa personale. Esempi:
- "SaaS costruita e venduta dopo 5 anni. Ora 100% focus sull'IA applicata in azienda."
- "Lead engineer in una startup Series-B durante una crescita x10. In cerca della prossima sfida."
- "Transizione dalla consulenza al prodotto. Ricerca di ruoli ad alta responsabilità."
Letta da config/profile.yml -> narrative.exit_story -->
Usare la narrativa di transizione da `config/profile.yml` per inquadrare TUTTI i contenuti:
- **Nei summary PDF:** Fare il ponte tra passato e futuro -- "Applica ora le stesse [competenze] al dominio [dell'annuncio]."
- **Nelle storie STAR:** Fare riferimento ai proof point di `article-digest.md`.
- **Nelle bozze di risposta (Blocco G):** La narrativa di transizione va nella prima risposta.
- **Quando l'annuncio menziona "imprenditoriale", "autonomia", "builder", "end-to-end":** È IL differenziatore n.1. Aumentare il peso del match.
### Vantaggio trasversale
Inquadrare il profilo come **"Builder tecnico con pratica dimostrabile"**, adattando il framing al ruolo:
- Per PM: "Builder che riduce l'incertezza con prototipi veloci, poi rilascia in produzione in modo disciplinato"
- Per FDE: "Builder che consegna valore dal giorno 1 con observability e metriche"
- Per SA: "Builder che progetta sistemi end-to-end con vera esperienza di integrazione"
- Per LLMOps: "Builder che porta l'IA in produzione con sistemi di quality assurance a ciclo chiuso"
Posizionare "Builder" come segnale professionale -- non come hobby. I proof point reali lo rendono credibile.
### Portfolio come proof point (usare nelle candidature ad alto impatto)
<!-- [PERSONALIZZARE] Se hai una demo live, un dashboard o un progetto pubblico, configuralo qui.
Esempio:
dashboard:
url: "https://tuodominio.dev/demo"
password: "demo-2026"
when_to_share: "Ruoli LLMOps, AI Platform, Observability"
Letto da config/profile.yml -> narrative.proof_points e narrative.dashboard -->
Se il candidato ha una demo live o un dashboard (verificare in `profile.yml`), proporne l'accesso nelle candidature pertinenti.
### Intelligence sulle retribuzioni (Comp Intelligence)
<!-- [PERSONALIZZARE] Cerca le fasce retributive per i tuoi ruoli target e adatta i valori -->
**Consigli generali:**
- WebSearch per i dati di mercato attuali (Glassdoor, Levels.fyi, LinkedIn IT, portali locali)
- Inquadrare per titolo di ruolo, non per singole competenze -- i titoli definiscono le fasce salariali
- Le tariffe per Liberi Professionisti in Italia devono coprire tasse, contributi previdenziali (INPS Gestione Separata o Cassa di categoria), ferie e assenze -- generalmente il 40-60% in più rispetto al costo lordo di un dipendente equivalente
- Il geo-arbitraggio funziona anche in remote: costo della vita più basso = risparmio netto maggiore
### Mercato italiano -- Specificità (IMPORTANTE)
Negli annunci e nelle trattative in Italia si usano termini e tutele specifici che vanno considerati con precisione:
| Termine | Significato | Impatto sulla valutazione |
|---------|-------------|---------------------------|
| **Contratto a tempo indeterminato** | Lavoro permanente. È lo standard in Italia | Standard atteso. Un contratto a termine per un profilo senior è un segnale d'allerta |
| **Contratto a tempo determinato** | Contratto con durata prestabilita | Accettabile per progetti specifici. Altrimenti, capire perché non viene offerto l'indeterminato |
| **Periodo di prova** | Fase iniziale per verificare la compatibilità (1-6 mesi a seconda del CCNL) | Standard. Segnalare se supera i limiti legali o previsti dal CCNL applicato |
| **Periodo di preavviso** | Tempo minimo prima di potersi dimettere (di solito 1-3 mesi) | Da verificare per pianificare la data di inizio del nuovo ruolo |
| **Quadro** | Categoria contrattuale per impiegati con mansioni direttive o alta specializzazione | La maggior parte dei ruoli senior/lead nel tech rientra qui. Verificare se menzionato |
| **CCNL** (Contratto Collettivo Nazionale) | Accordo quadro di settore (es. Metalmeccanico, Terziario/Commercio). Fissa minimi salariali e scatti | Verificare CCNL e livello proposto per calcolare correttamente superminimo e retribuzione |
| **Permessi retribuiti** | Ore di riposo accumulate (es. ex-festività) in aggiunta alle ferie | Un plus concreto da valorizzare nel calcolo del tempo libero annuale |
| **Tredicesima** | Mensilità aggiuntiva erogata tipicamente a dicembre | Da includere nel calcolo della RAL (mensile x 13 + superminimo/bonus). Non dimenticarla nei confronti |
| **TFR** (Trattamento di Fine Rapporto) | Liquidazione accumulata mensilmente (~7,4% della RAL) e liquidata a fine rapporto | Elemento fondamentale della retribuzione differita nel valore complessivo del pacchetto |
| **Premio di risultato / MBO / Partecipazione utili** | Bonus variabili legati a performance individuali o aziendali | Può incrementare significativamente la retribuzione. Verificare i criteri di erogazione |
| **Buoni pasto** | Ticket per il pranzo (es. Edenred, Ticket Restaurant), esenti da tasse entro soglie giornaliere | Benefit standard ma concreto. Può valere 1.000-2.000 EUR netti all'anno |
| **Assicurazione sanitaria integrativa** | Fondo sanitario previsto dai CCNL (es. Metasalute, Fondo Est) | Standard contrattuale. Verificare se la copertura è estesa al nucleo familiare |
| **Assicurazione vita** | Polizza vita obbligatoria secondo CCNL per Dirigenti | Importante da verificare in caso di inquadramento Quadro |
| **RSU / Rappresentanza Sindacale** | Organo di rappresentanza sindacale in azienda | Più comune nei grandi gruppi, impatto minore nelle trattative individuali tech |
| **Ferie** | Minimo di legge di 4 settimane (20-22 giorni), spesso estese dal CCNL | Sotto il minimo legale è illegale. Ottimo se superiore a 25 giorni più permessi retribuiti |
| **Libero Professionista** | Collaborazione a Partita IVA | Alternativa al rapporto di lavoro dipendente. Attenzione alla gestione fiscale (regime forfettario) e alle clausole di esclusività |
### Script di negoziazione
<!-- [PERSONALIZZARE] Adatta alla tua situazione -->
**Aspettative retributive (framework generale):**
> "Sulla base dei dati di mercato attuali per questo ruolo, miro a una fascia di [FASCIA da profile.yml] come RAL. Resto flessibile sulla struttura: ciò che conta è il valore complessivo del pacchetto e le prospettive di crescita."
**Risposta a offerte ridotte per localizzazione:**
> "I ruoli per cui sono in selezione sono orientati ai risultati, non alla posizione geografica. Il mio track record non cambia con il codice postale."
**Se l'offerta è sotto il target:**
> "In questo momento sto discutendo con altre aziende pacchetti nella fascia [fascia superiore]. La vostra realtà mi interessa molto per [motivo]. C'è margine per arrivare a [target]?"
**Chiarimento su Tredicesima / CCNL / Bonus:**
> "Per confrontare i pacchetti in modo equo, potremmo dettagliare separatamente la RAL fissa (inclusa la tredicesima ed eventuali superminimi), la parte variabile e gli altri benefit?"
### Politica di localizzazione (Location Policy)
<!-- [PERSONALIZZARE] Adatta alla tua situazione. Letta da config/profile.yml -> location -->
**Nei moduli di candidatura:**
- Domande binarie "Puoi lavorare in sede?": rispondere in base alla disponibilità reale in `profile.yml`
- Campi liberi: indicare esplicitamente il fuso orario di lavoro e la disponibilità a trasferte
**Nelle valutazioni (scoring):**
- Posizioni ibride fuori dal proprio paese di residenza: punteggio **3.0** (non 1.0)
- Punteggio 1.0 solo se l'annuncio dichiara esplicitamente "presenza obbligatoria in sede 4-5 giorni a settimana, nessuna eccezione"
### Priorità time-to-offer
- Demo funzionante + metriche > perfezione formale
- Candidarsi subito > approfondire all'infinito
- Approccio 80/20, ogni attività è in timebox
---
## Regole globali
### MAI
1. Inventare esperienze o metriche
2. Modificare `cv.md` o i file del portfolio
3. Inviare candidature a nome del candidato senza il suo consenso
4. Condividere un numero di telefono nei messaggi generati
5. Raccomandare una retribuzione sotto il mercato
6. Generare un PDF senza aver prima letto l'annuncio
7. Usare jargon corporate o formule vuote
8. Ignorare il tracker (ogni annuncio valutato va registrato)
### SEMPRE
0. **Lettera di presentazione:** Se il modulo lo consente, includerla SEMPRE. PDF con lo stesso design visivo del CV. Citazioni dell'annuncio mappate sui proof point. Massimo 1 pagina.
1. Leggere `cv.md` e `article-digest.md` (se presente) prima di valutare un annuncio
1b. **Prima valutazione di ogni sessione:** eseguire `node cv-sync-check.mjs` via Bash. In caso di avvisi, informare il candidato.
2. Rilevare l'archetipo del ruolo e adattare il framing
3. Citare righe esatte del CV durante il matching
4. Usare WebSearch per dati retributivi e informazioni sull'azienda
5. Registrare nel tracker dopo ogni valutazione
6. Generare il contenuto nella lingua dell'annuncio (italiano se l'annuncio è in italiano, inglese altrimenti)
7. Essere diretti e concreti -- nessun giro di parole
8. Italiano tech naturale per i testi generati. Frasi brevi, verbi d'azione, evitare il passivo. Non tradurre forzatamente i termini tecnici (stack, pipeline, deployment, embedding, ecc.)
8b. **URL dei case study nel Professional Summary del PDF:** Se il PDF menziona demo o case study, i relativi URL DEVONO comparire nel primo paragrafo (Professional Summary) -- i recruiter spesso leggono solo quello. Tutti gli URL in HTML con `white-space: nowrap`
9. **Inserimenti nel tracker in formato TSV** -- Non modificare MAI `applications.md` direttamente per nuovi inserimenti. Scrivere il file TSV in `batch/tracker-additions/`, sarà `merge-tracker.mjs` a gestire la fusione
10. **`**URL:**` in ogni intestazione di report** -- inserito tra Score e PDF
### Strumenti
| Strumento | Utilizzo |
|-----------|----------|
| WebSearch | Ricerca retribuzioni, tendenze, cultura aziendale, contatti LinkedIn, fallback annunci |
| WebFetch | Fallback per estrarre annunci da pagine statiche |
| Playwright | Verificare se gli annunci sono attivi (browser_navigate + browser_snapshot), estrarre annunci da Single Page Application (SPA). **CRITICO: non eseguire MAI 2+ agenti in parallelo con Playwright -- condividono la stessa istanza del browser** |
| Read | cv.md, article-digest.md, cv-template.html |
| Write | HTML temporaneo per PDF, applications.md, report .md |
| Edit | Aggiornare il tracker |
| Bash | `node generate-pdf.mjs` |
+166
View File
@@ -0,0 +1,166 @@
# Modalità: annuncio -- Valutazione completa A-F
Quando il candidato incolla o fornisce un annuncio di lavoro (testo o URL), fornire SEMPRE i 6 blocchi di valutazione.
## Blocco 0 -- Rilevamento dell'archetipo
Classificare l'annuncio in uno dei 6 archetipi di riferimento (vedi `_shared.md`). Se è un ruolo ibrido, indicare i 2 archetipi più vicini. Questa classificazione determina:
- Quali proof point prioritizzare nel Blocco B
- Come riformulare il summary del CV nel Blocco E
- Quali storie STAR preparare nel Blocco F
## Blocco A -- Riepilogo del ruolo
Tabella con:
- Archetipo rilevato
- Settore (Platform / Agentic / LLMOps / ML / Enterprise)
- Funzione (Build / Consulenza / Management / Deploy)
- Seniority
- Localizzazione (Full remote / Ibrido / In sede)
- Dimensione del team (se menzionata)
- TL;DR in una sola frase
## Blocco B -- Corrispondenza con il CV
Leggere `cv.md`. Creare una tabella che mappa ogni requisito dell'annuncio su righe esatte del CV.
**Adattamento per archetipo:**
- FDE -> priorità a proof point su velocità di consegna e vicinanza al cliente
- SA -> priorità a progettazione di sistemi e integrazioni complesse
- PM -> priorità a product discovery e metriche di prodotto/business
- LLMOps -> priorità a evals, observability e pipeline in produzione
- Agentic -> priorità a orchestrazione multi-agent, HITL e gestione affidabile degli errori
- Transformation -> priorità a change management, enablement e adozione organizzativa
Aggiungere una sezione **Gap** con strategia di mitigazione per ogni lacuna rilevata:
1. È un blocco insormontabile o un nice-to-have?
2. Il candidato può dimostrare un'esperienza affine o complementare?
3. C'è un progetto nel portfolio che copre questa lacuna?
4. Piano di mitigazione concreto (es. frase per la lettera di presentazione, mini-progetto rapido, ecc.)
## Blocco C -- Inquadramento e strategia
1. **Livello rilevato** nell'annuncio rispetto al **livello naturale del candidato** per questo archetipo.
2. **Piano "valorizzare la seniority in modo autentico"**: formulazioni specifiche per l'archetipo, risultati concreti da evidenziare, come posizionare l'esperienza da founder/imprenditore come valore aggiunto.
3. **Piano "se proposto per un livello inferiore (downlevel)"**: accettare solo se la retribuzione è equa, negoziare revisione a 6 mesi, concordare criteri di promozione chiari fin dall'inizio.
## Blocco D -- Retribuzione e mercato
Usare WebSearch per raccogliere:
- Stipendi attuali per lo stesso ruolo (Glassdoor, Levels.fyi, LinkedIn IT, portali locali)
- Reputazione retributiva dell'azienda (Glassdoor, recensioni online)
- Andamento della domanda per questo ruolo sul mercato italiano
Presentare i dati in tabella con le fonti. Se non ci sono dati, dichiararlo esplicitamente -- non inventare.
**Mercato italiano -- Verifiche obbligatorie:**
- La tredicesima / quattordicesima è menzionata? Includerla nel calcolo della RAL.
- È prevista una parte variabile (bonus, MBO, stock option)?
- Si fa riferimento a Premio di risultato o partecipazione agli utili? Verificare lo storico aziendale.
- Quale CCNL viene applicato? Verificare inquadramento e livello contrattuale proposto.
- Contratto a tempo indeterminato o determinato? Se determinato: durata, motivazione e possibilità di conversione.
- Libero Professionista? Tariffa giornaliera, durata della collaborazione e rischio di contestazione per "falsa Partita IVA" (vincoli di orario e sede).
## Blocco E -- Piano di personalizzazione
| # | Sezione | Stato attuale | Modifica proposta | Giustificazione |
|---|---------|---------------|-------------------|--------------------|
| 1 | Summary | ... | ... | ... |
| ... | ... | ... | ... | ... |
Fornire le 5 modifiche principali al CV + le 5 modifiche principali al profilo LinkedIn per massimizzare il match con l'annuncio.
## Blocco F -- Piano dei colloqui
6-10 storie in formato STAR+R mappate sui requisiti dell'annuncio (STAR + **Reflection**):
| # | Requisito dell'annuncio | Storia STAR+R | S | T | A | R | Reflection |
|---|-------------------------|---------------|---|---|---|---|------------|
La colonna **Reflection** cattura cosa si è imparato o cosa si farebbe diversamente. Questo elemento segnala seniority: i profili junior descrivono cosa è successo, i senior ne traggono insegnamenti e linee guida.
**Story Bank:** Se `interview-prep/story-bank.md` esiste, verificare se le storie sono già presenti. In caso contrario, aggiungerle. Con il tempo si costruisce un archivio riutilizzabile di 5-10 storie principali adattabili a qualsiasi colloquio.
**Storie inquadrate per archetipo:**
- FDE -> evidenziare velocità di consegna e vicinanza al cliente
- SA -> evidenziare decisioni di architettura e trade-off tecnici
- PM -> evidenziare product discovery e arbitraggi tra priorità
- LLMOps -> evidenziare metriche, evals e hardening in produzione
- Agentic -> evidenziare orchestrazione, gestione degli errori e cicli HITL
- Transformation -> evidenziare adozione dell'IA e change management su persone e processi
Includere anche:
- 1 case study raccomandato (quale progetto presentare e con quale struttura)
- Domande a rischio (red flag) e come rispondere (es. "Perché ha venduto la sua azienda?", "Aveva un team sotto di sé?", "Come mai ha cambiato dopo poco tempo?")
---
## Post-valutazione
Eseguire **SEMPRE** dopo i blocchi A-F:
### 1. Salvare il report .md
Salvare la valutazione completa in `reports/{###}-{company-slug}-{YYYY-MM-DD}.md`.
- `{###}` = prossimo numero sequenziale a 3 cifre, zero-padded. Allocarlo in modo atomico eseguendo `node reserve-report-num.mjs` (restituisce `{###}` su stdout), scrivere il report, poi eseguire `node reserve-report-num.mjs --release {###}` per liberare la prenotazione.
- `{company-slug}` = nome dell'azienda in minuscolo senza spazi (usare i trattini)
- `{YYYY-MM-DD}` = data odierna
**Formato del report:**
```markdown
# Valutazione: {Azienda} -- {Ruolo}
**Data:** {YYYY-MM-DD}
**Archetipo:** {rilevato}
**Punteggio:** {X/5}
**URL:** {URL dell'annuncio}
**PDF:** {percorso del file o in attesa}
---
## A) Riepilogo del ruolo
(contenuto completo del blocco A)
## B) Corrispondenza con il CV
(contenuto completo del blocco B)
## C) Inquadramento e strategia
(contenuto completo del blocco C)
## D) Retribuzione e mercato
(contenuto completo del blocco D)
## E) Piano di personalizzazione
(contenuto completo del blocco E)
## F) Piano dei colloqui
(contenuto completo del blocco F)
## G) Bozze di risposta per la candidatura
(solo se punteggio >= 4.5 -- risposte pronte per i moduli del portale aziendale)
---
## Parole chiave estratte
(15-20 parole chiave estratte dall'annuncio per il superamento dei filtri ATS)
```
### 2. Registrare nel tracker
Registrare **SEMPRE** la valutazione in `data/applications.md`:
- Prossimo numero sequenziale
- Data odierna
- Azienda
- Ruolo
- Punteggio: media del match (da 1 a 5)
- Stato: `Evaluated`
- PDF: no (o sì se l'auto-pipeline ha generato il PDF direttamente)
- Report: link relativo al file del report (es: `[001](reports/001-azienda-2026-01-01.md)`)
**Formato del tracker:**
```markdown
| # | Data | Azienda | Ruolo | Punteggio | Stato | PDF | Report |
```
+114
View File
@@ -0,0 +1,114 @@
# Modalità: candidarsi -- Assistente live per i moduli di candidatura
Modalità interattiva per quando il candidato compila un modulo di candidatura (es. su LinkedIn o un portale aziendale). Legge lo schermo, carica il contesto della valutazione precedente dell'annuncio e genera risposte personalizzate per ogni domanda del modulo.
## Prerequisiti
- **Ottimale con Playwright visibile:** il candidato vede il browser e l'agente può interagire direttamente con la pagina.
- **Senza Playwright:** il candidato condivide uno screenshot o incolla le domande manualmente.
## Workflow
```
1. RILEVARE -> Leggere la scheda attiva del browser (screenshot/URL/titolo)
2. IDENTIFICARE -> Estrarre azienda + ruolo dalla pagina
3. CERCARE -> Trovare corrispondenze con i report esistenti in reports/
4. CARICARE -> Leggere il report completo + Blocco G (se esiste)
5. CONFRONTARE -> Il ruolo a schermo corrisponde a quello valutato? Se cambia -> avvisare
6. ANALIZZARE -> Identificare TUTTE le domande visibili nel modulo
7. GENERARE -> Per ogni domanda, generare una risposta personalizzata
8. PRESENTARE -> Mostrare le risposte formattate pronte per il copia-incolla
```
## Fase 1 -- Rilevare l'annuncio
**Con Playwright:** Snapshot della pagina attiva. Leggere titolo, URL e contenuto visibile.
**Senza Playwright:** Chiedere al candidato di:
- Condividere uno screenshot del modulo (il Read tool legge il testo dall'immagine)
- Oppure incollare le domande in formato testo
- Oppure indicare azienda e ruolo per cercare il report corrispondente
## Fase 2 -- Identificare e caricare il contesto
1. Estrarre il nome dell'azienda e il titolo del ruolo dalla pagina.
2. Cercare in `reports/` per nome azienda (Grep case-insensitive).
3. Se c'è corrispondenza -> caricare il report completo.
4. Se il Blocco G è presente -> usare le bozze precedenti come base di partenza.
5. Se NON c'è corrispondenza -> avvisare il candidato e proporre un auto-pipeline rapido.
## Fase 3 -- Rilevare variazioni nel ruolo
Se il ruolo a schermo differisce da quello valutato:
- **Avvisare il candidato:** "Il ruolo rilevato è [Y], il report fa riferimento a [X]. Vuoi che riesegua la valutazione o che adatti le risposte al nuovo titolo?"
- **Se adattare:** Aggiornare le risposte al nuovo ruolo senza rieseguire la valutazione completa.
- **Se rivalutare:** Avviare la valutazione completa A-F, aggiornare il report e rigenerare il Blocco G.
- **Aggiornare il tracker:** Modificare il titolo del ruolo in `applications.md` se necessario.
## Fase 4 -- Analizzare le domande del modulo
Identificare tutte le domande visibili a schermo:
- Campi di testo libero (lettera di presentazione, "perché questa posizione", motivazione, ecc.)
- Elenchi a discesa (come hai conosciuto l'azienda, permessi di lavoro, ecc.)
- Domande Sì/No (disponibilità al trasferimento, necessità di visto, disponibilità temporale, ecc.)
- Campi retribuzione (retribuzione desiderata -- indicare la RAL in euro per l'Italia)
- Campi di upload (CV, lettera di presentazione PDF, referenze)
Classificare ogni domanda:
- **Già nel Blocco G:** riprendere la risposta esistente
- **Nuova domanda:** generare la risposta partendo dal report e da `cv.md`
## Fase 5 -- Generare le risposte
Per ogni domanda, costruire la risposta seguendo questo schema:
1. **Contesto del report:** usare i proof point del Blocco B e le storie STAR del Blocco F.
2. **Blocco G precedente:** se esiste una bozza, usarla come base e affinarla.
3. **Tono "Vi scelgo":** sicuro e professionale, non implorante né puramente descrittivo.
4. **Specificità:** citare qualcosa di concreto dell'annuncio visibile a schermo.
5. **career-ops proof point:** includerlo nel campo "Informazioni aggiuntive" se presente nel modulo.
**Campi specifici per i moduli di candidatura italiani:**
- **Retribuzione desiderata (RAL):** fascia definita in `profile.yml` in euro, con l'aggiunta "negoziabile in base al pacchetto complessivo di benefit e welfare".
- **Data di disponibilità:** data realistica tenendo conto del periodo di preavviso (di solito 1-3 mesi).
- **Permesso di lavoro / Cittadinanza:** risposte concise; per i cittadini italiani/UE: "Nessun visto richiesto (cittadino UE)".
- **Lingue:** livelli secondo il Quadro Comune Europeo di Riferimento (QCER, A1-C2).
- **Mobilità:** specificare le aree geografiche accettabili e la frequenza massima delle trasferte (es. "disponibile a trasferte fino al 20% del tempo").
**Formato di output:**
```
## Risposte per [Azienda] -- [Ruolo]
Base: Report #NNN | Punteggio: X.X/5 | Archetipo: [tipo]
---
### 1. [Domanda esatta del modulo]
> [Risposta pronta per il copia-incolla]
### 2. [Domanda successiva]
> [Risposta]
...
---
Note:
- [Osservazioni sul ruolo, variazioni, ecc.]
- [Suggerimenti di personalizzazione che il candidato dovrebbe verificare]
```
## Fase 6 -- Dopo la candidatura (opzionale)
Se il candidato conferma di aver inviato il modulo:
1. Aggiornare lo stato in `applications.md` da "Evaluated" a "Applied".
2. Aggiornare il Blocco G del report con le risposte effettivamente inviate.
3. Suggerire il passo successivo: `/career-ops contacto` per avviare il contatto su LinkedIn con il responsabile della selezione.
## Gestione dello scorrimento
Se il modulo contiene più domande rispetto a quelle visibili:
- Chiedere al candidato di scorrere la pagina e condividere un altro screenshot.
- Oppure incollare le domande restanti.
- Procedere per iterazioni fino a coprire l'intero modulo.
+62
View File
@@ -0,0 +1,62 @@
# Modalità: pipeline -- Inbox degli URL (Second Brain)
Elabora gli URL degli annunci accumulati in `data/pipeline.md`. Il candidato aggiunge gli URL quando vuole, poi esegue `/career-ops pipeline` per elaborarli tutti in una volta.
## Workflow
1. **Leggere** `data/pipeline.md` -> trovare gli elementi contrassegnati come `- [ ]` nella sezione "In attesa" / "Pending" / "Pendientes" / "En attente"
2. **Per ogni URL in attesa**:
a. Riservare il prossimo `REPORT_NUM` sequenziale eseguendo `node reserve-report-num.mjs` (liberare la prenotazione con `node reserve-report-num.mjs --release <num>` una volta scritto il report)
b. **Estrarre l'annuncio** con Playwright (`browser_navigate` + `browser_snapshot`) -> WebFetch -> WebSearch
c. Se l'URL non è accessibile -> contrassegnarlo come `- [!]` con una nota e passare al successivo
d. **Auto-pipeline completo**: Valutazione A-F -> Report .md -> PDF (se punteggio >= 3.0) -> Tracker
e. **Spostare da "In attesa" a "Elaborati"**: `- [x] #NNN | URL | Azienda | Ruolo | Punteggio/5 | PDF sì/no`
3. **Se ci sono 3+ URL in attesa**, avviare gli agenti in parallelo (strumento Agent con `run_in_background`) per massimizzare la velocità.
4. **Al termine**, mostrare una tabella riassuntiva:
```
| # | Azienda | Ruolo | Punteggio | PDF | Azione raccomandata |
```
## Formato di pipeline.md
```markdown
## In attesa
- [ ] https://jobs.example.com/posting/123
- [ ] https://boards.greenhouse.io/company/jobs/456 | Azienda SRL | Senior PM
- [!] https://private.url/job -- Errore: richiesto login
## Elaborati
- [x] #143 | https://jobs.example.com/posting/789 | Acme SRL | AI PM | 4.2/5 | PDF sì
- [x] #144 | https://boards.greenhouse.io/xyz/jobs/012 | BigCo | SA | 2.1/5 | PDF no
```
> Nota: Le intestazioni delle sezioni possono essere in inglese ("Pending"/"Processed"), spagnolo ("Pendientes"/"Procesadas"), tedesco ("Offen"/"Verarbeitet"), francese ("En attente"/"Traitees") o italiano ("In attesa"/"Elaborati"). Flessibili in lettura, fedeli allo stile esistente in scrittura.
## Rilevamento dell'annuncio dall'URL
1. **Playwright (preferito):** `browser_navigate` + `browser_snapshot`. Funziona con tutte le Single Page Application (SPA).
2. **WebFetch (fallback):** Per le pagine statiche o quando Playwright non è disponibile.
3. **WebSearch (ultima risorsa):** Per cercare su portali secondari che indicizzano l'annuncio.
**Casi particolari:**
- **LinkedIn:** può richiedere login -> contrassegnare come `[!]` e chiedere al candidato di incollare il testo dell'annuncio
- **PDF:** se l'URL punta a un PDF, leggerlo direttamente con il Read tool
- **Prefisso `local:`:** legge un file locale. Esempio: `local:jds/linkedin-pm-ai.md` -> legge `jds/linkedin-pm-ai.md`
- **Indeed IT / LinkedIn IT:** portali molto diffusi in Italia. Playwright gestisce bene i cookie banner.
## Numerazione automatica
1. Eseguire `node reserve-report-num.mjs` per riservare in modo atomico il prossimo numero sequenziale (restituisce `{###}` su stdout).
2. Scrivere il report con questo numero.
3. Liberare la prenotazione con `node reserve-report-num.mjs --release {###}` una volta scritto il report.
## Sincronizzazione delle fonti
Prima di elaborare un URL, verificare la sincronizzazione:
```bash
node cv-sync-check.mjs
```
In caso di desincronizzazione, avvisare il candidato prima di procedere.