← All standards
Open specificationStablePublished November 2026Changelog

The Fault Triage Build Standard

Stop rolling a truck for a reset button, without ever troubleshooting something unsafe. Every fault call, text and alarm is sorted against the fault list you wrote: anything unsafe goes straight to your emergency path, a fix happens on the phone only from steps you wrote, and everything else is one job with what was tried on it. Written so you can build it yourself.

Used by

  • Service Coordinator
  • Dispatcher
  • Customer Service Officer
  • Office Manager

10 min read · Published by AI Pathway

Using Claude? This standard installs as a skill. Guides for ServiceM8, Xero and Simpro.

What this is

An open build standard for the faults that come in by phone, text or alarm. Your fault list is the short list your senior tech carries in their head, like "E4 on that heat pump: turn the isolator off for two minutes". It is written down once, with which faults are safe for a customer to try, and every fault that comes in is sorted against it.

The core rule

A fault is fixed on the phone only by reading out steps you wrote, word for word, and only when the customer says it worked. Anything else becomes one job, with what was tried written on it, so the tech knows before they leave.

What it does not do

It never troubleshoots anything unsafe. A gas smell, sparking, smoke or water near electrics goes straight to your emergency path, even if the caller also read out a reset code. It never walks a customer through licensed work, and never quotes a price.

The hard part

Hearing "and I can smell gas" at the end of a sentence about an error code, on a real phone line, and going to the emergency path instead of the reset. And reading your procedure aloud without improving it.

A customer rings at 6pm because the heat pump shows E4. The office books a visit for the morning. The tech drives forty minutes, turns the isolator off and on, and leaves. Meanwhile a customer with no hot water waits until the afternoon. Your senior tech could have fixed the E4 on the phone in two minutes, and knows exactly which faults are like that. It is written nowhere, so every fault becomes a truck.

One fault, from the phone to the outcome

  1. A fault comes in by call, text, portal message or monitoring alarm.
  2. On a call, the caller hears first that it is an AI and the call is recorded. The business's fault list is read, with its edition.
  3. The whole of what was said is checked for a safety signal before anything else: a gas smell, sparking, smoke, water near electrics, a medical device without power, or any fault the list marks safety.
  4. Anything unsafe goes to the emergency path: the emergency job is written first, then the person on call is alerted once. No steps are given.
  5. Otherwise the fault is matched only to the written list. No match, or no procedure safe for a customer, is a job. An alarm the list does not mark as a job is parked for a person.
  6. Where there is a written procedure the business marked safe for customers, and it fits their model, its steps are read or sent word for word.
  7. The procedure's own question is asked. Only a yes is logged as fixed, with the list edition.
  8. Anything else becomes one job, carrying the steps tried and what the customer said.
The filled diamond is safety: it is checked before anything is matched, and a yes goes to the emergency path with no steps. On a live call that branch is the step not to hand-roll. The steps are only ever yours, and a fix that does not work becomes a job.

Take the spec to Claude, ChatGPT or Copilot. The sentence to paste is one click away.

Done for you: Front Desk takes the calls

Office Voice’s Front Desk already answers your number in your business name and books the job. It holds the call half of this standard today. Reading your fault list on the call is being built now.

What it does today

  • Answers the call and tells the caller first that it is an AI and the call is recorded.
  • Writes the job once into the job system you connect, with an id back, and updates an open job rather than making a second.
  • Takes an emergency to the person on call once, after the job is written, and hands a price question to a person.

Not yet

  • Reading your own fault list on the call, matching a fault to it and reading a procedure word for word (Office Voice TRIAGE-1). Being built, not live.
  • An authenticated door for monitoring and sensor alarms that records an intake and writes a job only where your list says so (TRIAGE-2). Being built, not live.

Front Desk is sold as Booked After Hours. Until the fault list reaches the call, a person handles fault calls as they do now, and the sheet or flow in section 7 can take your texts, emails and alarms.

Rather build it yourself? Everything you need is below, free. Joining it to your own inbox, ledger or a bigger workflow? See joining it to your own system. Front Desk takes the calls is held to the pass tests on this page like anything else.

1. What this standard covers

A trade or field service business that services equipment: heat pumps, hot water, pool and spa, solar and batteries, refrigeration, garage doors. Every fault that reaches it, by call, text, portal message or a monitoring alarm, is sorted against the business’s own fault list into one outcome. The list is written by the business and versioned by edition, so the advice given on any day can be shown later from the edition that was live.

Out of scope. Diagnosis. This standard sorts a fault against a list a person wrote; it never works out a cause. Anything that could be unsafe is not triaged at all. The emergency path itself, and how the job is written, are Booked After Hours’ rules after hours and Virtual Admin’s in hours; this standard adds the list in front of them. Pricing the visit stays with a person.

What a remote fix is, and is not. Only a written procedure the business supplies, for that fault and, where the procedure says so, that model, marked by the business as safe for a customer to do. A reset, a filter rinse, a timer setting. Nothing licensed, nothing that opens a panel, nothing that touches gas or mains. The build reads it as written and never fills a gap with its own idea.

What cannot meet it. The job write needs a job system with an API. ServiceM8, Simpro, AroFlo and Fergus each take a job written over their API, so a build on any of them can meet check 6. Tradify has no public write API, so on Tradify a person writes the job from the triage log, and check 6 is met by a person rather than the build.

2. The fault list, in the shape your developer needs

Three records. The fault list is the business's and is never written by the build; the intake is what came in, verbatim; the result is what was decided, against which edition.

For your developer. Show the fields for your developer
fault_list                        # the business writes it; versioned
  - edition
  - faults[]
      fault_id
      signals[]                     # what a customer or an alert says: "E4"
      applies_to?[]                 # models; absent = any
      safety                        # true = never triaged, always emergency
      remote_procedure?             # absent = always a job
        steps[]                     # read or sent as written, never reworded
        customer_may_do             # false for anything licensed or regulated
        success_question
      on_alert?   person | job      # what an alarm with this fault does

fault_intake
  - source      call | sms | portal | alert
  - customer_external_id?           # looked up, never guessed
  - asset_id?                       # from the asset record, if there is one
  - said_or_sent                    # verbatim

triage_result
  - matched_fault_id?
  - outcome     fixed_remotely | job | emergency | unclassified | parked
  - procedure_edition
  - job_external_id?                # the id the job system returned
  - customer_confirmed_fixed?       # only from the customer's own yes

Every list carries the safety signals whatever the business writes: a gas smell, sparking, smoke, water near electrics and a medical device without power. A business may add to them and never take one away.

3. The checks, in order

The order is the safety argument. The caller hears it is an AI first. Safety is checked before anything is matched, so a reset code said beside a gas smell can never win. Only then is the list consulted, a procedure read, and a fix counted, and only on the customer’s word.

  1. Disclosure first, on every call. The caller hears that they are talking to an AI and that the call is recorded before the first question. A text or portal message is answered in writing and an alert has nobody to tell.
  2. Anything unsafe goes to the emergency path, before any matching. What was said is checked for a safety signal before it is matched to anything else: a gas smell, sparking, smoke, water near electrics, no power to a medical device, or any fault the list marks as safety. A safety signal goes straight to the emergency path. The emergency job is written first, the person on call is alerted once by that job's number, and no step of any procedure is said or sent.
  3. A fault is matched only to the written list. The fault list is read before each triage, and a fault is matched only to an entry whose signals are in what was said or sent. A fault that matches nothing is unclassified and becomes a job. The build never invents a fault, a cause or a fix.
  4. A remote fix only from a written procedure, read as written. A fix on the phone or by text is offered only where the entry has a written procedure, the business has marked it safe for a customer to do, and the procedure applies to the customer's model where it names models. Its steps are read or sent exactly as written, in order, with nothing added. Anything else is a job. Nothing licensed, nothing that opens a panel and nothing that touches gas or mains is ever a customer step.
  5. Fixed means the customer said so. After the steps, the procedure's own success question is asked. Only a yes is fixed remotely, with no job. A no, a not sure, or no answer at all becomes a job.
  6. One job, written once, carrying what was tried. A job is written through Booked After Hours' rules: an open job for the same customer is updated, not duplicated, and the job carries the triage result, the fault matched, the list edition, the steps tried and what the customer said, so the tech knows before they leave.
  7. An alert opens an intake, it does not decide. A monitoring or sensor alert is triaged against the same list. It writes a job only where the list marks that alert as a job, or marks the fault as safety, which takes the emergency path like a call would. Otherwise it is parked for a person on the exception queue. An alert never alerts on-call or books a visit on its own.
  8. Every triage is logged with the list edition it used. Each intake, whether a call, a text or an alert, leaves one log entry: where it came from, the words as said or sent, the fault matched, the outcome, the fault list edition used, and the job number if one was written. A dispute about the advice given is answered from that entry.
  9. A price question goes to a person. The build never quotes a price for a visit or a repair. A caller who asks is told someone will come back to them, and the call is handed over as price_requested with the transcript, as Booked After Hours does.
  10. The pass test passes. With a fault list of three entries, one safety fault, one with a written reset procedure and one without, four real calls to the business's own number: the safety fault becomes one emergency job with on-call alerted once and no troubleshooting; the reset that works is logged as a remote fix naming the procedure edition with no job; the third fault becomes one routine job with the triage on it; and the reset rung again and said not to work becomes a job.

4. Four outcomes, and who decides

The build sorts; the list decides. Three outcomes for a customer, and a fourth for an alarm nobody should act on without a person.

OutcomeWhenWhat happens
EmergencyAny safety signal, anywhere in what was said, or any fault the list marks safetyThe emergency job is written, then the person on call is told once, by its number. No steps, no questions about the fault.
Fixed remotelyA written procedure, marked safe for customers, for their model, and the customer says yes to its questionLogged with the procedure's edition. No job, no truck.
A jobAnything else: no procedure, not for customers, the wrong model, a no or a not sure, or nothing on the list matchedOne job through Booked After Hours' rules, carrying the fault matched, what was tried and what the customer said.
ParkedA monitoring alarm the list does not mark as a job, or one no entry describesOn the exception queue for a person. No job, nobody woken.

A fault that matches nothing on the list is unclassified, and on a call or a message it becomes a job marked unclassified. The model sorts what it heard into your list; it never adds an entry, a cause or a step of its own.

5. Three calls on a winter evening

An illustration, not data. A heating business’s list holds three entries: E4 on two heat pump models, with a written isolator reset marked safe for customers; no hot water, with no procedure; and the baseline safety signals.

  1. 6:10pm. “It says E4.” The caller hears it is an AI and the call is recorded. The asset record says the model is on the procedure. The three steps are read exactly as written, then the procedure’s question: is it blowing warm air now? Yes. Logged as fixed remotely, with the list’s edition. No job.
  2. 6:40pm. “E4 again, and I can smell gas near the unit.” The gas smell is checked before the code. The emergency job is written, the person on call is told once by its number, and the caller is told it is being treated as an emergency. No step of the reset is read.
  3. 7:05pm. “No hot water since this afternoon.” Matched, no procedure. One routine job, carrying the fault matched and the edition, for the morning.

Had the first caller said “not sure”, the reset would have become a job carrying the three steps they tried, so the tech arrives knowing the isolator has already been cycled.

6. What stays with a person

  • Writing the fault list and its procedures, and deciding, as the licence holder, which steps are safe for a customer to do.
  • Every emergency, once on-call is told.
  • Every alarm parked on the exception queue.
  • Any price, and any question about what a repair will cost.
  • Changing a procedure after a dispute or a new model, by publishing a new edition rather than editing the old one.

7. Run it your way

Five ways, the same checks and the same pass test on each. Mix them: Office Voice on the phone and a sheet for the alarms is a fine business. Two rules hold whichever you pick. Calls always go through Office Voice, and no way handles the safety branch by text alone.

  • Office Voice, done for you. Front Desk answers, discloses, writes the job once and takes emergencies to on-call today. Your fault list on the call is coming (TRIAGE-1), and so is the alarm door (TRIAGE-2). Until then this way covers checks 1, 2, 6 and 9 on calls.
  • Your own Grok Bot or Claude. For texts and portal messages only. The bot reads your fault list from a sheet, replies with the written steps exactly as they are, and asks the procedure’s question. It never handles anything unsafe in writing: a message that mentions gas, sparking or smoke gets your own words telling the customer to ring the number now. A call back goes through one Office Voice key with the create_call tool, on the basis that the customer asked, so disclosure and calling hours are applied there. Keep the key in the bot’s secret store, never in a prompt. Setting up the key is the same as in the Grok Bot and Xero guide.
  • Google Workspace. The fault list as a sheet tab, messages pasted in, alarms arriving through an Apps Script web app that refuses anything without your secret, each matched against the live edition with the reply written for a person to send. The copyable sheet is built and its copy link is coming.
  • Microsoft 365. The fault list as a SharePoint list with editions, alarms into Power Automate through a secret header, and a log naming the edition used. The Triage Desk build plan lays out the lists and flows.
  • Your own code. This page. Hand it to a coding agent: it gets the checks as data, the stub world, and a runner that tells it when the build is right. See running a standard anywhere.

Every parked alarm and failed job write lands on one exception queue, whichever way wrote it, with the way named. Where this fits in the whole job, from the first call to the chase, is on the field service automation roadmap.

Facts that can change, and when we checked them

Checked as at 1 November 2026

Office Voice’s Front Desk answers calls, discloses that it is an AI and that the call is recorded, writes the job once with an id back, and takes an emergency to on-call after the job is written. Reading a business’s own fault list on the call (TRIAGE-1) and an authenticated alert intake (TRIAGE-2) are being built and are not live. The provider block below says which checks Front Desk holds today.

Tradify has no public or partner API, confirmed in writing by their support on 10 April 2026.

Check these against the primary instrument before you rely on them, and store the date you checked beside the value rather than hard-coding it. This standard tells you the shape and where to look. It is not legal advice and it does not tell you that anything complies.

8. Join It to Your Own System: What to Stub, and What Not to Hand-Roll

The step not to hand-roll is the live call: the disclosure, the safety branch to the emergency path with the job written first, and the job write with an id back. That is Front Desk's. Matching a message against a list is the free part, and a coding agent builds it against the stub in an afternoon.

For your developer. Show the setup for your developer
provider:
  stub:       local.mock_fault_list
  production: office_voice.front_desk   # Office Voice / Front Desk, sold as Booked After Hours
  default:    stub                       # no live mapping in the conformance kit yet

the live step                        # Office Voice / Front Desk
  today     disclosure, the emergency path with the job
            written before on-call is told, the job write
            with an id back, price to a person
            (checks 1, 2, 6 and 9 on calls)
  coming    the fault list on the call and the procedure
            read word for word (TRIAGE-1); the alert
            door (TRIAGE-2). Not live.

stays local                          # yours, and the standard
  - the fault list, its editions and who may change it
  - matching a message or an alarm against the list
  - the reply with the written steps, and the answer
  - parking alarms on the exception queue
  - the triage log

ports the stub exposes
  nextIntakes, readFaultList, readAsset, disclose, say,
  ask, findOpenJob, writeJob, notifyOnCall, escalate,
  raiseException, logTriage

cannot meet the standard
  - a job write on Tradify (no public write API)

Anyone selling an AI that fixes faults on the phone should be able to answer one question: show me the written steps it read to my customer last Tuesday, and the edition they came from.

The pass test. On the business’s own number and job system, not a sample. Write a fault list with three entries: one safety fault, one with a written reset procedure, one without. Ring the number three times. Call 1 describes the safety fault: one emergency job exists and on-call is alerted once, with no troubleshooting on the call. Call 2 describes the reset fault and says it worked: no job, and a logged remote fix naming the procedure edition. Call 3 describes the third fault: one routine job with the triage result on it. Ring about the reset again and say it did not work: a job is written, carrying the steps tried. A stub cannot pass this: on a stub the safety signal arrives as tidy words because the runner wrote them, and the yes is a field. Only a real call proves the build hears gas mentioned in passing and reads your steps without changing them.

9. A checklist to hold any build or supplier to

Hold a DIY build or a vendor to this. If a box is empty, it is not in production.

  • 1. Disclosure first, on every call. The caller hears that they are talking to an AI and that the call is recorded before the first question. A text or portal message is answered in writing and an alert has nobody to tell.
  • 2. Anything unsafe goes to the emergency path, before any matching. What was said is checked for a safety signal before it is matched to anything else: a gas smell, sparking, smoke, water near electrics, no power to a medical device, or any fault the list marks as safety. A safety signal goes straight to the emergency path. The emergency job is written first, the person on call is alerted once by that job's number, and no step of any procedure is said or sent.
  • 3. A fault is matched only to the written list. The fault list is read before each triage, and a fault is matched only to an entry whose signals are in what was said or sent. A fault that matches nothing is unclassified and becomes a job. The build never invents a fault, a cause or a fix.
  • 4. A remote fix only from a written procedure, read as written. A fix on the phone or by text is offered only where the entry has a written procedure, the business has marked it safe for a customer to do, and the procedure applies to the customer's model where it names models. Its steps are read or sent exactly as written, in order, with nothing added. Anything else is a job. Nothing licensed, nothing that opens a panel and nothing that touches gas or mains is ever a customer step.
  • 5. Fixed means the customer said so. After the steps, the procedure's own success question is asked. Only a yes is fixed remotely, with no job. A no, a not sure, or no answer at all becomes a job.
  • 6. One job, written once, carrying what was tried. A job is written through Booked After Hours' rules: an open job for the same customer is updated, not duplicated, and the job carries the triage result, the fault matched, the list edition, the steps tried and what the customer said, so the tech knows before they leave.
  • 7. An alert opens an intake, it does not decide. A monitoring or sensor alert is triaged against the same list. It writes a job only where the list marks that alert as a job, or marks the fault as safety, which takes the emergency path like a call would. Otherwise it is parked for a person on the exception queue. An alert never alerts on-call or books a visit on its own.
  • 8. Every triage is logged with the list edition it used. Each intake, whether a call, a text or an alert, leaves one log entry: where it came from, the words as said or sent, the fault matched, the outcome, the fault list edition used, and the job number if one was written. A dispute about the advice given is answered from that entry.
  • 9. A price question goes to a person. The build never quotes a price for a visit or a repair. A caller who asks is told someone will come back to them, and the call is handed over as price_requested with the transcript, as Booked After Hours does.
  • 10. The pass test passes. With a fault list of three entries, one safety fault, one with a written reset procedure and one without, four real calls to the business's own number: the safety fault becomes one emergency job with on-call alerted once and no troubleshooting; the reset that works is logged as a remote fix naming the procedure edition with no job; the third fault becomes one routine job with the triage on it; and the reset rung again and said not to work becomes a job.
  1. 1

    Hold the build to the checklist

    The checks in this standard are what a working build looks like. Implement it yourself, hand it to a developer, or hand the page to an AI with the button below.

  2. 2

    Do not hand-roll

    There is no product for this step. Highest option: none. Checklist plus a build.

  3. 3

    If you are stuck

    Exceptions, three systems, a team that will not maintain a Zap, or an owner who wants it done. We implement when it has to survive the business.

Related reading

Want the whole thing by email?

This paper, plus the rest of the library. One click to stop them.

Run these checks yourself

Every check on this page is published as structured data. This prints them with what to inject, what to assert, and which ones can be proved on your own machine rather than against the live thing.

npx @aipathway/conformance show fault-triage-build-standard

Free and open source, CC BY 4.0. The checks are fetched from this page rather than bundled, so a correction here reaches you without a release, and you cannot end up conformant against a stale copy. The raw JSON is there if you would rather wire it into your own harness, and the package shows how to drive your build through the ports.

Built it, and one check failed?

Tell us which one. You have already read the standard and tried it, so the answer is a fixed price to finish that step, not a call to work out what you need.