Working principles
Each agent owns one area of the bill, and only that area.
The diagnostic framing splits a building's energy spend into five areas (Operations, Waste, Penalty, Silence, Opportunity) and assigns each to one agent, with the Dispatcher and the Analyst running as cross-cutting roles. Boundaries are enforced by each agent's tool surface, not by social convention. An Operator agent that notices a tariff anomaly does not file a tariff finding; it passes the observation to the Broker through the shared event log.
Each session is a deep run, not a query.
Loop tools answer interactive questions in under five seconds. Agents run for five to fifteen minutes per cron tick. In that window an agent refreshes context, forms hypotheses, runs tools to confirm or rule out, sizes findings in dollars, and persists a session record with its reasoning trace. The longer horizon is what makes the output worth a row in the findings ledger.
Cadence matches the period the work is meaningful over.
The Operator runs every fifteen minutes because waste shows up at that cadence. The Engineer runs daily because power signatures shift gradually. The Accountant runs monthly because energy P&L is a monthly artifact. The Consultant runs monthly because opportunity windows are quarterly. The Analyst runs hourly because rollups are cheap and the team produces material continuously. Cadences are fixed in the registry and are not facility-tunable.
All seven write to the same tables.
Findings go to the findings ledger. Work orders go to work_orders. Opportunities go to opportunities. A diagnostic, a verification, or a settlement reads from those tables regardless of which agent wrote the row. No agent has private storage. The downstream platform does not have to know which agent produced what; it only has to know what the row says.
Authority belongs to the action, not the agent.
Each thing an agent does carries its own authority level. Filing a finding is observe. Creating a work order is recommend. Dispatching a contractor is adjust. Writing a control_command is dispatch. Agents do not have global trust. Their specific actions do, and the action's authority is what gates the side effect.
Opt-in per facility.
Agents are off by default. A facility activates them by flipping facilities.settings.managed_agents_enabled. Once on, every agent runs to its own cadence without further configuration. Switching them off does not delete history; sessions and findings persist.
Where money hides
The platform reads every facility's energy spend through one framing: a bill breaks into five areas, and four of them are addressable. Operations is the residual that remains after the other four are accounted for. Waste, Penalty, Silence, and Opportunity each belong to one agent, and the agent's tool surface is what decides which area its findings can file under.
The Dispatcher and the Analyst do not own an area. The Dispatcher moves work between agents and routes findings into the human queue when authority requires it. The Analyst rolls everything up into the artefacts a CFO or sustainability officer reads.
Cadence
Cadence is not a free parameter. Each agent runs at the rate over which its work is meaningful. Waste shows up every fifteen minutes, power signatures shift gradually across days, the P&L is monthly, opportunities have quarterly windows, and rollups are cheap so the Analyst is hourly. The schedule is fixed in code and is not facility-tunable.
15 min
hourly
daily
monthly
Cadence reflects the period the agent's work is meaningful over. Two agents share the fifteen-minute slot because the Operator's evidence and the Dispatcher's queue both move at that rate. The monthly column carries three agents because the bill, the contract review, and the opportunity model are all monthly artefacts.
The Seven
Each agent below carries its display name, its code key (the internal handle in lib/managed-agents.ts), its cadence, the area it owns, and the tool surface it operates with.
The Operator
every 15 min
operator
Watches live telemetry across every loop. Detects deviations against the day-type baseline. Investigates waste events and quantifies them in dollars at the prevailing tariff. The first agent every facility meets, because waste is the cheapest finding to file and the most visible to the operator.
Tool surface
Live telemetry queries, baseline lookups, day-type comparisons, dollar sizing against tariff, finding write.
The Accountant
monthly
accountant
Builds the monthly energy P&L. Subtracts waste, penalty, silence, and opportunity contributions from the period bill and reports the Operations residual. Ranks facilities in a portfolio by area exposure. Files the monthly P&L statement as an artifact the rest of the team reads.
Tool surface
Bill ingestion, period telemetry integration, area attribution, portfolio ranking, statement assembly.
The Broker
monthly
broker
Tracks every contract date and tariff term that affects the facility. Models alternative tariffs against the load shape. Recommends switches when the modelled saving exceeds the switch cost. Issues warnings on expiry windows so the customer does not roll into a higher rate by default.
Tool surface
Contract registry, tariff library, load-shape simulator, switch ROI, expiry calendar.
The Engineer
daily
engineer
Reads power signatures on every metered circuit. Compares each circuit against its asset-class signature library and the facility's own running history. Detects gradual degradation: compressor capacity loss, motor bearing distress, missing defrost cycles, condenser fouling. Writes a work order with the diagnostic confidence and the recommended scope of work, sized by the cost of doing nothing.
Tool surface
Signature library, baseline residual, asset registry, work-order template, contractor catalogue.
The Dispatcher
every 15 min
controller
Routes the work the other agents produce. Hands work orders to the right contractor. Coordinates schedule with facility operations so a chiller shutdown for repair does not happen during a peak production day. Handles alert escalation when the same finding fires across consecutive sessions. Provides real-time demand advisory ahead of the demand window. Autonomous equipment control sits inside bespoke projects, not this agent.
Tool surface
Work-order queue, contractor registry, facility calendar, alert thresholds, demand forecast.
The Consultant
monthly
consultant
Sizes the opportunities that need a financial model: solar capacity, battery sizing, DR market participation, EV charging, and incentive program eligibility. Produces the full ROI, the payback, the capex stack, the attribution method, the assumed tariff path. The customer decides from the consultant's artifact.
Tool surface
Solar irradiance models, battery sizing, DR program catalogue, incentive registry, financial model template.
The Analyst
hourly
analyst
Rolls everything up. Computes NABERS or equivalent rating per facility. Updates sustainability metrics. Assembles the board deck and the monthly customer pack from the other six agents' outputs. The aggregator that turns a stream of findings into a coherent statement the customer's CFO can read in five minutes.
Tool surface
Rating engines, sustainability indicators, board-deck template, customer-pack assembly.
The session pattern
Every agent run follows the same six steps. The step boundary is enforced in the agent's tool wrapper so a session that skips quantification never gets to write a finding. The session record carries the artefacts each step produced, including the rejected hypotheses, so a reviewer reads what was considered and not just what was concluded.
Context refresh
The agent reads its window: recent telemetry at its cadence, prior sessions, recently filed findings from the other agents, open work orders, anything its area depends on. Context is loaded once, not re-queried during the session.
Hypothesis formation
The agent enumerates the plausible explanations for what it sees: a setpoint drift, a compressor losing capacity, a tariff anomaly, an occupancy schedule that has shifted. Hypotheses are explicit; the session record carries them so a reviewer can see what was considered and what was ruled out.
Evidence gathering
The agent runs tools against each live hypothesis. A power signature pull. A baseline residual. A bill-line lookup. A schedule comparison. Each tool call appends to the session's evidence log with the inputs, the outputs, and the elapsed time.
Quantification
Surviving hypotheses get sized. Dollars per month at the prevailing tariff, confidence band, attribution method. Findings without a defensible dollar figure do not get written; the session record carries them as 'observed but not sized' so the next session can pick up the thread.
Finding write
Sized findings land in the findings ledger with the agent_id, the area, the evidence window, the recommended action, and the authority of the action. The ledger is append-only at the database level.
Session persist
agent_sessions row closes with the reasoning trace, the tools called, the findings written, the elapsed wall-clock, and the cost in tokens. The row is the audit trail for the run and the input to the agent's next context refresh.
Handoff
Agents do not call each other directly. They write to shared tables and read each other's output on their next cadence tick. The protocol below covers the four cases that are common enough to be named.
Observation flagged for another agent
An Operator that sees a demand-charge component in a waste event does not file the penalty finding. It logs an observation against the Broker's queue. The Broker's next run picks it up and produces the finding with the right area attribution.
Work-order completion
When the Engineer's contractor closes a work order, the closure event is read by the Operator's next session as a context update. The compressor that was losing capacity should now be running clean, and the Operator's first job is to confirm the signature returned.
Finding supersession
When two agents produce findings against the same root cause from different evidence, the later finding supersedes the earlier one via the supersedes_id column. Neither row is mutated. The customer sees the latest; the audit sees both.
Escalation routing
When an action exceeds the originating agent's authority ceiling, the Dispatcher picks it up and either routes to a human operator or, for time-critical demand windows, executes within the dispatcher's own bounded authority.
Escalation
The agents are autonomous within their authority. They escalate when the work crosses one of four lines. Each escalation closes the agent's session cleanly, files the partial finding with the reason it was held, and routes to either the human operator queue or the Dispatcher for time-critical handling.
Confidence below the area's threshold
Each area carries a minimum confidence for a finding to land. The Engineer's signature diagnostics require eighty-five percent confidence; the Broker's tariff switches require ninety-five percent. Sessions that exhaust hypotheses without crossing the threshold close with an 'observed but not actionable' note.
Conflicting hypotheses across agents
When two agents conclude opposite things about the same load (the Operator says waste; the Engineer says the equipment is degraded), the Dispatcher pauses both findings and escalates to a human. Conflicting evidence is more valuable as a flag than as a vote.
Action above the agent's authority ceiling
An Engineer that would otherwise dispatch a contractor on a chiller pulldown event below ten percent of nominal capacity escalates if the facility's contract authority caps that action at Recommend. The work order is filed; the dispatch waits for human approval.
Customer-facing communication required
When a finding needs an explanation rather than just an action (a tariff switch that changes the demand-charge structure, a control change that customers may notice), the Analyst is invoked synchronously to draft the customer pack and the Dispatcher holds dispatch until the customer has seen it.
Failure modes
Each failure mode is named, returns a structured reason, and either writes a Case for human review or returns to the cron for the next pass. The system never silently degrades a finding or skips a session without an audit record.
telemetry_coverage_low
An agent's session aborts when the area's evidence base has less than eighty percent coverage over the relevant window. The session row records the gap; the cron retries on its next tick. Coverage gaps are themselves a Finding the Operator may file separately if they persist.
context_incomplete
The Accountant cannot file an Operations residual without the period's bills. The Broker cannot recommend a switch without the current contract. Missing context closes the session cleanly and posts a request to the operator's queue.
hypothesis_space_exhausted
A session that runs every hypothesis in its area and clears none above threshold closes with an 'observed but not actionable' summary. The next session at the next cadence re-enters with the prior session's notes.
authority_exceeded_attempt
An action whose authority exceeds the agent's ceiling for that finding class is held. The finding is filed; the action is paused; the Dispatcher routes for human review. The platform refuses the elevation rather than degrading the action silently.
session_timeout
Sessions cap at fifteen minutes of wall-clock. A session that approaches the cap stops gracefully, persists what it has, and surfaces the unfinished work in its successor's context.
The crons that drive the team
Each agent is registered as a cron in vercel.json. Sessions are batched (cap fifty facilities per cron tick) so a single trigger does not exhaust the function ceiling. The backlog drains across subsequent ticks.
agents/operator
Every fifteen minutes. Walks every facility with managed_agents_enabled, kicks off Operator sessions in parallel batches of ten.
agents/engineer
Daily at 04:00 SGT. One session per facility. Signature diagnostics on every metered circuit.
agents/accountant
Hourly trigger evaluation, with the actual P&L assembly running on the first calendar day of each month per facility.
agents/broker
Monthly on the fifth of each month per facility. Reads the prior month's tariff and contract state.
agents/consultant
Monthly on the first of each month per facility. The slowest agent because opportunity sizing requires the most modelling.
agents/dispatch
Every fifteen minutes. Routes the queue. Demand advisory runs ahead of the facility's known demand window.
agents/reports
Hourly. The Analyst's rollup. Aggregates outputs from the other six into a coherent statement per facility.
How the operator sees it
Three screens drawn from the Acme test facility. The activity feed for live triage, a session detail with the reasoning trace exposed for audit and training, and the Analyst's monthly rollup that customers actually read.
Agent activity · today
Sessions today
37
across 7 agents
Findings filed
4
Waste 1 · Silence 1 · Penalty 1 · Opportunity 1
Work orders
2
1 dispatched · 1 queued
Open cases
5
3 review · 2 escalated
Click any row to open the session detail.
Vacancy waste on L3-East FCU
01 · Context refresh
Loaded 24h of load_telemetry for fcu-l3-east (4,320 rows). Loaded prior 7-day operator findings (1 superseded). Loaded current_intervention_state. Loaded occupancy_schedule_v2. Context size: 18 KB.
02 · Hypotheses considered
03 · Tools called
04 · Finding written
L3-East FCU runs continuously while zone is vacant weekdays 09:00-18:00
Area: Waste · Label: H1 · Amount: AUD 14/mo (tariff-window weighted) · Recommended action: schedule_change · session_id: sess-78b9c2 · finding_id: f-78b9c2-01
Monthly summary
May 2026 · Acme Logistics Hub
Prepared by the Analyst · 2026-06-01 06:00 SGT · 12 minutes
Operations residual
AUD 8,420
the legitimate cost
Addressable
AUD 1,260
across 4 areas
Verified this period
AUD 142
1 intervention
Action queue
7
5 review · 2 in progress
What changed this month
- FCU occupancy setback on L3-East commissioned 2026-05-29 at Recommend authority. First Cases reviewed and approved; promotion to Dispatch on 2026-06-08.
- Compressor C-3 work order completed 2026-05-22. Power signature returned to baseline within tolerance over the following week.
- Demand-charge spike on 2026-05-14 routed to Broker. Mitigation in progress; finding f-2026-05-14-demand staying in In Progress.
Sustainability metrics
Open recommendations
How a reviewer reconstructs an action
Every action the team takes is reconstructible from five reads against the database, left to right. A reviewer who wants to know why a contractor was dispatched on a Tuesday morning starts at the facility, walks to the agent session that produced the finding, reads the finding's evidence, follows the work order, and ends at the intervention (if one exists) or the open work-order queue.
facilities
the anchor
agent_sessions
per-run record
findings
actionable conclusions
work_orders
Engineer's loop
interventions
what became a contract
Five reads. Every actionable conclusion in the platform traces from a session to a finding to a work order or an intervention.
- Find the facility. facilities.id is the anchor.
- Read the sessions. agent_sessions joined on facility_id and ordered by started_at carries every agent run: which agent, which cadence tick, what context was loaded, what hypotheses were considered, what tools were called, what was written.
- Read the findings. findings joined on facility_id is the catalogue of every actionable conclusion. agent_id and session_id link each row back to the session that produced it. area distinguishes who owns the finding.
- Read the work orders. work_orders joined on facility_id closes the loop on the Engineer's findings: who was dispatched, when the work was done, what the verification confirmed.
- Read the opportunities. opportunities joined on facility_id holds the Consultant's sized opportunities and the financial models behind them.
- Reconcile to settlement. Findings that converted to Interventions reference intervention_id; the rest are visible work that did not (yet) become a contract. The audit chain across to /methods/mv-option-b-method begins here.
What is not yet in scope
The agent team is operational and producing findings every day on every opted-in facility. The items below are deliberately deferred so a reviewer is not surprised by what the paper does not claim.
- Cross-agent disagreement resolution. The current escalation contract pauses on conflict and routes to a human. A learned arbitration layer that reads both findings and resolves common conflict patterns without escalation is on the build queue.
- Verifier role for finding closure. The Accountant currently records when a finding was acted on, but the verification that the predicted saving actually materialised reuses the Option B engine documented at /methods/mv-option-b-method. A dedicated agent role for closure verification (separate from the Engineer's repair verification) is named but not yet split out.
- Per-segment authority defaults. Authority ceilings today are global per finding class. Segment-aware ceilings (food processing capped at Recommend for any setpoint action; office defaulting to Adjust) are registered as a flag on the registry and read by the platform when a session loads, but the registry entries themselves are still being curated.
- Customer-facing agent feed UI. The platform's primary interfaces show findings and work orders; a live feed of agent activity (which agent ran, what it considered, what it concluded) is specified but not yet built. Operators today read the same audit trail through the same surfaces a reviewer would.
- External review of the agent system. The Q3 2026 CMVP review covers the verification engine and the lifecycle. A separate review of the agent boundary contract (which agent may file what kind of finding) is on the plan for early 2027.
Standards alignment
The agent team operationalises practices drawn from energy management standards. Formal review of the operational alignment is on the plan for early 2027.
IPMVP Core Concepts (Volume I, 2022). Provides the framing for area attribution and verification cadence the agents work against.
Efficiency Valuation OrganizationISO 50001: Energy management systems. The agent team is one operationalisation of the plan-do-check-act loop at minute and monthly cadences.
ISOANSI/ISA-95: Enterprise-Control System Integration. Informs the agent boundary contract and the handoff protocol.
ISA