CVSmia - Brukerveiledning
Denne siden beskriver hvordan du bruker CVSmia til å lage og lagre en tilpasset CV basert på grunndata i jsonresume-format.
Rask eksempelflyt med norsk eksempeldata
Denne flyten viser den enkleste måten å komme i gang på med den norske eksempel-CV-en som appen legger i Dokumenter\Solsem Consulting\CVSmia.
1. Start appen og sjekk fanene
Ved oppstart åpner appen i Tilpasser, og Validering er synlig som egen fane fra start.

2. Åpne den norske eksempel-CV-en
Trykk Ctrl+O eller velg Tilpasser -> Åpne, og åpne sampleresume_nb_NO.json.

3. Se kildedataene i venstre tre
Når filen er lest inn, vises seksjonene fra jsonresume i venstre side under Kildedata. I skjermbildet under er toppnoden ekspandert så du ser hvilke seksjoner eksempeldataene inneholder.
Du kan også skrive inn tekst i filterfeltet over Kildedata og trykke Filtrer for å vise bare noder som matcher teksten, sammen med nødvendig kontekst i treet.

4. Lag en første tilpasset CV
For en rask første test kan du holde Ctrl og klikke på toppnoden resume i venstre tre. Da kopieres hele eksempel-CV-en til høyre side. I vanlig bruk kan du i stedet Ctrl-klikke eller dra enkeltseksjoner for å bygge en mer målrettet variant.

5. Åpne den tilpassede CV-en i viewer
Når du har innhold i høyre tre kan du åpne viewer med Ctrl+P eller via menyvalget for visning med data. Viewer viser den tilpassede CV-en i et utskriftsvennlig oppsett.

6. Skriv ut til PDF fra viewer
Når viewer er åpen, trykk Ctrl+P i nettleseren og velg Lagre som PDF eller en PDF-skriver som Microsoft Print to PDF. Utskriftsdialogen kommer fra nettleseren, så navn og plassering på valgene kan variere litt.

Etter dette kan du lagre PDF-en til ønsket mappe, eller fortsette med å fjerne, gi nytt navn til eller lagre JSON-innholdet i høyre tre.
Moduloversikt med skjermbilder
Skjermbildene under viser de øvrige modulene i appen. Noen av dem krever lisens før fanen blir synlig.
7. Validering
Validering brukes når du vil kontrollere JSON mot schema, lese feil per sti/linje og eventuelt redigere innholdet før du lagrer på nytt.

8. AI-Customizer
AI-Customizer er en egen arbeidsflate for å velge relevant CV-innhold mot en stillingsannonse ved hjelp av AI. Her jobber du med kildedata til venstre, AI-tilpasset CV til høyre og stillingsannonse nederst.

9. JsonResumeConverter
JsonResumeConverter brukes når du vil lese inn råtekst eller annen kilde og konvertere den til jsonresume, med AI-forsøk først og lokal fallback ved behov.

10. Matcher
Matcher lar deg lese inn både CV og stillingsbeskrivelse og kjøre matching i egen modul uten å endre trærne i Tilpasser.

11. Cognitive
Cognitive er modulen for språklige forslag og omskriving. Den brukes når du vil få hjelp til å forbedre eller variere tekstinnhold.

Hva er CVSmia?
CVSmia lar deg:
- åpne kildedata (venstre tre),
- bygge en tilpasset CV ved å velge innhold (høyre tre),
- lagre resultatet i et implementert eksportformat (typisk jsonresume, og Teamtailor når modulen er lisensiert),
- forhåndsvise i viewer og validere mot schema.
Vanlig arbeidsflyt
- Åpne kildedata med
Ctrl+O. - Filtrer eventuelt kildedata med tekstfeltet over venstre tre hvis du vil snevre inn store datasett.
- Legg til innhold fra venstre til høyre med drag-and-drop eller
Ctrl+klikk. - Rediger høyre tre der det er tillatt (
F2for navn,Deletefor å fjerne). - Lagre med
Ctrl+S. - Forhåndsvis i viewer med
Ctrl+P(med data) ellerCtrl+Shift+V(uten data). - Skriv ut til PDF fra viewer med
Ctrl+Pi nettleseren.
Validering
Validering-fanen brukes til å:
- kjøre validering,
- se feil (sti/linje/melding),
- kopiere feil,
- redigere JSON,
- lagre korrigert innhold.
Hvis du åpner en ugyldig fil settes den som pending i validering til den er rettet og lagret.
Matcher
- Matcher-fanen viser nå et eget tre med JSONResume-data som matchingen kjører mot.
- I
Match-menyen kan du velgeÅpne CV…for å lese inn CV, ogÅpne jobbeskrivelse…for å lese inn stillingsbeskrivelse før du kjører match. - Innlesing via
Matchpåvirker ikkeCustomize-trærne. - Innlesing av kildedata i
Customizeoppdaterer heller ikkeMatcherautomatisk. - Etter kjøring viser Matcher nå et eget felt med anbefalte neste steg, for eksempel hvilket krav som bør dekkes bedre eller hvilket eksisterende CV-bevis som bør løftes frem.
- Når lisens tillater modulen, vises
AI-Customizersom tab nr. 2.
Snarveier
Ctrl+O: Åpne filCtrl+S: Lagre tilpasset CVCtrl+P: Åpne viewer med dataCtrl+Shift+V: Åpne viewerCtrl+Shift+O: Les fra Github (alle steder menyvalget finnes)Ctrl+,: InnstillingerF1: Åpne lokal hjelpAlt+F4: Avslutt appen (samme i modulmenyer somCustomize,AI-Customizer,Validation,Converter,CognitiveogMatch).Delete: Fjern valgt node i høyre treF2: Gi nytt navn til redigerbar node i høyre tre- I modulmenyer brukes nå samme snarveier for tilsvarende valg (f.eks.
Åpne=Ctrl+O,Lagre=Ctrl+S,Vis med data=Ctrl+Pder funksjonen finnes).
Tips
- Hold en rik master-CV i kildedata og lag målrettede varianter i høyre tre.
- Kjør validering før du deler/publiserer.
Maskinlesbart lisensmanifest
- Appen eksponerer støttede lisensmoduler i
license-modules.jsoni app-mappen. - Kildeversjonen ligger i
src/CVSmia.Licensing/license-modules.json. - Filen bruker generisk protokollformat med
protocolVersion,applicationogmodules[].id. - Filen bygges fra
src/CVSmia.Licensing/EnumAppModules.cs, så oppdater enumen og bygg prosjektet når modulsettet endres. Noneer bevisst utelatt fra manifestet.
Valgfri lokal telemetri
- Telemetri er av som standard og må aktiveres eksplisitt i
settings.jsonellerappsettings.jsonmedSettings:TelemetryEnabled = true. - Når telemetri er aktivert, skriver appen lokale hendelser til
%APPDATA%\Solsem Consulting\CVSmia\telemetry.ndjsonhvisSettings:TelemetryStoragePathikke er satt. - Hendelsene dekker foreløpig appstart og resultat av lisenssjekk ved oppstart.
- Rå kunde- og lisensidentifikatorer lagres ikke i denne telemetrifilen.
Lisenssjekk ved oppstart
- Betalt lisens kan nå verifiseres mot SentinelCore ved oppstart når
LicenseCallHomeer satt opp iappsettings.json. - Samme call-home-flyt brukes også når betalt lisens installeres eller lastes på nytt fra appen, slik at aktiv lisens sjekkes konsekvent mot SentinelCore.
- Første utrulling bruker
ObserveOnly. Det betyr at gyldig lokal betalt lisens fortsatt får starte ved nettfeil selv om lease-cache mangler, men hendelsen logges tydelig. - Trial håndteres fortsatt lokalt via
trial.datog Registry. Trial gjør ikke call-home. - Hvis en betalt lisensfil finnes men er lokalt ugyldig, faller appen fortsatt ikke tilbake til trial.
- Hvis SentinelCore avviser den betalte lisensen online, avvises oppstarten som betalt lisens uten fallback til trial.
- Ved nettfeil forsøker appen å bruke lokal lease-cache i
%APPDATA%\Solsem Consulting\CVSmia.
Eksempel på konfig:
{
"LicenseCallHome": {
"Enabled": true,
"Mode": "ObserveOnly",
"BaseUrl": "https://sentinelcore.example.no/",
"VerifyTimeoutSeconds": 5,
"MetadataRefreshHours": 24,
"LeaseCacheFileName": "sentinelcore-lease.json",
"InstallationIdFileName": "installation-id.json"
}
}
GitHub som kilde for resumedata
- Bruk menyvalget
Les fra Githubnår du vil lese inn resumedata fra GitHub. - Menyvalget er tilgjengelig i
Customize,JsonResumeConverter,AI-CustomizerogMatcher. - Før menyvalget blir aktivt må du sette opp GitHub i
Innstillingermed entenTokenellerBrukernavn og passord. - GitHub-legitimasjon lagres kryptert lokalt per bruker.
- Når du velger
Les fra Github, vises en GitHub-dialog der du kan bla i tilgjengelige repoer, velge gren og navigere deg frem til ønsket fil. - Du trenger ikke lenger å lime inn rå GitHub-URL manuelt.
- Lokal filinnlesing via
Åpnefungerer fortsatt som før. - GitHub-menyene er deaktivert når nødvendig GitHub-legitimasjon ikke er satt.
- For github.com anbefales token-autentisering.
jsonresume-konvertering og AI
JsonResumeConverterforsøker AI-konvertering først.JsonResumeConverterbruker samme AI-innstillinger som AI-tilpasser (AiEnabled,AiProvider,AiModel,AiEndpoint) frasettings.json/appsettings.json.JsonResumeConverterbruker samme provider-resolver som AI-tilpasser; valgt provider/modell i innstillinger brukes direkte (inkludert Gemini, Anthropic og Ollama), med lokal fallback ved feil.JsonResumeConverterbruker nå samme AI-integrasjonsmønster som AI-tilpasser: panelet kaller en dedikert AI-assistenttjeneste, og converter-modulen gjør kun AI-forsøk + lokal fallback.JsonResumeConverterviser nå i overskriften om resultatet kom fra AI eller lokal fallback.Validationkjører alltid lokal schema-validering først, og forsøker deretter AI-forklaring i egen prompt-modus (ValidationAssistant) når valideringen finner feil.- Hvis AI er deaktivert, API-nøkkel mangler, valgt provider ikke støttes eller AI-kallet feiler, viser
Validationnå en kort status om at lokal fallback brukes. Validationviser nå også lokale rettingsforslag i egenForslag-kolonne for vanlige feil som manglende felt, ugyldige datoer og typeavvik.- Sammendragsfeltet i
Validationfremhever også konkrete forslag til hva som bør rettes først. - Statuslinjen i appen viser nå tydeligere neste steg etter innlesing, matching, validering, lagring og preview.
- OpenAI-kompatible kall (payload, autentisering og parsing av svar) er flyttet til delt bibliotek
CVSmia.Ai, som brukes av både AI-tilpasser-providerne ogJsonResumeConverter. - Prompt-/instruksbygging ligger modulspesifikt:
JsonResumeConverterbruker egen prompt-builder (IJsonResumePromptBuilder) og deler ikke selve domeneinstruksene med andre moduler. - AI-kall brukes når gyldig API-nøkkel er tilgjengelig (
OPENAI_API_KEYeller lagret nøkkel i%APPDATA%\Solsem Consulting\CVSmia\ai-api-key.dat). - I AI-tilpasser er menyvalget
Tilpass med AIdeaktivert nårAiEnableder av eller når lagret API-nøkkel mangler. - Hvis AI-kapabilitet mangler eller AI-kallet feiler, brukes lokal heuristisk fallback automatisk.
AI-CustomizerogAI Assistert CV Manipulatorbruker nå samme standardmeldinger som øvrige AI-flyter når AI er deaktivert, API-nøkkel mangler eller valgt provider ikke støttes.- Hvis du åpner ugyldig JSONResume i AI-Customizer (
Open source data), sendes filen til Validation-modulen slik at feil kan gjennomgås/rettes. - Når Validation lagrer/fikser pending JSON, sendes data tilbake til samme modul den kom fra (Customize eller AI-Customizer).
- AI-Customizer har nå eget menyvalg for å lese inn tekst fra stillingsannonse direkte til stillingsannonse-feltet.
Open JDi AI-Customizer leser alltid rå tekst og går ikke via Validation-modulen.- Instruksene til modellen ligger i
prompts/jsonresume-extract.no.jsonmed feltenesystemInstructionoguserTemplate.
Endre AI-instrukser uten ny build
Du kan endre AI-systeminstruks og prompt-templates uten å rekompilere:
- Standard for installasjonen: rediger
ai-prompts.jsoni app-mappen (samme sted somCVSmia.exe). - Lokal overstyring per bruker: opprett/rediger
%APPDATA%\Solsem Consulting\CVSmia\ai-prompts.override.json.
Når brukes hva:
ai-prompts.json: når du vil endre standard oppførsel for hele installasjonen.ai-assisted-cv-manipulator-instructions.json: når du vil styre hvilke ferdigdefinerte instruksjoner som vises iAI Assistert CV Manipulator.
AI Assistert CV Manipulator
AI Assistert CV Manipulator er en egen modul for fritekstbasert AI-bearbeiding av CV-data.
- Modulen krever egen kjøpt lisens og vises ikke uten betalt modultilgang.
- Lim inn CV-data i venstre tekstfelt.
- Bruk
Ctrl+Oeller menyvalgetÅpnenår du vil lese kildedata direkte inn i venstre tekstfelt. - Skriv en egen instruks i midtkolonnen eller velg en ferdigdefinert instruks fra nedtrekkslisten.
- Klikk
Utførfor å sende instruks og CV-data til valgt AI-modell. - Resultatet vises i høyre tekstfelt.
- Bruk
Lagre til filfor å lagre resultatet fra høyre tekstfelt til fil. - Bruk
Rediger instruksjonerfor å åpne og lagre JSON-listen som styrer dropdownen direkte fra modulen.
Ferdigdefinerte instruksjoner hentes fra ai-assisted-cv-manipulator-instructions.json i app-mappen. Standardfilen bruker ferdige ressursnøkler, men du kan også legge inn egne displayName- og instruction-verdier direkte i JSON-filen hvis du vil definere egne presets.
Standardlisten inkluderer blant annet oppsummering, ferdighetsuttrekk, rolleprofil, konvertering til jsonresume, oversettelse til engelsk, oversettelse til norsk bokmål og kvalitetssjekk for manglende informasjon.
ai-prompts.override.json: når én bruker vil overstyre lokalt uten å endre installasjonsfiler.
Viktig:
- Bruk gyldig JSON.
- Template-feltene må beholde nødvendige tokens:
- matching-template:
{{jobDescription}}og{{resumeElements}} - customizer-template:
{{jobAdText}},{{maxSelections}}og{{minConfidencePercent}} - validation-template:
{{validationIssues}}og{{resumeJson}}
- matching-template:
- Tone-spesifikk systeminstruks kan også overstyres med
SystemInstructionByTone.ValidationAssistant. - Hvis filen mangler eller er ugyldig, bruker appen innebygde standardverdier.
AI-tilpasser: confidence-terskel
- AI-tilpasser bruker nå både maks antall valg og minimum confidence-prosent.
AiCustomizeMinConfidencePercent(0-100, standard 60) styrer hvilke AI-valg som tas med.- Elementer med oppgitt
confidenceunder terskelen blir filtrert bort før innlegging i tilpasset CV. confidencetolkes både som prosent (0-100) og desimal (0-1), slik at f.eks.82og0.82behandles likt.- For at confidence skal komme tilbake må prompt-formatet be om
selected[].confidence; systeminstruksen er nå justert til å følge output-format i brukerprompten. - AI-tilpasser bruker nå egen prompt-modus mot provider (
CustomizerSelection) slik at output-formatet for customizer ikke overstyres av generellmatchedIds-template. - Etter AI-kjøring vises en oppsummering av hvor mange noder som hadde
confidenceog hvor mange som manglet. - Hold musen over en node i høyre tre (tilpasset CV) for å se node-spesifikk AI-confidence når den er tilgjengelig.
- Noder i høyre tre fargekodes også etter confidence (høy = grønn, medium = gul, lav = rød).
- Confidence-farge legges på selve nodeområdet i treet (ikke over hele radbakgrunnen).
- Ved trunkert/ufullstendig AI-JSON forsøker AI-tilpasser nå ikke å parse hele teksten som JSON; den går direkte til robust fallback-ekstraksjon av
id/confidencefra svarteksten. - For OpenAI/Azure OpenAI bruker AI-tilpasser nå JSON-mode (
response_format: json_object) og høyere token-grense i customizer-kall for å redusere avkuttede svar. - AI-tilpasser bruker nå to-pass utvalg for bedre treff når modellen foreslår mange noder: pass 1 henter bredt kandidatutvalg, pass 2 reranker kun kandidatene og returnerer topp
maxSelections. - Manuell drag-and-drop støttes begge veier i AI-tilpasser: dra fra venstre tre til høyre for å legge til, og dra fra høyre tre tilbake til venstre for å fjerne fra
AI-tilpasset CV. - I høyre tre kan valgt node også fjernes med
Delete-tasten.