The operating system for field-service crews
NORDIQ runs snow removal and landscaping companies end to end, from the forecast to the invoice. Here is how it works, in one page.
One loop runs the business
Each domain hands work to the next. A snowfall forecast becomes quotes and contracts, then crews, equipment, routes in the field, and finally invoices. Each step is its own app, and they share one data model.
StormChasr
Storms, schedule, dispatch, routes and teams.
gated on run:readVERO
Clients, locations, quotes, contracts, tasks.
gated on billing:readGEAR
Fleet, maintenance and work orders.
gated on equipment:readFLOW
Invoices, payments, collections.
gated on invoice:readROSTR
Workforce and crew availability.
office appCLUTCH
Partner network, requests, bookings.
gated on partner:readSTART
Guided setup for a new company.
gated on config:writeSHOVL
The crew tablet, built for 3 a.m. in a truck cab.
React Native / ExpoFour layers, one direction
Every app talks to one API layer. The API layer is the only code that writes data, and it writes only through the schema layer. Nothing skips a layer.
What happens when a dispatcher clicks “Dispatch”
Every write follows this path. The browser never decides what is allowed and never writes data itself.
- Sign inIdentity Platform signs the user into their company's tenant and issues an ID token. The token says who you are, nothing more.
- Load the sessionThe app asks NAS for the session once. Roles and capabilities come back from the server and are cached; a screen without the right capability shows a permission state, never the content.
- Show only allowed actionsEach Run comes back with its available transitions, worked out on the server from the company's own workflow. The button exists because the server said so.
- Call NASThe click sends a callable request with the token. NAS checks the capability, takes the company from the verified token, and rejects stale writes.
- Write through NDSThe NDS repository writes inside that company's data tree. Another company's records are unreachable by construction.
- Refresh, don't guessThe app re-reads from the server after every write, success or failure. No optimistic updates, so the screen always shows what is stored.
By the numbers
Counted from the repositories in November 2026. Field operations and the commercial chain carry most of the API.
NAS callables by domain
| Domain | What it covers | Callables |
|---|
Automated test files
| Layer | Files |
|---|
The rules that keep it honest
These are enforced in code review and, where possible, by the build itself.
Done means observed, not just built
Green CI is only the third rung. Work counts as done when someone has watched it behave correctly in the running app, on real data.