Handoff · Production Readiness · connected asset maintenance

Data Model & Production Data Inventory

The prototype runs on mocked, telematics-like data. This page catalogs every data point it relies on, maps each to a likely telematics source system, and flags whether we’d ingest it directly, derive it, or build it net-new. It’s meant as a worksheet to sit with an engineer and triage what we already have versus what we’d need to build for a production product.

Source-system mappings are best-guess assumptions to validate with engineering — the goal is to start the conversation, not to assert how a telematics platform is structured.

How to read this

Each data point carries one availability status:

AvailableExists in a mature telematics product today — ingest directly.
PartialExists, but coverage / quality / normalization varies.
DerivedHandoff computes it from raw inputs — not stored upstream.
To buildNet-new capture / integration most telematics platforms do not have today.

Source systems

The upstream telematics products Handoff reads from, and how mature each data surface is likely to be for this use case.

Telematics product / areaWhat Handoff reads from itMaturity
Equipment / AssetsAsset master: VIN, make/model/year, plate, odometer, engine hours, status.Core
Vehicle DiagnosticsFault codes (SPN/FMI), severity, active-since, recurrence count.Core
Compliance / DVIRDriver inspection defects and safety flags.Core
Driver appDriver-reported defects and notes.Core
Telematics (GPS)Asset location, in/out of yard, usage.Core
Maintenance (Work Orders + PM)Work orders, categories, service/PM schedules.Core
Routing & DispatchRoute commitments, ETAs, asset availability.Partial
Parts / InventoryPart stock, reservations, ETAs.Gap
Workforce / LaborTechnician roster, skills/certs, shift hours, capacity.Gap
Vendors / external serviceApproved roster, specialties, live slots.Gap

A · Raw / ingested data points

The fields the product must read from source systems, grouped by domain. One row per data point.

Asset / Equipment

Data pointDescriptionTelematics source (assumed)AvailabilityNotes / gaps
id / nameAsset identifier and display name (Truck 184).Equipment / AssetsAvailableCore asset master record.
typeAsset class (day-cab tractor, reefer trailer, cargo van).Equipment / AssetsAvailable
year / make / modelVehicle spec for context.Equipment / AssetsAvailable
vin / plateVIN and license plate.Equipment / AssetsAvailable
odometer / engineHoursUsage readings (drive PM thresholds).Telematics + EquipmentAvailableLive from gateway; freshness matters.
statusin_service / available / out_of_service.Equipment + DispatchPartial“Out of service for maintenance” may need an explicit maintenance-hold concept.
locationYard + bay (Phoenix Yard · Bay 3) or en route.Telematics (GPS)PartialGPS is available; bay-level location is likely to-build.
etaLabelReturn ETA when the asset is en route.Routing & DispatchPartialDerived from route/ETA data.
driverAssigned / last driver.Driver app + DispatchAvailable

Faults / Diagnostics

Data pointDescriptionTelematics source (assumed)AvailabilityNotes / gaps
code / fmiFault code (SPN 789 / FMI 1).Vehicle DiagnosticsAvailableStandard J1939 SPN/FMI.
severitycritical / warning / info.Vehicle DiagnosticsAvailable
activeSince / countFirst-seen time and recurrence count.Vehicle DiagnosticsAvailableCount enables repeat-issue detection.
nameHuman-readable fault name.Vehicle DiagnosticsPartialCode→name mapping; coverage varies by make.
description / risks / suggestedActionsPlain-language insight, risk list, and recommended fixes.Diagnostics insight layerDerivedKnowledge/LLM-generated insight on top of the raw code.
confidenceDiagnostic confidence (low · review required).Diagnostics insight layerDerivedHeuristic; gates low-confidence triage.

DVIR, PM & driver signals

Data pointDescriptionTelematics source (assumed)AvailabilityNotes / gaps
DVIR signal + severityDriver vehicle inspection defect (unsafe brakes).Compliance / DVIRAvailableStrong telematics surface.
driver reportDriver-reported defect / note.Driver appAvailable
PM signal + dueLabelPreventive-maintenance due (due in 220 mi).Maintenance (Service schedules)AvailabledueLabel phrasing is derived from schedule + usage.
tags: pm_due / pm_overduePM timing flags.MaintenanceDerivedComputed from schedule vs. odometer/clock.
signals[] fusionMultiple signals collapsed into one asset-centered item.DerivedThe core fusion step; see Section B.

Work orders

Data pointDescriptionTelematics source (assumed)AvailabilityNotes / gaps
workOrderIdExisting / new work-order id (WO-4471).Maintenance (Work Orders)Available
categoryJob category (Brakes, Refrigeration).Maintenance (Work Orders)Available
titleSingle-line job title across fused signals.DerivedSummarized from signals/WO.
currentWorkShort label of the job in progress now.Maintenance (Work Orders)PartialMaps to WO status/labor line if present.
estLaborHours / requiredSkillEstimated labor and the skill needed.Maintenance + labor standardsPartialStandard-jobs/labor-time data may be incomplete.

Parts / inventory

Data pointDescriptionTelematics source (assumed)AvailabilityNotes / gaps
kindin_stock / reserved / out_of_stock / unknown.Parts / InventoryTo buildReal-time parts stock is a likely gap in telematics platforms today.
labelPart description / PN (Brake pads FMSI D1707).Parts / InventoryPartialOften lives in a separate inventory/DMS system.
etaLabelExpected arrival when out of stock.Parts / supplierTo buildRequires supplier/PO integration.

Technicians / labor

Data pointDescriptionTelematics source (assumed)AvailabilityNotes / gaps
id / nameTechnician identity.Workforce / Labor rosterPartialIdentity may exist; not always modeled as a schedulable resource.
skills[]Skill / certification tags (Brakes, DOT inspection).Workforce / Labor rosterTo buildStructured skills + certs are a key gap.
totalHours / availableHoursShift capacity and remaining hours.Time / schedulingTo buildReal-time remaining capacity must be tracked or integrated.
statusavailable / busy / near_capacity.DerivedDerived from availableHours.
locationBay assignment.WorkforceTo buildBay-level tech location is likely net-new.

Vendors / external service

Data pointDescriptionTelematics source (assumed)AvailabilityNotes / gaps
id / name / specialtyApproved vendor roster + what they do.Vendors / external servicePartialMay exist as contacts; not a structured, schedulable roster.
distanceDistance from shop.Maps / TelematicsAvailableComputable from addresses.
slotNext available appointment slot.Vendor schedulingTo buildLive vendor availability requires integration / manual entry.
approvedWhether vendor is approved for work.Vendors / procurementPartial

Dispatch / routing

Data pointDescriptionTelematics source (assumed)AvailabilityNotes / gaps
route commitments / ETAWhat route the asset is committed to and when.Routing & DispatchAvailableCore routing data.
dispatchImpactNarrative of routing impact of the work.DerivedComposed from route + asset status.
spare availabilityWhether a spare asset covers the route.Dispatch / fleetTo buildRequires fleet-availability logic; often human-known today.
requestedReleaseRequested hold/release window for an asset.Handoff workflowTo buildA Handoff-owned request; see Section C write-backs.

Shop / shift context

Data pointDescriptionTelematics source (assumed)AvailabilityNotes / gaps
shop / location / shiftShop identity, geography, and shift window.Org / configAvailableConfiguration data.
supervisorCurrent supervisor on shift.Workforce / authAvailableFrom the signed-in user / roster.
clockMinute / lastReviewedMinuteCurrent time and last queue review.System clock + activityAvailableReal time in production; deterministic in the demo.

B · Derived / computed layer

What Handoff builds on top of the raw inputs. This is the product's logic — it does not exist pre-built in any single source system, so it is the core thing we build.

Derived valueInputs consumedRule / logicStatus
Primary Workboard state (6)state, owner.kindCollapses 12 granular states → 6 supervisor lanes.reducer.ts · primaryStateOfTo build
Signal fusion → one work itemDVIR, fault, PM, WO, driver signals per assetGroup multi-source signals into one asset-centered item.data modelTo build
Priority + reason + factorssafety, route impact, readiness, recurrence, fault severityRank work and explain why (urgent / ready / info factors).priorityFactorsTo build
Readiness + checklistasset on-site, parts, qualified tech, dispatch conflictready / partial / blocked from prerequisite checks.readinessChecklistTo build
Recommendation / whyNow / impactIfDeferredfused item contextPlain-language guidance for the supervisor.narrative fieldsTo build
Technician fit / matchrequiredSkill ∩ tech.skills, availableHours, estLaborHoursqualified / partial / none + a recommended tech.reducer.ts · technicianFit / matchInfoTo build
Health: unownedowner.kind, nextAction, stateActive item with no owner or no next action.reducer.ts · isUnownedDerived
Health: over-ETAexpectedCompletionMinute, clockMinuteclock > expectedCompletion while in progress.reducer.ts · isOverEtaDerived
Health: aging blockersblockerStartedMinute, clockMinuteBlocked > 120 min (BLOCKER_AGING_MINUTES).reducer.ts · isBlockerAgingDerived
Health: follow-ups due todayfollowUpMinuteFollow-up scheduled before end of day.reducer.ts · isFollowUpDueTodayDerived
ETA mathassignedAtMinute, estLaborHours, progressexpectedCompletion = assignedAt + estLaborHours×60; remaining from progress.reducer.ts / TaskDetailPanelDerived
Capacity: booked / projectedtotalHours, availableHours, estLaborHoursbooked = total − available; projected adds the pending pick.TechnicianCapacityCardDerived
Available actionsstate, owner.kindWhich actions are valid for the item right now.reducer.ts · availableActionsForTo build
Follow-up timingcadence label, clockMinuteMaps “later today / next shift / tomorrow” to a minute.reducer.ts · followUpMinuteForDerived

C · Write-backs / actions

Supervisor actions are not just UI — each one writes back to a source system or to Handoff-owned workflow state. These imply write APIs and a workflow/event store that mostly do not exist today.

ActionWhat it writesTarget system (assumed)Availability
assign_start / diagnose_assignAssign technician, set WO in progress, reserve parts, charge capacity.Work Orders, Parts, LaborTo build
request_asset_holdAsk dispatch to hold an asset on return.Routing & DispatchTo build
request_dispatch_releaseAsk dispatch to release an asset for maintenance.Routing & DispatchTo build
send_vendor_reviewRoute work to an external vendor + appointment.VendorsTo build
mark_blocker_clearedClear a blocker; advance state and ownership.Handoff workflowTo build
mark_completeClose work; set disposition (return to service / verify / follow-up / await release).Work Orders, EquipmentTo build
deferMove to a monitor / follow-up lane with a recheck time.Handoff workflowTo build
activity log (15 kinds)Append an auditable handoff event for every change.Events / audit storeTo build

D · Key gaps & open questions for engineering

The highest-leverage things to confirm together — the items most likely to be missing or to need new capture.

  • Technician model — structured skills/certifications plus real-time remaining capacity and bay location. Do we have a schedulable labor resource, or is this net-new?
  • Parts / inventory — live stock status, reservations, and arrival ETAs. Likely a separate inventory/DMS integration.
  • Vendors — a structured, approved roster with live appointment slots, not just contacts.
  • Dispatch coupling — route commitments and spare-asset availability, plus a hold/release request workflow between maintenance and dispatch.
  • Prioritization & readiness engine — the logic that fuses signals, ranks work, explains why, and assesses readiness (Section B). This is the product’s IP.
  • Write-backs & audit — write APIs into Work Orders / Dispatch / Vendors, Handoff-owned workflow state (state, owner, blocker, follow-up), and an auditable event log.
  • Identity / join keys — stable keys to join asset ↔ work order ↔ fault ↔ DVIR ↔ PM ↔ driver ↔ route across systems.
  • Freshness & data quality — latency expectations per source (real-time vs. batch) and how the experience surfaces unknowns when data is missing or low-confidence.