Gå til indhold
Tilbage til tillidscenter
Tillidsdokument

Privatliv og databeskyttelse

Datatyper, behandlingsformål, opbevaring og roller i den aktuelle platform.

Sidst opdateret: 12. juli 2026Review: quarterlyKlassifikation: External

Privatliv og Databeskyttelse

Dette dokument beskriver den aktuelle databehandling i beskæftigelse.dk.

Scope

  • Produkt: arbejdsmarkedsanalyse og AI-assisteret fortolkning
  • Målgruppe: danske kommuner og offentlige institutioner
  • Formål: dokumentationsgrundlag til GDPR- og indkøbsvurdering

Datakategorier

1) Offentlige arbejdsmarkedsdata

  • Kilde: Jobindsats.dk / STAR
  • Datatype: aggregerede statistikker (kommune/region/land)
  • Persondata: normalt ikke-personhenførbart

2) Brugerindsendt chatindhold

  • Input til POST /api/chat
  • AI-svar returneres i session og persisteres i chat_runs
  • chat_runs lagrer prompt, AI-svar og tool-trace pr. kørsel; rækken er ejet af user_id (FK mod users.id, ON DELETE CASCADE)
  • Adgang via GET /api/chat/history* er sessions-cookie-gated og filtrerer på user_id — anonyme kald får 401
  • Retention: 30 dage som standard (RETENTION_CHAT_RUNS_DAYS); slettes automatisk via /api/jobs/retention cron og kaskadesletter ved DELETE /api/auth/account (right-to-erasure)
  • Brugeren kan tilgå og eksportere egne kørsler via /ai/historik og /ai/historik/[id] (per-bruger, ownership-scoped)

3) Frivillig feedback (POST /api/chat/feedback)

Felter i chat_feedback:

  • message_id
  • feedback (positive/negative)
  • user_query (valgfri)
  • assistant_response (valgfri, trunceret til 2000 tegn)
  • municipality_slug (valgfri)
  • created_at

Behandlingsformål

  • Levere analyser og benchmark af arbejdsmarkedsdata
  • Forbedre AI-svarkvalitet via frivillig feedback
  • Sikre drift, fejlfinding og sikkerhed

AI-behandling og databehandlere

Formål med AI

AI bruges udelukkende til at fortolke og forklare offentlige arbejdsmarkedsdata (Jobindsats.dk / STAR, Danmarks Statistik, KRL og CVR) i et naturligt sprog — for eksempel at opsummere udvikling, sammenligne kommuner og forklare mønstre. AI træffer ikke automatiske afgørelser om enkeltpersoner og bruges ikke til profilering eller sagsbehandling i henhold til GDPR art. 22.

Eksterne AI-databehandlere (underdatabehandlere)

Når en bruger stiller et spørgsmål i chatten, sendes prompt-tekst og den datakontekst, modellen skal bruge, til en ekstern AI-leverandør, der genererer svaret:

  • Anthropic (Claude) — primær AI-leverandør for chat-fallback, peer-analyst, synthesizer, research-scout, historiegenerering og videns-prægenerering.
  • OpenAI (GPT-5.2) — reserve-/fallback-leverandør samt default chat-provider; behandler prompts og tool-kontekst når en kørsel ikke route'es til Anthropic.

Begge er opført i underdatabehandlerregisteret nedenfor og i docs/public-sector/data-processing-and-subprocessors.md. I hostet drift (Vercel) går alle AI-kald til disse leverandørers API'er. En lokal abonnements-tilstand (Christians egne CLI-værktøjer) findes kun i lokale udviklingsmiljøer og er ikke tilgængelig i hostet drift.

Opbevaring af prompts (retention)

  • Chat-forløb (prompts og AI-svar) gemmes i tabellen chat_runs og opbevares som standard i ca. 30 dage (RETENTION_CHAT_RUNS_DAYS), hvorefter de slettes automatisk via /api/jobs/retention-cron. De kaskadesletter desuden straks ved DELETE /api/auth/account (retten til sletning).
  • Efterspørgsels-loggen (demand-ledger) registrerer kun hvad produktet ikke kunne besvare som tællere (kilde, udfald, metric-id, geografi) — den gemmer ikke selve prompt-teksten.
  • Selve AI-leverandørernes egen logning/opbevaring er leverandørstyret og fremgår af underdatabehandlerregisteret.

Retention og sletning (aktuel baseline)

  • chat_runs: 30 dage som standard (konfigurerbar via RETENTION_CHAT_RUNS_DAYS); slettes via /api/jobs/retention cron og kaskadesletter ved DELETE /api/auth/account
  • chat_feedback: 180 dage som standard (konfigurerbar via RETENTION_CHAT_FEEDBACK_DAYS)
  • sync_runs: 365 dage som standard
  • data_revisions: 365 dage som standard
  • email_subscriptions / report_schedules (ikke-bekræftede): 14 dage (RETENTION_UNVERIFIED_SUBSCRIPTIONS_DAYS); aktive rækker hard-deletes ved afmelding via unsubscribe_token
  • Infrastruktur-/platformlogs: leverandørstyret retention

Automatisering:

  • Retentionjob: npm run retention:run (src/scripts/run-retention.ts) og /api/jobs/retention (cron)
  • Right-to-erasure: DELETE /api/auth/account kræver re-autentifikation og kaskadesletter alle ejede rækker (se src/lib/data-governance/account-erasure.ts)
  • Targeted deletion workflow: src/scripts/delete-chat-feedback.ts (dry-run default, guardrails)

Detaljeret tabelinventar med slettevej pr. tabel: docs/public-sector/data-inventory-and-retention.md.

Datadeling og underdatabehandlere

Tekniske leverandører (afhænger af konkret deployment) — denne liste spejler 1:1 underdatabehandlerregisteret i docs/public-sector/data-processing-and-subprocessors.md (samme rækkefølge, samme navne). npm run docs:validate håndhæver pariteten via checkSubprocessorParity:

  • Vercel — hosting/runtime (webapp + edge/runtime)
  • Vercel Blob — objektlagring (default public bucket) for billed-uploads i dashboard-billedblokke
  • Turso/libSQL — databaselagring for tabeller i src/lib/schema.ts
  • Anthropic — AI-inferens (chat fallback, peer-analyst, synthesizer brief-generator, research-scout, story-generation, knowledge pre-generation)
  • OpenAI — AI-inferens (default chat-provider GPT-5.2; behandler prompts og tool-kontekst når chat ikke route'es til Anthropic)
  • Resend — transaktionel e-mail (bekræftelses- og digest-/rapportmails; double-opt-in)
  • GitHub (Actions) — CI/CD automation (build, tests, sikkerhedsscanning, SARIF)

Offentlig datakilde (ikke underdatabehandler for denne løsning):

  • Jobindsats.dk / STAR

Se detaljeret register med datakategorier, geografi, overførselsgrundlag og sikkerhedskontrol pr. leverandør:
docs/public-sector/data-processing-and-subprocessors.md

Dataminimering

  • Brugerkonti understøttes (autentificering via JWT-cookie). chat_runs ejes af user_id og purges efter 30 dage; email_subscriptions og report_schedules kræver double-opt-in og slettes hard ved afmelding.
  • Ingen tracking-pixel og ingen tredjeparts-analytics. Vercel Analytics er bevidst fjernet (S-017) for at undgå at kommune- og dashboard-id'er videregives til processor-side analyseinfrastruktur.
  • Vercel Blob bruges til billed-uploads i dashboard-billedblokke. Hver upload registreres med user_id i tabellen uploads; DELETE /api/upload?pathname=… (ejertjekket) og right-to-erasure cascade fjerner både databaserækken og det underliggende blob-objekt. Privat namespace er feature-flag-bundet (BLOB_PRIVATE_UPLOADS_ENABLED) og default off.
  • Feedbackfelter er frivillige og begrænsede

Sikkerhed og hændelser

  • Sikkerhedsproces og SLA: SECURITY.md
  • Driftsrunbook: docs/public-sector/operations-runbook.md

Controlleransvar

Endelig hjemmel, oplysningspligt og håndtering af registreredes rettigheder fastlægges af den konkrete dataansvarlige myndighed i deploymentkonteksten.

Referencer