WTWilly Tai
Case studyIoT & Smart Infrastructure

Fixing the asset before the customer notices.

The freezer drifting warm, the lift starting to vibrate: the sensors already know, hours before anyone complains. This agent watches them across a retailer's stores, turns a fault into a costed work order, and escalates a critical dispatch to a human. The value is not a smarter alarm. It is the governed decision that follows the alarm.

01 / The pain

Maintenance only starts after the failure.

In most retail estates, an asset is fixed when it breaks. The chiller fails and the stock spoils, the lift stops and the store posts a sign. The sensor data that would have warned everyone hours earlier sits unwatched, because no one can monitor hundreds of assets across dozens of stores by hand. The cost is paid twice, once in the emergency call-out and again in the customer-facing failure that triggered it.

02 / Why the naive approach fails

A threshold alarm is what the building system already has, and it fires too late.

Every building-management system can already fire "temperature > limit". If that were enough, no stock would ever spoil. A static threshold fails in exactly the ways that matter:

So the design is a degradation model (trend → time-to-failure horizon), weighted by asset criticality, feeding a governed work order. The consequential, billable dispatch goes to a human.

NAIVE · static threshold limit flat… then over the line = already failing REFINED · degradation → time-to-failure limit trend caught earlyprojected failure → act now
fig.1 · a threshold fires at failure; a degradation model projects toward it
03 / How it works

Detect, cost the options, and let a human dispatch.

When a fault is detected, the agent opens a work order, checks warranty, criticality and parts, and models the repair options in cost and time, all deterministic. The model narrates and drafts; it doesn't decide. Low-criticality faults auto-raise; a critical or costly dispatch is escalated to the facilities manager. A technician is never sent on the agent's say-so.

DETERMINISTIC · detect, cost, prioritise, gate MODEL / HUMAN Sensor faultper asset Work ordercost · criticality Gateauto / escalate Narrate orderLLM · cited Facilities mgrdispatches Append-only, hash-chained ledger · raise (auto) · dispatch (critical → escalate)
fig.2 · the trust boundary: code detects and costs; a human dispatches the critical jobs
time_to_failure = (limit − reading) / degradation_rate priority = criticality_weight ÷ time_to_failure → freezer ≫ lighting
fig.3 · the hard part is a time-to-failure horizon, weighted by criticality
04 / One worked example

A critical fault escalated, a minor one handled quietly.

A refrigeration unit at the Orchard store reads 9.6°C against an 8°C limit. It is high criticality and out of warranty. The agent opens a work order and models three options:

Asset · faultCriticalityRecommended optionCostDecision
Refrigeration · 9.6°C / 8°CcriticalEmergency vendor call-out (3h)S$3,240escalate → facilities
Lighting circuit · flickerlowIn-house, next shift (14h)S$250auto work-order
Criticality is what tells the two faults apart. The same "fault" event produces wildly different handling. The freezer, with stock and customers at stake, is escalated to a human with three costed options in front of them; the lighting flicker is auto-raised on the next shift without bothering anyone. The agent prioritises by consequence rather than by alarm order.

05 / Numbers & honest trade-offs

What it watches, and where the demo stops short.

24
assets monitored
Across 4 stores.
10
faults detected
Caught before failure.
5
escalated
Critical / high dispatches.
100%
costed & logged
Every work order priced.

The honest part. The detection in this build is threshold-based. It fires when a reading crosses its limit. The degradation-to-time-to-failure model in fig.1/fig.3 is the design, not yet the running code. I'm showing it because a static threshold is genuinely not predictive maintenance, and pretending otherwise wouldn't survive a facilities engineer's first question. What the demo does prove is the part that a plain BMS alarm lacks, the governed orchestration: a fault becomes a costed, criticality-prioritised work order, then a human-authorised dispatch, all logged. The detection model is a known upgrade path; the governance is built.

06 / Governance, shown

A critical dispatch is escalated. Here is the entry.

AI Control Ledger · entryintegrity verified
seq        : 2
agent      : Smart-building agent
action     : dispatch_technician
subject    : WO-A / AST-001 (refrigeration, Orchard)
tier       : high          decision : escalate → facilities   policy : POL-GOV-HITL
reason     : critical asset · billable dispatch routed to a human
prev_hash  : d1c0…3a77    hash : 5e9b…f140
raise_work_order is auto-approved; the dispatch, which spends money and a technician's time, is the action a person authorises.
07 / Old vs new

Reactive repair → governed, predictive-intent maintenance.

REACTIVE asset fails customer complains downtime + spoiled stock GOVERNED fault caught → costed work order → human dispatches the critical one
fig.4 · reactive break-fix → governed, prioritised work orders

What this says about how I work.

This applies the same instinct as the rest of the portfolio to physical assets. I re-engineer a reactive process into a proactive one, and I keep the consequential action, a billable dispatch on a critical asset, under a human's authority. And I'll say plainly where the build stands. The orchestration and governance are real; the degradation model is the next step. Drawing that line honestly, and logging both sides of it, is what makes operational AI safe to run across an estate.

See it run.

The work order and ledger entry above are real output from the agent over a synthetic sensor layer for Origin's stores. The full console runs as a working application, with live faults, costed options, and escalated dispatches.

See the live governance demo →The full console runs on my machine. Ask me for a 90-second walkthrough.