init
This commit is contained in:
commit
d295c7f139
1527 files changed
+270726
No files matched your search
@@ -0,0 +1,103 @@
|
||||
# career-ops -- Danske modes (`modes/da/`)
|
||||
|
||||
Denne mappe indeholder de danske oversættelser af de vigtigste career-ops-modes for kandidater, der søger på det danske marked.
|
||||
|
||||
## Hvornår skal du bruge disse modes?
|
||||
|
||||
Brug `modes/da/`, hvis mindst én af disse betingelser er opfyldt:
|
||||
|
||||
- Du søger primært **jobopslag på dansk** (Jobindex, The Hub, LinkedIn DK, virksomhedernes karrieresider, Jobnet)
|
||||
- Dit **CV er på dansk**, eller du skifter mellem DA og EN afhængigt af opslaget
|
||||
- Du har brug for svar og ansøgninger på **naturligt tech-dansk**, ikke maskinoversat
|
||||
- Du skal håndtere **danske kontraktspecifikke forhold**: overenskomst, funktionærloven, ferie efter ferieloven, opsigelsesvarsel, prøvetid, pension, feriepenge, A-kasse, fagforening
|
||||
|
||||
Hvis de fleste af dine opslag er på engelsk, så bliv ved standard-modes i `modes/`. De engelske modes fungerer til danske opslag, men de kender ikke det danske markeds særtræk i detaljen.
|
||||
|
||||
## Hvordan aktiverer du dem?
|
||||
|
||||
### Mulighed 1 -- Per session
|
||||
|
||||
Sig til Claude i starten af sessionen:
|
||||
|
||||
> "Brug de danske modes under `modes/da/`."
|
||||
|
||||
Claude vil så læse filerne i denne mappe i stedet for `modes/`.
|
||||
|
||||
### Mulighed 2 -- Permanent
|
||||
|
||||
Tilføj i `config/profile.yml`:
|
||||
|
||||
```yaml
|
||||
language:
|
||||
primary: da
|
||||
modes_dir: modes/da
|
||||
```
|
||||
|
||||
Mind Claude om det i din første session ("Kig i `profile.yml`, jeg har konfigureret `language.modes_dir`"). Claude bruger så automatisk de danske modes.
|
||||
|
||||
## Hvilke modes er oversat?
|
||||
|
||||
Denne første iteration dækker de fire modes med størst effekt:
|
||||
|
||||
| Fil | Oversat fra | Rolle |
|
||||
|-----|-------------|-------|
|
||||
| `_shared.md` | `modes/_shared.md` (EN) | Delt kontekst, arketyper, globale regler, særtræk ved det danske marked |
|
||||
| `oferta.md` | `modes/oferta.md` (ES) | Fuld evaluering af et opslag (Blok A-F) |
|
||||
| `apply.md` | `modes/apply.md` (EN) | Live-assistent til udfyldelse af ansøgningsformularer |
|
||||
| `pipeline.md` | `modes/pipeline.md` (ES) | URL-indbakke / Second Brain til indsamlede opslag |
|
||||
|
||||
De øvrige modes (`scan`, `batch`, `pdf`, `tracker`, `auto-pipeline`, `deep`, `contacto`, `ofertas`, `project`, `training`) forbliver på EN/ES. Deres indhold er primært tooling, stier og kommandoer -- det skal forblive sproguafhængigt.
|
||||
|
||||
## Hvad forbliver på engelsk
|
||||
|
||||
Bevidst ikke oversat, fordi det er standard tech-ordforråd:
|
||||
|
||||
- `cv.md`, `pipeline`, `tracker`, `report`, `score`, `archetype`, `proof point`
|
||||
- Værktøjsnavne (`Playwright`, `WebSearch`, `WebFetch`, `Read`, `Write`, `Edit`, `Bash`)
|
||||
- Statusværdier i trackeren (`Evaluated`, `Applied`, `Interview`, `Offer`, `Rejected`)
|
||||
- Kodeuddrag, stier, kommandoer
|
||||
|
||||
Modes bruger naturligt tech-dansk, sådan som det tales i engineering-teams i København, Aarhus eller Odense: løbende tekst på dansk, tekniske termer på engelsk dér, hvor det er normen. Ingen tvungen oversættelse af "Pipeline" til "Rørledning" eller "Deploy" til "Udrulning".
|
||||
|
||||
## Referenceordliste
|
||||
|
||||
For at holde tonen konsistent, hvis du ændrer eller udvider modes:
|
||||
|
||||
| Engelsk | Dansk (i denne codebase) |
|
||||
|---------|--------------------------|
|
||||
| Job posting | Jobopslag / Stillingsopslag |
|
||||
| Application | Ansøgning |
|
||||
| Cover letter | Ansøgning (motiveret) / Følgebrev |
|
||||
| Resume / CV | CV |
|
||||
| Salary | Løn / Aflønning |
|
||||
| Compensation | Aflønning / Pakke |
|
||||
| Skills | Kompetencer |
|
||||
| Interview | Samtale / Jobsamtale |
|
||||
| Hiring manager | Ansættende leder / Hiring manager |
|
||||
| Recruiter | Rekrutteringskonsulent (eller Recruiter) |
|
||||
| AI | AI (kunstig intelligens) |
|
||||
| Requirements | Krav / Forudsætninger |
|
||||
| Career history | Karriereforløb / Erhvervserfaring |
|
||||
| Notice period | Opsigelsesvarsel |
|
||||
| Probation | Prøvetid |
|
||||
| Vacation | Ferie |
|
||||
| Holiday pay | Feriepenge |
|
||||
| Permanent employment | Fastansættelse (tidsubegrænset) |
|
||||
| Fixed-term contract | Tidsbegrænset ansættelse |
|
||||
| Freelance | Freelance / Selvstændig |
|
||||
| Collective agreement | Overenskomst |
|
||||
| Salaried-employee act | Funktionærloven |
|
||||
| Holiday act | Ferieloven |
|
||||
| Trade union | Fagforening |
|
||||
| Unemployment insurance fund | A-kasse |
|
||||
| Pension | Pension (arbejdsgiverbidrag) |
|
||||
|
||||
## Bidrag
|
||||
|
||||
For at forbedre en oversættelse eller tilføje en mode:
|
||||
|
||||
1. Åbn en Issue med dit forslag (se `CONTRIBUTING.md`)
|
||||
2. Følg ordlisten ovenfor for at holde tonen konsistent
|
||||
3. Oversæt idiomatisk -- ingen ord-for-ord-oversættelse
|
||||
4. Bevar de strukturelle elementer (Blok A-F, tabeller, kodeblokke, værktøjsinstruktioner) uændret
|
||||
5. Test med et rigtigt dansk opslag (Jobindex, The Hub, LinkedIn DK), før du sender din PR
|
||||
@@ -0,0 +1,203 @@
|
||||
# Delt kontekst -- career-ops (Dansk)
|
||||
|
||||
<!-- ============================================================
|
||||
TILPASNING AF DENNE FIL
|
||||
============================================================
|
||||
Denne fil indeholder den delte kontekst for alle career-ops-modes
|
||||
i den danske version. Før du bruger career-ops, SKAL du:
|
||||
1. Udfylde config/profile.yml med dine personlige oplysninger
|
||||
2. Oprette cv.md i projektets rod (CV i Markdown)
|
||||
3. (Valgfrit) Oprette article-digest.md med dine proof points
|
||||
4. Tilpasse de afsnit, der er markeret med [TILPAS] nedenfor
|
||||
============================================================ -->
|
||||
|
||||
## Kilder til sandhed (læs ALTID før hver evaluering)
|
||||
|
||||
| Fil | Sti | Hvornår |
|
||||
|-----|-----|---------|
|
||||
| cv.md | `cv.md` (projektets rod) | ALTID |
|
||||
| article-digest.md | `article-digest.md` (hvis den findes) | ALTID (detaljerede proof points) |
|
||||
| profile.yml | `config/profile.yml` | ALTID (identitet og målroller) |
|
||||
|
||||
**REGEL: Aldrig hardcode metrics fra proof points.** Læs dem fra `cv.md` og `article-digest.md` på evalueringstidspunktet.
|
||||
**REGEL: For metrics om artikler/projekter har `article-digest.md` forrang frem for `cv.md`** (`cv.md` kan indeholde ældre tal).
|
||||
|
||||
---
|
||||
|
||||
## North Star -- Målroller
|
||||
|
||||
Dette skill behandler ALLE målroller med samme omhu. Ingen er primær eller sekundær -- hver enkelt er en succes, hvis aflønning og udviklingsmuligheder er til stede:
|
||||
|
||||
| Arketype | Tematiske akser | Hvad virksomheden køber |
|
||||
|----------|-----------------|-------------------------|
|
||||
| **AI Platform / LLMOps Engineer** | Evaluation, Observability, Pålidelighed, Pipelines | En der sætter AI i produktion med metrics |
|
||||
| **Agentic Workflows / Automation** | HITL, Tooling, Orkestrering, Multi-Agent | En der bygger pålidelige agent-systemer |
|
||||
| **Technical AI Product Manager** | GenAI/Agents, PRDs, Discovery, Delivery | En der oversætter forretning til AI-produkter |
|
||||
| **AI Solutions Architect** | Hyperautomation, Enterprise, Integrationer | En der designer end-to-end AI-arkitekturer |
|
||||
| **AI Forward Deployed Engineer** | Client-facing, Hurtig levering, Prototyping | En der hurtigt udruller AI-løsninger hos kunden |
|
||||
| **AI Transformation Lead** | Forandringsledelse, Adoption, Enablement | En der driver AI-transformation i organisationer |
|
||||
|
||||
<!-- [TILPAS] Tilpas arketyperne ovenfor til dine målroller.
|
||||
Eksempel for backend engineering:
|
||||
- Senior Backend Engineer
|
||||
- Staff Platform Engineer
|
||||
- Engineering Manager
|
||||
osv. -->
|
||||
|
||||
### Adaptiv framing efter arketype
|
||||
|
||||
> **Konkrete metrics: læs dem fra `cv.md` og `article-digest.md` på evalueringstidspunktet. ALDRIG hardcode dem her.**
|
||||
|
||||
| Hvis rollen er... | Fremhæv hos kandidaten... | Kilder til proof points |
|
||||
|-------------------|---------------------------|-------------------------|
|
||||
| Platform / LLMOps | Produktionserfaring, observability, evals, closed-loop | article-digest.md + cv.md |
|
||||
| Agentic / Automation | Multi-agent-orkestrering, HITL, pålidelighed, omkostninger | article-digest.md + cv.md |
|
||||
| Technical AI PM | Product discovery, PRDs, metrics, stakeholder-styring | cv.md + article-digest.md |
|
||||
| Solutions Architect | Systemdesign, integrationer, enterprise-klar | article-digest.md + cv.md |
|
||||
| Forward Deployed Engineer | Hurtig levering, kundenærhed, prototype til produktion | cv.md + article-digest.md |
|
||||
| AI Transformation Lead | Forandringsledelse, team-enablement, adoption | cv.md + article-digest.md |
|
||||
|
||||
<!-- [TILPAS] Knyt dine konkrete projekter/artikler til arketyperne ovenfor -->
|
||||
|
||||
### Overgangsnarrativ (skal bruges i ALLE framings)
|
||||
|
||||
<!-- [TILPAS] Erstat med dit eget narrativ. Eksempler:
|
||||
- "SaaS bygget og solgt efter 5 år. Nu 100% fokus på anvendt AI i enterprise."
|
||||
- "Engineering-lead i en Series-B under 10x vækst. Søger den næste udfordring."
|
||||
- "Skift fra konsulent til produkt. Søger roller med højt ansvar."
|
||||
Læses fra config/profile.yml -> narrative.exit_story -->
|
||||
|
||||
Brug overgangsnarrativet fra `config/profile.yml` til at ramme ALT indhold ind:
|
||||
- **I PDF-summaries:** Byg bro mellem fortid og fremtid -- "Anvender nu de samme [kompetencer] på [opslagets domæne]."
|
||||
- **I STAR-stories:** Referér til proof points fra `article-digest.md`.
|
||||
- **I draft-svar (Blok G):** Overgangsnarrativet hører til i det første svar.
|
||||
- **Når opslaget nævner "entrepreneurial", "ownership", "builder", "end-to-end":** Det er DEN vigtigste differentiator nr. 1. Øg match-vægten.
|
||||
|
||||
### Tværgående fordel
|
||||
|
||||
Ram profilen ind som **"Teknisk builder med dokumenteret praksis"**, og tilpas framingen til rollen:
|
||||
- For PM: "Builder, der reducerer usikkerhed med prototyper og derefter leverer disciplineret i produktion"
|
||||
- For FDE: "Builder, der leverer fra dag 1 med observability og metrics"
|
||||
- For SA: "Builder, der designer end-to-end-systemer med ægte integrationserfaring"
|
||||
- For LLMOps: "Builder, der sætter AI i produktion med closed-loop kvalitetssystemer"
|
||||
|
||||
Positionér "Builder" som et professionelt signal -- ikke som "hobbyist". De ægte proof points gør det troværdigt.
|
||||
|
||||
### Portfolio som proof point (brug ved ansøgninger med høj indsats)
|
||||
|
||||
<!-- [TILPAS] Hvis du har en live demo, et dashboard eller et offentligt projekt, så konfigurér det her.
|
||||
Eksempel:
|
||||
dashboard:
|
||||
url: "https://ditdomæne.dev/demo"
|
||||
password: "demo-2026"
|
||||
when_to_share: "LLMOps, AI Platform, Observability-roller"
|
||||
Læses fra config/profile.yml -> narrative.proof_points og narrative.dashboard -->
|
||||
|
||||
Hvis kandidaten har en live demo / et dashboard (tjek `profile.yml`), så tilbyd adgang i relevante ansøgninger.
|
||||
|
||||
### Lønintelligens (Comp Intelligence)
|
||||
|
||||
<!-- [TILPAS] Undersøg lønintervaller for dine målroller og tilpas værdierne -->
|
||||
|
||||
**Generelle råd:**
|
||||
- WebSearch for aktuelle markedsdata (Glassdoor, Levels.fyi, Jobindex Lønstatistik, IDA Lønstatistik, PROSA)
|
||||
- Ram ind efter jobtitel, ikke efter kompetencer -- titler definerer lønbåndene
|
||||
- Freelance-satser i Danmark ligger typisk 30-50% over den tilsvarende brutto-timeløn i en fastansættelse (sociale bidrag, ferie, sygdom, opsøgende arbejde)
|
||||
- Geo-arbitrage fungerer i remote: lavere leveomkostninger = bedre netto
|
||||
|
||||
### Det danske marked -- Særtræk (VIGTIGT)
|
||||
|
||||
I danske opslag og forhandlinger optræder visse termer, som ikke findes på EN/ES-markederne. De SKAL håndteres korrekt:
|
||||
|
||||
| Term | Betydning | Effekt på evaluering |
|
||||
|------|-----------|----------------------|
|
||||
| **Fastansættelse** (tidsubegrænset) | Svarer til "permanent employment". Standarden i Danmark | Forventet standard. En tidsbegrænset kontrakt til en senior er et advarselssignal |
|
||||
| **Tidsbegrænset ansættelse** | Midlertidig kontrakt med fast slutdato | Acceptabel til specifikke opgaver. Ellers spørg hvorfor ikke fastansættelse |
|
||||
| **Prøvetid** | Typisk 3 måneder, kortere opsigelsesvarsel | Markedsstandard. Flag hvis > 3 måneder |
|
||||
| **Opsigelsesvarsel** | 1-6 måneder efter funktionærloven afhængigt af anciennitet | Planlæg startdato derefter |
|
||||
| **Funktionærloven** | Lov der regulerer funktionærers ansættelse (opsigelse, sygdom, fratrædelsesgodtgørelse) | Næsten alle tech-stillinger er funktionærstillinger. Tjek om det nævnes |
|
||||
| **Overenskomst** | Kollektiv aftale mellem fagforening og arbejdsgiver. Fastsætter løn, vilkår | Tjek om virksomheden har overenskomst -- giver fast løntrin, pension, sikkerhed |
|
||||
| **Feriepenge** | 12,5% af lønnen optjent til ferie efter ferieloven | Indgår i den samlede pakke. Glem ALDRIG i sammenligningen |
|
||||
| **Ferie** | 25 dage (5 uger) efter ferieloven. Mange giver flere | < 25 dage = under lovens minimum. 25 + feriefridage = standard i tech. > 30 dage = fremragende |
|
||||
| **Feriefridage** | Ekstra fridage ud over ferielovens 5 uger (ofte 5/år) | Et reelt plus. Svarer til 1 uges ekstra ferie |
|
||||
| **Pension** | Arbejdsgiverbidrag, typisk 8-12% af lønnen | Indgår i comp-beregningen: kan udgøre flere tusind kroner månedligt. Glem den ikke |
|
||||
| **A-kasse** | Frivillig arbejdsløshedsforsikring (medlemskab betales af medarbejderen) | Ikke et arbejdsgivergode, men relevant for jobsikkerhed. Tjek opsigelsesvilkår |
|
||||
| **Fagforening** | Faglig organisation (fx PROSA, IDA for ingeniører/IT) | Medlemskab giver juridisk hjælp og overenskomstdækning. Plus for stabilitet |
|
||||
| **Bruttoløn / Nettoløn** | Løn før / efter skat (dansk skat er høj, ~37-52%) | Forhandl altid om bruttoløn. Beregn netto til sammenligning af leveomkostninger |
|
||||
| **13. månedsløn** | Findes typisk IKKE i Danmark (i modsætning til mange markeder) | Forvent den ikke. Hvis nævnt, er det et ekstra plus -- inkludér i comp |
|
||||
|
||||
### Forhandlingsscripts
|
||||
|
||||
<!-- [TILPAS] Tilpas til din situation -->
|
||||
|
||||
**Lønforventning (generelt framework):**
|
||||
> "På baggrund af aktuelle markedsdata for denne type stilling sigter jeg efter intervallet [INTERVAL fra profile.yml]. Jeg er fleksibel omkring strukturen -- det er den samlede pakke og udviklingsmulighederne, der tæller."
|
||||
|
||||
**Modsvar på et geografisk fradrag:**
|
||||
> "De roller, jeg er i konkurrence om, er resultatorienterede, ikke lokationsbestemte. Min track record ændrer sig ikke med postnummeret."
|
||||
|
||||
**Hvis tilbuddet ligger under målet:**
|
||||
> "Jeg er i øjeblikket i dialog om pakker i intervallet [højere interval]. [Virksomhed] tiltrækker mig på grund af [grund]. Er det muligt at nå [mål]?"
|
||||
|
||||
**Forhandling om pension / variabel løn:**
|
||||
> "For at sammenligne pakkerne retfærdigt -- kunne I specificere den faste bruttoløn, pensionsbidraget og en eventuel variabel del hver for sig?"
|
||||
|
||||
### Lokationspolitik (Location Policy)
|
||||
|
||||
<!-- [TILPAS] Tilpas til din situation. Læses fra config/profile.yml -> location -->
|
||||
|
||||
**I formularer:**
|
||||
- Binære spørgsmål "Kan du være på kontoret?": svar efter den reelle tilgængelighed i `profile.yml`
|
||||
- Fritekstfelter: angiv tidszoneoverlap og tilgængelighed eksplicit
|
||||
|
||||
**I evalueringer (scoring):**
|
||||
- Remote-dimension for hybrid uden for dit land: Score **3.0** (ikke 1.0)
|
||||
- Score 1.0 kun, hvis opslaget eksplicit siger "obligatorisk tilstedeværelse 4-5 dage/uge, ingen undtagelser"
|
||||
|
||||
### Time-to-offer-prioritet
|
||||
- Fungerende demo + metrics > perfektion
|
||||
- Ansøg hurtigt > lær mere
|
||||
- 80/20-tilgang, alt er timeboxet
|
||||
|
||||
---
|
||||
|
||||
## Globale regler
|
||||
|
||||
### ALDRIG
|
||||
|
||||
1. Opfinde erfaring eller metrics
|
||||
2. Ændre `cv.md` eller portfolio-filer
|
||||
3. Indsende ansøgninger på kandidatens vegne
|
||||
4. Dele et telefonnummer i genererede beskeder
|
||||
5. Anbefale aflønning under markedsniveau
|
||||
6. Generere en PDF uden at have læst opslaget først
|
||||
7. Bruge corporate-jargon eller tomme floskler
|
||||
8. Ignorere trackeren (hvert evalueret opslag registreres)
|
||||
|
||||
### ALTID
|
||||
|
||||
0. **Ansøgning (følgebrev):** Hvis formularen tillader det, så inkludér ALTID én. PDF i samme visuelle design som CV'et. Citater fra opslaget mappet til proof points. Maks. 1 side.
|
||||
1. Læs `cv.md` og `article-digest.md` (hvis den findes), før et opslag evalueres
|
||||
1b. **Første evaluering i hver session:** Kør `node cv-sync-check.mjs` via Bash. Ved advarsler, informér kandidaten
|
||||
2. Detektér rollens arketype og tilpas framingen
|
||||
3. Citér eksakte linjer fra CV'et ved matching
|
||||
4. Brug WebSearch til løn- og virksomhedsdata
|
||||
5. Registrér i trackeren efter hver evaluering
|
||||
6. Generér indhold på opslagets sprog (dansk hvis opslaget er på dansk, ellers engelsk)
|
||||
7. Vær direkte og konkret -- ingen smøren
|
||||
8. Naturligt tech-dansk til genererede tekster. Korte sætninger, aktive verber, undgå passiv. Oversæt ikke tekniske termer med tvang (stack, pipeline, deployment, embedding)
|
||||
8b. **Case-study-URL'er i PDF'ens Professional Summary:** Hvis PDF'en nævner case studies eller demoer, SKAL URL'erne optræde i det første afsnit (Professional Summary). Rekrutterere læser ofte kun summary. Alle URL'er i HTML med `white-space: nowrap`
|
||||
9. **Tracker-poster som TSV** -- rediger ALDRIG applications.md direkte for nye tilføjelser. Skriv TSV i `batch/tracker-additions/`, `merge-tracker.mjs` håndterer sammenfletningen
|
||||
10. **`**URL:**` i hver report-header** -- mellem Score og PDF
|
||||
|
||||
### Værktøjer
|
||||
|
||||
| Værktøj | Brug |
|
||||
|---------|------|
|
||||
| WebSearch | Lønundersøgelse, tendenser, virksomhedskultur, LinkedIn-kontakter, fallback for opslag |
|
||||
| WebFetch | Fallback til at udtrække opslag fra statiske sider |
|
||||
| Playwright | Tjek om opslag er aktive (browser_navigate + browser_snapshot), udtræk opslag fra SPAs. **KRITISK: ALDRIG 2+ agenter parallelt med Playwright -- de deler den samme browser-instans** |
|
||||
| Read | cv.md, article-digest.md, cv-template.html |
|
||||
| Write | Midlertidig HTML til PDF, applications.md, reports .md |
|
||||
| Edit | Opdatér trackeren |
|
||||
| Bash | `node generate-pdf.mjs` |
|
||||
@@ -0,0 +1,114 @@
|
||||
# Mode: apply -- Live-assistent til ansøgningsformularer
|
||||
|
||||
Interaktiv mode til det øjeblik, hvor kandidaten udfylder en ansøgningsformular i Chrome. Den læser, hvad der er på skærmen, indlæser konteksten fra opslagets tidligere evaluering og genererer personaliserede svar til hvert spørgsmål i formularen.
|
||||
|
||||
## Forudsætninger
|
||||
|
||||
- **Bedst med Playwright synlig**: I synlig tilstand ser kandidaten browseren, og Claude kan interagere med siden.
|
||||
- **Uden Playwright**: kandidaten deler et skærmbillede eller indsætter spørgsmålene manuelt.
|
||||
|
||||
## Workflow
|
||||
|
||||
```
|
||||
1. DETEKTÉR -> Læs den aktive Chrome-fane (skærmbillede/URL/titel)
|
||||
2. IDENTIFICÉR -> Udtræk virksomhed + rolle fra siden
|
||||
3. SØG -> Match mod eksisterende reports i reports/
|
||||
4. INDLÆS -> Læs den fulde report + Blok G (hvis den findes)
|
||||
5. SAMMENLIGN -> Svarer rollen på skærmen til den evaluerede? Hvis ændret -> advar
|
||||
6. ANALYSÉR -> Identificér ALLE synlige spørgsmål i formularen
|
||||
7. GENERÉR -> Generér et personaliseret svar til hvert spørgsmål
|
||||
8. PRÆSENTÉR -> Vis de formaterede svar til copy-paste
|
||||
```
|
||||
|
||||
## Trin 1 -- Detektér opslaget
|
||||
|
||||
**Med Playwright:** Snapshot af den aktive side. Læs titel, URL og synligt indhold.
|
||||
|
||||
**Uden Playwright:** Bed kandidaten om at:
|
||||
- Dele et skærmbillede af formularen (Read-værktøjet læser billeder)
|
||||
- Eller indsætte formularens spørgsmål som tekst
|
||||
- Eller angive virksomhed + rolle, så vi kan finde konteksten
|
||||
|
||||
## Trin 2 -- Identificér og indlæs konteksten
|
||||
|
||||
1. Udtræk virksomhedens navn og stillingstitlen fra siden
|
||||
2. Søg i `reports/` efter virksomhedsnavn (Grep case-insensitive)
|
||||
3. Hvis match -> indlæs den fulde report
|
||||
4. Hvis Blok G findes -> indlæs de tidligere svar-udkast som grundlag
|
||||
5. Hvis INTET match -> advar kandidaten og foreslå en hurtig auto-pipeline
|
||||
|
||||
## Trin 3 -- Detektér rolleændringer
|
||||
|
||||
Hvis rollen på skærmen afviger fra den evaluerede:
|
||||
- **Advar kandidaten**: "Rollen har ændret sig fra [X] til [Y]. Ønsker du, at jeg genevaluerer, eller at jeg tilpasser svarene til den nye titel?"
|
||||
- **Hvis tilpas**: Justér svarene til den nye rolle uden at genevaluere
|
||||
- **Hvis genevaluér**: Kør den fulde A-F-evaluering, opdatér report, regenerér Blok G
|
||||
- **Opdatér trackeren**: Ret rollens titel i applications.md om nødvendigt
|
||||
|
||||
## Trin 4 -- Analysér formularens spørgsmål
|
||||
|
||||
Identificér ALLE synlige spørgsmål:
|
||||
- Fritekstfelter (følgebrev, "hvorfor denne stilling", motivation, osv.)
|
||||
- Dropdowns (hvordan hørte du om virksomheden, arbejdstilladelse, osv.)
|
||||
- Ja/Nej (mobilitet, visum, tilgængelighed, osv.)
|
||||
- Lønfelter (interval, lønforventning -- i brutto årsløn for Danmark)
|
||||
- Upload-felter (CV, følgebrev som PDF, referencer)
|
||||
|
||||
Klassificér hvert spørgsmål:
|
||||
- **Allerede besvaret i Blok G** -> genbrug det eksisterende svar
|
||||
- **Nyt spørgsmål** -> generér svaret fra report + `cv.md`
|
||||
|
||||
## Trin 5 -- Generér svarene
|
||||
|
||||
For hvert spørgsmål, byg svaret efter dette skema:
|
||||
|
||||
1. **Kontekst fra report**: Brug proof points fra blok B, STAR-stories fra blok F
|
||||
2. **Tidligere Blok G**: Hvis et udkast findes, så brug det som grundlag og finpuds
|
||||
3. **Tonen "Jeg vælger jer"**: samme framework som i auto-pipeline -- selvsikker, ikke bønfaldende
|
||||
4. **Specificitet**: citér noget konkret fra opslaget, der er synligt på skærmen
|
||||
5. **career-ops proof point**: inkludér i "Yderligere oplysninger", hvis et sådant felt findes
|
||||
|
||||
**Felter, der er specifikke for almindelige danske formularer:**
|
||||
- **Lønforventning (brutto årsløn)** -> Interval fra `profile.yml`, i DKK, med bemærkningen "forhandlelig afhængigt af den samlede pakke"
|
||||
- **Startdato** -> Realistisk dato, der tager højde for opsigelsesvarsel (ofte 1-3 måneder)
|
||||
- **Arbejdstilladelse / Nationalitet** -> Ærligt og kortfattet; for EU-borgere: "Ingen opholdstilladelse påkrævet (EU-borger)"
|
||||
- **Sprog** -> Niveauer efter CEFR (A1-C2)
|
||||
- **Mobilitet** -> Angiv det acceptable geografiske område og hyppigheden af rejser
|
||||
|
||||
**Output-format:**
|
||||
|
||||
```
|
||||
## Svar til [Virksomhed] -- [Rolle]
|
||||
|
||||
Grundlag: Report #NNN | Score: X.X/5 | Arketype: [type]
|
||||
|
||||
---
|
||||
|
||||
### 1. [Eksakt spørgsmål fra formularen]
|
||||
> [Svar klar til copy-paste]
|
||||
|
||||
### 2. [Næste spørgsmål]
|
||||
> [Svar]
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
|
||||
Noter:
|
||||
- [Observationer om rollen, ændringer, osv.]
|
||||
- [Forslag til personalisering, som kandidaten bør tjekke]
|
||||
```
|
||||
|
||||
## Trin 6 -- Efter ansøgningen (valgfrit)
|
||||
|
||||
Hvis kandidaten bekræfter, at ansøgningen er sendt:
|
||||
1. Opdatér status i `applications.md` fra "Evaluated" til "Applied"
|
||||
2. Opdatér report'ens Blok G med de endelige svar
|
||||
3. Foreslå næste trin: `/career-ops contacto` til LinkedIn-outreach mod den ansættende leder
|
||||
|
||||
## Håndtering af scroll
|
||||
|
||||
Hvis formularen har flere spørgsmål, end der er synlige:
|
||||
- Bed kandidaten om at scrolle og dele endnu et skærmbillede
|
||||
- Eller indsætte de resterende spørgsmål
|
||||
- Behandl i iterationer, indtil hele formularen er dækket
|
||||
@@ -0,0 +1,166 @@
|
||||
# Mode: oferta -- Fuld evaluering A-F
|
||||
|
||||
Når kandidaten indsætter et opslag (tekst eller URL), så lever ALTID alle 6 blokke.
|
||||
|
||||
## Trin 0 -- Arketype-detektion
|
||||
|
||||
Klassificér opslaget i en af de 6 arketyper (se `_shared.md`). Hvis hybrid, så angiv de 2 nærmeste. Det afgør:
|
||||
- Hvilke proof points der prioriteres i blok B
|
||||
- Hvordan summary omskrives i blok E
|
||||
- Hvilke STAR-stories der forberedes i blok F
|
||||
|
||||
## Blok A -- Rolleopsummering
|
||||
|
||||
Tabel med:
|
||||
- Detekteret arketype
|
||||
- Domain (Platform / Agentic / LLMOps / ML / Enterprise)
|
||||
- Funktion (Build / Consult / Manage / Deploy)
|
||||
- Senioritet
|
||||
- Remote (Fuld remote / Hybrid / På kontoret)
|
||||
- Teamstørrelse (hvis nævnt)
|
||||
- TL;DR i 1 sætning
|
||||
|
||||
## Blok B -- Match med CV'et
|
||||
|
||||
Læs `cv.md`. Lav en tabel, hvor hvert krav i opslaget mappes til eksakte linjer i CV'et.
|
||||
|
||||
**Tilpasset arketypen:**
|
||||
- FDE -> prioritér proof points om hurtig levering og kundenærhed
|
||||
- SA -> prioritér systemdesign og integrationer
|
||||
- PM -> prioritér product discovery og metrics
|
||||
- LLMOps -> prioritér evals, observability, pipelines
|
||||
- Agentic -> prioritér multi-agent, HITL, orkestrering
|
||||
- Transformation -> prioritér forandringsledelse, adoption, skalering
|
||||
|
||||
Afsnit om **Mangler (Gaps)** med en mitigeringsstrategi for hver enkelt. For hver mangel:
|
||||
1. Er det en hard blocker eller et nice-to-have?
|
||||
2. Kan kandidaten påvise tilstødende erfaring?
|
||||
3. Findes der et portfolio-projekt, der dækker manglen?
|
||||
4. Konkret mitigeringsplan (sætning til følgebrevet, hurtigt mini-projekt, osv.)
|
||||
|
||||
## Blok C -- Niveau og strategi
|
||||
|
||||
1. **Detekteret niveau** i opslaget vs **kandidatens naturlige niveau for denne arketype**
|
||||
2. **Plan "sælg senior uden at lyve"**: konkrete formuleringer tilpasset arketypen, konkrete resultater at fremhæve, hvordan founder-erfaring positioneres som en fordel
|
||||
3. **Plan "hvis jeg bliver downlevelet"**: accepter, hvis aflønningen er fair, forhandl en revision efter 6 måneder, klare forfremmelseskriterier
|
||||
|
||||
## Blok D -- Aflønning og efterspørgsel
|
||||
|
||||
Brug WebSearch til:
|
||||
- Aktuelle lønninger for rollen (Glassdoor, Levels.fyi, Jobindex Lønstatistik, IDA Lønstatistik, PROSA)
|
||||
- Virksomhedens lønreputation (Glassdoor)
|
||||
- Efterspørgselstendens for rollen på det danske marked
|
||||
|
||||
Tabel med data og citerede kilder. Hvis der ingen data er, så sig det klart -- opfind ikke noget.
|
||||
|
||||
**Det danske marked -- Obligatoriske tjek:**
|
||||
- Pension nævnt? Indregn arbejdsgiverbidraget (typisk 8-12%) i den samlede pakke.
|
||||
- Variabel del (bonus, provision, warrants / aktieoptioner)?
|
||||
- Feriepenge / feriefridage ud over ferielovens minimum?
|
||||
- Overenskomst eller funktionærvilkår? Hvis overenskomst: tjek løntrin og vilkår.
|
||||
- Fastansættelse eller tidsbegrænset? Hvis tidsbegrænset: varighed, begrundelse, mulighed for fastansættelse.
|
||||
- Freelance / selvstændig? Dagssats, opgavens varighed, risiko for omklassificering.
|
||||
|
||||
## Blok E -- Personaliseringsplan
|
||||
|
||||
| # | Sektion | Nuværende tilstand | Foreslået ændring | Begrundelse |
|
||||
|---|---------|--------------------|--------------------|-------------|
|
||||
| 1 | Summary | ... | ... | ... |
|
||||
| ... | ... | ... | ... | ... |
|
||||
|
||||
Top 5 ændringer i CV'et + Top 5 ændringer på LinkedIn for at maksimere matchet.
|
||||
|
||||
## Blok F -- Samtaleplan
|
||||
|
||||
6-10 STAR+R-stories mappet til opslagets krav (STAR + **Reflection**):
|
||||
|
||||
| # | Krav i opslaget | STAR+R-story | S | T | A | R | Reflection |
|
||||
|---|-----------------|--------------|---|---|---|---|------------|
|
||||
|
||||
Kolonnen **Reflection** indfanger, hvad der blev lært, eller hvad der ville blive gjort anderledes. Det signalerer senioritet -- juniorer beskriver, hvad der skete, seniorer drager læring af det.
|
||||
|
||||
**Story Bank:** Hvis `interview-prep/story-bank.md` findes, så tjek om disse stories allerede er der. Hvis ikke, så tilføj de nye. Med tiden opbygger det en genbrugelig bank på 5-10 master-stories, der kan tilpasses ethvert samtalespørgsmål.
|
||||
|
||||
**Udvalgt og rammesat efter arketypen:**
|
||||
- FDE -> fremhæv leveringstempo og kundenærhed
|
||||
- SA -> fremhæv arkitekturbeslutninger
|
||||
- PM -> fremhæv discovery og trade-offs
|
||||
- LLMOps -> fremhæv metrics, evals, production hardening
|
||||
- Agentic -> fremhæv orkestrering, error handling, HITL
|
||||
- Transformation -> fremhæv adoption og organisatorisk forandring
|
||||
|
||||
Inkludér også:
|
||||
- 1 anbefalet case study (hvilket projekt der præsenteres og hvordan)
|
||||
- Red-flag-spørgsmål og hvordan man besvarer dem (fx "Hvorfor solgte du din virksomhed?", "Havde du et team, der refererede til dig?", "Hvorfor et skifte efter så kort tid?")
|
||||
|
||||
---
|
||||
|
||||
## Efter evalueringen
|
||||
|
||||
**ALTID** efter blok A-F skal du udføre:
|
||||
|
||||
### 1. Gem report .md
|
||||
|
||||
Gem den fulde evaluering i `reports/{###}-{company-slug}-{YYYY-MM-DD}.md`.
|
||||
|
||||
- `{###}` = næste fortløbende nummer (3 cifre, nul-paddet). For at allokere det atomisk og undgå race conditions skal du køre `node reserve-report-num.mjs` for at reservere nummeret (stdout returnerer `{###}`), skrive rapporten og derefter køre `node reserve-report-num.mjs --release {###}` for at frigive sentinel'en.
|
||||
- `{company-slug}` = virksomhedsnavn i små bogstaver, uden mellemrum (brug bindestreger)
|
||||
- `{YYYY-MM-DD}` = dagens dato
|
||||
|
||||
**Report-format:**
|
||||
|
||||
```markdown
|
||||
# Evaluering: {Virksomhed} -- {Rolle}
|
||||
|
||||
**Dato:** {YYYY-MM-DD}
|
||||
**Arketype:** {detekteret}
|
||||
**Score:** {X/5}
|
||||
**URL:** {opslagets URL}
|
||||
**PDF:** {sti eller afventer}
|
||||
|
||||
---
|
||||
|
||||
## A) Rolleopsummering
|
||||
(fuldt indhold af blok A)
|
||||
|
||||
## B) Match med CV'et
|
||||
(fuldt indhold af blok B)
|
||||
|
||||
## C) Niveau og strategi
|
||||
(fuldt indhold af blok C)
|
||||
|
||||
## D) Aflønning og efterspørgsel
|
||||
(fuldt indhold af blok D)
|
||||
|
||||
## E) Personaliseringsplan
|
||||
(fuldt indhold af blok E)
|
||||
|
||||
## F) Samtaleplan
|
||||
(fuldt indhold af blok F)
|
||||
|
||||
## G) Udkast til svar til ansøgningen
|
||||
(kun ved score >= 4.5 -- udkast til svar til ansøgningsformularen)
|
||||
|
||||
---
|
||||
|
||||
## Udtrukne nøgleord
|
||||
(liste med 15-20 nøgleord fra opslaget til ATS-optimering)
|
||||
```
|
||||
|
||||
### 2. Registrér i trackeren
|
||||
|
||||
**ALTID** registrér i `data/applications.md`:
|
||||
- Næste fortløbende nummer
|
||||
- Dagens dato
|
||||
- Virksomhed
|
||||
- Rolle
|
||||
- Score: gennemsnit af matchet (1-5)
|
||||
- Status: `Evaluated`
|
||||
- PDF: nej (eller ja, hvis auto-pipeline har genereret en PDF)
|
||||
- Report: relativt link til report-filen (fx `[001](reports/001-company-2026-01-01.md)`)
|
||||
|
||||
**Tracker-format:**
|
||||
|
||||
```markdown
|
||||
| # | Dato | Virksomhed | Rolle | Score | Status | PDF | Report |
|
||||
```
|
||||
@@ -0,0 +1,63 @@
|
||||
# Mode: pipeline -- URL-indbakke (Second Brain)
|
||||
|
||||
Behandler URL'er til opslag, der er samlet i `data/pipeline.md`. Kandidaten tilføjer URL'er, når han vil, og kører derefter `/career-ops pipeline` for at behandle dem alle på én gang.
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Læs** `data/pipeline.md` -> find `- [ ]`-elementer i sektionen "Afventer" / "Pending" / "Pendientes"
|
||||
2. **For hver afventende URL**:
|
||||
a. Reservér det næste fortløbende `REPORT_NUM` atomisk ved at køre `node reserve-report-num.mjs` (og frigiv sentinel'en ved at køre `node reserve-report-num.mjs --release <num>`, når rapporten er skrevet)
|
||||
b. **Udtræk opslaget** med Playwright (`browser_navigate` + `browser_snapshot`) -> WebFetch -> WebSearch
|
||||
c. Hvis URL'en ikke er tilgængelig -> markér som `- [!]` med en note og fortsæt
|
||||
d. **Kør den fulde auto-pipeline**: Evaluering A-F -> Report .md -> PDF (hvis score >= 3.0) -> Tracker
|
||||
e. **Flyt fra "Afventer" til "Behandlede"**: `- [x] #NNN | URL | Virksomhed | Rolle | Score/5 | PDF ja/nej`
|
||||
3. **Hvis 3+ URL'er afventer**, så start agenter parallelt (Agent-værktøjet med `run_in_background`) for at maksimere hastigheden.
|
||||
4. **Til sidst** vis en opsummerende tabel:
|
||||
|
||||
```
|
||||
| # | Virksomhed | Rolle | Score | PDF | Anbefalet handling |
|
||||
```
|
||||
|
||||
## Format for pipeline.md
|
||||
|
||||
```markdown
|
||||
## Afventer
|
||||
- [ ] https://jobs.example.com/posting/123
|
||||
- [ ] https://boards.greenhouse.io/company/jobs/456 | Company ApS | Senior PM
|
||||
- [!] https://private.url/job -- Fejl: login påkrævet
|
||||
|
||||
## Behandlede
|
||||
- [x] #143 | https://jobs.example.com/posting/789 | Acme ApS | AI PM | 4.2/5 | PDF ja
|
||||
- [x] #144 | https://boards.greenhouse.io/xyz/jobs/012 | BigCo | SA | 2.1/5 | PDF nej
|
||||
```
|
||||
|
||||
> Note: Sektionsoverskrifterne kan være på EN ("Pending"/"Processed"), ES ("Pendientes"/"Procesadas"), DE ("Offen"/"Verarbeitet") eller DA ("Afventer"/"Behandlede"). Vær fleksibel ved læsning, tro mod den eksisterende stil ved skrivning.
|
||||
|
||||
## Intelligent detektion af opslaget fra URL'en
|
||||
|
||||
1. **Playwright (foretrukket):** `browser_navigate` + `browser_snapshot`. Fungerer med alle SPAs.
|
||||
2. **WebFetch (fallback):** Til statiske sider, eller når Playwright ikke er tilgængelig.
|
||||
3. **WebSearch (sidste udvej):** Søg på sekundære portaler, der indekserer opslaget.
|
||||
|
||||
**Særlige tilfælde:**
|
||||
- **LinkedIn**: Kan kræve login -> markér `[!]` og bed kandidaten om at indsætte teksten
|
||||
- **PDF**: Hvis URL'en peger på en PDF, så læs den direkte med Read-værktøjet
|
||||
- **Præfikset `local:`**: Læs den lokale fil. Eksempel: `local:jds/linkedin-pm-ai.md` -> læs `jds/linkedin-pm-ai.md`
|
||||
- **Jobindex / The Hub / LinkedIn DK**: Almindelige danske portaler. Playwright håndterer cookie-bannere godt
|
||||
- **Jobnet (Styrelsen for Arbejdsmarked)**: Strukturerede opslag, godt læsbare af maskine. WebFetch er som regel nok
|
||||
|
||||
## Automatisk nummerering
|
||||
|
||||
1. Kør `node reserve-report-num.mjs` for at reservere det næste fortløbende nummer atomisk (stdout returnerer `{###}`).
|
||||
2. Skriv rapporten med dette nummer.
|
||||
3. Frigiv sentinel'en ved at køre `node reserve-report-num.mjs --release {###}`, når rapporten er skrevet.
|
||||
|
||||
## Synkronisering af kilder
|
||||
|
||||
Før en URL behandles, tjek synkroniseringen:
|
||||
|
||||
```bash
|
||||
node cv-sync-check.mjs
|
||||
```
|
||||
|
||||
Ved desynkronisering, advar kandidaten, før du fortsætter.
|
||||
Reference in new issue
Block a user