Denne rapporten viser den faktiske dataflyten i Hubra: hvilke data som forlater systemet, til hvilken leverandør og hvilket endepunkt, hvorfor det skjer, hvilke felter som maskeres eller pseudonymiseres, og hva som aldri sendes ut. Rapporten beskriver teknisk oppførsel. Leverandørenes juridiske status er merket REQUIRES_VERIFICATION der den ikke kan verifiseres av kode.
Utgående KI-trafikk
Lovable – Lovable AI Gateway
POST https://ai.gateway.lovable.dev/v1/chat/completions
- Formål:
- Formidler KI-forespørsler videre til modell-leverandør
- Datakategorier:
- Fritekst ansatt eksplisitt sender til en KI-funksjon; Opplastet dokument/bilde ved dokumentlesing
- Felter som sendes:
- Minimert tekstgrunnlag (systemprompt + brukertekst); Modellnavn og funksjonsnavn
- Felter som maskeres:
- Fødselsnummer; Telefonnummer; E-postadresse; Adresse; Kontonummer
- Felter som pseudonymiseres:
- Beboer- og ansattnavn (erstattes før sending, gjenopprettes lokalt)
- Utløses av:
- Eksplisitt KI-handling fra ansatt. Ingen bakgrunnssending.
- Sensitive data tillatt:
- Nei – blokkert av KI-gaten
- Behandlingsregion:
- REQUIRES_VERIFICATION
- Lagringssted:
- REQUIRES_VERIFICATION
- Lagringstid:
- REQUIRES_VERIFICATION
- Bruk til modelltrening:
- REQUIRES_VERIFICATION
- Databehandleravtale:
- REQUIRES_VERIFICATION
- Underdatabehandlere:
- REQUIRES_VERIFICATION
- Overføring ut av EØS:
- REQUIRES_VERIFICATION
- Overføringsgrunnlag:
- REQUIRES_VERIFICATION
- Kryptering:
- TLS i transitt (teknisk verifisert)
- Sletting:
- REQUIRES_VERIFICATION
- Dokumentasjonsstatus:
- REQUIRES_VERIFICATION
- Sist verifisert:
- — av —
- Kodereferanse:
- src/lib/ai.server.ts via src/lib/ai-policy.ts og src/lib/ai-sanitize.ts
Google – Gemini (språkmodell, nås via Lovable AI Gateway)
Nås indirekte via https://ai.gateway.lovable.dev/v1/chat/completions
- Formål:
- Oppsummering, strukturering, språkvask og forslag til utkast
- Datakategorier:
- Minimert og maskert tekstgrunnlag videreformidlet av gateway
- Felter som sendes:
- Samme minimerte tekst som sendes til gateway
- Felter som maskeres:
- Fødselsnummer; Telefonnummer; E-postadresse; Adresse; Kontonummer
- Felter som pseudonymiseres:
- Beboer- og ansattnavn
- Utløses av:
- Videreformidling av ansattes KI-handling
- Sensitive data tillatt:
- Nei – blokkert av KI-gaten
- Behandlingsregion:
- REQUIRES_VERIFICATION
- Lagringssted:
- REQUIRES_VERIFICATION
- Lagringstid:
- REQUIRES_VERIFICATION
- Bruk til modelltrening:
- REQUIRES_VERIFICATION
- Databehandleravtale:
- REQUIRES_VERIFICATION
- Underdatabehandlere:
- REQUIRES_VERIFICATION
- Overføring ut av EØS:
- REQUIRES_VERIFICATION
- Overføringsgrunnlag:
- REQUIRES_VERIFICATION
- Kryptering:
- TLS i transitt (teknisk verifisert)
- Sletting:
- REQUIRES_VERIFICATION
- Dokumentasjonsstatus:
- REQUIRES_VERIFICATION
- Sist verifisert:
- — av —
- Kodereferanse:
- src/lib/ai.server.ts (modellvalg)
ElevenLabs – Text-to-Speech
POST https://api.elevenlabs.io/v1/text-to-speech/{voice_id}
- Formål:
- Opplesning av tekst ansatt har valgt (kjøremodus, morgenbrief, dokumentlesing)
- Datakategorier:
- Tekst valgt for opplesning; Stemme-ID og språkkode «no»
- Felter som sendes:
- Minimert tekst; voice_id; language_code
- Felter som maskeres:
- Fødselsnummer; Telefonnummer; E-postadresse; Adresse
- Felter som pseudonymiseres:
- —
- Utløses av:
- Ansatt starter opplesning
- Sensitive data tillatt:
- Nei – blokkert av KI-gaten
- Behandlingsregion:
- REQUIRES_VERIFICATION
- Lagringssted:
- REQUIRES_VERIFICATION
- Lagringstid:
- REQUIRES_VERIFICATION
- Bruk til modelltrening:
- REQUIRES_VERIFICATION
- Databehandleravtale:
- REQUIRES_VERIFICATION
- Underdatabehandlere:
- REQUIRES_VERIFICATION
- Overføring ut av EØS:
- REQUIRES_VERIFICATION
- Overføringsgrunnlag:
- REQUIRES_VERIFICATION
- Kryptering:
- TLS i transitt (teknisk verifisert)
- Sletting:
- REQUIRES_VERIFICATION
- Dokumentasjonsstatus:
- REQUIRES_VERIFICATION
- Sist verifisert:
- — av —
- Kodereferanse:
- src/lib/tts.functions.ts
ElevenLabs – Speech-to-Text
POST https://api.elevenlabs.io/v1/speech-to-text
- Formål:
- Diktering av registreringer og avviksutkast
- Datakategorier:
- Lydopptak ansatt selv har startet
- Felter som sendes:
- Lydfil; modellnavn
- Felter som maskeres:
- Ingen maskering er teknisk mulig i lyd før transkribering
- Felter som pseudonymiseres:
- —
- Utløses av:
- Ansatt starter diktering. Passiv lytting sender ikke lyd.
- Sensitive data tillatt:
- Nei – blokkert av KI-gaten
- Behandlingsregion:
- REQUIRES_VERIFICATION
- Lagringssted:
- REQUIRES_VERIFICATION
- Lagringstid:
- REQUIRES_VERIFICATION
- Bruk til modelltrening:
- REQUIRES_VERIFICATION
- Databehandleravtale:
- REQUIRES_VERIFICATION
- Underdatabehandlere:
- REQUIRES_VERIFICATION
- Overføring ut av EØS:
- REQUIRES_VERIFICATION
- Overføringsgrunnlag:
- REQUIRES_VERIFICATION
- Kryptering:
- TLS i transitt (teknisk verifisert)
- Sletting:
- Hubra lagrer ikke lyden etter transkribering. Leverandørside: REQUIRES_VERIFICATION
- Dokumentasjonsstatus:
- REQUIRES_VERIFICATION
- Sist verifisert:
- — av —
- Kodereferanse:
- src/lib/stt.functions.ts
Driftsplattform og innlogging
Lovable Cloud – Administrert database, autentisering og fillagring (Supabase-basert)
HTTPS mot prosjektets database-, auth- og lagrings-API
- Formål:
- Hubras egen driftsplattform: database, innlogging, roller og filer
- Datakategorier:
- Kontaktopplysninger om ansatte; Beboeropplysninger, inkl. helseopplysninger; Faglig dokumentasjon og avvik; Meldinger og vedlegg; Revisjonslogg og KI-metadata
- Felter som sendes:
- All applikasjonsdata som lagres i Hubra
- Felter som maskeres:
- Fødselsnummer lagres kun maskert
- Felter som pseudonymiseres:
- —
- Utløses av:
- All normal bruk av Hubra
- Sensitive data tillatt:
- Nei – blokkert av KI-gaten
- Behandlingsregion:
- REQUIRES_VERIFICATION
- Lagringssted:
- REQUIRES_VERIFICATION
- Lagringstid:
- Konfigurerbar per virksomhet (retention_policy); backup styres av plattformen
- Bruk til modelltrening:
- REQUIRES_VERIFICATION
- Databehandleravtale:
- REQUIRES_VERIFICATION
- Underdatabehandlere:
- REQUIRES_VERIFICATION
- Overføring ut av EØS:
- REQUIRES_VERIFICATION
- Overføringsgrunnlag:
- REQUIRES_VERIFICATION
- Kryptering:
- TLS i transitt (teknisk verifisert). Lagringskryptering: REQUIRES_VERIFICATION
- Sletting:
- Sletting i aktiv database er implementert og loggført. Sletting i backup: REQUIRES_VERIFICATION
- Dokumentasjonsstatus:
- REQUIRES_VERIFICATION
- Sist verifisert:
- — av —
- Kodereferanse:
- src/integrations/supabase/*
Criipto / Idura – BankID (OIDC-broker)
OIDC authorize/token/jwks mot brokerens domene
- Formål:
- Sterk autentisering ved innlogging med BankID
- Datakategorier:
- Innloggingsforespørsel (state, nonce, redirect); Identitetstoken med navn og nasjonalt ID-nummer
- Felter som sendes:
- client_id; state (signert); nonce; redirect_uri; autorisasjonskode
- Felter som maskeres:
- Fødselsnummer lagres kun maskert i Hubra
- Felter som pseudonymiseres:
- —
- Utløses av:
- Ansatt velger BankID-innlogging
- Sensitive data tillatt:
- Nei – blokkert av KI-gaten
- Behandlingsregion:
- REQUIRES_VERIFICATION
- Lagringssted:
- REQUIRES_VERIFICATION
- Lagringstid:
- REQUIRES_VERIFICATION
- Bruk til modelltrening:
- Ikke relevant (ikke KI-tjeneste)
- Databehandleravtale:
- REQUIRES_VERIFICATION
- Underdatabehandlere:
- REQUIRES_VERIFICATION
- Overføring ut av EØS:
- REQUIRES_VERIFICATION
- Overføringsgrunnlag:
- REQUIRES_VERIFICATION
- Kryptering:
- TLS i transitt. Token valideres mot issuer, audience, nonce og JWKS (teknisk verifisert).
- Sletting:
- REQUIRES_VERIFICATION
- Dokumentasjonsstatus:
- REQUIRES_VERIFICATION
- Sist verifisert:
- — av —
- Kodereferanse:
- src/lib/bankid.server.ts, src/routes/api.public.bankid.callback.ts
Brukerstyrt navigasjon ut av Hubra
Jitsi Meet – Videomøte (ekstern lenke)
https://meet.jit.si/{rom}
- Formål:
- Videomøte mellom ansatte
- Datakategorier:
- Romnavn; Deltakerens eget navn, lyd og bilde i møtet
- Felter som sendes:
- Romnavn i URL
- Felter som maskeres:
- Ingen beboerdata sendes med lenken
- Felter som pseudonymiseres:
- —
- Utløses av:
- Ansatt bekrefter i dialog at data forlater Hubra
- Sensitive data tillatt:
- Nei – blokkert av KI-gaten
- Behandlingsregion:
- REQUIRES_VERIFICATION
- Lagringssted:
- REQUIRES_VERIFICATION
- Lagringstid:
- REQUIRES_VERIFICATION
- Bruk til modelltrening:
- Ikke relevant
- Databehandleravtale:
- REQUIRES_VERIFICATION
- Underdatabehandlere:
- REQUIRES_VERIFICATION
- Overføring ut av EØS:
- REQUIRES_VERIFICATION
- Overføringsgrunnlag:
- REQUIRES_VERIFICATION
- Kryptering:
- TLS i transitt (teknisk verifisert)
- Sletting:
- REQUIRES_VERIFICATION
- Dokumentasjonsstatus:
- REQUIRES_VERIFICATION
- Sist verifisert:
- — av —
- Kodereferanse:
- src/lib/meetings.ts, src/lib/ekstern.ts
Apple / Google (enhetens kartapp) – Kart og navigasjon
https://maps.apple.com/?daddr=… eller https://www.google.com/maps/dir/?api=1&destination=…
- Formål:
- Navigasjon til adresse i kjøremodus
- Datakategorier:
- Destinasjonsadresse
- Felter som sendes:
- Adresse i URL
- Felter som maskeres:
- Aldri navn, diagnose eller annen beboerinformasjon
- Felter som pseudonymiseres:
- —
- Utløses av:
- Ansatt bekrefter navigasjon i dialog
- Sensitive data tillatt:
- Nei – blokkert av KI-gaten
- Behandlingsregion:
- REQUIRES_VERIFICATION
- Lagringssted:
- REQUIRES_VERIFICATION
- Lagringstid:
- REQUIRES_VERIFICATION
- Bruk til modelltrening:
- Ikke relevant
- Databehandleravtale:
- REQUIRES_VERIFICATION
- Underdatabehandlere:
- REQUIRES_VERIFICATION
- Overføring ut av EØS:
- REQUIRES_VERIFICATION
- Overføringsgrunnlag:
- REQUIRES_VERIFICATION
- Kryptering:
- TLS i transitt (teknisk verifisert)
- Sletting:
- REQUIRES_VERIFICATION
- Dokumentasjonsstatus:
- REQUIRES_VERIFICATION
- Sist verifisert:
- — av —
- Kodereferanse:
- src/lib/reisemaal.ts, src/lib/ekstern.ts
Dataflytkjede (steg for steg)
- 1. Ansatt utfører en eksplisitt handling i Hubra (skriver, dikterer eller ber om oppsummering). Ingenting sendes i bakgrunnen.
- 2. Hubra bygger grunnlaget på serveren fra data den innloggede har tilgang til i sin organisasjon.
- 3. Hubra minimerer: fødselsnummer, telefonnummer, e-post og kontonummer maskeres, navn erstattes av pseudonymer, og instruksjonsforsøk nøytraliseres.
- 4. Dokumentasjonsgaten kontrollerer datakategori og leverandørstatus. Uten verifisert dokumentasjon stanses kallet med PROVIDER_NOT_APPROVED.
- 5. Minimert innhold sendes over TLS til ekstern leverandør (KI-modell eller tale-tjeneste).
- 6. Svaret mottas på serveren, pseudonymer gjenopprettes lokalt, og resultatet vises som utkast (AI_DRAFT).
- 7. Ansatt kontrollerer og godkjenner. Først da lagres innholdet i Hubra, med godkjenner og tidsstempel.
- 8. KI-loggen lagrer kun metadata om kallet, ikke innholdet.
Rå lyd til tale-til-tekst – RAW_AUDIO_SENT_TO_STT = REQUIRES_VERIFICATION
- RAW_AUDIO_SENT_TO_STT = REQUIRES_VERIFICATION.
- Rå lyd sendes til tale-til-tekst uten maskering. Lyd kan ikke maskeres eller pseudonymiseres før transkripsjon, fordi hele lydstrømmen må behandles av leverandøren. Lyden kan derfor inneholde navn, helseopplysninger og andre personopplysninger som ansatte sier under diktering.
- Hubra påstår ikke at rå lyd er anonymisert eller pseudonymisert.
- Lydopptak lagres ikke i Hubra etter at transkripsjonen er mottatt.
- Transkribert tekst minimeres og pseudonymiseres før eventuelle videre KI-kall.
- Behandlingsregion, lagringstid, modelltrening, underdatabehandlere og overføringsgrunnlag for lyd må dokumenteres av leverandøren og verifiseres eksternt.
- Diktering er blokkert for sensitive opplysninger til dokumentasjonsgaten er verifisert (PROVIDER_NOT_APPROVED).
Data som aldri forlater Hubra
- Passord og passord-hasher
- Hemmelige API-nøkler, service-nøkler og øktnøkler (finnes kun server-side)
- BankID/Criipto klienthemmelighet og signeringsnøkler
- Fødselsnummer og nasjonale ID-numre (maskeres før KI-kall; lagres kun maskert)
- Kontonummer og betalingsdetaljer (sendes ikke til KI)
- Fulle KI-prompter når de ikke er nødvendige (kun metadata lagres i KI-loggen)
- Fulle KI-svar når de ikke er nødvendige (kun metadata lagres i KI-loggen)
- Rå revisjonslogger og interne sikkerhetsdata (sendes aldri ut av plattformen)
- Personopplysninger uten uttrykkelig handling fra ansatt (ingen bakgrunnssending)
- Sporings-, analyse- og annonsedata (ingen slike integrasjoner finnes)
Kontrollpunkter i koden
- All ekstern KI-trafikk går gjennom én server-side gate. Frontend kan ikke kalle Gemini eller ElevenLabs direkte.
- Gaten kontrollerer datakategori, maskering, pseudonymisering og leverandørstatus før hvert kall. Mangler dokumentasjon, returneres PROVIDER_NOT_APPROVED og ingen data sendes.
- Alle KI-, tale-, eksport-, slette- og adminkall er ratebegrenset. Nøkkelen utledes fra den autentiserte sesjonen på serveren og kan ikke settes av klienten.
- KI-loggen lagrer kun metadata: funksjon, modell, lengder, maskeringsstatus og godkjenningsspor.
- Sikkerhetsheadere (CSP i report-only, HSTS, nosniff, Referrer-Policy, rammevern, Permissions-Policy) begrenser hvilke eksterne mål nettleseren kan kontakte.
- Alle utgående kall skjer over TLS.
Sporbarhet og status
Innlogging, mislykket innlogging, utlogging, rolleendringer, kontoopprettelse, sletting, eksport, tildelinger og KI-godkjenninger registreres i revisjonsloggen. Samlet statusbilde med hva som fortsatt krever ekstern verifisering finnes på produksjonsstatus.
Sist oppdatert: 30. august 2026. Denne siden vedlikeholdes av Hubra og kan tilpasses den enkelte virksomhets rutiner.