SMS

Control Room OS v.0.2
© 2026 Shivl Inc. — All Rights Reserved

Hello!

Dashboard

The tenant file's four datasets, and the shifts built on them.

Shifts
Shift configurations
Info
Tenant info file
Employee
All staff
Site
Coloured by state
Client
Linked to sites

Shifts in Office

The account of confirmed shifts (documentation + broadcast). Verified shifts move to Rostering (status → completed) and are not changed thereafter.

Move verified shifts to Rostering:

Shift inbox

Incoming shifts (open / proposed). The solver runs every 5 min and classifies them into tiers — 0 auto-confirms (perfectly deterministic), 1–3 relax on a principle, 4 is manual focus.

By status:
Signs in as that user, then GETs /open — the new shifts their app polls.
Shift inbox
Shift factory 10:00

Communication layer

Select a user to see their device URL + auth…

Files

The tenant file on disk — one folder per tenant, four datasets inside.

Database

How the datasets flow: inputs → shift configurations → the pages they patch.

Tenant

One tenant per file — bound to its MagicDNS. Network sync across the six communication layers.

Live count as devices handshake.

Compliance

Rule toggles that flag data drift. First rule (owner, 29 Aug): GPS vs eircode — when both are present and the coordinates are more than 100 m from the eircode's location, the record is flagged.

Rule 1
When a record has both GPS and an eircode, we geocode the eircode (Dublin lookup) and compare. Drift > 100 m means the two disagree — the phone app's location and the profile eircode point to different places.
Flags:
Run the check to see records where GPS and eircode disagree.

Roles

The hierarchy, guard upward. A role's grants start from the shipped matrix; every switch you save is stored as an explicit override.

Select a role

Select a role to edit its 340 features.

Employees

One table of every employee — add people, filter by role / site, pick the columns. Creating a login sets the username to <name>@<host> and issues the device API key once.

By role:

Sites

Every site on the tenant file. State colours the map on the dashboard.

By client:

Clients

Clients on the tenant file, with the sites they're linked to.

By state:

Incidents

Every incident on the tenant file — add, filter by severity / status / site, pick the columns.

By status:
Open / unresolved
Resolved

Credentials

One table of every user — add users, filter by role / site / client, pick the columns.

By role: