{"id":"home-services","type":"soulcraft","role":"primary","status":"released","name":"Home Services","description":"All-in-one platform for plumbers, electricians, cleaners, and handymen to book jobs and run their business","longDescription":"Complete home services management for trade professionals — job scheduling, dispatch, service area mapping, parts inventory, and customer history. Handles emergency calls alongside scheduled maintenance visits with real-time technician routing.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🔧","tags":["plumber","electrician","cleaner","handyman","home-services","field-service"],"previewImageUrl":"kits/home-services/images/preview.webp","variables":[{"key":"businessName","label":"Business Name","description":"The name of your home services company (e.g. \"Summit Home Services\")","type":"string","required":true,"example":"Summit Home Services","default":"Summit Home Services"},{"key":"tagline","label":"Tagline","description":"A short phrase shown under the logo (e.g. \"reliable. skilled. on time.\")","type":"string","required":false,"example":"reliable. skilled. on time.","default":"reliable. skilled. on time."},{"key":"locationName","label":"Location Name","description":"The display name for this specific location (e.g. \"Summit Home Services — Denver Metro\")","type":"string","required":true,"example":"Summit Home Services — Denver Metro"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this location used in booking links (e.g. \"denver-metro\")","type":"string","required":true,"example":"denver-metro"},{"key":"address","label":"Street Address","description":"Street address of your office or shop (e.g. \"1420 Larimer St, Unit B\")","type":"address","required":true,"example":"1420 Larimer St, Unit B"},{"key":"city","label":"City","description":"City where your business is based","type":"string","required":true,"example":"Denver"},{"key":"state","label":"State / Province","description":"Two-letter state or province code","type":"string","required":true,"example":"CO"},{"key":"zip","label":"ZIP / Postal Code","type":"string","required":true,"example":"80202"},{"key":"timezone","label":"Timezone","description":"IANA timezone for this location (used for scheduling)","type":"timezone","required":true,"example":"America/Denver","default":"America/New_York"},{"key":"phone","label":"Phone Number","type":"phone","required":true,"example":"(303) 555-0187"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"dispatch@summithomeservices.com"},{"key":"serviceArea","label":"Service Area","description":"Geographic radius or zone description for where you dispatch technicians (e.g. \"20-mile radius from Denver Metro\")","type":"string","required":true,"example":"20-mile radius from Denver Metro","default":"20-mile radius"}],"shared":{"industry":"home-services","category":"hospitality","glossary":{"service call":"A dispatched visit to a customer's home to diagnose or repair an issue, often with a flat-rate trip charge","change order":"An amendment to the original scope of work after the job has started, requiring customer approval before proceeding","rough-in":"The initial phase of plumbing or electrical work done before walls are closed up, typically during new construction or remodels","callback":"A return visit to address an issue with a previously completed job, usually covered under warranty at no additional charge","dispatch":"The process of assigning a technician to a job based on location, availability, skill set, and urgency","flat rate":"A fixed price for a defined scope of work regardless of time spent, commonly used for standard repairs and maintenance tasks"},"aiExpertise":["home services operations and field service management","technician scheduling, routing, and dispatch optimization","plumbing, electrical, cleaning, and general handyman services","parts inventory management and reorder workflows","customer communication and service area coverage planning"],"dataModelHints":["booking","experience","time_slot","staff","customer","inventory_item","transaction","service_area"],"dataModel":{"entities":[{"domain":"location","type":"Location","description":"The home base office or shop where technicians report, parts are stored, and dispatch operations are coordinated.","products":{"workshop":{"view":"graph","icon":"📍"},"venue":{"mapsTo":"LocationMeta","pos":false}}},{"domain":"booking","type":"Event","description":"A scheduled or emergency service appointment at a customer's home — plumbing repair, electrical work, cleaning, or handyman task — with an assigned technician.","products":{"workshop":{"view":"board","icon":"📅"},"venue":{"mapsTo":"BookingMeta","pos":true},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"time_slot","type":"Event","description":"An available service window for a technician, typically a morning or afternoon block accounting for travel time between jobs.","products":{"workshop":{"view":"timeline","icon":"🕐"},"venue":{"mapsTo":"TimeSlotMeta","pos":false}}},{"domain":"experience","type":"Product","description":"A service type such as Emergency Repair, Scheduled Service, Home Inspection, Maintenance Plan Visit, or Estimate — each with pricing and duration range.","products":{"workshop":{"view":"gallery","icon":"🔧"},"venue":{"mapsTo":"ExperienceMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"customer","type":"Person","description":"A homeowner or property manager with service history, property details, and preferred technician assignments.","products":{"workshop":{"view":"board","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"staff","type":"Person","description":"A lead technician, technician, apprentice, dispatcher, or office manager with their own schedule, certifications, and assigned service zones.","products":{"workshop":{"view":"board","icon":"👷"},"venue":{"mapsTo":"StaffMeta","pos":false},"academy":{"mapsTo":"instructor","assessable":false}}},{"domain":"transaction","type":"Measurement","description":"A revenue or refund record for a completed service call, always stored in cents.","products":{"workshop":{"view":"timeline","icon":"💳"},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"inventory_item","type":"Thing","description":"A part, tool, or supply used on service calls — pipe fittings, wire, cleaning chemicals, or safety gear — tracked for truck stock and reorder.","products":{"workshop":{"view":"graph","icon":"📦"},"venue":{"mapsTo":"InventoryItemMeta","pos":false},"academy":{"mapsTo":"material","assessable":false}}},{"domain":"service_area","type":"Place","description":"A geographic coverage zone defining where technicians are dispatched, with boundaries based on ZIP codes, city limits, or radius from base.","products":{"workshop":{"view":"graph","icon":"🗺️"},"venue":{"mapsTo":"PlaceMeta","pos":false}}},{"domain":"content_page","type":"Document","description":"A CMS-managed page such as Services, Service Areas, About Us, or FAQ.","products":{"workshop":{"view":"board","icon":"📄"},"venue":{"mapsTo":"ContentPageMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}},{"domain":"blog_post","type":"Document","description":"A published post featuring home maintenance tips, seasonal checklists, or before-and-after project showcases.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"customer","to":"booking","verb":"Creates","description":"Homeowner or property manager requests a service appointment at their property."},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific service type (emergency repair, scheduled service, inspection, etc.)."},{"from":"booking","to":"time_slot","verb":"ParticipatesIn","description":"Booking occupies a specific time window in a technician's daily schedule."},{"from":"experience","to":"time_slot","verb":"OccursAt","description":"A service type is available at scheduled time slots for customer booking."},{"from":"staff","to":"time_slot","verb":"ParticipatesIn","description":"A technician is assigned to a time slot and dispatched to the customer's location."},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Service calls consume parts and supplies tracked for truck stock replenishment."},{"from":"transaction","to":"booking","verb":"References","description":"Payment or refund record links back to the completed service appointment."},{"from":"staff","to":"service_area","verb":"ParticipatesIn","description":"Technician is assigned to specific service zones based on location and expertise."},{"from":"booking","to":"service_area","verb":"OccursAt","description":"Job site falls within a defined service coverage zone for dispatch routing."}]},"suggestions":[{"label":"Technician utilization today","prompt":"Show me today's schedule for all technicians — who has open slots and who's overbooked?"},{"label":"Revenue by service type","prompt":"Break down revenue across emergency repairs, scheduled services, inspections, and maintenance plans for this month"},{"label":"Parts inventory levels","prompt":"Which parts and supplies are running low and need to be reordered for truck stock?"},{"label":"Service area coverage","prompt":"Map out our current service area coverage and identify any gaps in technician availability by zone"}]},"workshop":{"aiPersona":{"role":"You are the AI assistant for a home services company. You help dispatchers, technicians, and office managers schedule jobs, track parts inventory, manage service areas, and optimize technician routing. You understand the trades — from emergency plumbing calls to routine maintenance contracts.","expertise":["technician scheduling and dispatch optimization","plumbing, electrical, cleaning, and handyman operations","parts and supplies inventory management","service area coverage and routing","customer communication and job follow-up"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["service call or job mentioned","technician or crew introduced","parts or supplies referenced","customer or property discussed","service area or zone mentioned"],"typeMapping":{"booking":"event","service call":"event","appointment":"event","time slot":"event","technician":"person","plumber":"person","electrician":"person","dispatcher":"person","customer":"person","homeowner":"person","property manager":"person","part":"thing","tool":"thing","supply":"thing","experience":"product","service type":"product","transaction":"measurement","service area":"place"}},"relationshipPatterns":[{"from":"customer","to":"booking","verb":"Creates","description":"Customer requests a service call at their property"},{"from":"staff","to":"booking","verb":"ParticipatesIn","description":"Technician is dispatched to the job site to perform the service"},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific service (emergency repair, scheduled, inspection)"},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Service calls consume parts and supplies from truck stock"}],"rules":["Emergency service calls take priority and must be dispatched within the hour","Each technician's daily route should minimize travel time between job sites","Parts used on a job must be logged for accurate invoicing and inventory tracking"]},"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"board"},"qualityGates":{"projectChecks":["All service types have accurate pricing and duration ranges configured","Each technician has certifications and assigned service zones on file","Parts inventory reorder thresholds are set for all high-usage categories"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Dispatch Board","view":"board","entityTypes":["booking","time_slot"],"description":"Today's job schedule with technician assignments, priority flags, and service details"},{"name":"Customer Directory","view":"gallery","entityTypes":["customer"],"description":"Customer profiles with property details, service history, and preferred technicians"},{"name":"Revenue by Service","view":"stats","entityTypes":["transaction"],"description":"Revenue breakdown across emergency repairs, scheduled services, inspections, and maintenance plans"},{"name":"Staff Schedule","view":"board","entityTypes":["staff","time_slot"],"description":"Technician availability with zone assignments and daily route planning"},{"name":"Parts Inventory","view":"tree","entityTypes":["inventory_item"],"description":"Parts and supplies organized by category with truck stock levels and reorder status"}]}},"academy":{"skillPath":"trade-skills-fundamentals","level":"beginner","learningObjectives":["Understanding residential plumbing systems — supply lines, drain-waste-vent, and fixture connections","Basic electrical safety — panel identification, circuit testing, and lockout-tagout procedures","Cleaning best practices — chemical safety, surface compatibility, and time-efficient workflows","Customer communication — setting expectations, explaining scope of work, and handling change orders","Tool identification and proper use across plumbing, electrical, and general repair trades"],"assessmentTypes":["hands-on"],"mode":"apprenticeship","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"direct","encouragementLevel":"challenging","flashcardsEnabled":false},"certification":{"requiresHumanCertifier":true,"aiCertifierAllowed":false,"lineageEnabled":true,"minimumLineageDepth":2,"certificationSlug":"home-services-technician"},"gamification":{"enabled":true,"achievements":["chain-maker","deep-thinker","bridge-builder"],"streaks":false,"leaderboard":false},"cohort":{"maxSize":4,"durationDays":120,"fixedStart":false}},"venue":{"bookingNumberPrefix":"HS","subdomainPrefix":"homeservices","features":{"animals":false,"adoption":false,"memories":false,"loyalty":false,"giftCards":false,"waivers":false,"blog":true,"pos":true,"cms":true,"partners":false,"franchise":false,"customerAccounts":true,"booking":true,"inventory":true,"support":true,"analytics":true,"website":true},"theme":{"primary":"oklch(0.45 0.12 250)","bgBase":"oklch(0.98 0.005 250)","accent":"oklch(0.65 0.18 55)","textPrimary":"oklch(0.20 0.03 250)","displayFont":"Inter","bodyFont":"Inter"},"experienceTypes":[{"slug":"emergency-repair","name":"Emergency Repair","description":"Same-day emergency service call for urgent plumbing, electrical, or structural issues. Includes diagnostic assessment and immediate repair if parts are on truck.","priceInCents":15000,"durationMinutes":90,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.55 0.18 25)","sessionAttributeDefinitions":[{"key":"technicianName","label":"Technician Name","type":"text","perGuest":false,"required":false},{"key":"jobNotes","label":"Job Notes","type":"text","perGuest":false,"required":false},{"key":"partsUsed","label":"Parts Used","type":"text","perGuest":false,"required":false}]},{"slug":"scheduled-service","name":"Scheduled Service","description":"Pre-booked service appointment for non-emergency plumbing, electrical, cleaning, or general repair work. Arrival within a 2-hour window.","priceInCents":12500,"durationMinutes":120,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.50 0.12 250)","sessionAttributeDefinitions":[{"key":"technicianName","label":"Technician Name","type":"text","perGuest":false,"required":false},{"key":"jobNotes","label":"Job Notes","type":"text","perGuest":false,"required":false},{"key":"partsUsed","label":"Parts Used","type":"text","perGuest":false,"required":false}]},{"slug":"home-inspection","name":"Home Inspection","description":"Comprehensive walkthrough of plumbing, electrical, and general home systems. Delivers a written report with findings and recommended repairs.","priceInCents":20000,"durationMinutes":120,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.55 0.10 160)","sessionAttributeDefinitions":[{"key":"technicianName","label":"Technician Name","type":"text","perGuest":false,"required":false},{"key":"jobNotes","label":"Job Notes","type":"text","perGuest":false,"required":false},{"key":"inspectionReport","label":"Inspection Report","type":"text","perGuest":false,"required":false}]},{"slug":"maintenance-plan-visit","name":"Maintenance Plan Visit","description":"Recurring preventive maintenance visit for plan subscribers — seasonal HVAC check, drain cleaning, electrical panel inspection, or general home upkeep.","priceInCents":8500,"durationMinutes":60,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":3,"color":"oklch(0.58 0.10 140)","sessionAttributeDefinitions":[{"key":"technicianName","label":"Technician Name","type":"text","perGuest":false,"required":false},{"key":"jobNotes","label":"Job Notes","type":"text","perGuest":false,"required":false},{"key":"maintenanceChecklist","label":"Maintenance Checklist","type":"text","perGuest":false,"required":false}]},{"slug":"estimate-consultation","name":"Estimate / Consultation","description":"Free on-site visit to assess the scope of work, provide a written estimate, and discuss options with the homeowner. No charge, no obligation.","priceInCents":0,"durationMinutes":30,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":4,"color":"oklch(0.60 0.08 220)","sessionAttributeDefinitions":[{"key":"technicianName","label":"Technician Name","type":"text","perGuest":false,"required":false},{"key":"jobNotes","label":"Job Notes","type":"text","perGuest":false,"required":false},{"key":"estimateAmount","label":"Estimate Amount","type":"text","perGuest":false,"required":false}]}],"inventoryCategories":[{"id":"plumbing-parts","label":"Plumbing Parts","icon":"🚿"},{"id":"electrical-components","label":"Electrical Components","icon":"⚡"},{"id":"cleaning-supplies","label":"Cleaning Supplies","icon":"🧹"},{"id":"tools-equipment","label":"Tools & Equipment","icon":"🔧"},{"id":"safety-gear","label":"Safety Gear","icon":"🦺"}],"staffRoles":[{"id":"lead-technician","label":"Lead Technician","defaultCapabilities":["checkin","pos","session-log","inventory-view","dispatch-view"]},{"id":"technician","label":"Technician","defaultCapabilities":["checkin","pos","session-log","inventory-view"]},{"id":"apprentice","label":"Apprentice","defaultCapabilities":["session-log"]},{"id":"dispatcher","label":"Dispatcher","defaultCapabilities":["checkin","bookings-view","dispatch-view","schedule-view"]},{"id":"office-manager","label":"Office Manager","defaultCapabilities":["checkin","pos","bookings-view","inventory-view","schedule-view"]}],"chatSuggestions":[{"label":"Schedule a service","message":"I need to schedule a home service. What types of work do you handle?","emoji":"🔧"},{"label":"Emergency repair","message":"I have an urgent issue at my home. Can you send someone today?","emoji":"🚨"},{"label":"Get an estimate","message":"I'd like a free estimate for some work at my house. How do I set that up?","emoji":"📋"},{"label":"Maintenance plan","message":"Tell me about your maintenance plans. What's included and how often do you visit?","emoji":"🛡️"}],"inventoryLevelDetection":"manual","stations":[{"id":"pos","label":"Point of Sale","route":"/api/manage/pos","icon":"💳","roles":["staff","manager","owner"],"scope":"platform","context":"physical"},{"id":"bookings","label":"Bookings","route":"/api/manage/bookings","icon":"📅","roles":["manager","owner"],"scope":"platform","context":"both"},{"id":"schedule","label":"Schedule","route":"/api/manage/schedule","icon":"🗓️","roles":["manager","owner"],"scope":"platform","context":"both"},{"id":"customers","label":"Customers","route":"/api/manage/customers","icon":"👥","roles":["manager","owner"],"scope":"platform","context":"both"},{"id":"inventory","label":"Inventory","route":"/api/manage/inventory","icon":"📦","roles":["manager","owner"],"scope":"platform","context":"both"},{"id":"financials","label":"Financials","route":"/api/manage/financials","icon":"💰","roles":["owner"],"scope":"platform","context":"both"},{"id":"staff","label":"Staff","route":"/api/manage/staff","icon":"👤","roles":["owner"],"scope":"platform","context":"both"},{"id":"analytics","label":"Analytics","route":"/api/manage/analytics","icon":"📊","roles":["manager","owner"],"scope":"platform","context":"both"},{"id":"settings","label":"Settings","route":"/api/manage/settings","icon":"⚙️","roles":["owner"],"scope":"platform","context":"both"},{"id":"dispatch-board","label":"Dispatch Board","route":"/api/manage/dispatch-board","icon":"🚐","roles":["manager","owner"],"scope":"kit","context":"both"}],"fees":{"billingModel":"per-transaction","feeMode":"all-channels"}}}