FE
Field Engineer · Stage 2

Service Repair Copilot
Specification

A credential-gated, real-time diagnostic and repair assistant that lets a novice technician perform like a mid-to-senior tech — safely — on live service calls.

Stage 2 of the Field Engineer platform · Service work (not installation)
Part A — Concept
The product story, for planning & investors.
Part B — Build Spec
Data models & logic, to code from.
Part AThe Concept

A1What it is

The Repair Copilot is the service-side companion to the Stage 1 survey tool. A technician dispatched to a trouble call opens the app on arrival, selects the equipment they're there to service, and is walked — in real time — from the customer's reported complaint, through verifying it, identifying the full system, diagnosing on actual measured readings, and into the hands-on repair and a confirming check that it works.

It is a service application, not an installation tool. It guides repair of existing equipment; it does not install or commission new systems (a separate future build).

A2The core idea: guidance that expands to fit the tech

The same diagnostic path adapts to the individual using it. Every technician has a profile — an experience level and a set of admin-granted credentials. The tool guides each person exactly as far as they are qualified, then stops and escalates.

Example, a "no cooling" call: a technician who is EPA 608 Type II but not yet cleared for line-voltage rewiring is guided all the way through airflow, power, capacitor, contactor, and refrigerant diagnosis. If the fault turns out to be burned line-voltage wiring, the tool stops him at that step — "this requires line-voltage clearance; here's everything you've confirmed, escalate to a qualified tech" — while a colleague whose profile clears it is guided straight through the repair. One intelligent path, different stopping points per person.

This is what turns a novice into an apparent mid-to-senior performer: the structure, the step-by-step "how," and the reasoning come from the tool; the work stays within what the person is genuinely qualified and safe to do.

A3Why it matters (the business case)

A4The technician's flow, start to finish

  1. Arrive & select equipment. Tech picks what they're there to service (furnace, AC, water heater, etc.). Model/serial not required yet.
  2. Reported vs. confirmed complaint. Record what the customer reported (e.g., "no heat"), then whether the tech confirms it, can't reproduce it, or finds a different problem.
  3. Capture the system. The tool presents the suggested components for that job type (no-heat → furnace/boiler + thermostat; AC → condenser + air handler + thermostat) and captures each via nameplate/serial photo read. Then asks: "Other components? (zoning, humidifier, secondary unit…)" — Yes opens capture for extras, No proceeds.
  4. Diagnose on real data. One inclusive mode: each step names the check, shows a novice how to do it safely, and asks for the actual measured value. Claude interprets the real reading and decides the next step.
  5. Safety throughout. Inline cautions during steps; hard stops for dangerous or out-of-scope situations, routed to a defined action.
  6. Repair, gated to the tech. When the cause is found, the tool guides the hands-on repair — if the tech's credentials clear it. If not, it escalates with the work-so-far preserved.
  7. Repair or replace? Once there's a diagnosis and a repair estimate, the tool checks whether repairing this unit still makes sense given its age and remaining life. On a clear crossover — say a $3,500 heat-exchanger repair on a 20-year-old furnace — it surfaces a transparent repair-vs-replace side-by-side (with rebates and the savings profile) and offers a one-tap handoff to a pre-filled Sales survey, turning the service tech into the replacement consultant. Any safety hard stop has already been handled first and is never overridden by this step. (See B8.)
  8. Verify the fix. Re-check the original symptom and take a confirming reading before close-out.
  9. Stamp the record. Tech ID, credentials used, readings, path, and any acknowledgments saved to the job.
Part BBuild Specification

B1The credential model

Two layers plus an override flag, all admin-set. Gates govern what work is permitted; level governs how much hand-holding and override eligibility; the override flag clears specific conditional safety stops.

Baseline — assumed for every technician

Use of a multimeter, screwdrivers, and diagnostic tools including temperature probes; visual competency; knowledge of system components; EPA 608 Type II (company minimum). Plus: measuring voltage/amperage anywhere, all 24V low-voltage control work, and like-for-like single-phase swaps of capacitor, contactor, and simple relays; gas-pressure readings and igniter / flame-sensor / thermocouple swaps; standard split-AC and forced-air furnace service.

Skill gates (admin-set)

CodeGateUnlocks (beyond baseline)
EPA-UEPA 608 UniversalAll refrigerant types (baseline already covers Type II high-pressure work: recovery, evac, charging, leak repair on split AC & heat pumps). Universal adds low-pressure/chiller. Type I & III not modeled now.
E1Line-voltage (single-phase)Repair/replace burned line-voltage wiring, whips, disconnects, hard-wired motor rewiring.
E2Three-phase (hands-on)Hands-on work on 3-phase gear. Measurement/diagnosis on 3-phase is allowed for all techs — only modification is gated.
E3New circuit / branch wiringRun a new circuit from the panel, extend branch wiring, new disconnects beyond like-for-like.
G1Gas valve / gas pipingReplace gas valve, work on gas connections/unions where a seal is broken (leak-test required).
G2Combustion & ventingCombustion analysis (CO/O₂), venting/draft sign-off, confirming a cracked heat exchanger.
HPHeat pumpsReversing valve, defrost, low-ambient, aux/emergency-heat logic, HP charging specifics. (Tech still services as a straight AC up to HP-specific parts.)
B1Hot-water / hydronic boilersCirculators, expansion tanks, zone valves, aquastats, hydronic controls.
B2Steam boilersSteam controls, low-water cutoffs, pressuretrols, sight glass, steam safety. Full stop without B2.
WHWater heaters (tank + tankless)Gas control valve, T&P, tank thermocouple/igniter, tankless flow/modulation & descaling.
CBCombi unitsCombi boiler + DHW combined systems (kept separate from B1/WH).
OILOil-fired (dormant)Oil burners, nozzles, pumps. Defined but inactive until oil service is offered in-market.

Gate stacking. Combustion-dependent work on any fuel-burning unit (furnace, boiler, water heater, combi) also requires G2. Equipment gates stack with EPA/Electrical/Gas gates — a 3-phase heat pump's contactor swap needs E2; a boiler's combustion tune needs B1+G2.

Experience level (admin-set)

One of novice / mid / senior / master. Tunes verbosity of the "how" guidance (a novice gets full step-by-step detail; a senior gets terser prompts) and establishes baseline eligibility for the override flag.

Conditional-stop override flag (admin-granted)

A distinct admin-granted permission (e.g., conditionalOverride: true, typically for senior/master). Lets a qualified tech proceed past a conditional hard stop (see B4). Proceeding requires an explicit on-screen acknowledgment that is stamped to the job with the Tech ID.

Tech profile — data model

// Set by admin only; tech cannot edit own credentials { techId: "T-1042", // reference number, stamped to every job name: "Johnny R.", level: "novice", // novice | mid | senior | master epaType: "II", // "II" | "Universal" epaCertNumber: "608-XXXXX", // stamped on refrigerant work gates: ["E1", "HP"], // admin-granted skill gates held credentialNumbers: { E1: "…", HP: "…" }, // for stamping conditionalOverride: false }

B2Job types & component templates

Each equipment category maps to a job-type template defining the suggested components to capture and the diagnostic entry points. Components are a suggested list (tech can skip/add), followed by the standard "other components?" gate.

{ jobType: "no_heat_forced_air", equipment: "Furnace / Boiler", suggestedComponents: ["Furnace/Boiler", "Thermostat"], commonComplaints: ["No heat", "Short cycling", "Insufficient heat", "Noise"], extrasPrompt: "Other components? (zoning, humidifier, secondary unit…)" } // AC → ["Condenser","Air handler/Furnace","Thermostat"] // Water heater → ["Water heater","Gas/Power supply","Venting"]

B3The diagnostic step (single inclusive mode)

Diagnosis is a loop: Claude proposes the next best check given everything known so far → tech performs it with the provided guidance → tech enters the actual value → Claude interprets and either advances, concludes, or stops. No pass/fail shortcuts; real data only.

// Each step rendered to the tech { stepId: "chk_W_24v", title: "Check 24V at W (call for heat)", how: "Set meter to VAC. With a heat call active, probe W to C…", expects: { type: "voltage_vac", unit: "V" }, safety: { inlineCaution: "Low-voltage; keep clear of line-voltage terminals." }, requiresGate: null // measuring = baseline; null = no gate to perform } // Tech enters actual value (e.g., 0 V) → sent to Claude with full job context // Claude returns: interpretation + next step | diagnosis | hard stop

Captured for every step: the value, timestamp, and tech ID — forming the diagnostic record.

B4Safety: cautions, gates & hard stops

Three mechanisms

Universal vs. conditional hard stops

A universal hard stop applies to everyone regardless of credential (e.g., gas-leak odor, active CO alarm, standing water on energized equipment). A conditional hard stop halts baseline/mid techs but a tech with the matching gate and the conditionalOverride flag may proceed after an acknowledgment.

TriggerTypeBehavior
Gas odor / suspected leakUniversalStop, evacuate/ventilate, shut gas, escalate — no override.
Active CO alarmUniversalStop, ventilate, shut down appliance, escalate.
Standing water + energized equipmentUniversalKill power safely if possible, stop, escalate.
Suspected cracked heat exchangerConditionalHard stop + red-tag + escalate for baseline/mid. A tech with G2 + override may proceed (combustion analysis, condemn/clear) after acknowledgment.
Readings that don't reconcile / low confidenceConditionalStop and escalate rather than guess; senior/master with override may continue.
{ stopId: "cracked_hx_suspected", type: "conditional", clearedBy: { gates: ["G2"], override: true }, defaultAction: "red_tag_escalate", acknowledgment: "I am a [level]; I accept proceeding on this CO-safety item." }

B5Gate evaluation logic

// Before guiding any REPAIR action or clearing any conditional stop function canPerform(action, tech) { if (action.requiresGate == null) return ALLOW; // baseline / measurement if (action.requiresGate == "EPA2") return ALLOW; // all techs hold Type II if (tech.gates.includes(action.requiresGate)) return ALLOW; return BLOCK_ESCALATE; // preserve work-so-far, route to escalation } function canClearConditional(stop, tech) { return tech.conditionalOverride && stop.clearedBy.gates.every(g => tech.gates.includes(g)); }

B6Job record & stamping

Every completed (or escalated) job stores a record that ties the work to the responsible technician and their credentials.

{ jobId: "J-…", techId: "T-1042", timestamp: "…", equipment: "Furnace", complaint: { reported: "No heat", techConfirmed: "Confirmed" }, components: [ /* captured nameplates + serials + photos(thumb) */ ], diagnosticTrail: [ { stepId, value, unit, time }, … ], diagnosis: "Failed hot-surface igniter", repairGuided: true, verify: { reSymptom: "heat confirmed", reading: "…" }, stamps: { techId: "T-1042", epaCertNumber: "608-…", credentialsUsed: ["G2"], acknowledgments: [ … ] }, escalation: null // or { reason, atStep, preservedTrail } }

B7AI integration

Claude is the reasoning engine, accessed through the same backend pattern as Stage 1 (server-held key; the app never calls the model directly). Calls:

Safety guardrail for the AI layer. Hard-stop conditions and gate evaluation are enforced in application logic, not left to the model alone. The model flags suspected danger; the app authoritatively halts, gates, and requires acknowledgments. The model is also instructed to escalate on low confidence rather than fabricate a next step.

B8Repair-vs-Replace Advisor planned

The capstone that connects Repair to Sales: at the moment a repair is diagnosed and priced, the tool evaluates whether fixing this unit still makes sense — and, when it doesn't, turns the service tech into the replacement consultant. This is where a 20-year-old furnace with a $3,500 cracked-heat-exchanger repair becomes a new-system conversation instead of throwing good money after bad.

When it runs

After a diagnosis with a repair estimate, and after any safety hard stop has already been actioned (see below). It evaluates: the repair estimate, the equipment's age and condition, and a remaining-useful-life heuristic per equipment type. A crossover fires when a high-cost repair lands on an end-of-life unit (e.g. repair cost is a large fraction of replacement, or age is past typical service life). Routine low-cost repairs (a capacitor, an igniter) never trigger it.

crossover = repairEstimate >= replaceCost × COST_RATIO // e.g. ≥ ~40–50% || age >= usefulLife(equipmentType) // past typical life || (age >= usefulLife − BUFFER && majorComponent) // e.g. compressor / heat exchanger // thresholds are tunable per equipment type; tuned to fire on genuine crossovers only.

What it shows

A transparent side-by-side the customer can see: repair now (the estimate + the unit's age and what's likely next to fail) vs. replace (new-system options, pulling in rebates and the Stage 1 Savings Profile). All figures follow the same estimate/range discipline as the savings profile — labeled estimates, never "guaranteed," and the repair cost is presented honestly, never inflated to push a sale.

The handoff

If the customer leans replace, one tap opens the Sales survey pre-filled with the equipment already captured (nameplate, age, system type) and the diagnosis as context — the tech continues seamlessly into a quote. If the customer says "just fix it," the tool returns to the repair flow with nothing lost. Architecturally, Repair computes the recommendation and opens the Sales app with context; it does not embed Sales logic (the Stage 3 cross-tool link, per the Architecture doc §13).

Safety is absolute and comes first (Safety condition). The advisor never overrides or softens a hard stop. A cracked heat exchanger is red-tagged and the unit shut down regardless of whether a new system is purchased; the repair-vs-replace conversation happens after that safety action, never instead of it.

B9Open items for the next pass

Field Engineer Stage 2 — Service Repair Copilot. Specification draft for planning, investor review, and development. Pricing and proposal features remain Stage 1's roadmap; installation tooling is a separate future stage.