Appearance
Compliance Reports
Proving that a standard was met, in a form that survives being read a year later by somebody who was not there.
Who it is for
Whoever has to produce the evidence: quality, safety, cold chain, indoor air quality, noise exposure, or an ESG disclosure.
Before it is useful
Sensors already reporting whatever the standard measures. This app does not measure anything itself; it judges what the platform already recorded.
A catalogue, not a blank page
The app ships with twenty-five standards across four categories, seeded into your organisation when the app is granted. You are choosing from a catalogue rather than transcribing a regulation.
| Category | Covers | Examples |
|---|---|---|
| Indoor air quality | Temperature, humidity, CO₂ | Malaysia DOSH ICOP IAQ and MS1525, EU EN 16798, ASHRAE 55 and 62.1, Japan BSL, Singapore SS 554, Hong Kong IAQ, China GB/T 18883, ISO 7730 |
| Cold chain | Temperature-controlled storage and transport | USP 1079, EU GDP and Malaysia PICS GDP, MS 2400, US CDC VFC, FDA Food Code, Joint Commission EC |
| Noise | Occupational exposure | Malaysian OSH Noise 2019, EU 2003/10/EC, OSHA 1910.95 |
| Sustainability | Energy and emissions | GRI 302, GHG Protocol Scope 2, ISO 50001, Bursa Malaysia NSRF, EU CSRD E1 |
Standards are upserted by code, so the catalogue can gain a revision without anybody editing a profile.
What it can judge
A rule names a metric, and the app knows where each metric physically lives. Temperature, humidity, noise and occupancy come from their own report tables and carry a zone directly — every indoor-air, cold-chain and noise standard in the catalogue runs on those today.
CO₂ reads the air-quality report (co2, the row the platform writes from Home Assistant, Aqara and every decoder with an air-quality output), so the indoor-air standards see the same CO₂ the Environment report does. Energy reads the Energy app's readings as consumption per hour — a meter's register is cumulative, so each reading is differenced from the one before it, a reset is skipped rather than counted as negative use, and a period total is last-minus-first per meter. A Sensor Onboarding type that names its raw fields co2 or energy is read as the fallback when those tables have nothing for the room.
Adding a new kind of sensor means adding it to that map, never rewriting a rule or a standard.
A rule with no readings says so. The result is awaiting data, never a pass — a standard seeded ahead of its sensor must not report a false green.
Comfort standards judge occupied hours only. A rule marked occupied only drops every hour in which the zone's people count was zero, so an empty room at 3 a.m. is not measured against a comfort band. If the zone has no people count at all, every hour is judged — the app would rather over-report than silently discard the evidence.
How it is put together
A standard is a set of rules — a metric, a comparison, a threshold, and the shape of the judgement: an hourly or daily average, an 8-hour time-weighted noise dose with the standard's own exchange rate (3 dB for Malaysia and the EU, 5 dB for OSHA — the same recording gives a different dose under each), a mean kinetic temperature for pharmaceutical storage, or a sum over the period. "Between 2 and 8 degrees." "Below 1000 ppm."
A profile applies a standard to a scope — the whole organisation, a location, a venue or a zone — and says whether it applies always or during business hours. Profiles are switched on and off, not edited: a changed scope is a new profile.
An assessment is what happens when you run a profile over a period. Every rule is evaluated against every zone the scope resolves to, and the result is frozen.
Findings are the individual failures inside an assessment — which zone, which rule, and when.
The part that matters: assessments are frozen
An assessment is never edited after it is created. Re-running a profile always inserts a new assessment rather than updating the old one.
That is a deliberate and slightly awkward choice, and it is the whole point. A report already cited in an audit keeps reading the same way even after somebody corrects a threshold or recalibrates a sensor. Evidence that changes when the world changes is not evidence.
So expect a list of assessments over time, and expect to cite a specific one.
Emissions are not yet computed. The sustainability standards track the raw kilowatt-hours; the table of year-by-year grid factors exists, but nothing multiplies by it yet, so no assessment carries a tCO₂e figure. When it does, the factor in force during the assessment's own period is the one that must be used — a 2025 disclosure has to keep reporting 2025 emissions after the 2026 factor is published — and the frozen-assessment rule above is what makes that possible.
Calibrations
Sensor calibration records live here too, because an auditor's next question after "what did it read" is "how do you know the sensor was right".
Exports
Every assessment exports to CSV, which is the format the evidence file wants.
Where it meets the rest of the platform
- Reports → Environment carries a compliance section of its own, and it behaves the opposite way on purpose: it re-reads the history against your current thresholds, so its breach count describes today's limits. This app freezes. Use that one to tune a limit, this one to cite it.
- Rules — a rule tells you now that a threshold was crossed; an assessment tells you later that it was not. Different mechanisms, on purpose, and you want both.
- Environment — the underlying readings, with the gaps visible. A flat line in a compliance window is worth checking against the Battery report before citing it.
When it disappoints
An assessment comes back empty. The profile's scope resolves to zones with no sensor reporting that metric.
A CO₂ or energy rule says awaiting data where a temperature rule works. No CO₂ sensor or meter has reported for the zones in scope during the period — check the Environment report for CO₂ and the Energy app for the meter.
The result changed after you fixed a threshold. It did not — you produced a new assessment. The old one is still there, and still says what it said.