Cecilie's – vagtplanlægning med AI-prognoser for omsætning og lønprocent
Kunde
Cecilie's
Services
Planlægningssystem Algoritmebaseret system Automatisering API Integration Tidsregistrering SMS-verifikation Realtidsopdatering Hosting & vedligeholdelse
Teknologi
Laravel Livewire PHP API Integration Laravel Reverb MySQL Hosting
Link til casen
Besøg Cecilie's
Baggrund og udfordring
Cecilie's driver fem oplevelsescentre med bowling, minigolf, café og sportsbar. Bemandingen er den største enkeltpost i driften, og den skal lægges uger i forvejen – længe før nogen ved, om det bliver en stille tirsdag eller en fuldt booket lørdag.
Konsekvensen af at gætte forkert går begge veje. For få på arbejde giver kø ved kassen, lang ventetid i køkkenet og gæster, der ikke kommer igen. For mange på arbejde æder marginen på en aften, der aldrig blev til noget. Lønprocenten – lønnen målt mod omsætningen – blev først kendt bagefter, når vagtplanen for længst var lagt og timerne var brugt.
Oveni kom det praktiske: en stor gruppe timelønnede unge, vagter der skal byttes i sidste øjeblik, sygemeldinger der skal dækkes, timer der skal registreres korrekt og til sidst blive til løn. Det hele lå i et ældre system, der ikke længere kunne følge med forretningen.
Løsningen: en vagtplan, der kender konsekvensen
Vi har bygget et nyt vagtplansystem fra bunden og koblet det sammen med en ML-model, der forudsiger omsætningen. Den afgørende forskel er, at planlæggeren kan se lønprocenten for en dag, mens vagterne bliver lagt – ikke i næste måneds regnskab.
ML-model forudsiger dagens omsætning
En trænet model pr. center leverer et estimat for omsætningen på en given dato sammen med et spænd, der viser, hvor sikker forudsigelsen er. Modellen kaldes direkte fra vagtplanen for hele den uge eller måned, planlæggeren kigger på.
Lønprocenten regnes ud, mens planen lægges
Systemet lægger de planlagte vagttimer sammen med de timelønninger, der faktisk gælder for de medarbejdere, der er sat på, og holder det op mod den forudsagte omsætning. Planlæggeren ser en planlagt lønprocent pr. dag – og på dage, der er gået, den faktiske.
Målsætning pr. dag og advarsler
Hvert center har en mållønprocent, der kan variere med ugedagen. Afviger den planlagte lønprocent for meget, markeres dagen med en advarsel, der peger i den rigtige retning: tilføj folk her, skær ned der. Advarsler vises kun for dage, der stadig kan nås at ændre.
Vagtbørs, medarbejderne selv styrer
Ubemandede vagter kan lægges på en intern vagtbørs, hvor medarbejdere byder på dem. Systemet viser kun vagter til dem, der har den rigtige jobrolle og ikke i forvejen står på en overlappende vagt. Når en byder får vagten, afvises de øvrige automatisk, og alle får besked på sms.
Skabeloner og gentagne vagter
En typisk uge kan gemmes som skabelon og lægges ud på en ny uge med ét klik. Vagtserier oprettes på tværs af flere uger, og systemet nægter at oprette dem, hvis de skaber konflikter for en medarbejder, der allerede er booket.
Check ind og ud – og hvis nogen ikke kommer
Medarbejderne tjekker ind og ud på stedet inden for et tidsvindue omkring vagten. En baggrundsservice holder øje minut for minut og giver besked, hvis en vagt er begyndt, uden at nogen er mødt – én gang, ikke i en løkke.
PIN-login og sms som kanal
Medarbejdere logger på med en personlig PIN i stedet for en adgangskode, de aldrig kan huske. Oprettelse, nulstilling og adgangskodeskift går via sms, og opslag på PIN sker gennem en nøglet hashværdi frem for ved at gennemløbe brugerne.
Fra vagt til løn uden mellemregning
Kun vagter, der er tjekket både ind og ud, kan lønbehandles. Timerne summeres pr. medarbejder og lønart, weekendtillæg lægges på efter reglerne, og resultatet eksporteres som en Danløn-fil. Behandlede vagter låses, så de ikke kan ændres bagefter.
Modellen gætter ikke på bemanding – den gætter på omsætning
Det er fristende at bede en model om at lægge vagtplanen. Vi har gjort noget mere nyttigt og mere robust: modellen forudsiger det, den kan lære af historikken – omsætningen – og systemet regner konsekvensen ud. Beslutningen bliver hos den planlægger, der kender sine folk.
Data kommer fra kassen: Den faktiske omsætning pr. center pr. dag kommer fra Cecilie's eget kasse- og bookingsystem, som vi også har bygget. Modellen trænes altså på virksomhedens egne tal, ikke på et gennemsnit af branchen.
Én model pr. center: Herlev opfører sig ikke som Holbæk. Hvert center har sin egen trænede model, så en afdeling med et andet mønster ikke trækker de andre skæve.
Usikkerheden vises frem: Estimatet leveres med et spænd. En prognose, der giver sig selv ud for at være mere præcis, end den er, bliver ignoreret af planlæggeren efter tredje gang, den tager fejl.
Egen tjeneste bag en nøgle: Modellen kører som en selvstændig tjeneste med nøglebeskyttet adgang, timeout og et sundhedstjek. Er tjenesten nede, mister planlæggeren sin prognose – ikke sin vagtplan.
Beregningerne caches: Prognose og nøgletal caches kortvarigt pr. center og periode, så en planlægger, der bladrer frem og tilbage mellem uger, ikke belaster hverken modellen eller databasen unødigt.
Et system, der blev skrevet om – ikke lappet
Løsningen afløser en ældre platform, som forretningen var vokset fra. Vi kortlagde det eksisterende system domæne for domæne – adgang og roller, vagter, vagtbørs, fravær, løn, opgaver, lokationer, statistik og prognoser – og beskrev regler, hændelser og de invarianter, der ikke måtte gå tabt, inden en linje blev skrevet.
Det nye system er bygget i Laravel med et modul pr. domæne, hvor hver tilstandsændring er en navngiven handling, der udsender en hændelse. Det er dét, der gør, at en sms om en godkendt vagt eller en nulstillet PIN altid sendes efter, ændringen er gemt – og aldrig i stedet for.
Fordelen ved at skrive om frem for at lappe er, at reglerne nu står ét sted og kan ændres. Da ønsket om lønprocent i vagtplanen kom, var det en tilføjelse – ikke en ombygning.
Resultater og fordele
Beslutningen om bemanding træffes nu med tal på bordet.
Lønprocenten er kendt før vagten
Planlæggeren ser konsekvensen af sin plan med det samme og kan justere, mens det stadig er en plan. Tidligere var lønprocenten et tal, man forholdt sig til bagefter.
Færre opkald for at dække vagter
Vagtbørsen flytter arbejdet med at finde en afløser fra lederens telefon til medarbejdernes egen skærm – med de rigtige filtre på, så der ikke bydes på vagter, man ikke må tage.
Lønkørslen bygger på registreringer
Timerne kommer fra faktiske ind- og udtjekninger frem for fra hukommelse, og eksporten til Danløn fjerner et manuelt led, hvor der før kunne opstå fejl.
Fem centre i samme system
Medarbejdere kan høre til flere afdelinger med hver sin timeløn og sit lønnummer, og ledelsen kan sammenligne afdelingerne på det samme grundlag.
Prognosen bliver bedre af sig selv
Fordi omsætningen kommer fra deres eget kassesystem, får modellen nye data hver dag uden at nogen skal indsamle dem.
Ét login for medarbejderen
Den samme personlige kode bruges både i vagtplanen og ved kassen, så der kun er ét sted at oprette og spærre en medarbejder.
Sådan hænger det sammen
Vagtplansystemet står ikke alene. Det er ét af tre systemer, vi har bygget og driver for Cecilie's, og de udveksler netop de data, de skal:
Kassesystemet leverer omsætningen: Salget pr. center pr. dag er grundlaget for både prognosen og for den faktiske lønprocent.
Vagtplanen leverer løntimer og lønomkostning: Et serverside-API stiller løntimer og lønkroner for en periode til rådighed for de øvrige systemer, beskyttet af en statisk nøgle med tidskonstant sammenligning.
Lokationer kobles på tværs: Centre i booking- og kassesystemet knyttes til lokationer i vagtplanen, så tallene kan sammenlignes uden manuel oversættelse.
Rå tal ud, nøgletal beregnes hos modtageren: API'et leverer timer og kroner. Lønprocent og omsætning pr. løntime regnes af det system, der skal bruge dem, så definitionen kan ændres ét sted.
Alt kører på dansk hosting: Vi hoster, overvåger og videreudvikler alle tre systemer, så der er én leverandør at ringe til, når noget skal rettes.
Fremadrettet samarbejde
Vi driver og videreudvikler løsningen sammen med Cecilie's. Næste skridt handler om at bruge prognosen til mere end lønprocent – blandt andet til at foreslå et bemandingsbehov pr. tidsrum frem for pr. dag, og til at give afdelingslederne det samme overblik på mobilen, som de i dag har på kontoret.
Vi skaber værdi for vores kunder
Hvorfor vælge Indexed?
AI, hvor det gør en forskel: Vi bruger modeller til det, de er gode til, og lader forretningsreglerne blive i kode, hvor de kan efterprøves. Det giver en løsning, man tør bruge til at træffe beslutninger.
Vi kan overtage et system: Vi kortlægger det eksisterende, beskriver reglerne og bygger om i etaper frem for at bede jer starte forfra.
Én leverandør til hele kæden: Booking, kasse og vagtplan ligger hos os, så der ikke er tre leverandører at koordinere, når data skal flyde mellem dem.
Erfarent team: Med mere end 20 års erfaring har vi løst komplekse udfordringer for en lang række kunder.
Dansk udvikling – Made in Denmark: Al vores udvikling og hosting foregår i Danmark.
Mød holdet
Vi er et webbureau med fokus på kvalitet og kundens løsninger. Vores tekniske kunnen matcher vores evne til at levere.
Mette Blaase
Skal jeres planlægning bygge på tal frem for fornemmelser?
Har I en stor timelønnet medarbejderstab og en omsætning, der svinger, så lad os tage en uforpligtende snak om, hvad en prognose i planlægningen ville være værd hos jer.