Scan the machine, diagnose the fault, fix it faster
AR Field Engineer is a maintenance-and-repair toolkit for field-service teams. An engineer signs in, scans the QR code fixed to a piece of equipment, and the app pulls up that machine and renders its schematic in 3D — overlaid in AR on supported devices, or in a universal orbit-controlled view everywhere else. The engineer enters the symptom and any error codes; the AI reads those alongside a manual excerpt and returns a structured fault diagnosis: a plain-language summary, a severity level, likely causes, recommended checks and a step-by-step repair plan. From there the engineer can search the spare-part catalogue (with AI part suggestions for the fault), turn the diagnosis into a job with tickable repair steps, generate and download a PDF job sheet, and — when a second opinion is needed — open a one-to-one video call with a remote expert. The tenant is the company: every engineer shares that company's equipment, manuals, jobs and parts, and each record is scoped to the company.
Scan the equipment
Each machine carries a QR code; scanning it resolves the equipment and opens its schematic and history in seconds.
AR schematic overlay
The machine's 3D schematic renders in AR on supported devices, with an orbit-controlled 3D fallback everywhere.
AI fault diagnosis
Symptom + error codes + a manual excerpt become a severity, likely causes, recommended checks and repair steps.
Guided repair
The diagnosis becomes a job with tickable steps, and per-step "more guidance" for a stubborn task.
Parts & PDF job sheet
Search the parts catalogue, get AI part suggestions for the fault, and download a clean PDF job sheet.
Live expert connect
Open a one-to-one WebRTC video call with a remote expert when a fault needs a second pair of eyes.
CompanyID (the kit OrgId), all under the prefix
AFE_.
Built for teams that fix machines in the field
Field-service companies
HVAC, refrigeration, industrial and facility-maintenance firms whose engineers travel to sites to diagnose and repair equipment.
In-house maintenance teams
Plants and facilities that keep their own machines running and want faster, more consistent fault diagnosis.
OEM after-sales support
Manufacturers supporting installed equipment who want scannable machine records and remote expert assistance.
Junior & travelling engineers
Engineers who benefit from a guided, step-by-step diagnosis and the option to call a senior expert on video.
It suits any team that wants to standardise how faults are diagnosed and repairs are recorded. AR Field Engineer is a decision-support and documentation aid: the AI reasons over the symptom, error codes and manual text the engineer provides — it does not replace a qualified engineer's judgement, and every recommended repair should be carried out following the equipment's own safety procedures.
Per-engineer monthly subscription
AR Field Engineer is billed as a flat monthly subscription per engineer — one price per engineer covers AR maintenance, AI fault diagnosis, guided repair, parts search, PDF job sheets and expert video connect. Payment is via Razorpay from the Subscription area, and a successful charge keeps the company plan active for one month from the payment date.
The page map
| Page | Who | Purpose |
|---|---|---|
| AFE_EngineerDashboard.aspx | All signed-in | The post-login home: the company name and plan tier, stat cards (equipment, open jobs, completed jobs, engineers, parts, jobs this week), big CTAs to scan equipment, diagnose a fault or start a job report, and a recent-jobs list. |
| AFE_EquipmentList.aspx | All signed-in | Manage the equipment catalogue (name, model, serial, location, status, schematic model path). Each item shows its printable QR code and its manuals (title + content excerpt used as AI context), with a "Scan / Open AR" link straight to the AR maintenance view. |
| AFE_ARMaintenance.aspx | All signed-in hero | The scan-to-schematic hero: a camera QR scanner (BarcodeDetector, with a jsQR fallback) resolves an equipment token, then renders its Three.js schematic with orbit controls and an optional WebXR AR overlay. From here the engineer can diagnose the fault or call an expert. |
| AFE_FaultDiagnosis.aspx | All signed-in hero | Pick an equipment, enter the symptom and error codes, and get an AI diagnosis — severity, likely causes, recommended checks and repair steps — grounded in a manual excerpt. Turn the diagnosis into a job and ask for per-step guidance. |
| AFE_PartSearch.aspx | All signed-in | Search and manage the spare-part catalogue (part number, name, description, stock, unit price, supplier), plus an "AI: suggest parts for a fault" panel that proposes likely parts with reasons and a quick add-to-inventory action. |
| AFE_JobReport.aspx | All signed-in | Open a job, review its equipment, symptom, diagnosis and steps, record parts used, time spent and notes, then generate a job sheet with AI, save the repair report, and download a PDF via the job-sheet handler. |
| AFE_ExpertConnect.aspx | All signed-in | A one-to-one WebRTC video call for remote expert assistance, using AJAX-polled signalling stored in the database and a public STUN server; the engineer starts a session and shares a join link with the expert. |
| AFE_Subscription.aspx | Settings capability | Current plan, expiry and days remaining, and a Razorpay checkout to subscribe or renew the company plan. |
| AFE_Master.master | Layout | The shared master page — sidebar navigation, topbar and mobile hamburger menu — every AFE_ page renders inside it. |
From a QR scan to a signed-off job sheet
Scan the QR
On AFE_ARMaintenance.aspx the engineer scans the equipment QR; ResolveQr looks it up and tenant-checks the company.
See the schematic
The machine's Three.js schematic renders with orbit controls, and an AR overlay on supported devices.
Diagnose the fault
DiagnoseFault reads the symptom, error codes and a manual excerpt and returns severity, causes, checks and steps.
Create the job
The diagnosis becomes a job with tickable repair steps; RepairGuidance expands any stubborn step.
Find the parts
Search the catalogue or ask SuggestParts for likely parts for the fault, then add them to the job.
Generate the job sheet
GenerateJobSheet builds the sheet; a PDF is produced by AFE_JobSheetPdf.ashx.
Call an expert
When needed, AFE_ExpertConnect.aspx opens a WebRTC video call with a remote expert.
Four focused AI passes, all routed through AFE_ClaudeHelper
All AI calls are routed through AFE_ClaudeHelper and never throw — on any error
or malformed reply, the calling page shows a clear message instead of a raw exception. The provider is
configurable (Groq by default, or the Claude API), and every prompt returns strict JSON so the pages can
render structured, defensively-parsed results.
DiagnoseFault — a structured fault diagnosis
You are an experienced field-service maintenance engineer. Diagnose the
fault on this equipment using the symptom, error codes and the manual
excerpt provided. Equipment: "{{equipment_name}}" ({{model}}).
Symptom: {{symptom}}
Error codes: {{error_codes}}
Manual excerpt: {{manual_excerpt}}
Return STRICT JSON only:
{ "diagnosis": "plain-language summary of the likely fault",
"severity": "low | medium | high | critical",
"likelyCauses": ["most likely cause","another"],
"recommendedChecks": ["a check to confirm the cause","another"],
"repairSteps": [ { "title":"short step title",
"instruction":"what to do" } ] }
Base it only on the information given; if unsure, say so and recommend a
check. Follow the equipment's own safety procedures. No emojis, no hype.
RepairGuidance — expand a single repair step
Give clear, safe, step-by-step guidance for this repair task on
"{{equipment_name}}". Overall fault: {{fault_summary}}.
Current step: "{{current_step_title}}".
Return STRICT JSON: { "steps": ["a short, concrete instruction",
"another"], "safety": ["a relevant safety precaution"],
"tools": ["a tool or part likely needed"] }
Keep it practical and specific to the task. Remind the engineer to follow
the equipment's lockout/safety procedure. No emojis, no hype.
SuggestParts — likely spare parts for a fault
Suggest the spare parts most likely needed to repair this fault on
"{{equipment_name}}". Fault: {{fault_summary}}.
Return STRICT JSON: { "parts": [ { "partName":"",
"likelyPartNumber":"a plausible/generic reference or empty",
"reason":"why this part is likely involved" } ] }
Only suggest parts genuinely relevant to the described fault. Do not
invent exact manufacturer part numbers you cannot know. No emojis.
GenerateJobSheet — a clean job-sheet summary
Write a concise field-service job sheet summary for this completed or
in-progress repair. Equipment: "{{equipment_name}}".
Symptom: {{symptom}}. Diagnosis: {{diagnosis}}.
Repair steps (JSON): {{steps_json}}.
Parts used (JSON): {{parts_used_json}}.
Return STRICT JSON: { "summary":"a short professional summary of the
work", "workPerformed":["what was done"], "recommendations":["any
follow-up or preventive advice"] }
Keep it factual, drawn only from the details provided. No emojis, no hype.
AFE_usp_SetJobDiagnosis, repair steps via AFE_usp_SaveJobStep,
and the generated job sheet via AFE_usp_SaveRepairReport — so a job can be
reopened, re-diagnosed and re-exported as a PDF later.A universal 3D schematic, with a WebXR AR overlay where the device supports it
Three.js schematic
The machine's GLB/STL schematic renders with a gentle idle rotation, orbit controls and a labelled fallback mesh.
QR-driven
Scanning the equipment QR resolves the machine server-side and tenant-checks the company before loading anything.
WebXR where supported
On AR-capable Android/Chrome, hit-test placement overlays the schematic on the real equipment as a visual guide.
Aid, not certification
The overlay assists orientation; it is not precise registration and is not for measurement or safety-critical alignment.
A one-to-one WebRTC call over AJAX-polled signalling and a public STUN server
The stack
Backend
ASP.NET Web Forms, VB.NET, .NET Framework 4.7.2. AJAX via page <WebMethod> PageMethods returning JSON. No full-page postbacks for data operations.
Database
SQL Server (shared db_9b0fff_aiscompany). Parameterised CDATA SQL and stored procedures via AFE_DBHelper, soft delete (IsDeleted), audit columns. Prefix-scoped to AFE_.
Frontend
Tailwind CDN, blueprint-navy/safety-orange glassmorphism, Font Awesome 6.5.1, Three.js (ESM importmap) with GLTFLoader/STLLoader, OrbitControls and the WebXR AR button for the schematic overlay, the browser BarcodeDetector API (jsQR fallback) for QR scanning, qrcodejs for printable QR labels, and WebRTC for the expert call. Master page AFE_Master.master.
Integrations
Groq/Claude AI routing (fault diagnosis, repair guidance, part suggestions, job-sheet generation), iTextSharp for the server-side PDF job sheet, Razorpay (subscription checkout + webhook), WhatsApp (1msg.io) job notices, Telegram build/activity alerts.
Shared helpers referenced across the pages: AFE_DBHelper
(GetTable / GetTableSP / GetTableSPSet / Execute / ExecuteSP / Scalar / P), AFE_ClaudeHelper
(DiagnoseFault, RepairGuidance,
SuggestParts, GenerateJobSheet),
AFE_WhatsApp, and the shared AIS RBAC/auth kit for sign-in, since there is no separate
AFE_Auth table — the engineer's identity comes from the shared kit and the
company is the OrgId.
A company-scoped data model
Tables
AFE_Companies
The tenant company — name, industry, city, contacts, subscription tier and expiry. CompanyID is the kit OrgId.
AFE_Engineers
The company's engineers — name, specialty and phone, linked to the shared kit user via KitUserId.
AFE_Equipment
Machines — name, model, serial, location, status, schematic model path and a unique QrToken for scanning.
AFE_Manuals
Per-equipment manuals — title, optional file path and a content excerpt used as AI diagnosis context.
AFE_MaintenanceJobs
Jobs — equipment, engineer, symptom, error codes, priority, status and the stored AI diagnosis JSON.
AFE_JobSteps
The ordered repair checklist for a job — step number, title, instruction and a done flag.
AFE_Parts
The spare-part catalogue — part number, name, description, stock quantity, unit price and supplier.
AFE_RepairReports
Generated job sheets — report text, parts-used JSON, time spent and the job-sheet JSON for the PDF.
AFE_ExpertSessions
WebRTC sessions — token, status, offer/answer SDP and the creating user, for the expert call.
AFE_SignalMessages
The signalling exchange — sender, kind (ice/offer/answer) and payload, polled during a call.
AFE_Subscriptions
Razorpay subscription/order rows — plan, amount, dates, status and webhook payload.
AFE_error_log / AFE_activity_log
Page/method error log and the activity trail — tenant CompanyID and acting kit-user id kept distinct.
Key stored procedures
| AFE_usp_GetCompany | Resolve the tenant company row with its subscription tier and expiry. |
| AFE_usp_GetDashboard | Headline counts for the dashboard (equipment, jobs, engineers, parts, jobs this week). |
| AFE_usp_GetEquipment / GetEquipmentItem / SaveEquipment / DeleteEquipment | List, read, upsert or soft-delete equipment for the company. |
| AFE_usp_GetEquipmentByQr | Scan lookup: resolve an equipment by its QR token (returns CompanyID for the tenant check). |
| AFE_usp_GetManuals / SaveManual / GetManualExcerpt | Manage an equipment's manuals; fetch the top content excerpt as AI context. |
| AFE_usp_GetJobs / GetJob / SaveJob / UpdateJobStatus / SetJobDiagnosis | List, read, upsert jobs; change status; store the AI diagnosis JSON. |
| AFE_usp_GetJobSteps / SaveJobStep / ToggleJobStep | Manage the ordered repair steps and their done flags. |
| AFE_usp_GetParts / SavePart / DeletePart | Search, upsert or soft-delete spare parts. |
| AFE_usp_SaveRepairReport / GetRepairReport | Save the generated job sheet and read the latest report for a job. |
| AFE_usp_CreateExpertSession / GetExpertSession / SetExpertOffer / SetExpertAnswer / AddSignal / GetSignals / EndExpertSession | The full WebRTC signalling lifecycle for the expert call. |
| AFE_usp_SaveSubscription | Record a subscription/order row; extends the company's plan on a paid/active/charged webhook event. |
Deploy via sqlcmd
Apply the product schema directly to the shared SQL Server instance, then verify object counts. The script is idempotent and prefix-scoped — it never touches other products' objects.
sqlcmd -S sql5083.site4now.net -U db_user -P ****** -d db_9b0fff_aiscompany ^
-i C:\asp.net\CompanyProjects\AIAis\ArProjects\ARFieldEngineer\AFE_Database.sql
-- verify
SELECT COUNT(*) FROM sys.tables WHERE name LIKE 'AFE_%'; -- the product tables
SELECT COUNT(*) FROM sys.procedures WHERE name LIKE 'AFE_usp_%'; -- the proc layer
Serve the site over HTTPS at /ArProjects/ARFieldEngineer/ — required for
getUserMedia QR scanning and the expert video call, and for WebXR. Set the Groq/Claude
and Razorpay credentials in the shared config. Sign in, add a piece of equipment and print its QR, add a manual
excerpt, scan the QR to load the schematic, enter a symptom and error codes to get a diagnosis, create a job and
tick off steps, search parts and ask for AI part suggestions, generate the job sheet and download the PDF, and
start an expert session to confirm the video call flow.
Demo & review accounts
AFE_Default login. The demo company "Demo Industrial Services" is seeded with two
engineers, three pieces of equipment (the first carrying the fixed QR token
55555555-5555-5555-5555-555555555555 so the scan demo is stable), a manual excerpt,
two jobs, repair steps, several parts and a repair report. The reviewer/demo account is granted full,
non-expiring access so every module unlocks without hitting a paywall or checkout — important for
app-store and Play-review access checks.How equipment data, diagnoses and the video call are handled
Server-side gating
Every authenticated page and PageMethod re-checks sign-in and the calling company's own CompanyID — never trusting the client.
Company scoping
All equipment, manuals, jobs, steps, parts, reports and sessions are filtered by the signed-in company's CompanyID, so one company never sees another's data — including the QR-scan lookup, which tenant-checks the resolved equipment.
Defensive AI parsing
AI responses for diagnosis, guidance, parts and job sheets are parsed defensively; malformed output surfaces as a clear on-screen message rather than a raw error or a corrupted save.
Safety-first guidance
AI diagnosis and repair guidance are decision support only; every prompt reminds the engineer to follow the equipment's own lockout and safety procedures, and a qualified engineer makes the final call.
Payment verification
Razorpay orders are created server-side; webhook events are HMAC-verified before a subscription is marked paid.
Peer-to-peer media
The expert call's audio and video stream directly between the two participants; only small signalling messages pass through the server.
Where AR Field Engineer goes next
- TURN relay for the expert call: adding a TURN server so the video call connects reliably even on strict or symmetric NATs, removing today's STUN-only limitation.
- Anchored AR digital-twin overlay: marker- or image-anchored placement so the schematic aligns more precisely to the real machine, moving beyond a visualisation aid.
- Offline field mode: cache equipment, manuals and schematics so an engineer can scan and diagnose in a basement or remote site with no signal, syncing when back online.
- Preventive-maintenance scheduling: recurring service jobs and reminders per equipment, with WhatsApp notices to the assigned engineer.
- Parts stock & reorder: low-stock alerts and supplier reorder links driven by parts consumed on completed jobs.
- Photo & annotation capture: attach before/after photos and on-image annotations to a job sheet, and share a short clip when an expert call cannot connect.
- Fault-history analytics: per-equipment fault trends and mean-time-to-repair dashboards to guide replacement and preventive-maintenance decisions.