Orders that file themselves, and an SLA clock that never forgets
Inbound orders parsed straight onto monday.com boards, installers allocated and notified automatically, and a two-business-day SLA engine with escalation, shipped behind a shadow-mode flag.

- SLA clock, business days
- 2-day
- mode before cutover
- Shadow
The problem
Orders arrived as documents and were typed into monday.com by hand, one row at a time. The re-keying was slow, and the errors it introduced were only discovered downstream.
Installer allocation was manual and undocumented. Once a job was allocated, the clock on it existed only in somebody's memory, so a breach of the two-business-day commitment was something you found out about from the customer.
The system had to touch a live production board carrying commission data, using an account-wide API token. Getting that wrong was not an option, and neither was a big-bang cutover.
What we built
A parser between the inbox and the board
Inbound orders hit a webhook, get parsed into structured fields, and the board row fills itself in (matched against existing records so a resend updates rather than duplicates). An ingest ledger records what arrived and what it changed, which makes a disputed row answerable instead of arguable.
Splitting the system along the credential boundary
The monday token is account-wide and reaches commission columns, so it lives in exactly one process. A Python service owns every credential and all board access; the Next.js front end never sees them and fetches server-side. The module that talks to that service imports server-only, so a client component reaching for it is a build failure rather than something a reviewer has to catch.
A portal for installers, without giving them seats
Each installer gets a magic link to a page showing only their own jobs. Contacted, booked, in progress and complete flow back onto the board as they tap them. No licence per installer, no password to reset, and no exposure to anything but their own work.
An SLA engine that understands business days
One install item per site is created on every installable order. Allocation fires an SMS when the installer is set and dispatched. A two-business-day clock runs against a real Australian public holiday calendar, survives reallocation, and escalates on its own when it runs out.
Shadow mode before go-live
The whole allocation and SLA layer shipped behind a shadow-mode flag and a go-live cutoff, running alongside the manual process and logging what it would have done without doing it. Comparing the two for real orders is what made the cutover uneventful. With no installer board configured, the order flow skips allocation entirely rather than flagging every order as unmatched.

The outcome
Order intake stopped being a typing job: rows populate from the source document, and a resent order corrects the existing row instead of creating a second one.
Allocation, notification and the SLA clock run without anyone remembering to start them, and escalation is automatic rather than reactive.
Installers work from their own page with no seat and no login, and their status updates land on the board immediately.
The credential boundary is enforced by the build, not by convention. The account-wide token cannot reach the browser.
Built with
- Next.js
- Python
- FastAPI
- Supabase
- monday.com API
- Webhooks
- SMS
- Vercel
Where this is applied
Page copy drafted with AI assistance. Skofi is accountable for it. Editorial policy
Have something shaped like this?
If any part of the above resembles a problem you are living with, a short call is the fastest way to find out whether it is the same problem underneath.
What happens on the call
- 15 minutes, no deck
- We map the process on the call
- A written scope, or an honest no
