Inspection Report v2

Visual guide to the ServiceM8 form logic exported as form.json. Read top to bottom: overall flow first, then the two reusable patterns, then the per-system checklists and remedy catalogs.

498 fields 176 single choice 35 multi-answer 158 text 129 photo Badge: Inspection

How to read the conditions

Almost every field after the first two is hidden until prior answers match. ServiceM8 encodes that with operators on prior question UUIDs.

Operator Meaning in this form Example
NCON Answer contains the value (substring) Scope contains Exterior → matches both Exterior ONLY and Exterior and Interior
CON Answer does not contain the value Condition notes show when rating is CON Good (i.e. Fair or Poor)
AND / OR How multiple conditions combine Remedy detail fields use AND. Many type+scope gates are stored as OR.
Scope trick: conditions check for the substring Exterior or Interior, so choosing Exterior and Interior unlocks both halves of the form. Remedies also use substring match so Add matches Add To Description.
Root gates Exterior inspection Interior inspection Remedies / services Closing

A. Overall flow

The form is not one linear questionnaire. Two multi-selects unlock the right exterior and interior checklists, then optional service recommendations, then a closing safety flag.

flowchart TB
  start([Start form]) --> scope["Inspection Scope
multi-select"] scope --> type["Chimney Identification
multi-select"] type --> extGate{Scope contains Exterior?} type --> intGate{Scope contains Interior?} extGate -->|yes| extSystems["Exterior checklists
by system type"] extSystems --> extRem["Exterior Remedies 1-4
pick services"] extRem --> extRemDetail["Per service:
Use / Add / Replace description"] intGate -->|yes| intSystems["Interior checklists
by system type"] intSystems --> intRem["Interior Remedies 1-4
pick services"] intRem --> intRemDetail["Per service:
Use / Add / Replace description"] extGate -->|no| skipExt([Skip exterior]) intGate -->|no| skipInt([Skip interior]) extRemDetail --> closeQ intRemDetail --> closeQ skipExt --> closeQ skipInt --> closeQ closeQ["Are there needed items
before further use?"] closeQ -->|Yes| closeText["What items are needed?"] closeQ -->|No| done([Form complete]) closeText --> done classDef root fill:#e8f1ff,stroke:#3b6fb6,color:#1a2332 classDef ext fill:#e7f0fb,stroke:#4a7ab8,color:#1a2332 classDef int fill:#e8f5e9,stroke:#4a9a68,color:#1a2332 classDef rem fill:#fff6e0,stroke:#c4922a,color:#1a2332 classDef close fill:#fdecee,stroke:#c45c6a,color:#1a2332 class scope,type root class extSystems,extRem,extRemDetail ext class intSystems,intRem,intRemDetail int class closeQ,closeText close

B. Gatekeeper decisions

Both root questions are multi-answer. You can inspect more than one system type on the same job (e.g. masonry + stove).

flowchart TB
  scope["Inspection Scope"]
  scope --> s1["Exterior and Interior"]
  scope --> s2["Exterior ONLY"]
  scope --> s3["Interior ONLY"]

  s1 --> bothExt["Unlock exterior blocks"]
  s1 --> bothInt["Unlock interior blocks"]
  s2 --> onlyExt["Unlock exterior blocks"]
  s3 --> onlyInt["Unlock interior blocks"]

  type["Chimney Identification"]
  type --> t1["Masonry"]
  type --> t2["Prefab"]
  type --> t3["Stove"]
  type --> t4["Direct Vent"]

  t1 --> mExt["Masonry Exterior"]
  t1 --> mInt["Masonry Interior"]
  t2 --> pExt["Prefab Exterior"]
  t2 --> pInt["Prefab Interior"]
  t3 --> stExt["Stove Exterior"]
  t3 --> stInt["Stove Interior"]
  t4 --> dExt["Direct Vent Exterior"]
  t4 --> dInt["Direct Vent Interior"]

  bothExt -.-> mExt
  bothExt -.-> pExt
  bothExt -.-> stExt
  bothExt -.-> dExt
  onlyExt -.-> mExt
  onlyExt -.-> pExt
  onlyExt -.-> stExt
  onlyExt -.-> dExt

  bothInt -.-> mInt
  bothInt -.-> pInt
  bothInt -.-> stInt
  bothInt -.-> dInt
  onlyInt -.-> mInt
  onlyInt -.-> pInt
  onlyInt -.-> stInt
  onlyInt -.-> dInt

  classDef root fill:#e8f1ff,stroke:#3b6fb6
  classDef ext fill:#e7f0fb,stroke:#4a7ab8
  classDef int fill:#e8f5e9,stroke:#4a9a68
  class scope,type,s1,s2,s3,t1,t2,t3,t4 root
  class bothExt,onlyExt,mExt,pExt,stExt,dExt ext
  class bothInt,onlyInt,mInt,pInt,stInt,dInt int
        
Intended rule: a Prefab Exterior field should appear only when identification contains Prefab and scope contains Exterior. In the export many of those dual gates use method OR with two NCON conditions — if fields ever show for the wrong combination in the app, that encoding is the first place to check.

C. Inspection component pattern

Most exterior and interior “parts” of a chimney follow the same template. Photo chains and defect notes are optional follow-ups, not always visible.

flowchart TB
  show["Component is visible
type + scope match"] --> photo1["Photo 1
often with help text"] photo1 --> take2{"Take Photo 2?"} take2 -->|Yes| photo2["Photo 2"] take2 -->|No| rate photo2 --> take3{"Take Photo 3?"} take3 -->|Yes| photo3["Photo 3"] take3 -->|No| rate photo3 --> rate["Condition rating
Good / Fair / Poor"] rate --> goodPath{Rating is Good?} goodPath -->|Yes| nextComp([Next component]) goodPath -->|No| notes["Defect notes
multi-select canned issues + Other"] notes --> otherQ{Notes include Other?} otherQ -->|Yes| otherText["Free-text Other notes"] otherQ -->|No| nextComp otherText --> nextComp classDef photo fill:#e7f0fb,stroke:#4a7ab8 classDef choice fill:#fff6e0,stroke:#c4922a classDef text fill:#f3eef8,stroke:#7a6a9a class photo1,photo2,photo3 photo class take2,take3,rate,goodPath,otherQ,notes choice class otherText text

Examples of components that use this pattern: Prefab cap/spark arrestor, Masonry crown, Stove pipe, Direct Vent glass and gasket, etc. Some components skip the photo-2/3 ladder or skip notes and only rate Good/Fair/Poor.

D. Remedy / recommended service pattern

After the relevant inspection half, the tech can pick services from four multi-select lists (split only because the catalog is long). Each selected service opens description controls; a few also allow photos.

flowchart TB
  scopeOk["Scope contains Exterior
or Interior"] --> lists["Remedies 1-4
multi-select services"] lists --> picked{"Service selected?"} picked -->|No| skip([No detail fields]) picked -->|Yes| mode["Use Remedy Description
Add To Description
Replace Description"] mode --> usePath{Mode} usePath -->|Use| keep([Keep default blurb in additionalDetails]) usePath -->|Add| addText["Add To free-text field"] usePath -->|Replace| repText["Replace free-text field"] picked -->|Yes| photoQ{"This service has
Add Photos option?"} photoQ -->|No| doneRem([Done for this service]) photoQ -->|Yes| wantPhotos{"Add Photos?"} wantPhotos -->|No| doneRem wantPhotos -->|Yes| p1["Photo 1"] p1 --> p2q{"Take Photo 2?"} p2q -->|Yes| p2["Photo 2"] p2q -->|No| doneRem p2 --> p3q{"Take Photo 3?"} p3q -->|Yes| p3["Photo 3"] p3q -->|No| doneRem p3 --> doneRem addText --> doneRem repText --> doneRem keep --> doneRem classDef rem fill:#fff6e0,stroke:#c4922a classDef photo fill:#e7f0fb,stroke:#4a7ab8 classDef text fill:#f3eef8,stroke:#7a6a9a class lists,mode,picked,usePath,photoQ,wantPhotos rem class p1,p2,p3 photo class addText,repText text

Services with optional photo chains

E. Exterior checklists by system

Shown when scope contains Exterior and the matching system type is selected. Each bullet is a component that generally follows the photo → rate → notes pattern.

flowchart LR
  ext([Exterior unlocked]) --> prefab
  ext --> masonry
  ext --> stove
  ext --> dv

  subgraph prefab [Prefab Exterior]
    direction TB
    pe1[Overall exterior photo]
    pe2[Cap / spark arrestor]
    pe3[Chase cover / storm collar]
    pe4[Chase structure]
    pe5[Flashing]
    pe6[Overall exterior notes]
    pe1 --> pe2 --> pe3 --> pe4 --> pe5 --> pe6
  end

  subgraph masonry [Masonry Exterior]
    direction TB
    me1[Setting photo]
    me2[Cap / spark arrestor]
    me3[Crown / masonry top]
    me4[Brick / stone / mortar]
    me5[Flashing]
    me6[Overall exterior notes]
    me1 --> me2 --> me3 --> me4 --> me5 --> me6
  end

  subgraph stove [Stove Exterior]
    direction TB
    se1[Exterior photo]
    se2[Cap / spark arrestor]
    se3[Flashing / roof pass-thru]
    se1 --> se2 --> se3
  end

  subgraph dv [Direct Vent Exterior]
    direction TB
    de1[Exterior photo]
    de2[Termination cap]
    de3[Venting / pass-thru]
    de1 --> de2 --> de3
  end

  prefab --> remedies([Then Exterior Remedies])
  masonry --> remedies
  stove --> remedies
  dv --> remedies
        

F. Interior checklists by system

Shown when scope contains Interior and the matching system type is selected. Note: in field sort order, Masonry interior appears before Prefab interior.

flowchart LR
  intUnlock([Interior unlocked]) --> mas
  intUnlock --> pre
  intUnlock --> stv
  intUnlock --> dvi

  subgraph mas [Masonry Interior]
    direction TB
    mi1[Room / floor]
    mi2[Fireplace photo]
    mi3[Firebox]
    mi4[Damper]
    mi5[Smoke chamber]
    mi6[Flue / liner]
    mi7[Ash pit cleanout?]
    mi8[Repairs needed before use?]
    mi1 --> mi2 --> mi3 --> mi4 --> mi5 --> mi6 --> mi7 --> mi8
  end

  subgraph pre [Prefab Interior]
    direction TB
    pi1[Room / floor]
    pi2[Fireplace + tag / model plate]
    pi3[Optional top-of-unit photos]
    pi4[Firebox / refractory]
    pi5[Damper]
    pi6[Flue / venting]
    pi7[Prior flue fire?]
    pi8[Overall notes]
    pi1 --> pi2 --> pi3 --> pi4 --> pi5 --> pi6 --> pi7 --> pi8
  end

  subgraph stv [Stove Interior]
    direction TB
    si1[Room / floor]
    si2[Appliance + tag]
    si3[Stove pipe]
    si4[Flue]
    si5[Masonry thimble / breach]
    si6[Prior flue fire?]
    si7[Overall notes]
    si1 --> si2 --> si3 --> si4 --> si5 --> si6 --> si7
  end

  subgraph dvi [Direct Vent Interior]
    direction TB
    di1[Room / floor]
    di2[Fireplace + overall notes]
    di3[Glass and gasket]
    di4[Logs and placement]
    di5[Pilot assembly]
    di6[Decorative accessories]
    di7[Valve / compartment]
    di8[Overall notes]
    di1 --> di2 --> di3 --> di4 --> di5 --> di6 --> di7 --> di8
  end

  mas --> intRem([Then Interior Remedies])
  pre --> intRem
  stv --> intRem
  dvi --> intRem
        

G. Remedy catalogs

Split into four multi-select fields per half so choice lists stay manageable. Selecting a service reveals that service’s Use / Add / Replace controls.

Exterior Remedies

Exterior Remedies 1

  • Attic Shield/Fire Stop Install
  • Brick Rebuild - Entire Chimney
  • Brick Replacement / Cut and Plug Brick
  • Chase Cover Install
  • Chase Flashing Replacement
  • Chimney Cap Install
  • Custom Service
  • Cut in Flashing Installation

Exterior Remedies 2

  • E-Plus Damper Cap Installation
  • Elastomeric Crown Repair
  • Flue Fire Restoration
  • L-Series Damper Cap Installation
  • Masonry Cricket Flashing System
  • Masonry Flashing Replacement
  • Moisture Protection
  • Multi Flue Cap Install

Exterior Remedies 3

  • Overhang Crown Pour
  • Partial Brick Rebuild
  • Pre-Fab Chimney Cap Replacement
  • Reinforced Flashing Repair
  • Shoulder Stones for Masonry Chimney
  • Siding and Trim Replacement with Paint and Caulk
  • Step Flashing Replacement Chase

Exterior Remedies 4

  • Storm Collar Installation
  • Tile in Reline / Standard Reline
  • Tile Remove Reline
  • Trim Replacement with Paint and Caulk
  • Tuck-Pointing / Tuck Pointing
  • Utility Flue Reline
  • Wash Crown Pour

Interior Remedies

Interior Remedies 1

  • 36 inch Forever Fireplace
  • 42 inch Forever Fireplace
  • Ash Pit Wood Removal
  • Black Stove Pipe Replacement
  • Custom Facelift Remodel
  • Custom Service
  • Direct Vent Change out to Direct Vent
  • Direct Vent Refresh Kit

Interior Remedies 2

  • EF-M
  • Electric Fireplace Install into Prefab
  • Electric Install Into Wall
  • Factory Built Fireplace and Flue System Replacement to Pre-Flue Fire Condition
  • Flue Fire Restoration
  • Free Standing Stove Flue Replacement
  • Free Standing Wood Stove Install Through Roof
  • Free Standing Wood Stove Install Through Wall

Interior Remedies 3

  • Gas Direct Vent Insert Install
  • Isokern Install
  • Masonry Fireplace Firebox Rebuild
  • New Construction Direct Vent Gas Fireplace Installation
  • Pre-Fab Pipe Replacement
  • Prior Fire Complete System Installed
  • Refractory Panel Replacement
  • Rotary Fireplace Cleaning

Interior Remedies 4

  • Smoke Chamber Parge to Flue Tile
  • Smoke Guard Installation
  • Stove Firebrick Replacement
  • Stainless Steel Liner Install Through Masonry Chimney
  • Vented Gas Log Install
  • Ventfree Gas Log Install
  • Wood burning Insert Liner ONLY
  • Wood Burning Stove Insert Install
  • Zero Clearance Wood Burning Fireplace Install

Closing (always shown)

flowchart LR
  q["Are there needed items
before further use?"] -->|Yes| t["What items are needed
for further use?"] q -->|No| done([Done]) t --> done classDef close fill:#fdecee,stroke:#c45c6a class q,t close

Field sort order (major blocks)

How the form is ordered in ServiceM8, regardless of which branches are visible:

OrderBlock
1–2Root: Inspection Scope, Chimney Identification
3–35Prefab Exterior
36–69Masonry Exterior
70–86Stove Exterior
87–99Direct Vent Exterior
100–217Exterior Remedies
218–261Masonry Interior
262–298Prefab Interior
299–321Stove Interior
322–357Direct Vent Interior
358–496Interior Remedies
497–498Closing / needed items