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: