{"kind":"demo-sample-data-package","version":"wave-1","sourceDemo":{"slug":"hvac-dispatch","title":"HVAC Dispatch","archetype":"A2","canonicalPath":"/demo-library/hvac-dispatch","appPath":"/demo-apps/hvac-dispatch","subdomain":"hvac-dispatch.ideas-realized.com"},"package":{"headline":"CoolRoute Command sample data package","summary":"CoolRoute Command has 2 buyer-ready CSV template(s), 3 mapped source group(s), and 10 checks for moving from seeded demo data to a first tenant dry import.","productName":"CoolRoute Command","tenantName":"Evergreen Mechanical","productionDomain":"hvac-dispatch.ideas-realized.com","canonicalPage":"/demo-library/hvac-dispatch","previewScreen":{"id":"route","label":"Route","proof":"dispatch route board and technician schedule proof","url":"https://hvac-dispatch.ideas-realized.com?screen=route"},"cutoverStrategy":"Start with a read-only job and technician import, reconcile service categories, then allow dispatchers to update pilot board status while the source platform remains system of record.","privacyNote":"Customer contact data and appointment notes should be limited to dispatch-visible fields until message consent and retention policy are confirmed.","counts":{"templateCount":2,"sampleRowCount":4,"sourceCount":3,"mappedFieldCount":10,"requiredFieldCount":8,"validationGateCount":3,"acceptanceCheckCount":10},"sources":[{"name":"Service jobs export","system":"ServiceTitan, Housecall Pro, FieldEdge, or CSV schedule export","owner":"Dispatch manager","cadence":"Morning import plus midday refresh","status":"needs-client","recordEstimate":"40 to 160 open jobs","fieldCount":4,"requiredFieldCount":4,"fields":[{"sourceField":"job_id","targetField":"ServiceJob.externalId","required":true,"transform":"Preserve platform identifier.","validation":"External ID must be unique."},{"sourceField":"customer_name","targetField":"Customer.displayName","required":true,"transform":"Trim and preserve account naming.","validation":"Required for job card display."},{"sourceField":"service_type","targetField":"ServiceJob.category","required":true,"transform":"Map to repair, install, maintenance, warranty, emergency.","validation":"Unknown service types import as needs-triage."},{"sourceField":"appointment_window","targetField":"ServiceJob.window","required":true,"transform":"Split date, start time, and end time.","validation":"Invalid windows block route sequencing."}]},{"name":"Technician roster","system":"Field-service platform or HR roster export","owner":"Service manager","cadence":"Weekly plus manual update for absences","status":"ready","recordEstimate":"8 to 60 technician records","fieldCount":3,"requiredFieldCount":2,"fields":[{"sourceField":"technician_name","targetField":"Technician.displayName","required":true,"transform":"Trim and preserve preferred names.","validation":"Technician name required for assignment."},{"sourceField":"skills","targetField":"Technician.skills","required":true,"transform":"Split comma-delimited values and map to approved skill list.","validation":"Unknown skills import as pending approval."},{"sourceField":"home_zone","targetField":"Technician.zone","required":false,"transform":"Map to configured dispatch zones.","validation":"Missing zone triggers manual route review."}]},{"name":"Parts holds","system":"Inventory hold list or parts counter spreadsheet","owner":"Parts coordinator","cadence":"Daily during dispatch review","status":"template","recordEstimate":"10 to 80 parts-held job rows","fieldCount":3,"requiredFieldCount":2,"fields":[{"sourceField":"job_id","targetField":"PartsHold.jobId","required":true,"transform":"Match service job external ID.","validation":"Job ID must exist in current job import."},{"sourceField":"part_name","targetField":"PartsHold.partName","required":true,"transform":"Trim and standardize common abbreviations.","validation":"Part name required."},{"sourceField":"eta","targetField":"PartsHold.eta","required":false,"transform":"Normalize date or mark as unknown.","validation":"Unknown ETA flags job as route risk."}]}],"templates":[{"id":"work-order-import","label":"Work order import","fileName":"hvac-dispatch-work-orders.csv","downloadPath":"/demo-library/hvac-dispatch/import-templates/work-order-import","sourceSystem":"Field-service platform export","owner":"Dispatch manager","cadence":"Daily pilot import","description":"Creates dispatch board jobs, priority state, appointment windows, and customer communication context.","columnCount":8,"requiredColumnCount":7,"sampleRowCount":2,"columns":[{"name":"job_id","required":true,"description":"Stable work order identifier.","example":"WO-91642"},{"name":"customer","required":true,"description":"Customer display name.","example":"Ridgeview Dental"},{"name":"service_address","required":true,"description":"Service location.","example":"1228 Grant Ave"},{"name":"job_type","required":true,"description":"Service type or work category.","example":"No cooling"},{"name":"window_start","required":true,"description":"Appointment window start.","example":"2026-07-01T09:00:00"},{"name":"window_end","required":true,"description":"Appointment window end.","example":"2026-07-01T11:00:00"},{"name":"priority","required":true,"description":"Dispatch priority.","example":"High"},{"name":"assigned_tech","required":false,"description":"Assigned technician name or blank for unassigned.","example":"Jordan Kim"}],"sampleRows":[{"job_id":"WO-91642","customer":"Ridgeview Dental","service_address":"1228 Grant Ave","job_type":"No cooling","window_start":"2026-07-01T09:00:00","window_end":"2026-07-01T11:00:00","priority":"High","assigned_tech":"Jordan Kim"},{"job_id":"WO-91657","customer":"Marlow Foods","service_address":"44 Industrial Way","job_type":"Preventive maintenance","window_start":"2026-07-01T13:00:00","window_end":"2026-07-01T15:00:00","priority":"Normal","assigned_tech":""}],"csvPreview":"job_id,customer,service_address,job_type,window_start,window_end,priority,assigned_tech\r\nWO-91642,Ridgeview Dental,1228 Grant Ave,No cooling,2026-07-01T09:00:00,2026-07-01T11:00:00,High,Jordan Kim\r\nWO-91657,Marlow Foods,44 Industrial Way,Preventive maintenance,2026-07-01T13:00:00,2026-07-01T15:00:00,Normal,","acceptanceChecks":["Window dates include timezone handling before route sequencing is enabled.","Unassigned urgent jobs appear in the dispatch queue.","Customer-facing message drafts remain approval-only during pilot."]},{"id":"technician-roster","label":"Technician roster import","fileName":"hvac-dispatch-technician-roster.csv","downloadPath":"/demo-library/hvac-dispatch/import-templates/technician-roster","sourceSystem":"Payroll roster or field-service user export","owner":"Service manager","cadence":"Initial import, then weekly update","description":"Loads technician capacity, service role, territory, and next-stop visibility.","columnCount":6,"requiredColumnCount":6,"sampleRowCount":2,"columns":[{"name":"tech_id","required":true,"description":"Stable technician identifier.","example":"TECH-021"},{"name":"technician_name","required":true,"description":"Technician display name.","example":"Jordan Kim"},{"name":"role","required":true,"description":"Service role or skill group.","example":"Senior HVAC tech"},{"name":"territory","required":true,"description":"Primary dispatch territory.","example":"North route"},{"name":"daily_capacity","required":true,"description":"Target call count or capacity unit.","example":"6"},{"name":"active","required":true,"description":"Whether technician is dispatchable.","example":"yes"}],"sampleRows":[{"tech_id":"TECH-021","technician_name":"Jordan Kim","role":"Senior HVAC tech","territory":"North route","daily_capacity":"6","active":"yes"},{"tech_id":"TECH-034","technician_name":"Priya Shah","role":"Maintenance tech","territory":"Central route","daily_capacity":"7","active":"yes"}],"csvPreview":"tech_id,technician_name,role,territory,daily_capacity,active\r\nTECH-021,Jordan Kim,Senior HVAC tech,North route,6,yes\r\nTECH-034,Priya Shah,Maintenance tech,Central route,7,yes","acceptanceChecks":["Only active technicians appear as dispatch candidates.","Daily capacity is approved before utilization metrics are shown.","Territory labels match the dispatch board route filters."]}],"validationGates":[{"label":"Job ID system-of-record rule","severity":"blocking","detail":"Dispatch updates must map back to the source service job record.","resolution":"Confirm external job ID and export ownership before pilot launch."},{"label":"Technician capacity review","severity":"warning","detail":"Missing skills or home zones weakens route and assignment signals.","resolution":"Service manager approves skill and zone taxonomy during setup."},{"label":"Customer messaging consent","severity":"blocking","detail":"ETA message templates require approved phone/email usage rules.","resolution":"Limit message previews until communication policy is confirmed."}],"acceptanceChecklist":["Work order import: Window dates include timezone handling before route sequencing is enabled.","Work order import: Unassigned urgent jobs appear in the dispatch queue.","Work order import: Customer-facing message drafts remain approval-only during pilot.","Technician roster import: Only active technicians appear as dispatch candidates.","Technician roster import: Daily capacity is approved before utilization metrics are shown.","Technician roster import: Territory labels match the dispatch board route filters.","Job ID system-of-record rule: Confirm external job ID and export ownership before pilot launch.","Technician capacity review: Service manager approves skill and zone taxonomy during setup.","Customer messaging consent: Limit message previews until communication policy is confirmed.","Open Route after dry import and verify dispatch route board and technician schedule proof."],"handoffRoutes":[{"label":"Sample data package","href":"/demo-library/hvac-dispatch/sample-data-package","detail":"Markdown handoff with CSV templates, seed rows, validation gates, and cutover notes."},{"label":"Sample data package JSON","href":"/demo-library/hvac-dispatch/sample-data-package.json","detail":"Machine-readable sample-data manifest for implementation automation."},{"label":"Production data contract JSON","href":"/demo-library/hvac-dispatch/data-contract.json","detail":"Entity, source, event, API-shaped route, and boundary contract for production planning."},{"label":"Implementation JSON","href":"/demo-library/hvac-dispatch/implementation.json","detail":"Full setup spec with routes, productization fields, tenant defaults, and security notes."},{"label":"Implementation intake","href":"/implementation-intake/hvac-dispatch-implementation-intake","detail":"Buyer source-system, domain, access, and asset collection workflow."},{"label":"Live app proof screen","href":"https://hvac-dispatch.ideas-realized.com?screen=route","detail":"Route: dispatch route board and technician schedule proof"}]},"implementationManifest":{"markdownPath":"/demo-library/hvac-dispatch/sample-data-package","jsonPath":"/demo-library/hvac-dispatch/sample-data-package.json","importTemplatePaths":["/demo-library/hvac-dispatch/import-templates/work-order-import","/demo-library/hvac-dispatch/import-templates/technician-roster"],"dataContractJsonPath":"/demo-library/hvac-dispatch/data-contract.json","implementationSpecPath":"/demo-library/hvac-dispatch/implementation.json","tenantClonePackageJsonPath":"/demo-library/hvac-dispatch/tenant-clone-package.json","firstProofUrl":"https://hvac-dispatch.ideas-realized.com?screen=route","firstProofScreen":"route"}}