Ask AwraIQ about features, pricing, onboarding, login, integrations, security, demos, mobile apps, automation, reports, or support.
Most of your people work the same shift most weeks. AWRA OpsHub takes that seriously: set a default shift once per person, then use the weekly grid only for the days that break the pattern. Empty cell means "as usual", so a roster is a list of exceptions rather than a wall of repetition.
Default shift + per-date override · Copy last week · Department filter · Grace periods · Expected hours derived
| Employee | Mon 24 | Tue 25 | Wed 26 | Thu 27 | Fri 28 | Sat 29 | Sun 30 |
|---|---|---|---|---|---|---|---|
| A. Otieno | Day | Day | Day | Night | Night | Off | Off |
| J. Mwangi | Night | Night | Off | Day | Day | Day | Off |
| L. Wanjiru | Early | Early | Early | Early | Day | Off | Off |
| P. Kimani | Day | Day | Day | Day | Day | Day | Off |
This is the whole design, and it is worth thirty seconds because everything else follows from it.
Each employee gets a single standing shift, set on one screen that lists your whole active workforce with a dropdown beside each name. Save the lot in one action.
The screen tells you who is missing one. A count of active employees with no default shift sits at the top — because an employee with no shift has no expected hours, and that is the quiet gap that makes overtime detection and timesheet totals wrong later.
The weekly grid holds one shift per employee per date, and only where that date differs. An empty cell is not "no shift" — it means fall back to the default.
Because the grid stores exceptions, the timesheet can also tell you something useful for free: an employee with any overrides in a month is shown as Rotating rather than being labelled with a single shift name that would be a lie for half their days.
The reason this matters is what it does to the amount of work. A roster that requires every cell to be filled is a roster that gets filled once, enthusiastically, and then stops being maintained around week five — after which it is worse than no roster, because people trust it. A roster that only wants the exceptions stays accurate, because the effort of keeping it accurate is proportional to how much actually changed.
Shift definitions are deliberately small. Everything downstream — lateness, expected hours, overtime detection, the availability board — reads these five fields, so they carry a lot of weight for their size.
start_time · end_time The span. An end time earlier than the start is a valid night shift, not an error — see below.
0 – 480 Unpaid, subtracted from the span. Up to eight hours, for the genuinely long shifts.
0 – 240 · default 5 How late is still on time. Past it, a clock-in is marked late automatically rather than by somebody's judgement.
is_active Retired shifts stop appearing in pickers without breaking the history that references them.
This is a small design decision that decides whether your night workers get paid correctly, and almost every system gets it wrong in the same way.
Somebody clocks in at 22:00 and out at 06:00. A system now has to decide what happened, and it has two pieces of evidence: the two times, and the shift the roster says that person was working.
"The end is before the start, so it must be a night shift — add a day." Reasonable, and wrong, because an inference cannot tell a night shift from a transposed pair of times.
Somebody typing 06:00 and 22:00 the wrong way round at the end of a long night silently becomes sixteen hours of recorded work, on a record payroll will later read.
AWRA asks the roster instead: which shift governed this person on this date, and is that shift defined as ending before it begins?
A shift definition is a declaration somebody made once and reviewed. That is a completely different quality of evidence from two times typed at 6am, and it is the one the platform trusts.
The correction screen is where this pays off most. Attendance regularisation exists precisely because clock times arrive wrong, so it is the single place a transposed pair is most likely to turn up. Inferring the crossing there would turn the screen that exists to fix bad records into one that legitimises them. Instead, an approved correction takes its midnight crossing from the roster too — the same source, in the flow most likely to be carrying a typo.
The alternative failure is worth naming because it is the one this replaced. Where the crossing is not handled at all, a 22:00–06:00 day stores perfectly — both clock times present, status recorded — and every hours figure derived from it comes back empty. Not zero, which somebody would query, but nothing, which sums to nothing and leaves no gap behind it. A monthly total short by every night worked, with nothing anywhere reporting it.
Three things that sound mundane and are the difference between a roster somebody maintains and a roster somebody abandons.
One action rolls the previous week forward, weekday onto weekday, so a stable four-week pattern is three clicks a month rather than a re-entry exercise.
It respects the department filter you have applied, so you can roll one team forward without touching another. And it tells you how many shifts it copied — or says plainly that the source week was empty, rather than reporting a cheerful success over nothing.
A grid of four hundred people is not a planning tool. Narrowing to one department turns the roster into something a departmental supervisor can own for their own team.
The filter carries through to the copy action and back onto the URL, so a supervisor's bookmark lands on their own team's week rather than the whole organisation's.
A roster save accepts only dates inside the week actually on screen, and only shifts that belong to your own workspace.
That sounds like paranoia until you consider what a roster is: the thing that decides expected hours, and therefore overtime, and therefore pay. A screen that writes pay-affecting data gets to be careful about what it accepts.
A roster tells you who was scheduled. It does not tell you who is on leave, or that Thursday is a public holiday. The availability board resolves all three into one weekly view.
Every person resolves to exactly one of four states per day, from three sources: their approved leave, your holiday calendar, and the shift the roster gave them for that specific date. It is roster-aware, so somebody whose Thursday override says Off shows as off on Thursday rather than as working because their default shift said so.
It creates no new data at all — which is exactly why it can be trusted. There is no availability record for anyone to forget to update; the board is a reading of leave, holidays and the roster you already keep. And it carries per-day totals across the workforce shown, so "can we cover Friday" is a number rather than a headcount exercise.
The same resolution is used when assigning operational work, so the answer to "is this person available on Thursday" is the same answer everywhere in the platform rather than two systems disagreeing politely.
Public holidays are your own list, not a guessed calendar. Each holiday carries a name, a date and a recurring flag for the ones that fall on the same date every year — so the fixed ones are entered once and the moveable ones are entered when they are announced, which is the only honest way to handle a calendar that a government changes.
Rosters decide pay, so here is precisely what this does, and the work we would take on for a more demanding operation.
What AWRA OpsHub does today
More we can add to your workspace
Where we point you to a specialist
Rotation patterns and coverage rules are what larger operations ask for first, and both build straight onto the two-layer model already here — a pattern is simply a generator for the override layer. Tell us your patterns and your minimum staffing and we will come back with a written spec, a timeline and a price.
Worth knowing when you set up: the grace period defaults to five minutes on a new shift, and expected hours is derived rather than entered — so a shift with no break configured expects its whole span, which is usually what you want and occasionally is not.
A default shift each, a grid for the days that differ, copy-last-week for the ones that do not — and a night shift that arrives at payroll as eight hours rather than as nothing at all.