Snabbare bemanning, mindre administration

ipool löser vardagens bemanningsutmaningar — sjukfrånvaro, extrapass och kommunikation. Funkar tillsammans med Tiltid och Tidomat.

; import { ArrowUpRight, Check, Zap, Shield, Users, Heart, BarChart3, MessageSquare, Calendar, ShieldCheck, Sparkles, ClipboardList, Smile, } from

; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from

; const ease: [number, number, number, number] = [0.25, 0.1, 0, 1]; const heroPortrait =

En receptionist sjukanmäler sig. Passet startar 17:00.

Chefen ringer fyra personer. Två svarar inte. En kan inte. Klockan är 16:40 innan det är löst.

Pass-förfrågan går ut till 12 matchande personer på sekunder. Klockan 15:32 är passet bemannat.

Fyra butiker behöver extrapersonal till mellandagsrean.

Regionchefen ringer runt mellan butikerna. SMS-trådar. Excel-listor. Tar hela söndagen.

Förfrågan publiceras till hela personalpoolen samtidigt. Vid lunch är 18 av 24 pass bemannade.

En medarbetare vill jobba mer — men chefen vet inte om det.

Medarbetaren säger det muntligen. Det glöms bort. När extrapass kommer skickas de till andra.

Medarbetaren har själv markerat tillgänglighet. Vid nästa extrapass går förfrågan till henne först.

, }, ]; const roles = [ { img: roleManager, eyebrow:

Löser bemanning från mobilen — utan att stå i kassan eller hänga på telefon.

Pass skickas till rätt personer på sekunder — inte via 17 SMS

Synkar med Tiltid eller Tidomat — inget dubbelarbete

Bemanning sitter inte längre i en enda persons huvud

Samma app som hen redan har i mobilen. Mindre brus, mer kontroll över sitt eget arbetsliv.

Markera tillgänglighet själv — chefen ser den i realtid

, ], }, { img: roleBusiness, eyebrow:

Bemanning som fungerar även när någon är ledig. Trygga processer för hela organisationen.

Trygghet att bemanning fungerar även när någon är ledig

En pilot på en enhet kan vara i drift på en vecka. En större organisation med integrationer och konfiguration ligger normalt på 4–8 veckor.

De allra flesta har det redan. För personal utan egen mobil finns delade stämpel- och inloggningspunkter på arbetsplatsen.

Vad händer om en medarbetare inte vill använda appen?

Information kan fortfarande nå dem via chefen, men erfarenheten är att över 95 % använder appen aktivt inom första månaden — eftersom den faktiskt gör deras vardag enklare.

Funktionalitet för att stödja svenska kollektivavtal är inbyggt och konfigureras vid uppsättning — Handelsavtalet, AB, Visita, Bemanningsavtalet, Bevakningsavtalet, Serviceavtalet och fler. Flexibilitet för att stödja lokala avvikelser till avtalen.

All data lagras inom EU enligt GDPR. Ni äger er data och vid eventuellt avtalsslut levereras fullständig export i öppna format.

, text: f.a }, })), }; export default function VadLoserIpool() { return ( <Layout> <SEO title=

ipool löser vardagens bemanningsutmaningar — sjukfrånvaro, extrapass och kommunikation. Funkar tillsammans med Tiltid och Tidomat.

jsonLd={faqSchema} /> {/* ─────────── SECTION 1 — Hero ─────────── */} <section className=

> {/* Ambient gradient blooms */} <div className=

pointer-events-none absolute inset-0 opacity-[0.18]

radial-gradient(hsl(115 8% 44% / 0.35) 1px, transparent 1px)

radial-gradient(ellipse at 50% 40%, black 30%, transparent 75%)

inline-flex items-center gap-2 rounded-full bg-background border border-forest/15 text-forest px-3 py-1.5 text-[11px] font-medium uppercase tracking-[0.2em] shadow-[0_2px_10px_-4px_hsl(var(--forest)/0.25)]

> När verkligheten <em>förändras</em> — fungerar bemanningen <em>ändå</em>. </h1> <p className=

> Sjukfrånvaro klockan 06:32. Extrapass över helgen. En medarbetare som vill jobba mer. Tre situationer som var administrativt kaos. Tre situationer som nu tar{

>minuter</em>. </p> <div className=

> Boka demo <ArrowUpRight className=

>Se hur det funkar</a> </Button> </div> {/* Inline stats strip */} <div className=

}, ].map((s) => ( <div key={s.l}> <p className=

text-xs uppercase tracking-[0.16em] text-foreground/70 mt-2

relative aspect-[4/5] rounded-[2rem] overflow-hidden shadow-[0_40px_100px_-30px_hsl(115_8%_25%/0.35)]

}} width={850} height={850} sizes=

, delay: 0.75 }, ].map((b) => ( <motion.div key={b.t} initial={{ opacity: 0, y: 16, scale: 0.9 }} animate={{ opacity: 1, y: 0, scale: 1 }} transition={{ delay: b.delay, duration: 0.7, ease }} className={`absolute ${b.cls} bg-background/95 backdrop-blur-md rounded-2xl shadow-[0_18px_40px_-18px_hsl(0_0%_0%/0.3)] border border-white/60 px-4 py-3 flex items-center gap-3`} > <div className=

strokeWidth={2.5} /> </div> <div> <p className=

text-[10px] uppercase tracking-[0.16em] text-foreground/70 mt-1

> <motion.div initial={{ opacity: 0, y: 20 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true, margin:

}} transition={{ duration: 0.7, ease }} className=

>En vanlig vecka</span> <h2 className=

> Det här händer i en <em className=

>vanlig</em> vecka </h2> <p className=

> Tre situationer alla operativa chefer känner igen sig i. Tre situationer ipool hanterar utan att chefen behöver vara på plats. </p> </motion.div> <div className=

> {scenarios.map((s, i) => ( <motion.article key={i} initial={{ opacity: 0, y: 28 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true, margin:

}} transition={{ delay: i * 0.08, duration: 0.7, ease }} className=

font-serif text-[1.65rem] md:text-3xl text-forest leading-tight

text-[10px] uppercase tracking-[0.2em] text-foreground/70

text-[10px] uppercase tracking-[0.2em] text-foreground/70 mb-1.5

text-[10px] uppercase tracking-[0.2em] text-forest mb-1.5

>{s.after}</p> </div> </div> {/* Metric chip */} <div className=

>{s.metric}</span> <span className=

>{s.metricLabel}</span> </div> </motion.article> ))} </div> </div> </section> {/* ─────────── SECTION 3 — Roles with portraits ─────────── */} <section className=

font-serif text-4xl md:text-5xl text-foreground leading-[1.05] mt-4

>faktiskt</em> jobbar med bemanningen </h2> </motion.div> <div className=

> {roles.map((r, i) => ( <motion.article key={r.title} initial={{ opacity: 0, y: 28 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true, margin:

}} transition={{ delay: i * 0.1, duration: 0.75, ease }} className=

relative aspect-[4/5] rounded-[1.75rem] overflow-hidden mb-7 shadow-[0_25px_60px_-30px_hsl(115_8%_25%/0.3)]

w-full h-full object-cover transition-transform duration-[1200ms] ease-out group-hover:scale-[1.04]

absolute top-4 left-4 text-[10px] uppercase tracking-[0.22em] text-background/90 bg-foreground/30 backdrop-blur-md px-3 py-1.5 rounded-full

font-serif text-2xl md:text-[1.7rem] text-foreground leading-snug

> {r.points.map((p) => ( <li key={p} className=

> <Check className=

> <motion.div initial={{ opacity: 0, y: 24 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true, margin:

}} transition={{ duration: 0.8, ease }} className=

relative font-serif text-2xl md:text-[2rem] leading-[1.3] text-foreground

>ipool</em>. </p> <div className=

>ICA Supermarket Svenstavik</p> </div> </div> <Link to=

>Behåll det ni har</span> <h2 className=

> Ni behöver inte byta ut allt — börja med att{

>komplettera</em>. </h2> <p className=

> De flesta verksamheter har redan system för schema, tid och lön som fungerar. ipool är byggt för att lägga sig ovanpå — som ett bemanningslager som tar vid när verkligheten avviker från grundschemat. Ni behåller det ni byggt upp och får det som saknas, utan migration och utan ett nytt grundsystem för cheferna att lära sig. </p> <div className=

}} transition={{ delay: 0.1, duration: 0.7, ease }} className=

> {[ { t:

Inför ipool där värdet är störst först — bredda i takt med att verksamheten är redo.

Personal och schema flyttas automatiskt mellan era system. Inget dubbelarbete.

Ingen migration, ingen omskolning. Cheferna fortsätter i de verktyg de redan känner.

>{p.d}</p> </div> ))} </div> </motion.div> </div> </section> {/* ─────────── SECTION 6 — Outcomes ─────────── */} <section className=

>ipool</em> </h2> </motion.div> <div className=

> {outcomes.map((o, i) => ( <motion.div key={o.label} initial={{ opacity: 0, y: 20 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true, margin:

}} transition={{ delay: (i % 4) * 0.05, duration: 0.55, ease }} className=

strokeWidth={1.8} /> </div> <p className=

>{o.sub}</p> </motion.div> ))} </div> <p className=

> Det här är inte ett påstående. Det är vardagen för{

>1 000 arbetsplatser</em> i Norden som driver bemanning genom ipool. </p> </div> </section> {/* ─────────── SECTION 7 — Dark CTA ─────────── */} <section className=

> <motion.div initial={{ opacity: 0, y: 30 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true, margin:

> {/* Decorative blooms */} <div className=

pointer-events-none absolute inset-0 opacity-[0.06]

radial-gradient(rgba(255,255,255,0.7) 1px, transparent 1px)

, }} /> <div className=

text-[11px] uppercase tracking-[0.24em] text-background/70

font-serif text-4xl md:text-6xl mt-5 leading-[1.05] text-background max-w-3xl mx-auto

>rätt</em> för er. </h2> <p className=

> Vi visar plattformen utifrån er bransch, era utmaningar och era nuvarande system. Inga säljpresentationer. Bara konkreta exempel på hur ipool skulle fungera hos er. </p> <div className=

>Starta pilot på en enhet</Link> </Button> </div> </div> </motion.div> </section> {/* ─────────── SECTION 8 — FAQ ─────────── */} <section className=

}} transition={{ duration: 0.7, ease }} > <span className=

>undrar</em> innan demo </h2> </motion.div> <Accordion type=

> {faqs.map((f, i) => ( <AccordionItem key={i} value={`item-${i}`} className=