Staff Scheduling & Shift Trading

The roster that manages itself — over WhatsApp

Build the week in minutes, publish straight to every phone, and let staff trade shifts by chat — with role, hour-cap and Employment Act rules enforced on every swap, and timesheets flowing to payroll untouched.

WhatsApp — Restoran Seri Wangi
TRADE
Which shift do you want to offer, Farid?
· Fri 15:00–23:00 · Cashier
· Sat 10:00–18:00 · Floor
Fri 15:00–23:00
Posted. 4 eligible coworkers notified. Aina claimed it — awaiting manager approval.

Everything included

Drag-drop weekly builder

Build the week on a day-by-employee grid, copy from templates or last week, and see conflicts flagged before you publish.

Roles & stations per outlet

Cashier, fryer, floor — every shift carries a role and station, and only qualified staff can be scheduled or claim it.

Availability, one source of truth

Staff keep their own weekly pattern and date exceptions; unavailable cells shade in the builder and trades respect them automatically.

Fair day-off requests

Day-off requests carry a tamper-proof submission timestamp, so when not everyone can have Raya off, first-come-first-served is easy to see and apply.

Publish straight to WhatsApp

One tap sends each employee their own shifts with a portal deep link — SMS fallback for the rare phone without WhatsApp.

Rule-enforced shift trading

Offers go only to eligible coworkers — right role, no 45-hour week breach, no minor on a night shift — first claim wins, you approve.

WhatsApp commands, no app needed

Staff message TRADE, SHIFTS, MYSHIFTS or STATUS — in English or "tukar" and "ambil" in BM — and run the whole trade system by chat.

Open shifts, claimed in minutes

Post an unassigned shift and eligible staff see it in the portal and in WhatsApp SHIFTS searches — the fastest way to cover a gap.

Labor cost as you build

Scheduled hours × wages against projected sales, live in the sidebar — with warnings when the week drifts past your labor % target.

PIN time clock with geofence

Tablet PIN pad per outlet, optional location check that flags rather than blocks, breaks tracked, manager edits fully audited.

Timesheets, payroll-ready

Scheduled vs actual with late and missed-punch flags; approve the period and it lands in payroll without retyping a single hour.

Employment Act OT, automatic

Overtime at 1.5×, rest days at 2×, public holidays at 3×, computed from the gazetted calendar per outlet — no spreadsheet math.

A week in the life

Build Monday, publish by lunch

Drag shifts onto the grid from a template — availability shading and approved leave block the cells you shouldn't touch, and anything pushing an employee past 45 hours gets a warning badge. Hit publish and every employee receives their own week on WhatsApp with a one-tap link to the portal.

Week of 27 Jul · 42 shiftsDraft
Mei Ling · Thu46h — over cap
Labor vs projected sales23.4%
Published → WhatsApp14 staff notified

"Cannot work Friday" — handled by chat

Farid messages TRADE, picks his Friday shift, and confirms. The eligibility engine notifies only coworkers who hold the role, are free that evening and stay inside their weekly hours — first to tap "I'll take it" wins. You approve from your phone, both sides get confirmation, and the roster updates itself. Latecomers get a polite "just taken" with what's still open.

Farid → Fri 15:00–23:00 offered4 eligible notified
Aina claimedFirst claim wins
Manager approvalApproved 14:22
Roster + both partiesUpdated & confirmed

From punch clock to payslip

Staff clock in on the outlet tablet with a PIN; the period closes with scheduled-vs-actual side by side and exceptions flagged for review. Overtime is classified per the Employment Act — daily and weekly 1.5×, rest days 2×, gazetted public holidays 3× — and the approved timesheet flows straight into the payroll run with EPF, SOCSO, EIS and PCB handled downstream.

Aina · regular hours88.0
OT 1.5× / rest day 2×6.5 / 8.0
Public holiday 3×8.0 · Merdeka
Period → payrollExported

Run your restaurant on one platform

Be the first — join the waitlist and get onboarded first, on your own private server.