Sandefjord
Driften ligger hos Gigahost, i deres eget datasenter i Sandefjord. Appen og databasen står på hver sin server.
Sikkerhet og personvern
Dere legger timelister, sykefravær og prosjektøkonomi inn i systemet vårt. Da har dere krav på å vite hvor det havner, hvem som kommer til, og hva vi gjør den dagen noe ryker. Denne siden svarer på det — også der svaret ikke kler oss.
Appen, databasen og bakgrunnsjobbene kjører på maskiner i Norge. Sikkerhetskopiene ligger i EU, fordi de skal overleve at datasenteret gjør det ikke.
Driften ligger hos Gigahost, i deres eget datasenter i Sandefjord. Appen og databasen står på hver sin server.
Kopiene går til Cloudflare R2 med EU-jurisdiksjon — bundet til Europa, ikke bare «i skyen». En kopi som lå i samme rom som originalen ville ikke vært en sikkerhetskopi.
Verken appen eller databasen kjører hos en amerikansk skyleverandør. Tjenestene rundt — de som sender e-post, teller feil og måler bruk — står navngitt i tabellen lenger nede, med land.
De fleste innbrudd begynner med et passord, ikke med et hull i koden. Derfor er dette laget strengere enn folk forventer — og mindre irriterende enn de frykter.
Har kontoen et passord, har den to faktorer. Autentiseringsapp når en er satt opp, ellers en sekssifret kode på e-post. Ingen bryter, ingen unntaksliste. «Husk denne enheten» gjør at du slipper koden i 30 dager på maskinen din.
En lenke som logger deg inn er et passord som ligger i en URL — og URL-er havner i historikk, i Referer-felt og hos e-postleverandørens lenkeskanner. Vi sender en sekssifret kode i stedet. Den lever i ti minutter og lagres hashet.
Minst 12 tegn, og så er det slutt på maset: ingen tvungen utskifting hver tredje måned, ingen krav om et utropstegn. Til gjengjeld sjekker vi passordet mot kjente lekkasjer — og bare fem tegn av en hash forlater oss, aldri passordet.
Under Min profil ligger alle aktive pålogginger med enhet og IP-adresse. Du kan logge ut én av dem, eller alle andre enn den du sitter på. «Er jeg fortsatt innlogget på telefonen jeg mistet» skal være et spørsmål du kan svare på selv.
Alle firmaer deler den samme databasen. Skillet mellom dem er derfor ikke en regel noen må huske å skrive — det er to uavhengige lag, og det nederste antar at det øverste kan svikte.
Ingen del av koden snakker med databasen på egen hånd. Alt går gjennom én inngang som setter hvilket firma spørsmålet gjelder, hver eneste gang. En utvikler kan ikke glemme det, fordi det ikke finnes en vei utenom.
Postgres har sine egne regler på hver tabell, knyttet til firmaet transaksjonen gjelder. Skulle laget over svikte, er svaret null rader — ikke feil firma sine rader. Det gjør en glipp til en feilmelding i stedet for en datalekkasje.
Brukeren appen kobler seg til databasen med, eier ikke tabellene og er ikke superbruker — for eieren ville gått rundt reglene uten å si fra. Det sjekkes automatisk ved hver endring.
Alt som handler om penger eller om noe dere må kunne dokumentere i ettertid, håndheves ett lag under koden. Da holder det også den dagen koden har en feil.
Når en uke er godkjent og låst, kan timene i den ikke endres, flyttes inn eller ut, eller slettes. Regelen ligger i databasen, ikke i skjermbildet, så den gjelder også for import og for oss.
Revisjonsloggen skrives bare på server, og hvem som gjorde noe hentes fra økten — aldri fra det klienten påstår. Rader legges til, aldri om.
En time eller en utgift merkes som fakturert i det samme grepet som plukker den opp. To fakturaer kan ikke få tak i den samme timen, uansett hvor samtidig de lages.
Sikkerhetskopier er verdiløse til den dagen noen faktisk prøver å hente dem tilbake. Derfor øver vi på det, i stedet for å regne med det.
Hver endring må gjennom et automatisk testsett før den slippes ut. Etter hver oppdatering logger en testbruker inn og fører en time, og i fem minutter følger vi med på feilene. Går noe galt, settes appen tilbake til versjonen før, av seg selv. Unntaket er en oppdatering som har lagt om databasen slik at versjonen før ikke kan bruke den. Da retter vi feilen i stedet for å gå tilbake.
Endringene i databasen kopieres ut fortløpende, ikke én gang i døgnet. Går noe galt klokka 14.05, kan vi hente tilbake tilstanden slik den var 14.04.
Da settes en ny opp og kopien spilles tilbake. Vi regner et kvarter til en halvtime. Det er ærlig sagt ikke sømløst — automatisk omkobling er noe vi kan bygge når det er verdt det, og vi sier fra når vi har gjort det.
Databasen gjenopprettes jevnlig fra sikkerhetskopien i en egen, midlertidig instans, og tiden måles. En kopi ingen har prøvd å bruke er en antakelse.
Tilgang er ikke bare et spørsmål om utenforstående. Det handler like mye om at en tømrer ikke skal se hva kollegaen tjener, og at en byggherre ikke skal se mer enn han har krav på.
Kunden ser sine egne prosjekter, status og timer i sum. Aldri hvem som førte hva, aldri navn på den enkelte. Det er ikke en innstilling — portalen har ikke tilgang til det.
En gjest — byggherre, kontrollør, underentreprenør — kommer inn på det noen har delt, og ingenting annet. Ingen prosjektliste å bla i, ingen ansatte å slå opp.
Egenmelding og sykmelding er særlige kategorier etter personvernforordningen artikkel 9. Vi lagrer type og periode — ikke diagnose — tilgangen er begrenset til den ansatte selv og de som skal godkjenne, og det havner aldri i statistikk eller analyse.
Kontrollvisningen viser feltene byggherreforskriften § 15 krever, og ikke ett til. Øyeblikksbildene slettes seks måneder etter at prosjektet er ferdig.
Et system dere ikke kommer ut av, er et system dere ikke kan forhandle med. Både uttrekk og sletting er selvbetjent — dere trenger ikke ringe oss, og vi kan ikke somle.
Timer, utgifter, prosjekter, rapporter og fakturagrunnlag kan lastes ned som regneark eller CSV der de ligger. Trenger dere alt samlet i én leveranse, ber dere om det og får det uten kostnad — det er en plikt i databehandleravtalen, ikke en tjeneste vi kan si nei til.
En administrator kan slette hele firmaet selv — bekreftet med firmanavnet og en kode på e-post, og med 30 dagers angrefrist der dere kan avbryte. Hver enkelt kan slette sin egen konto på samme måte. Data blir liggende i sikkerhetskopiene til kopiene selv går ut på dato — senest 35 dager.
Hver enkelt kan laste ned sine egne kontodata og slette kontoen sin selv, med 30 dagers angrefrist som avbrytes av én innlogging. Arbeidet du har utført tilhører arbeidsgiveren din — det står forklart i uttrekket, inni fila.
Underleverandører
Ingen driver alt selv. Her er hver tjeneste vi bruker, hva den får se, og hvilket land den står i — inkludert de tre som ikke står i Europa. Endrer listen seg, sier vi fra til administratorene deres før endringen trer i kraft.
| Hva | Hvem | Hvor |
|---|---|---|
| Drift av app og database | Gigahost AS | Norge |
| Sikkerhetskopier og filer | Cloudflare R2 | EU |
| Bruksstatistikk, maskerte opptak og kundestøtte | PostHog Cloud | EU |
| KI-gjennomgang av opptak og supportsamtaler | OpenAI, Google, Anthropic og Microsoft, via PostHog | USA |
| Feilovervåking og feilrapporter | Sentry | EU og USA |
| KI-assistenten Byggmesteren og Mester Diktat | OpenAI Ireland | USA |
| Vår egen fakturering | Fiken | Norge |
| Kortbetaling | Stripe | EU og USA |
| E-post fra systemet | Resend | USA |
| Varsler til appen for telefonen | Apple | USA |
| Robotsjekk ved registrering | Cloudflare Turnstile | USA |
| Adresseforslag, og måling med samtykke | USA | |
| Annonsemåling med samtykke | Meta | EU og USA |
| Drift av nettstedet jobbkontroll.no | Vercel | EU og USA |
| Interne varsler når en bedrift opprettes | Discord | USA |
Fire har et gult merke. E-post og feilrapporter har ingen europeisk leverandør vi kan anbefale i dag, og ingen av dem får timelister, HMS-data eller prosjektøkonomi. Robotsjekken ved registrering ser IP-adressen til den som registrerer seg, og ingenting mer. Feilovervåkingen holder selve feilmeldingene i Frankfurt, men leverandøren har vår egen konto og våre revisjonslogger i USA — vi skriver «EU og USA» framfor «EU», fordi det siste ville vært å la halve svaret være underforstått. Kortbetaling er vi aldri innom: kortopplysningene går rett fra dere til betalingsleverandøren.
Kunstig intelligens
Assistenten kjører hos OpenAI i USA, og leverandøren er kontraktfestet på at innholdet ikke brukes til å trene modeller. Den henter data gjennom nøyaktig de samme tilgangene som deg — er du ansatt, ser den det en ansatt ser. Skal den endre noe, må du trykke ja først. Hvilken leverandør, hvilken region og hvilken modell står oppdatert på åpenhetssiden, og den siden er offentlig.
Det vi ikke har
Alle leverandører har en slik liste. De fleste publiserer den ikke. Vi vil heller at dere leser den her enn at dere finner den i et anbudsskjema.
Ikke ISO 27001, ikke ISO 42001, ikke SOC 2. Sertifisering koster og tar tid, og vi tar den når en kunde faktisk trenger den — ikke for å pynte på denne siden. Sikkerhetsdokumentasjonen er skrevet slik at den kan brukes den dagen.
Går noe ned, sier vi fra i Jobbkontroll eller på e-post — men vi har ingen offentlig side som viser oppetid og hendelser over tid. Den kommer, og til da er svaret på «hva er oppetiden deres» at vi ikke har målt lenge nok til å si et tall vi kan stå for.
Faller databasemaskinen helt ut, gjenoppretter vi manuelt og regner et kvarter til en halvtime. Vi kunne kjøpt oss unna det med flere maskiner; vi har valgt å bruke pengene på produktet først, og å si det høyt i stedet for å love oppetid vi ikke kan garantere.
Spørsmål
Vi har tilgang til databasen — det må vi ha for å drifte og gjenopprette den. Support har i tillegg en driftsflate som kan låne en økt hos dere, og den er innelukket med vilje: den varer maks én time, dere ser et banner på skjermen hele tiden det står på, og starten havner i deres egen revisjonslogg. Endringer vi gjør fra driftsflaten krever en begrunnelse og havner der også. Leseflaten vår rekker bare en fast liste over tabeller, og den er skrivebeskyttet.
Dere. Juridisk er firmaet behandlingsansvarlig for det de ansatte legger inn, og vi er databehandler — vi behandler det på deres vegne, til det dere har bestemt, og ikke til noe annet. Vi selger ikke data, og vi bruker dem ikke til å trene KI-modeller.
Ingenting blir slettet fordi et abonnement går ut. Dere faller ned på gratisplanen, og det som lå i moduler dere ikke lenger betaler for blir lesbart i stedet for borte. Uttrekket er alltid tilgjengelig.
Nei. Leverandøren er kontraktfestet på at innholdet ikke brukes til trening. Byggmesteren ser bare det du selv har tilgang til, og må ha bekreftelse fra deg før den endrer noe. Sporet av hva den slo opp slettes etter 90 dager.
Ja. Skal dere gjennom en leverandørvurdering eller et anbud, svarer vi på skjemaet — også de lange. Vi svarer «det har vi ikke» der det er svaret.
Dere får beskjed uten ugrunnet opphold og senest 48 timer etter at vi ble kjent med det. Det står i databehandleravtalen, så det er en forpliktelse og ikke en intensjon. Vi sender varselet innen fristen selv om vi ikke har hele bildet ennå — et ufullstendig varsel i tide er mer verdt for dere enn et fullstendig varsel for sent, fordi det er dere som har 72 timer på å melde videre til Datatilsynet.
Skal Jobbkontroll gjennom en leverandørvurdering, en personvernvurdering eller et offentlig anbud, svarer vi på skjemaet — også de på førti sider. Det koster ingenting og krever ikke at dere er kunde.