{"kits":[{"id":"clay-and-co","type":"soulcraft","role":"primary","status":"released","name":"Clay & Co.","description":"Pottery and ceramics studio. Guests throw on the wheel, handbuild, glaze, and fire — taking home a unique piece they made with their own hands.","longDescription":"A ceramics studio platform managing wheel throwing classes, handbuilding workshops, glaze sessions, and private pottery parties. Handles multi-session firing workflows, kiln scheduling, and pickup coordination for pieces guests take home after firing.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🏺","tags":["pottery","ceramics","wheel throwing","handbuilding","glaze","craft","experience"],"previewImageUrl":"kits/clay-and-co/images/preview.webp","variables":[{"key":"businessName","label":"Business Name","description":"The name of your pottery studio (e.g. \"Clay & Co.\")","type":"string","required":true,"example":"Clay & Co.","default":"Clay & Co."},{"key":"tagline","label":"Tagline","description":"A short phrase describing your studio (shown under the logo)","type":"string","required":false,"example":"throw. glaze. fire.","default":"throw. glaze. fire."},{"key":"locationName","label":"Location Name","description":"The display name for this specific location (e.g. \"Clay & Co. Midtown\")","type":"string","required":true,"example":"Clay & Co. Midtown"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this location used in booking links (e.g. \"midtown\")","type":"string","required":true,"example":"midtown"},{"key":"address","label":"Street Address","description":"Street address of your studio","type":"address","required":true,"example":"312 Pearl St"},{"key":"city","label":"City","description":"City where your studio is located","type":"string","required":true,"example":"Burlington"},{"key":"state","label":"State / Province","description":"Two-letter state or province code","type":"string","required":true,"example":"VT"},{"key":"zip","label":"ZIP / Postal Code","type":"string","required":true,"example":"05401"},{"key":"timezone","label":"Timezone","description":"IANA timezone for this location (used for scheduling)","type":"timezone","required":true,"example":"America/New_York","default":"America/New_York"},{"key":"phone","label":"Phone Number","type":"phone","required":true,"example":"(802) 555-0147"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"hello@clayandco.com"},{"key":"instagram","label":"Instagram Handle","description":"Instagram username without the @","type":"string","required":false,"example":"clayandco_studio"},{"key":"facebook","label":"Facebook Page","description":"Facebook page name or URL slug","type":"string","required":false,"example":"ClayAndCoStudio"},{"key":"tiktok","label":"TikTok Handle","description":"TikTok username without the @","type":"string","required":false,"example":"clayandco_studio"},{"key":"maxCapacity","label":"Pottery Studio Capacity","description":"Maximum number of guests at pottery stations at one time","type":"number","required":false,"example":"10","default":"10"},{"key":"kilnType","label":"Kiln Type(s)","description":"Types of firing available (e.g., 'Electric, Raku')","type":"string","required":false,"example":"Electric, Gas"}],"shared":{"industry":"pottery-studio","category":"creative","glossary":{"bisque":"A piece that has been fired once without glaze — ready for glazing before the final glaze firing","centering":"The first step of wheel throwing — pushing clay to the exact center of the spinning wheel","glaze":"A glass-like coating applied to bisqueware that fuses to the clay surface during the final firing","kiln":"A high-temperature oven used to fire clay, typically reaching 1800–2400°F","slip":"A liquid clay mixture used as glue for joining clay pieces or as a surface decoration"},"aiExpertise":["pottery techniques and ceramics instruction","kiln scheduling and firing workflow management","studio capacity and wheel utilization","clay and glaze inventory management","multi-session piece pickup coordination"],"dataModelHints":["booking","experience","time_slot","staff","customer","inventory_item"],"dataModel":{"entities":[{"domain":"location","type":"Location","description":"A physical Clay & Co. ceramics studio with pottery wheels, kiln, and handbuilding stations.","products":{"workshop":{"view":"graph","icon":"📍"},"venue":{"mapsTo":"LocationMeta","pos":false}}},{"domain":"booking","type":"Event","description":"A guest reservation for a wheel throwing class, handbuilding workshop, glaze session, private pottery party, or date night.","products":{"workshop":{"view":"board","icon":"📅"},"venue":{"mapsTo":"BookingMeta","pos":true},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"time_slot","type":"Event","description":"A scheduled pottery session with wheel or station capacity, instructor assignment, and available spots.","products":{"workshop":{"view":"timeline","icon":"🕐"},"venue":{"mapsTo":"TimeSlotMeta","pos":false}}},{"domain":"experience","type":"Product","description":"A session type such as Wheel Throwing Class, Handbuilding Workshop, Glaze & Fire Session, Private Pottery Party, or Date Night Pottery.","products":{"workshop":{"view":"gallery","icon":"🏺"},"venue":{"mapsTo":"ExperienceMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"customer","type":"Person","description":"A studio guest who attends pottery classes and may return to pick up fired pieces.","products":{"workshop":{"view":"board","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"staff","type":"Person","description":"A Pottery Instructor who guides sessions on the wheel or at handbuilding tables, or a Studio Assistant.","products":{"workshop":{"view":"board","icon":"🧑‍🎨"},"venue":{"mapsTo":"StaffMeta","pos":false},"academy":{"mapsTo":"instructor","assessable":false}}},{"domain":"inventory_item","type":"Thing","description":"A studio supply such as clay, glazes, kiln supplies, pottery tools, or pickup packaging.","products":{"workshop":{"view":"graph","icon":"📦"},"venue":{"mapsTo":"InventoryItemMeta","pos":false},"academy":{"mapsTo":"material","assessable":false}}},{"domain":"gift_card","type":"Thing","description":"A digital or physical gift card redeemable for pottery classes or private party bookings.","products":{"workshop":{"view":"board","icon":"🎁"},"venue":{"mapsTo":"GiftCardMeta","pos":true}}},{"domain":"loyalty_account","type":"Person","description":"A repeat student's loyalty account tracking class visits and points earned toward future sessions.","products":{"workshop":{"view":"stats","icon":"⭐"},"venue":{"mapsTo":"LoyaltyAccountMeta","pos":false}}},{"domain":"transaction","type":"Measurement","description":"A revenue or refund record for a pottery session booking, always stored in cents.","products":{"workshop":{"view":"timeline","icon":"💳"},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"content_page","type":"Document","description":"A CMS-managed page such as About the Studio, The Firing Process, or Private Party Details.","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 covering pottery techniques, glazing inspiration, kiln fire results, or studio stories.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"customer","to":"booking","verb":"Creates","description":"Guest books a wheel throwing class, handbuilding session, glaze session, or private party."},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific pottery experience type with piece type and clay selection."},{"from":"booking","to":"time_slot","verb":"ParticipatesIn","description":"Booking occupies a pottery station in a specific scheduled session."},{"from":"experience","to":"time_slot","verb":"OccursAt","description":"A pottery experience type is offered at scheduled session slots."},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Sessions consume clay, glaze, and kiln supplies per guest for COGS tracking.","products":{"venue":{"triggers":"inventoryDeduction"}}},{"from":"staff","to":"time_slot","verb":"ParticipatesIn","description":"A Pottery Instructor is assigned to guide a specific class or session."},{"from":"transaction","to":"booking","verb":"References","description":"Payment or refund record links back to the pottery session booking it covers."}]},"suggestions":[{"label":"Kiln schedule","prompt":"Show me the kiln firing schedule for the next two weeks and which pieces are waiting"},{"label":"Pieces ready for pickup","prompt":"Which fired pieces are ready for customer pickup and haven't been claimed yet?"},{"label":"Clay inventory check","prompt":"How much clay of each type is in stock? Are we running low on anything?"},{"label":"Class enrollment overview","prompt":"Show me enrollment across all class types this month and remaining capacity"}]},"workshop":{"aiPersona":{"role":"You are the AI assistant for Clay & Co. — a pottery and ceramics studio. You help manage class schedules, kiln firing queues, clay inventory, and the multi-session workflow from throwing to pickup.","expertise":["pottery and ceramics studio operations","wheel throwing and handbuilding instruction","kiln scheduling and firing workflows","glaze inventory and supply management","private party and date night coordination"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["pottery class or throwing session mentioned","clay type or glaze color referenced","kiln firing or bisque discussed","instructor or student introduced","piece type or form described"],"typeMapping":{"booking":"event","class":"event","firing":"event","instructor":"person","customer":"person","clay":"thing","glaze":"thing","kiln":"thing","experience":"product","transaction":"measurement"}},"relationshipPatterns":[{"from":"customer","to":"booking","verb":"Creates","description":"Customer books a wheel throwing, handbuilding, or glaze session"},{"from":"staff","to":"booking","verb":"ParticipatesIn","description":"Pottery instructor guides the session"},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific pottery experience type"},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Clay, glaze, and kiln supplies consumed per session"}],"rules":["Wheel throwing bookings should track piece type and clay type per guest","Glaze sessions require a previously bisque-fired piece — confirm before booking","Kiln firing schedule should be updated whenever a new piece is submitted"]},"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"graph"},"qualityGates":{"projectChecks":["Kiln type and capacity is configured in venue settings","All clay and glaze inventory items are linked to consuming experience types","Pickup notification workflow is set up for fired pieces"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Firing Schedule","view":"timeline","entityTypes":["time_slot","event"],"description":"Kiln firing events and piece readiness timeline"},{"name":"Student Gallery","view":"gallery","entityTypes":["customer"],"description":"Customer profiles with piece history and visit frequency"},{"name":"Kiln Utilization","view":"stats","entityTypes":["time_slot"],"description":"Kiln load rates, firing frequency, and capacity trends"},{"name":"Supply Inventory","view":"board","entityTypes":["inventory_item"],"description":"Clay, glaze, and kiln supply levels with reorder status"},{"name":"Class Bookings","view":"board","entityTypes":["booking","experience"],"description":"Bookings by experience type with enrollment and capacity"}]}},"academy":{"skillPath":"ceramics-hand-building","level":"beginner","learningObjectives":["Centering clay and preparing it for hand-building or the wheel","Coil building, slab rolling, and pinching techniques","Surface smoothing, joining, and structural integrity","Glaze application methods and color layering","Understanding the firing process from greenware to final piece"],"assessmentTypes":["hands-on","portfolio"],"mode":"classroom","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":false,"voiceEnabled":true},"certification":{"requiresHumanCertifier":true,"aiCertifierAllowed":false,"lineageEnabled":true,"certificationSlug":"ceramics-artist"},"gamification":{"enabled":true,"achievements":["connector","streak","bridge-builder"],"streaks":true,"leaderboard":true},"cohort":{"maxSize":20,"durationDays":42,"fixedStart":true}},"venue":{"bookingNumberPrefix":"CY","subdomainPrefix":"clay","features":{"animals":false,"adoption":false,"memories":true,"loyalty":true,"giftCards":true,"waivers":false,"blog":true,"pos":true,"cms":true,"partners":true,"franchise":true,"customerAccounts":true},"theme":{"primary":"oklch(0.55 0.08 40)","bgBase":"oklch(0.97 0.02 60)","accent":"oklch(0.65 0.10 30)","textPrimary":"oklch(0.25 0.03 40)","displayFont":"Libre Baskerville","bodyFont":"Inter"},"experienceTypes":[{"slug":"wheel-throwing","name":"Wheel Throwing Class","description":"Learn to center clay and pull up walls on the pottery wheel. No experience needed — our instructors guide you every step of the way. You'll leave with a piece ready for firing.","priceInCents":5500,"durationMinutes":90,"minGuests":1,"maxGuests":8,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.65 0.10 40)","imageUrl":"kits/clay-and-co/images/wheel-throwing-class.jpg","sessionAttributeDefinitions":[{"key":"pieceType","label":"Piece Type","type":"select","perGuest":true,"options":["bowl","vase","mug","cup","planter"],"required":false},{"key":"clayType","label":"Clay Type","type":"select","perGuest":false,"options":["standard","stoneware","porcelain"],"required":false}]},{"slug":"handbuilding","name":"Handbuilding Workshop","description":"Create without the wheel — coil, slab, and pinch your way to a unique ceramic piece. Great for all ages and skill levels. No spinning required.","priceInCents":4500,"durationMinutes":120,"minGuests":1,"maxGuests":12,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.68 0.09 50)","imageUrl":"kits/clay-and-co/images/handbuilding-workshop.svg","sessionAttributeDefinitions":[{"key":"pieceType","label":"Piece Type","type":"select","perGuest":true,"options":["bowl","tile","planter","sculpture","mug"],"required":false},{"key":"clayType","label":"Clay Type","type":"select","perGuest":false,"options":["standard","stoneware","porcelain"],"required":false}]},{"slug":"glaze-and-fire","name":"Glaze & Fire Session","description":"Already have a bisque-fired piece? Come in to glaze and submit for final firing. Choose from our full palette of studio glazes — glossy, matte, satin, and everything in between.","priceInCents":3500,"durationMinutes":60,"minGuests":1,"maxGuests":12,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.60 0.12 30)","imageUrl":"kits/clay-and-co/images/glaze-fire-session.svg","sessionAttributeDefinitions":[{"key":"glazeColors","label":"Glaze Colors","type":"text","perGuest":true,"required":false},{"key":"firingType","label":"Firing Finish","type":"select","perGuest":true,"options":["glossy","matte","satin"],"required":false}]},{"slug":"private-pottery-party","name":"Private Pottery Party","description":"Full studio buyout for your group. Wheel throwing, handbuilding, or a mix — your party, your clay, your call. Perfect for birthdays, bachelorettes, team events, and corporate offsites.","priceInCents":6500,"durationMinutes":150,"minGuests":6,"maxGuests":12,"requiresWaiver":false,"isCombo":false,"sortOrder":3,"color":"oklch(0.58 0.08 355)","imageUrl":"kits/clay-and-co/images/private-pottery-party.svg","pricingTiers":[{"minGuests":6,"maxGuests":8,"pricePerPersonInCents":6500},{"minGuests":9,"maxGuests":12,"pricePerPersonInCents":5500}],"sessionAttributeDefinitions":[{"key":"pieceType","label":"Piece Type","type":"select","perGuest":true,"options":["bowl","vase","mug","cup","planter"],"required":false},{"key":"clayType","label":"Clay Type","type":"select","perGuest":false,"options":["standard","stoneware","porcelain"],"required":false},{"key":"partyTheme","label":"Party Theme","type":"text","perGuest":false,"required":false}]},{"slug":"date-night-pottery","name":"Date Night Pottery","description":"Side-by-side wheel throwing for two. No experience needed — just bring your patience and your person. You'll each make a piece to take home after firing.","priceInCents":5000,"durationMinutes":120,"minGuests":2,"maxGuests":2,"requiresWaiver":false,"isCombo":false,"sortOrder":4,"color":"oklch(0.62 0.09 20)","imageUrl":"kits/clay-and-co/images/date-night-pottery.svg","sessionAttributeDefinitions":[{"key":"pieceType","label":"Piece Type","type":"select","perGuest":true,"options":["bowl","vase","mug","cup","planter"],"required":false},{"key":"clayType","label":"Clay Type","type":"select","perGuest":false,"options":["standard","stoneware","porcelain"],"required":false}]}],"inventoryCategories":[{"id":"clay","label":"Clay & Slip","icon":"🏺"},{"id":"glaze","label":"Glazes & Stains","icon":"🎨"},{"id":"kiln-supplies","label":"Kiln Supplies","icon":"🔥"},{"id":"tools","label":"Pottery Tools","icon":"🔨"},{"id":"wheel","label":"Pottery Wheels","icon":"⚙️"},{"id":"apron","label":"Aprons & Coveralls","icon":"👘"},{"id":"packaging","label":"Pickup Packaging","icon":"📦"},{"id":"retail","label":"Retail Products","icon":"🛍️"}],"staffRoles":[{"id":"pottery-instructor","label":"Pottery Instructor","defaultCapabilities":["checkin","pos","inventory-view","session-log"]},{"id":"studio-assistant","label":"Studio Assistant","defaultCapabilities":["checkin","pos"]}],"chatSuggestions":[{"label":"Book a class","message":"I'd like to book a pottery class. What are my options?","emoji":"🏺"},{"label":"Tell me about wheel throwing","message":"Tell me about the wheel throwing class. Do I need any experience?","emoji":"⚙️"},{"label":"How does the multi-session process work?","message":"How does the pottery process work? How long until I can pick up my piece?","emoji":"🔥"},{"label":"Gift cards","message":"I'm interested in buying a gift card. What options do you have?","emoji":"🎁"}],"inventoryLevelDetection":"manual","fees":{"billingModel":"per-transaction","feeMode":"all-channels"}}},{"id":"pour-house","type":"soulcraft","role":"primary","status":"released","name":"The Pour House","description":"Wine and beer tasting room. Guided flights, sommelier-led pairings, and intimate tasting events in an elegant atmosphere.","longDescription":"A tasting room and mixology studio platform for wine flights, beer tastings, guided pairings, and private tasting events. Manages sommelier scheduling, beverage inventory, and event bookings for intimate group experiences.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🍹","tags":["wine","beer","tasting","sommelier","pairing","flight","experience"],"previewImageUrl":"kits/pour-house/images/preview.webp","variables":[{"key":"businessName","label":"Business Name","description":"The name of your tasting room (e.g. \"The Pour House\")","type":"string","required":true,"example":"The Pour House","default":"The Pour House"},{"key":"tagline","label":"Tagline","description":"A short phrase shown under the logo on the website","type":"string","required":false,"example":"sip. discover. savor.","default":"sip. discover. savor."},{"key":"locationName","label":"Location Name","description":"The display name for this specific location (e.g. \"The Pour House Midtown\")","type":"string","required":true,"example":"The Pour House Midtown"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this location used in booking links (e.g. \"midtown\")","type":"string","required":true,"example":"midtown"},{"key":"address","label":"Street Address","description":"Street address of your tasting room","type":"address","required":true,"example":"218 S. Tryon St"},{"key":"city","label":"City","description":"City where your tasting room is located","type":"string","required":true,"example":"Charlotte"},{"key":"state","label":"State / Province","description":"Two-letter state or province code","type":"string","required":true,"example":"NC"},{"key":"zip","label":"ZIP / Postal Code","type":"string","required":true,"example":"28202"},{"key":"timezone","label":"Timezone","description":"IANA timezone for this location (used for scheduling)","type":"timezone","required":true,"example":"America/New_York","default":"America/New_York"},{"key":"phone","label":"Phone Number","type":"phone","required":true,"example":"(704) 555-0182"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"hello@thepourhouse.com"},{"key":"instagram","label":"Instagram Handle","description":"Instagram username without the @","type":"string","required":false,"example":"thepourhouse"},{"key":"facebook","label":"Facebook Page","description":"Facebook page name or URL slug","type":"string","required":false,"example":"ThePourHouse"},{"key":"tiktok","label":"TikTok Handle","description":"TikTok username without the @","type":"string","required":false,"example":"thepourhouse"},{"key":"maxCapacity","label":"Tasting Room Capacity","description":"Maximum number of guests the tasting room can seat at one time","type":"number","required":false,"example":"24","default":"24"},{"key":"sommelierName","label":"Lead Sommelier / Host Name","description":"Name of the lead sommelier or tasting host (shown on About page and in guest letters)","type":"string","required":false,"example":"Alex Renaud, CS"}],"shared":{"industry":"mixology-studio","category":"hospitality","glossary":{"flight":"A curated set of small pours (typically 3–5) designed to be tasted side-by-side and compared","varietal":"A wine made from a single grape variety (e.g. Cabernet Sauvignon, Chardonnay)","terroir":"The combination of climate, soil, and geography that gives a wine its distinctive character","cicerone":"A certified beer professional equivalent to a wine sommelier — guides guests through craft beer tastings","pairing":"Matching a specific wine, beer, or spirit to a food item based on complementary or contrasting flavor profiles"},"aiExpertise":["wine and beverage program management","sommelier-led tasting event design","cellar and inventory management","private event coordination and group tastings","food and beverage pairing principles"],"dataModelHints":["booking","experience","time_slot","staff","customer","inventory_item"],"dataModel":{"entities":[{"domain":"location","type":"Location","description":"A physical Pour House tasting room with a curated cellar, sommelier station, and private event space.","products":{"workshop":{"view":"graph","icon":"📍"},"venue":{"mapsTo":"LocationMeta","pos":false}}},{"domain":"booking","type":"Event","description":"A guest reservation for a wine flight, beer tasting, guided pairing, private tasting, or winemaker dinner.","products":{"workshop":{"view":"board","icon":"📅"},"venue":{"mapsTo":"BookingMeta","pos":true},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"time_slot","type":"Event","description":"A scheduled tasting session with seating capacity, flight selection, and sommelier assignment.","products":{"workshop":{"view":"timeline","icon":"🕐"},"venue":{"mapsTo":"TimeSlotMeta","pos":false}}},{"domain":"experience","type":"Product","description":"A tasting format such as Wine Flight, Beer Tasting, Guided Pairing, Private Tasting, or Winemaker Dinner.","products":{"workshop":{"view":"gallery","icon":"🍷"},"venue":{"mapsTo":"ExperienceMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"customer","type":"Person","description":"A tasting room guest, wine club member, or corporate client booking private or group events.","products":{"workshop":{"view":"board","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"staff","type":"Person","description":"A Sommelier who designs and hosts tastings and pairings, or a Tasting Host who manages service.","products":{"workshop":{"view":"board","icon":"🍾"},"venue":{"mapsTo":"StaffMeta","pos":false},"academy":{"mapsTo":"instructor","assessable":false}}},{"domain":"inventory_item","type":"Thing","description":"A cellar item such as wine bottles, craft beers, spirits, glassware, cheese, or charcuterie consumed per tasting.","products":{"workshop":{"view":"graph","icon":"📦"},"venue":{"mapsTo":"InventoryItemMeta","pos":false},"academy":{"mapsTo":"material","assessable":false}}},{"domain":"gift_card","type":"Thing","description":"A digital or physical gift card redeemable for tasting flights, private events, or retail bottle purchases.","products":{"workshop":{"view":"board","icon":"🎁"},"venue":{"mapsTo":"GiftCardMeta","pos":true}}},{"domain":"loyalty_account","type":"Person","description":"A returning guest's loyalty account tracking tastings attended and points earned, with perks for regulars.","products":{"workshop":{"view":"stats","icon":"⭐"},"venue":{"mapsTo":"LoyaltyAccountMeta","pos":false}}},{"domain":"transaction","type":"Measurement","description":"A revenue or refund record for a tasting booking or retail purchase, always stored in cents.","products":{"workshop":{"view":"timeline","icon":"💳"},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"content_page","type":"Document","description":"A CMS-managed page such as About Our Cellar, Our Sommeliers, or Private Event Information.","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 covering new arrivals, pairing guides, winemaker spotlights, or tasting event recaps.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"customer","to":"booking","verb":"Creates","description":"Guest books a tasting flight, guided pairing, private tasting, or winemaker dinner."},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific flight or tasting format with a defined varietal selection."},{"from":"booking","to":"time_slot","verb":"ParticipatesIn","description":"Booking occupies seats in a specific tasting session slot."},{"from":"experience","to":"time_slot","verb":"OccursAt","description":"A tasting format is offered at scheduled session slots open for booking."},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Tasting sessions consume wine and beer pours, cheese, and charcuterie per guest for cellar tracking.","products":{"venue":{"triggers":"inventoryDeduction"}}},{"from":"staff","to":"time_slot","verb":"ParticipatesIn","description":"A Sommelier or Tasting Host is assigned to lead a specific tasting session."},{"from":"transaction","to":"booking","verb":"References","description":"Payment or refund record links back to the tasting event or retail purchase."}]},"suggestions":[{"label":"Upcoming tasting schedule","prompt":"Show me all booked tastings for the next two weeks with guest counts"},{"label":"Cellar inventory","prompt":"What bottles are running low? Which wines should I reorder before the weekend?"},{"label":"Top-selling flights","prompt":"Which tasting flights are booked most often this month?"},{"label":"Private event pipeline","prompt":"Show me all upcoming private tastings and winemaker dinners with headcounts"}]},"workshop":{"aiPersona":{"role":"You are the AI assistant for The Pour House — a wine, beer, and cocktail tasting room. You help sommeliers and managers plan events, manage cellar inventory, and deliver exceptional guided tasting experiences.","expertise":["wine and craft beer program management","sommelier-led tasting event design","beverage inventory and cellar management","private dining and tasting event coordination","food and beverage pairing curriculum"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["tasting or flight booking mentioned","wine varietal or beer style referenced","sommelier or host introduced","food pairing or cheese board discussed","private event or winemaker dinner mentioned"],"typeMapping":{"booking":"event","tasting":"event","flight":"event","sommelier":"person","host":"person","customer":"person","wine":"thing","beer":"thing","spirit":"thing","experience":"product","transaction":"measurement"}},"relationshipPatterns":[{"from":"customer","to":"booking","verb":"Creates","description":"Guest books a tasting flight or private event"},{"from":"staff","to":"booking","verb":"ParticipatesIn","description":"Sommelier or tasting host guides the session"},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific flight or tasting format"},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Bottles and accompaniments consumed per tasting session"}],"rules":["Every session should record the flight name and varietals poured","Private events require a confirmed menu and wine selection before the session","Cellar inventory must be updated after each tasting event"]},"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"graph"},"qualityGates":{"projectChecks":["All flight experience types have varietal and pairing notes defined","Sommelier and host schedule is populated for the next 4 weeks","Cellar inventory is linked to consuming experience types"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Class Schedule","view":"board","entityTypes":["time_slot","booking"],"description":"Upcoming tasting events with guest counts and availability"},{"name":"Cocktail Menu","view":"gallery","entityTypes":["event"],"description":"Flights and tasting menus with booking history and ratings"},{"name":"Spirit Inventory","view":"board","entityTypes":["inventory_item"],"description":"Cellar stock levels for wines, beers, and spirits"},{"name":"Revenue by Class","view":"timeline","entityTypes":["transaction","booking"],"description":"Revenue trends broken down by experience type over time"},{"name":"Ingredient Network","view":"graph","entityTypes":["inventory_item","experience"],"description":"Graph of beverages and accompaniments consumed by each tasting type"}]}},"academy":{"skillPath":"mixology","level":"beginner","learningObjectives":["Cocktail structure: base spirit, modifier, and seasoning balance","Spirit selection and understanding flavor profiles by category","Muddling, shaking, and stirring technique for different drink types","Garnish selection and presentation principles"],"assessmentTypes":["hands-on","portfolio"],"mode":"apprenticeship","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"direct","encouragementLevel":"challenging","flashcardsEnabled":false},"certification":{"requiresHumanCertifier":true,"aiCertifierAllowed":false,"lineageEnabled":true,"minimumLineageDepth":2,"certificationSlug":"home-mixologist"},"gamification":{"enabled":true,"achievements":["chain-maker","deep-thinker","bridge-builder"],"streaks":false,"leaderboard":false},"cohort":{"maxSize":3,"durationDays":90,"fixedStart":false}},"venue":{"bookingNumberPrefix":"PH","subdomainPrefix":"pour","features":{"animals":false,"adoption":false,"memories":true,"loyalty":true,"giftCards":true,"waivers":false,"blog":true,"pos":true,"cms":true,"partners":true,"franchise":true,"customerAccounts":true},"theme":{"primary":"oklch(0.35 0.12 15)","bgBase":"oklch(0.97 0.01 50)","accent":"oklch(0.55 0.08 15)","textPrimary":"oklch(0.20 0.04 15)","displayFont":"Cormorant Garamond","bodyFont":"Inter"},"experienceTypes":[{"slug":"wine-flight","name":"Wine Flight","description":"Choose your flight — Old World, New World, or Sommelier's Pick. Four pours, guided by tasting notes and food pairings.","priceInCents":3000,"durationMinutes":60,"minGuests":1,"maxGuests":8,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.45 0.12 15)","imageUrl":"kits/pour-house/images/wine-flight.jpg","sessionAttributeDefinitions":[{"key":"flightName","label":"Flight Name","type":"select","perGuest":false,"options":["Old World Red","New World Red","Old World White","New World White","Rosé & Sparkling","Sommelier's Pick"],"required":true},{"key":"favoriteSelection","label":"Favorite Selection","type":"text","perGuest":true,"required":false}]},{"slug":"beer-tasting","name":"Beer Tasting","description":"A guided flight of 5 craft beers — from delicate lagers to complex barrel-aged stouts. Our cicerone walks you through each.","priceInCents":2500,"durationMinutes":60,"minGuests":1,"maxGuests":8,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.55 0.08 60)","imageUrl":"kits/pour-house/images/beer-tasting.jpg","sessionAttributeDefinitions":[{"key":"flightName","label":"Flight Name","type":"select","perGuest":false,"options":["Light & Bright","Hop Forward","Dark & Complex","Local Favorites","Seasonal Flight"],"required":true},{"key":"favoriteSelection","label":"Favorite Selection","type":"text","perGuest":true,"required":false}]},{"slug":"guided-pairing","name":"Guided Pairing","description":"Four wines paired with artisan cheese and charcuterie, guided by our sommelier. Learn why certain pairings work and others clash.","priceInCents":5500,"durationMinutes":90,"minGuests":2,"maxGuests":12,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.50 0.10 15)","imageUrl":"kits/pour-house/images/guided-pairing.jpg","sessionAttributeDefinitions":[{"key":"flightName","label":"Flight Name","type":"text","perGuest":false,"required":true},{"key":"varietals","label":"Varietals","type":"text","perGuest":false,"required":false},{"key":"tastingNotes","label":"Tasting Notes","type":"text","perGuest":false,"required":false}]},{"slug":"private-tasting","name":"Private Tasting","description":"Reserve the room for a custom tasting designed around your preferences or a theme. Ideal for celebrations and corporate entertaining.","priceInCents":6500,"durationMinutes":120,"minGuests":6,"maxGuests":20,"requiresWaiver":false,"isCombo":false,"sortOrder":3,"color":"oklch(0.40 0.10 15)","imageUrl":"kits/pour-house/images/private-tasting.jpg","sessionAttributeDefinitions":[{"key":"flightName","label":"Flight Name","type":"text","perGuest":false,"required":true},{"key":"varietals","label":"Varietals","type":"text","perGuest":false,"required":false},{"key":"tastingNotes","label":"Tasting Notes","type":"text","perGuest":false,"required":false},{"key":"partyTheme","label":"Party / Event Theme","type":"text","perGuest":false,"required":false}]},{"slug":"winemaker-dinner","name":"Winemaker Dinner","description":"Five courses, five wines, one evening. A partnership with local restaurants brings food to the table while our sommelier guides the wine journey.","priceInCents":9500,"durationMinutes":180,"minGuests":12,"maxGuests":24,"requiresWaiver":false,"isCombo":false,"sortOrder":4,"color":"oklch(0.30 0.10 15)","imageUrl":"kits/pour-house/images/winemaker-dinner.svg","sessionAttributeDefinitions":[{"key":"flightName","label":"Wine Lineup Name","type":"text","perGuest":false,"required":true},{"key":"varietals","label":"Varietals","type":"text","perGuest":false,"required":false},{"key":"menuCourse","label":"Menu / Course Description","type":"text","perGuest":false,"required":false},{"key":"tastingNotes","label":"Tasting Notes","type":"text","perGuest":false,"required":false}]}],"inventoryCategories":[{"id":"wines","label":"Wines","icon":"🍷"},{"id":"beers","label":"Craft Beers","icon":"🍺"},{"id":"spirits","label":"Spirits & Aperitifs","icon":"🥃"},{"id":"glassware","label":"Glassware","icon":"🫗"},{"id":"cheese","label":"Cheese & Charcuterie","icon":"🧀"},{"id":"accompaniments","label":"Accompaniments & Crackers","icon":"🫙"},{"id":"retail","label":"Retail & Bottles","icon":"🛍️"}],"staffRoles":[{"id":"sommelier","label":"Sommelier / Wine Host","defaultCapabilities":["checkin","pos","inventory-view","session-log"]},{"id":"tasting-host","label":"Tasting Host","defaultCapabilities":["checkin","pos"]}],"chatSuggestions":[{"label":"Book a wine flight","message":"Book a wine flight","emoji":"🍷"},{"label":"Guided pairing info","message":"Tell me about the guided pairing","emoji":"🧀"},{"label":"Private event","message":"Private tasting for a special occasion","emoji":"🥂"},{"label":"Gift cards","message":"Gift cards","emoji":"🎁"}],"inventoryLevelDetection":"manual","fees":{"billingModel":"per-transaction","feeMode":"all-channels"}}},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"presentation","type":"soulcraft","role":"primary","status":"released","name":"Presentation","description":"Create beautiful presentations with slides, speaker notes, and smooth transitions","longDescription":"Build engaging presentations using Workshop's native slide format. Create individual slides with rich content, speaker notes, custom backgrounds, and transitions. Present directly in Workshop or export to PDF for sharing.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"📽️","tags":["presentation","slides","slideshow","talk","keynote","powerpoint"],"variables":[{"key":"projectName","label":"Presentation Title","description":"The title of your presentation","type":"string","required":true,"example":"My Presentation"},{"key":"subtitle","label":"Subtitle","description":"Optional subtitle for the title slide","type":"string","required":false,"example":"A subtitle or tagline"},{"key":"author","label":"Presenter Name","description":"Your name or organization","type":"string","required":false,"example":"Your Name"}],"shared":{"industry":"business-strategy","category":"content","aiExpertise":["Presentation structure and flow","Slide content writing","Visual communication principles","Speaker notes and delivery coaching","Audience engagement techniques"],"dataModelHints":["document","concept"],"dataModel":{"entities":[{"domain":"slide","type":"Document","description":"An individual slide with content and speaker notes","products":{"workshop":{"view":"board","icon":"📽️"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"keyPoint","type":"Concept","description":"A core message or argument addressed by one or more slides","products":{"workshop":{"view":"graph","icon":"💡"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"audience","type":"Concept","description":"The intended audience segment for this presentation","products":{"workshop":{"view":"gallery","icon":"👥"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}}],"relationships":[{"from":"slide","to":"slide","verb":"Precedes","description":"Slide ordering in the presentation"},{"from":"slide","to":"keyPoint","verb":"Addresses","description":"Slide communicates this key point"}]},"suggestions":[{"label":"Write a slide","prompt":"Help me write content for a new slide in my presentation"},{"label":"Improve this slide","prompt":"Review this slide and suggest improvements"},{"label":"Create an outline","prompt":"Help me create an outline for my presentation"},{"label":"Add visuals","prompt":"What visuals or diagrams would enhance this slide?"},{"label":"Review flow","prompt":"Review my presentation structure and suggest improvements"},{"label":"Practice Q&A","prompt":"What questions might the audience ask about this presentation?"}]},"academy":{"skillPath":"presentation-design","level":"beginner","learningObjectives":["Structure a presentation with a single core message and a clear three-part arc","Apply the one-idea-per-slide rule and write headlines that state conclusions not topics","Write speaker notes that support delivery without reading verbatim from the slide","Anticipate and prepare for the top five audience questions before presenting"],"assessmentTypes":["demo","peer-review"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"presenter"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"beginner","templateTier":3,"aiPersona":{"role":"You are a presentation coach and communications expert helping creators build clear, engaging presentations that land their message with any audience.","expertise":["Presentation structure","Slide design principles","Speaker notes writing","Visual storytelling","Audience engagement"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"planner","defaultTab":"edit","defaultView":"board","defaultFile":"slides/01-title.wslide","layout":{"leftDock":"files","rightDock":"properties"},"onboarding":{"showGuide":true,"highlightFeatures":["board","slideshow","export"],"suggestedActions":["Edit the title slide with your presentation title","Add content to each slide in the slides folder","Use Board view to see all slides at a glance","Click Present button to view the slideshow","Export to PDF when ready to share"]}},"graphGuidance":{"conceptCreation":{"triggers":["When user creates a new slide","When user defines a key point","When user identifies an audience segment"],"typeMapping":{"slide":"document","keyPoint":"concept","audience":"socialGroup"}},"relationshipPatterns":[{"from":"document","to":"document","verb":"precedes","description":"Slide order"},{"from":"document","to":"concept","verb":"addresses","description":"Slide covers key point"}],"rules":["Maintain slide order with precedes relationships","Link slides to the key points they address"]},"exporters":[{"id":"slideshow-html","name":"Interactive Slideshow","description":"HTML slideshow for presenting","icon":"🎭","format":"html","category":"presentation","handler":"wslide-html","options":{"includeFiles":["slides/*.wslide"],"combineFiles":true,"theme":"dark"}},{"id":"slideshow-pdf","name":"PDF Handout","description":"PDF with one slide per page","icon":"📄","format":"pdf","category":"document","handler":"wslide-pdf","options":{"includeFiles":["slides/*.wslide"],"includeNotes":false}},{"id":"slideshow-pdf-notes","name":"PDF with Notes","description":"PDF with slides and speaker notes","icon":"📝","format":"pdf","category":"document","handler":"wslide-pdf","options":{"includeFiles":["slides/*.wslide"],"includeNotes":true}}],"exportStructure":{"combineStrategy":"path-order","includePatterns":["slides/*.wslide"]}},"venue":{"bookingNumberPrefix":"PR","subdomainPrefix":"slidedeck","features":{"customerAccounts":true,"apps":true,"website":true,"subscriptions":true,"notifications":true,"analytics":true,"cms":false,"blog":false,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.38 0.16 260)","bgBase":"oklch(0.99 0.005 255)","accent":"oklch(0.58 0.18 195)","textPrimary":"oklch(0.20 0.03 255)","displayFont":"Plus Jakarta Sans","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Create a presentation","message":"I need to build a new presentation. How do I get started?","emoji":"📊"},{"label":"Share my deck","message":"How do I share or present my slides to an audience?","emoji":"🖥️"},{"label":"Upgrade my plan","message":"I want to unlock more templates and features. What plans are available?","emoji":"⭐"},{"label":"Presentation tips","message":"Give me tips for making my next presentation more engaging.","emoji":"💡"}]},"previewImageUrl":"kits/presentation/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"novel-writing-system","type":"soulcraft","role":"primary","status":"released","name":"Novel Writing System","description":"Complete novel writing workspace with character development, worldbuilding, and manuscript organization","longDescription":"A comprehensive system for novelists that includes character profiles with relationship mapping, worldbuilding documentation, three-act structure outline, chapter organization, and integrated timeline. Perfect for fiction writers who want their story elements connected through Workshop's knowledge graph.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"📖","tags":["fiction","creative-writing","novels","storytelling"],"variables":[{"key":"projectName","label":"Novel Title","description":"The title of your novel","type":"string","required":true,"example":"The Hidden Kingdom"},{"key":"author","label":"Author Name","description":"The author's name","type":"string","required":false,"example":"Your Name"},{"key":"genre","label":"Genre","description":"Primary genre (Fantasy, Sci-Fi, Mystery, etc.)","type":"string","required":false,"example":"Fantasy"},{"key":"targetWordCount","label":"Target Word Count","description":"Your target final word count","type":"string","required":false,"example":"80000"}],"shared":{"industry":"creative-writing","category":"creative","glossary":{"inciting incident":"The event that disrupts the protagonist's ordinary world and sets the story in motion","midpoint":"The story's central turning point, often a false victory or defeat","character arc":"The internal transformation a character undergoes through the story"},"aiExpertise":["Fiction writing and story structure","Character development and psychology","Worldbuilding and setting design","Plot architecture and pacing","Dialogue and scene writing"],"dataModelHints":["person","event","document","topic","thing"],"dataModel":{"entities":[{"domain":"character","type":"Person","description":"A fictional character with arc, motivation, and relationships","products":{"workshop":{"view":"gallery","icon":"🧑"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"location","type":"Location","description":"A place in the story world where scenes unfold","products":{"workshop":{"view":"graph","icon":"📍"}}},{"domain":"chapter","type":"Document","description":"A numbered chapter in the manuscript","products":{"workshop":{"view":"tree","icon":"📄"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"scene","type":"Document","description":"A discrete scene within a chapter, tied to characters and locations","products":{"workshop":{"view":"board","icon":"🎬"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"theme","type":"Concept","description":"A recurring thematic idea embodied by characters or events","products":{"workshop":{"view":"graph","icon":"💡"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"subplot","type":"Concept","description":"A secondary narrative thread running alongside the main plot","products":{"workshop":{"view":"graph","icon":"🧵"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}}],"relationships":[{"from":"character","to":"character","verb":"Conflicts","description":"Character is in opposition or rivalry with another character"},{"from":"character","to":"character","verb":"RelatedTo","description":"Family or romantic relationship between characters"},{"from":"character","to":"theme","verb":"Embodies","description":"Character represents or illustrates a theme"},{"from":"scene","to":"character","verb":"Contains","description":"Scene features this character"},{"from":"scene","to":"location","verb":"LocatedAt","description":"Scene takes place in this location"},{"from":"chapter","to":"chapter","verb":"Precedes","description":"Chapter ordering in the manuscript"}]},"suggestions":[{"label":"Develop a character","prompt":"Help me create a new character with personality, backstory, and motivations"},{"label":"Outline a chapter","prompt":"Help me outline the next chapter of my novel"},{"label":"Write a scene","prompt":"Help me write a scene with vivid description and dialogue"},{"label":"Track plot threads","prompt":"Review my plot threads and identify any loose ends"},{"label":"Build the world","prompt":"Help me develop a world-building detail for my story"},{"label":"View story structure","prompt":"Show me my novel's structure in the tree view"}]},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are an expert fiction writing coach helping novelists develop compelling characters, build rich worlds, and structure satisfying stories from first draft to polished manuscript.","expertise":["Story structure (three-act, save the cat, hero's journey)","Character development and arc design","Worldbuilding and setting","Scene and chapter writing","Plot architecture and pacing"],"tone":"mentor"},"workspaceConfig":{"paradigm":"writer","defaultTab":"edit","defaultView":"mindmap","defaultFile":"manuscript/chapters/01-opening.md","fallbackFiles":["planning/outline.md","README.md"],"layout":{"leftDock":"files","rightDock":"properties"},"onboarding":{"showGuide":true,"highlightFeatures":["graph","ai-chat"],"suggestedActions":["Start with the outline in planning/outline.md","Create character profiles using the template","Use Graph view to visualize character relationships","Ask AI to help develop backstories and plot points"]}},"graphGuidance":{"conceptCreation":{"triggers":["When user creates a new character","When user describes a location or setting","When user outlines a chapter or scene","When user mentions a plot thread or subplot"],"typeMapping":{"character":"person","location":"location","chapter":"document","scene":"document","theme":"concept","subplot":"concept"}},"relationshipPatterns":[{"from":"person","to":"person","verb":"conflicts","description":"Character conflict"},{"from":"person","to":"person","verb":"relatedTo","description":"Family or romantic relationship"},{"from":"person","to":"concept","verb":"embodies","description":"Character represents theme"},{"from":"document","to":"person","verb":"contains","description":"Scene features character"},{"from":"document","to":"location","verb":"locatedAt","description":"Scene takes place in location"},{"from":"document","to":"document","verb":"precedes","description":"Chapter order"}],"rules":["Create person entities for major characters","Link scenes to their featured characters","Track chapter sequence with precedes relationships","Connect themes to the characters who embody them"]},"qualityGates":{"fileChecks":[{"path":"planning/outline.md","required":["Act 1","Act 2","Act 3","Inciting Incident","Midpoint","Climax"],"optional":["Logline","Premise"]},{"path":"characters/protagonist.md","required":["Name","Character Arc"],"optional":["Backstory","Relationships","Voice Notes"]},{"path":"characters/antagonist.md","required":["Name","Motivation"],"optional":["Justification","Backstory"]}],"projectChecks":["Outline has all three acts defined","Protagonist has clear internal and external goals","Antagonist has understandable motivation","At least one chapter file exists","Timeline is consistent"],"exportReady":["All outline beats are filled in","Character arcs are defined","First draft of chapters complete"]},"sampleData":{"description":"Sample novel structure for a fantasy epic","entities":[{"type":"person","name":"Kira Ashwood","properties":{"role":"protagonist","age":19,"want":"Find her missing brother","need":"Accept her magical heritage","description":"Orphaned healer's apprentice who discovers she's descended from the ancient Storm Weavers.","status":"main","createdAt":"2025-01-05"}},{"type":"person","name":"The Hollow King","properties":{"role":"antagonist","description":"Immortal sorcerer who feeds on stolen magic. Seeks the last Storm Weaver bloodline.","status":"main","createdAt":"2025-01-05"}}],"relationships":[{"from":"Kira Ashwood","verb":"conflicts","to":"The Hollow King"}]},"templateMetadata":{"identifyByStructure":true},"exporters":[{"id":"manuscript-bundle","name":"Manuscript Bundle","description":"ZIP archive of manuscript chapters in order","icon":"📦","format":"zip","category":"archive","handler":"markdown-bundle","options":{"includeFiles":["manuscript/chapters/*.md"],"excludeFiles":["manuscript/chapters/_chapter-template.md"],"preserveStructure":true,"addReadme":true}},{"id":"complete-novel-bundle","name":"Complete Novel Bundle","description":"ZIP of all project files with folder structure","icon":"📚","format":"zip","category":"archive","handler":"markdown-bundle","options":{"includeFiles":["**/*.md"],"excludeFiles":["**/_*-template.md"],"preserveStructure":true,"addReadme":true,"addIndex":true}}],"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"512Mi"},"oneClickCommand":"gcloud run deploy"}},"venue":{"bookingNumberPrefix":"NW","subdomainPrefix":"novel","features":{"blog":true,"cms":true,"customerAccounts":true,"website":true,"documents":true,"notifications":true,"analytics":false,"giftCards":false,"pos":false,"subscriptions":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"per-transaction","feeMode":"online-only"},"theme":{"primary":"oklch(0.38 0.08 310)","bgBase":"oklch(0.98 0.008 310)","accent":"oklch(0.58 0.10 45)","textPrimary":"oklch(0.20 0.03 310)","displayFont":"Lora","bodyFont":"Georgia"},"experienceTypes":[{"slug":"writing-workshop","name":"Writing Workshop","description":"A small-group session (up to 6 writers) focused on craft fundamentals — character, plot, dialogue, or world-building. Choose your focus and come ready to write.","priceInCents":6500,"durationMinutes":120,"minGuests":2,"maxGuests":6,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.52 0.10 310)","sessionAttributeDefinitions":[{"key":"workshopFocus","label":"Workshop Focus","type":"select","perGuest":false,"options":["Character development","Plot structure","Dialogue","World-building","Voice & style"],"required":true},{"key":"genreExperience","label":"Genre Experience","type":"select","perGuest":true,"options":["Literary fiction","Genre fiction","Thriller/Mystery","Fantasy/Sci-Fi","Romance","Other"],"required":false}]},{"slug":"manuscript-review","name":"Manuscript Review","description":"Professional editorial review of up to 50 pages. Receive detailed written feedback on structure, pacing, character arcs, and prose with a 45-minute debrief call.","priceInCents":35000,"durationMinutes":45,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.45 0.08 45)","sessionAttributeDefinitions":[{"key":"genre","label":"Genre","type":"text","perGuest":false,"required":true},{"key":"pageCount","label":"Page Count","type":"text","perGuest":false,"required":true}]},{"slug":"creative-consultation","name":"Creative Consultation","description":"A 60-minute one-on-one session to unstick your story — brainstorming plot solutions, developing characters, or diagnosing why a scene isn't working.","priceInCents":12000,"durationMinutes":60,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.48 0.08 310)","sessionAttributeDefinitions":[{"key":"challengeDescription","label":"Story Challenge","type":"text","perGuest":false,"required":false}]}],"staffRoles":[{"id":"writing-instructor","label":"Writing Instructor","defaultCapabilities":["checkin","pos","analytics","notifications"]},{"id":"editor","label":"Editor","defaultCapabilities":["checkin","pos"]}],"chatSuggestions":[{"label":"Book a workshop","message":"I'd like to join a writing workshop. What's coming up?","emoji":"✍️"},{"label":"Get my manuscript reviewed","message":"I'd like professional feedback on my manuscript. How does the review process work?","emoji":"📖"},{"label":"Stuck on my story","message":"I'm stuck on a story problem and need a creative consultation. Can you help?","emoji":"🧩"},{"label":"For beginners","message":"I'm new to novel writing. Where should I start?","emoji":"🌱"}]},"academy":{"skillPath":"fiction-writing","level":"intermediate","learningObjectives":["Develop multi-dimensional characters with believable motivations and consistent arcs","Structure a three-act (or hero's journey) plot that sustains narrative tension to the final page","Write scene-level prose that advances character, plot, and theme simultaneously","Build a coherent fictional world with consistent rules, history, and sensory detail","Revise a draft manuscript using professional editorial techniques and structured feedback"],"assessmentTypes":["portfolio","peer-review"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"exploratory","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"previewImageUrl":"kits/novel-writing-system/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"personal-crm","type":"soulcraft","role":"primary","status":"released","name":"Personal CRM","description":"Relationship manager with contact network visualization and interaction tracking","longDescription":"Build a relationship-focused contact manager where connections matter as much as contacts. Track interactions, visualize your network graph, and surface contacts you have not spoken to recently. Uses Brainy for rich relationship modeling with person, organization, event, and topic entity types.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"👥","tags":["crm","contacts","relationships","networking","brainy","sveltekit"],"variables":[{"key":"appName","label":"App Name","description":"The name of your personal CRM app","type":"string","required":true,"example":"my-network"},{"key":"description","label":"Description","description":"A short description of your network","type":"string","required":false,"example":"My personal contact network","default":"A relationship-first contact manager"}],"shared":{"industry":"personal-productivity","category":"business","aiExpertise":["Contact relationship management","Network analysis and insights","Follow-up strategy","Relationship nurturing","Contact organization and tagging"],"dataModelHints":["person","organization","event","topic"],"dataModel":{"entities":[{"domain":"contact","type":"Person","description":"A person in the relationship network with contact details","products":{"workshop":{"view":"gallery","icon":"👤"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"company","type":"Concept","description":"An organisation or company contacts are associated with","products":{"workshop":{"view":"graph","icon":"🏢"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}},{"domain":"interaction","type":"Event","description":"A logged interaction such as a call, email, or meeting","products":{"workshop":{"view":"timeline","icon":"💬"},"academy":{"mapsTo":"practice-session","assessable":true},"venue":{"mapsTo":"BookingMeta","pos":false}}},{"domain":"tag","type":"Concept","description":"A label categorising contacts by context or relationship type","products":{"workshop":{"view":"graph","icon":"🏷️"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}}],"relationships":[{"from":"contact","to":"company","verb":"MemberOf","description":"Contact works at this company"},{"from":"contact","to":"contact","verb":"FriendOf","description":"Contact knows another contact"},{"from":"contact","to":"contact","verb":"References","description":"Contact was introduced by another"},{"from":"interaction","to":"contact","verb":"Communicates","description":"Interaction was with this contact"},{"from":"tag","to":"contact","verb":"Categorizes","description":"Tag is applied to this contact"}]},"suggestions":[{"label":"Add a contact","prompt":"Help me add a new contact to my personal CRM"},{"label":"Log an interaction","prompt":"Help me log a recent interaction with a contact"},{"label":"Plan follow-ups","prompt":"Show me contacts I should follow up with and help me plan outreach"},{"label":"Tag and organize","prompt":"Help me organize my contacts with tags and groups"},{"label":"Relationship insights","prompt":"Analyze my contact network and suggest relationship-building opportunities"},{"label":"View my network","prompt":"Show me my contact network in the graph view"}]},"academy":{"skillPath":"relationship-management","level":"beginner","learningObjectives":["Build a structured contact record capturing role, context of meeting, and shared interests","Log interactions consistently so the history of any relationship is retrievable at a glance","Identify contacts who need follow-up using recency data and prioritise outreach","Map network connections to discover shared contacts and introduction opportunities"],"assessmentTypes":["portfolio"],"mode":"certification","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"neutral","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":true,"certificationSlug":"relationship-manager"},"gamification":{"enabled":true,"achievements":["deep-thinker","completionist","chain-maker"],"streaks":false,"leaderboard":true}},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are a relationship management expert helping users build and maintain meaningful professional and personal connections.","expertise":["Contact relationship management","Network analysis","Follow-up strategy","Relationship nurturing","Contact organization"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["User adds a new contact","User creates a company","User logs an interaction","User creates a tag"],"typeMapping":{"contact":"person","company":"organization","interaction":"event","tag":"topic"}},"relationshipPatterns":[{"from":"person","to":"organization","verb":"memberOf","description":"Contact works at company"},{"from":"person","to":"person","verb":"friendOf","description":"Contact knows another contact"},{"from":"person","to":"person","verb":"references","description":"Contact was introduced by another"},{"from":"event","to":"person","verb":"communicates","description":"Interaction was with contact"},{"from":"topic","to":"person","verb":"categorizes","description":"Tag applied to contact"}],"rules":["Every contact should have at least one interaction logged","Prefer relationships over nested properties for connections","Use tags consistently across contacts for filtering"]},"qualityGates":{"fileChecks":[{"path":"package.json","required":["svelte","@sveltejs/kit","@soulcraft/brainy"],"optional":["typescript"]},{"path":"src/lib/types.ts","required":["Contact","Company","Interaction"],"optional":["Tag"]}],"projectChecks":["App starts with npm run dev","Can create new contacts","Can log interactions","Can view contact network graph","Search returns matching contacts"],"exportReady":["No TypeScript errors","All routes load correctly","Error handling in place"]},"sampleData":{"description":"Realistic sample contacts demonstrating the CRM features","entities":[{"type":"person","name":"Alex Chen","properties":{"email":"alex.chen@techcorp.io","phone":"+1-555-0101","role":"Engineering Manager","description":"Engineering lead at TechCorp. Interested in knowledge graphs and AI.","notes":"Met at TechConf 2024. Interested in knowledge graphs.","lastContacted":"2024-11-15","status":"active","createdAt":"2024-09-01"}},{"type":"person","name":"Sarah Johnson","properties":{"email":"sarah.j@startup.co","phone":"+1-555-0102","role":"CEO","description":"Founder and CEO of Startup.co. College friend turned entrepreneur.","notes":"College friend, now running a startup","lastContacted":"2024-10-20","status":"active","createdAt":"2024-06-15"}},{"type":"organization","name":"TechCorp","properties":{"industry":"Technology","website":"https://techcorp.io","size":"500-1000","description":"Enterprise software company specializing in AI solutions.","createdAt":"2024-09-01"}}],"relationships":[{"from":"Alex Chen","verb":"memberOf","to":"TechCorp"},{"from":"Sarah Johnson","verb":"friendOf","to":"Alex Chen"}]},"templateMetadata":{"runnable":true,"runnableCommand":"npm run dev"},"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"512Mi"},"oneClickCommand":"gcloud run deploy"}},"venue":{"bookingNumberPrefix":"PC","subdomainPrefix":"crm","features":{"customerAccounts":true,"cms":true,"website":true,"notifications":true,"analytics":true,"subscriptions":true,"blog":false,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.40 0.14 245)","bgBase":"oklch(0.99 0.005 245)","accent":"oklch(0.58 0.18 195)","textPrimary":"oklch(0.20 0.03 245)","displayFont":"Inter","bodyFont":"Inter"},"experienceTypes":[{"slug":"networking-strategy-session","name":"Networking Strategy Session","description":"A 60-minute consultation to audit your professional network, identify relationship gaps, and build a 90-day outreach plan tailored to your goals.","priceInCents":20000,"durationMinutes":60,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.52 0.14 245)","sessionAttributeDefinitions":[{"key":"networkingGoal","label":"Networking Goal","type":"select","perGuest":false,"required":true,"options":["Career change","Business development","Industry presence","Fundraising / investors","Mentorship"]},{"key":"currentNetworkSize","label":"Network Size","type":"select","perGuest":false,"required":false,"options":["< 50 people","50–200","200–500","500+"]}]},{"slug":"relationship-audit","name":"Relationship Audit","description":"A 45-minute review of your current contact database and relationship health. Walk away with a prioritised list of relationships to reinvest in and a reachout template pack.","priceInCents":10000,"durationMinutes":45,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.55 0.16 195)","sessionAttributeDefinitions":[]}],"staffRoles":[{"id":"relationship-coach","label":"Relationship Coach","defaultCapabilities":["checkin","pos","cms","analytics"]}],"chatSuggestions":[{"label":"Manage my contacts","message":"I want to get my contact database organised. Where do I start?","emoji":"📇"},{"label":"Networking strategy","message":"I want to grow my professional network with intention. Can I book a session?","emoji":"🤝"},{"label":"Manage subscription","message":"I'd like to manage my account and subscription.","emoji":"💳"},{"label":"Stay in touch","message":"How do I set reminders to follow up with contacts I've let go quiet?","emoji":"🔔"}]},"previewImageUrl":"kits/personal-crm/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"ai-content-studio","type":"soulcraft","role":"extension","status":"released","name":"AI Content Studio","description":"AI-powered content generation — blog posts, social media, and email campaigns","longDescription":"A composable content generation extension for Workshop and Venue. Adds AI-assisted blog drafting, social media post scheduling, email campaign management, and content performance tracking. Venue gets dedicated blog and content management stations. Workshop gets an enhanced writing persona with deep content marketing expertise and a full set of content-focused skills. All content entities — posts, campaigns, social copy — are first-class Brainy nodes linked to a content calendar so nothing falls through the cracks.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"✍️","tags":["content","blog","ai","marketing","writing","extension","email campaigns","social media"],"requires":[],"shared":{"industry":"content-marketing","category":"creative","glossary":{"content calendar":"A scheduled plan mapping which content pieces will be published on which dates, across which channels, ensuring consistent output and balanced themes.","content cluster":"A group of related pieces — a pillar page and its supporting articles — that collectively rank for a topic and link to each other for SEO authority.","pillar page":"A long-form, comprehensive page covering a broad topic in depth, designed to rank for a high-volume keyword and link out to cluster content.","drip campaign":"An automated email sequence triggered by a subscriber action — signing up, downloading, purchasing — that delivers value over time.","open rate":"The percentage of email recipients who opened a campaign message — a primary measure of subject line effectiveness.","CTR":"Click-through rate — the percentage of email recipients or social viewers who clicked a link in the content.","organic traffic":"Website visitors who arrived via an unpaid search engine result — the primary long-term return on blog and SEO investment."},"aiExpertise":["blog post ideation and SEO-optimised drafting","social media content strategy and platform-native copywriting","email campaign writing and subject line optimisation","content calendar planning and editorial scheduling","content performance analysis and strategy iteration","audience research and content-market fit","repurposing long-form content into micro-content"],"dataModelHints":["blog_post","social_post","email_campaign","content_calendar"],"dataModel":{"entities":[{"domain":"blog_post","type":"Document","description":"A long-form blog article with title, slug, body, meta description, target keywords, author, publish date, and status.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-artifact","assessable":true}}},{"domain":"social_post","type":"Document","description":"A social media post with caption, target platform, scheduled date, hashtags, and publish status.","products":{"workshop":{"view":"board","icon":"📱"},"academy":{"mapsTo":"learning-artifact","assessable":true}}},{"domain":"email_campaign","type":"Event","description":"An email marketing campaign with subject, body, target list, scheduled send date, and performance metrics (opens, clicks, unsubscribes).","products":{"workshop":{"view":"board","icon":"📧"},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"content_calendar","type":"Concept","description":"A scheduled content plan for a defined time window, organising blog posts, social posts, and email campaigns by date and channel.","products":{"workshop":{"view":"calendar","icon":"📅"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}}],"relationships":[{"from":"content_calendar","to":"blog_post","verb":"Contains","description":"Content calendar schedules blog posts for publication on specific dates."},{"from":"content_calendar","to":"social_post","verb":"Contains","description":"Content calendar schedules social posts for publishing across platforms."},{"from":"content_calendar","to":"email_campaign","verb":"Contains","description":"Content calendar schedules email campaigns as part of the broader publishing rhythm."},{"from":"email_campaign","to":"content_calendar","verb":"References","description":"Email campaign links back to the calendar period it belongs to for cohesive tracking."},{"from":"social_post","to":"blog_post","verb":"References","description":"Social post promotes or repurposes content from a linked blog post."}]},"suggestions":[{"label":"Draft a blog post","prompt":"Help me write an SEO-optimised blog post on a topic relevant to my audience."},{"label":"Create a social calendar","prompt":"Build a two-week social media posting schedule that promotes my latest blog content."},{"label":"Draft an email campaign","prompt":"Write an email campaign announcing a new post or offer to my subscriber list."},{"label":"Repurpose a post","prompt":"Take this blog post and help me turn it into social captions, an email intro, and a pull quote."},{"label":"Plan content topics","prompt":"Help me brainstorm a month of blog topics based on my audience's questions and my business goals."},{"label":"Analyse content performance","prompt":"Review my recent content metrics and identify what's resonating and what to double down on."}]},"academy":{"skillPath":"content-marketing","level":"intermediate","learningObjectives":["Develop a content strategy with audience research, topic clusters, and publishing cadence","Write SEO-optimised blog posts with compelling headlines, structure, and meta copy","Create a consistent social posting schedule repurposing long-form content into platform-native formats","Craft email campaigns with subject lines, body copy, and CTAs that drive clicks and conversions","Measure content performance — organic traffic, open rates, engagement — and iterate the strategy accordingly"],"assessmentTypes":["portfolio","peer-review"],"mode":"certification","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"neutral","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":true,"certificationSlug":"content-creator"},"gamification":{"enabled":true,"achievements":["deep-thinker","completionist","chain-maker"],"streaks":false,"leaderboard":true}},"workshop":{"aiPersona":{"role":"You are a content marketing strategist and AI writing partner helping businesses create high-quality blog posts, social content, and email campaigns. You write in the brand's voice, think about SEO, and always connect content to business outcomes.","expertise":["blog post ideation and SEO-optimised drafting","social media copywriting across platforms","email campaign writing and subject line testing","content calendar planning and editorial scheduling","content performance analysis and strategy iteration","repurposing long-form content into micro-content formats"],"tone":"collaborator","avoidances":["Don't write generic content that could apply to any brand — always anchor to the specific brand voice and audience","Don't ignore SEO intent — every blog post should serve a specific search query or business goal","Don't schedule more content than the team can maintain at quality — consistency beats volume"]},"graphGuidance":{"conceptCreation":{"triggers":["blog post drafted, outlined, or published","social post created or scheduled","email campaign designed or sent","content calendar updated or created","content topic or keyword identified"],"typeMapping":{"blog post":"document","article":"document","social post":"document","caption":"document","email campaign":"event","newsletter":"event","content calendar":"concept","topic":"concept","keyword":"concept"}},"relationshipPatterns":[{"from":"content_calendar","to":"blog_post","verb":"Contains","description":"Calendar schedules blog post publication"},{"from":"content_calendar","to":"social_post","verb":"Contains","description":"Calendar schedules social post"},{"from":"social_post","to":"blog_post","verb":"References","description":"Social post promotes or repurposes a blog post"}],"rules":["Every content piece should be linked to a content calendar period","Social posts that repurpose blog content must reference the source post","Email campaigns link back to the calendar period for cohesive tracking","Content entities should record publish status — draft, scheduled, published, archived"]},"qualityGates":{"projectChecks":["At least one blog post exists with a title, body, and meta description","At least one social post is scheduled and linked to the content calendar","At least one email campaign is drafted with subject line, body, and CTA","Content calendar covers at least two weeks with content on each channel","Blog posts have target keywords assigned"]},"publishConfig":{"contentType":"document","publishable":true},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Content Calendar","view":"calendar","entityTypes":["blog_post","social_post","email_campaign"],"description":"Unified calendar showing all content across blog, social, and email by publish date"},{"name":"Blog Pipeline","view":"board","entityTypes":["blog_post"],"description":"Blog posts by status — ideation, drafting, review, scheduled, published"},{"name":"Social Posts","view":"board","entityTypes":["social_post"],"description":"Social content drafts and scheduled posts across platforms"},{"name":"Email Campaigns","view":"board","entityTypes":["email_campaign"],"description":"Email campaign pipeline from draft through send and performance review"},{"name":"Content Graph","view":"graph","entityTypes":["blog_post","social_post","email_campaign","content_calendar"],"description":"Graph showing how content pieces relate, repurpose, and support each other"}]}},"venue":{"features":{"blog":true},"stations":[{"id":"blog","label":"Blog","route":"/api/manage/blog","icon":"📝","roles":["manager","owner"],"scope":"kit","context":"both"},{"id":"content-studio","label":"Content Studio","route":"/api/manage/content","icon":"✍️","roles":["manager","owner"],"scope":"kit","context":"both"}],"fees":{"billingModel":"subscription","feeMode":"online-only"}},"previewImageUrl":"kits/ai-content-studio/images/preview.webp"},{"id":"salon-barbershop","type":"soulcraft","role":"primary","status":"released","name":"Salon & Barbershop","description":"Appointment-based salon platform for cuts, color, styling, and retail sales","longDescription":"Complete salon management for hair salons and barbershops — stylist scheduling, chair assignments, color service tracking, retail product sales, and client history. Handles walk-in queues alongside booked appointments.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"✂️","tags":["salon","barbershop","hair","beauty","appointments","retail"],"previewImageUrl":"kits/salon-barbershop/images/preview.webp","variables":[{"key":"businessName","label":"Business Name","description":"The name of your salon or barbershop (e.g. \"Studio Six Salon\")","type":"string","required":true,"example":"Studio Six Salon","default":"Studio Six Salon"},{"key":"tagline","label":"Tagline","description":"A short phrase shown under the logo (e.g. \"cut. color. confidence.\")","type":"string","required":false,"example":"cut. color. confidence.","default":"cut. color. confidence."},{"key":"locationName","label":"Location Name","description":"The display name for this specific location (e.g. \"Studio Six Salon Midtown\")","type":"string","required":true,"example":"Studio Six Salon Midtown"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this location used in booking links (e.g. \"midtown\")","type":"string","required":true,"example":"midtown"},{"key":"address","label":"Street Address","description":"Street address of your salon (e.g. \"210 W. 5th Ave, Suite 3\")","type":"address","required":true,"example":"210 W. 5th Ave, Suite 3"},{"key":"city","label":"City","description":"City where your salon is located","type":"string","required":true,"example":"Austin"},{"key":"state","label":"State / Province","description":"Two-letter state or province code","type":"string","required":true,"example":"TX"},{"key":"zip","label":"ZIP / Postal Code","type":"string","required":true,"example":"78701"},{"key":"timezone","label":"Timezone","description":"IANA timezone for this location (used for scheduling)","type":"timezone","required":true,"example":"America/Chicago","default":"America/New_York"},{"key":"phone","label":"Phone Number","type":"phone","required":true,"example":"(512) 555-0143"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"hello@studiosixsalon.com"},{"key":"instagram","label":"Instagram Handle","description":"Instagram username without the @","type":"string","required":false,"example":"studiosixsalon"}],"shared":{"industry":"beauty-wellness","category":"hospitality","glossary":{"chair":"An individual styling station assigned to a specific stylist or barber","color formula":"The precise mix of developer, pigment, and processing time for a color service, stored per client","patch test":"A 48-hour skin sensitivity test performed before chemical color services to screen for allergic reactions","double-process":"A two-step color treatment combining bleach lightening with toning or coloring","toner":"A semi-permanent color applied after lightening to neutralize brassiness or achieve a specific hue","walk-in":"A guest who arrives without a prior appointment, served in order of availability"},"aiExpertise":["hair salon and barbershop operations","stylist scheduling and chair management","hair color formulation and chemical service safety","retail product recommendations and upselling","client retention and appointment reminders"],"dataModelHints":["booking","experience","time_slot","staff","customer","inventory_item","gift_card","loyalty_account","transaction"],"dataModel":{"entities":[{"domain":"location","type":"Location","description":"A physical salon or barbershop location with chairs, stylists, and its own service menu and retail selection.","products":{"workshop":{"view":"graph","icon":"📍"},"venue":{"mapsTo":"LocationMeta","pos":false}}},{"domain":"booking","type":"Event","description":"A client appointment for a specific service — haircut, color treatment, blowout, or beard trim — with a named stylist.","products":{"workshop":{"view":"board","icon":"📅"},"venue":{"mapsTo":"BookingMeta","pos":true},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"time_slot","type":"Event","description":"An available appointment slot at a specific chair and time, tied to a stylist's schedule.","products":{"workshop":{"view":"timeline","icon":"🕐"},"venue":{"mapsTo":"TimeSlotMeta","pos":false}}},{"domain":"experience","type":"Product","description":"A service type such as Women's Haircut, Men's Haircut, Color Treatment, Blowout, or Beard Trim — each with pricing and duration.","products":{"workshop":{"view":"gallery","icon":"✂️"},"venue":{"mapsTo":"ExperienceMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"customer","type":"Person","description":"A salon client with service history, preferred stylist, color formulas, and loyalty account.","products":{"workshop":{"view":"board","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"staff","type":"Person","description":"A stylist, colorist, barber, or apprentice with their own chair schedule, service menu, and client book.","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 service or retail purchase, always stored in cents.","products":{"workshop":{"view":"timeline","icon":"💳"},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"inventory_item","type":"Thing","description":"A salon supply or retail product such as color chemicals, styling products, tools, or shampoo sold at the front desk.","products":{"workshop":{"view":"graph","icon":"📦"},"venue":{"mapsTo":"InventoryItemMeta","pos":false},"academy":{"mapsTo":"material","assessable":false}}},{"domain":"waiver","type":"Document","description":"A signed consent form required before chemical color services confirming patch test completion and allergy disclosure.","products":{"workshop":{"view":"board","icon":"📋"},"venue":{"mapsTo":"WaiverMeta","pos":false},"academy":{"mapsTo":"safety-acknowledgment","assessable":false}}},{"domain":"gift_card","type":"Thing","description":"A digital or physical gift card redeemable for services or retail products.","products":{"workshop":{"view":"board","icon":"🎁"},"venue":{"mapsTo":"GiftCardMeta","pos":true}}},{"domain":"loyalty_account","type":"Person","description":"A client loyalty account tracking points earned per service visit, with tier rewards for frequent guests.","products":{"workshop":{"view":"stats","icon":"⭐"},"venue":{"mapsTo":"LoyaltyAccountMeta","pos":false}}},{"domain":"content_page","type":"Document","description":"A CMS-managed page such as Services, Meet the Team, or Pricing.","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 style inspiration, color trend guides, or stylist spotlights.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"customer","to":"booking","verb":"Creates","description":"Client books an appointment for a specific service with a preferred stylist."},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific service type (haircut, color, blowout, etc.)."},{"from":"booking","to":"time_slot","verb":"ParticipatesIn","description":"Booking occupies a specific chair slot in the stylist's schedule."},{"from":"experience","to":"time_slot","verb":"OccursAt","description":"A service type is available at scheduled chair slots for client booking."},{"from":"staff","to":"time_slot","verb":"ParticipatesIn","description":"A stylist or barber is assigned to a chair slot and performs the service."},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Color treatments consume hair color chemicals and developer tracked for reorder."},{"from":"transaction","to":"booking","verb":"References","description":"Payment or refund record links back to the service appointment."},{"from":"waiver","to":"booking","verb":"References","description":"Signed chemical consent form is linked to the color appointment."}]},"suggestions":[{"label":"Chair utilization by stylist","prompt":"Show me chair utilization rates for each stylist this week — who has open slots?"},{"label":"Revenue by service type","prompt":"Break down revenue across cuts, color, blowouts, and beard services for this month"},{"label":"Color formula lookup","prompt":"Pull up the color formula history for a specific client"},{"label":"Retail sell-through","prompt":"Which retail products are selling best and what needs to be reordered?"}]},"workshop":{"aiPersona":{"role":"You are the AI assistant for a hair salon and barbershop. You help stylists and managers track appointments, client color formulas, retail inventory, and chair utilization. You understand the business of beauty — from chemical service safety to retail upselling.","expertise":["stylist scheduling and chair management","hair color formulation and chemical safety","retail product inventory and sell-through","client retention and rebooking strategy","salon and barbershop operations"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["appointment or booking mentioned","stylist or barber introduced","color formula or chemical service referenced","retail product or inventory item mentioned","client or regular guest discussed"],"typeMapping":{"booking":"event","appointment":"event","time slot":"event","stylist":"person","barber":"person","colorist":"person","client":"person","customer":"person","inventory":"thing","color supply":"thing","retail product":"thing","experience":"product","transaction":"measurement"}},"relationshipPatterns":[{"from":"customer","to":"booking","verb":"Creates","description":"Client books an appointment for a specific service"},{"from":"staff","to":"booking","verb":"ParticipatesIn","description":"Stylist or barber performs the service during the appointment"},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific service (cut, color, blowout, beard)"},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Color treatments consume chemicals tracked for reorder"}],"rules":["Color appointments must record the formula used for future reference","Chemical services require a signed consent form before proceeding","Each stylist's chair schedule should be managed independently"]},"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"board"},"qualityGates":{"projectChecks":["All color treatment experiences have waiver requirement enabled","Each stylist has a configured chair assignment and service menu","Retail inventory reorder thresholds are set for all color supply categories"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Appointment Board","view":"board","entityTypes":["booking","time_slot"],"description":"Today's chair schedule with stylist assignments and service details"},{"name":"Client Gallery","view":"gallery","entityTypes":["customer"],"description":"Client profiles with visit history, preferred stylists, and color formulas"},{"name":"Revenue by Service","view":"stats","entityTypes":["transaction"],"description":"Revenue breakdown across haircuts, color, blowouts, and retail sales"},{"name":"Staff Schedule","view":"board","entityTypes":["staff","time_slot"],"description":"Stylist and barber availability with chair assignments and shift coverage"},{"name":"Color Formula Library","view":"tree","entityTypes":["inventory_item"],"description":"Color supplies organized by category with usage rates and reorder status"}]}},"academy":{"skillPath":"hair-styling-fundamentals","level":"beginner","learningObjectives":["Understanding hair types, textures, and how they influence service selection","Basic cutting techniques — sectioning, point-cutting, and graduation","Color theory and the developer/pigment relationship","Safe handling and mixing of chemical color and lightening products","Client consultation — listening for desired outcomes and managing expectations"],"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":"salon-client"},"gamification":{"enabled":true,"achievements":["chain-maker","deep-thinker","bridge-builder"],"streaks":false,"leaderboard":false},"cohort":{"maxSize":3,"durationDays":90,"fixedStart":false}},"venue":{"bookingNumberPrefix":"SL","subdomainPrefix":"salon","features":{"animals":false,"adoption":false,"memories":false,"loyalty":true,"giftCards":true,"waivers":true,"blog":true,"pos":true,"cms":true,"partners":false,"franchise":true,"customerAccounts":true,"booking":true,"inventory":true},"theme":{"primary":"oklch(0.55 0.08 320)","bgBase":"oklch(0.98 0.01 320)","accent":"oklch(0.70 0.10 10)","textPrimary":"oklch(0.20 0.03 310)","displayFont":"Playfair Display","bodyFont":"Inter"},"experienceTypes":[{"slug":"womens-haircut","name":"Women's Haircut","description":"Shampoo, precision cut, and blow-dry style. Includes a thorough consultation to dial in your ideal cut.","priceInCents":8500,"durationMinutes":60,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.72 0.09 320)","sessionAttributeDefinitions":[{"key":"stylistName","label":"Stylist Name","type":"text","perGuest":false,"required":false},{"key":"serviceNotes","label":"Service Notes","type":"text","perGuest":false,"required":false}]},{"slug":"mens-haircut-beard","name":"Men's Haircut / Beard","description":"Classic cut and optional beard shaping with a hot towel finish. Walk out looking sharp.","priceInCents":4500,"durationMinutes":45,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.55 0.08 220)","sessionAttributeDefinitions":[{"key":"stylistName","label":"Stylist Name","type":"text","perGuest":false,"required":false},{"key":"serviceNotes","label":"Service Notes","type":"text","perGuest":false,"required":false}]},{"slug":"color-treatment","name":"Color Treatment","description":"Full or partial color, highlights, balayage, or corrective work. Requires a patch test at least 48 hours prior to service.","priceInCents":15000,"durationMinutes":120,"minGuests":1,"maxGuests":1,"requiresWaiver":true,"isCombo":false,"sortOrder":2,"color":"oklch(0.68 0.12 40)","sessionAttributeDefinitions":[{"key":"stylistName","label":"Stylist Name","type":"text","perGuest":false,"required":false},{"key":"serviceNotes","label":"Service Notes","type":"text","perGuest":false,"required":false},{"key":"colorFormula","label":"Color Formula","type":"text","perGuest":false,"required":false}]},{"slug":"blowout-style","name":"Blowout & Style","description":"Shampoo, conditioning treatment, and a full blow-dry with your choice of style — straight, wavy, or voluminous.","priceInCents":6500,"durationMinutes":45,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":3,"color":"oklch(0.75 0.08 60)","sessionAttributeDefinitions":[{"key":"stylistName","label":"Stylist Name","type":"text","perGuest":false,"required":false},{"key":"serviceNotes","label":"Service Notes","type":"text","perGuest":false,"required":false}]},{"slug":"beard-trim","name":"Beard Trim","description":"Precision beard shaping and trim with hot towel and finishing balm. Available as a standalone service.","priceInCents":3000,"durationMinutes":30,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":4,"color":"oklch(0.52 0.07 240)","sessionAttributeDefinitions":[{"key":"stylistName","label":"Stylist Name","type":"text","perGuest":false,"required":false},{"key":"serviceNotes","label":"Service Notes","type":"text","perGuest":false,"required":false}]}],"inventoryCategories":[{"id":"hair-color-chemicals","label":"Hair Color & Chemicals","icon":"🧪"},{"id":"styling-products","label":"Styling Products","icon":"💨"},{"id":"tools-equipment","label":"Tools & Equipment","icon":"✂️"},{"id":"retail-shampoo-conditioner","label":"Retail Shampoo & Conditioner","icon":"🧴"},{"id":"retail-treatments","label":"Retail Treatments","icon":"✨"},{"id":"disposables","label":"Disposables","icon":"🧻"}],"staffRoles":[{"id":"lead-stylist","label":"Lead Stylist","defaultCapabilities":["checkin","pos","session-log","inventory-view"]},{"id":"junior-stylist","label":"Junior Stylist","defaultCapabilities":["checkin","pos","session-log"]},{"id":"colorist","label":"Colorist","defaultCapabilities":["checkin","pos","session-log","inventory-view"]},{"id":"barber","label":"Barber","defaultCapabilities":["checkin","pos","session-log"]},{"id":"apprentice","label":"Apprentice","defaultCapabilities":["session-log"]},{"id":"receptionist","label":"Receptionist","defaultCapabilities":["checkin","pos","bookings-view"]}],"chatSuggestions":[{"label":"Book an appointment","message":"I'd like to book an appointment. What services do you offer?","emoji":"✂️"},{"label":"Color consultation","message":"I'm interested in a color treatment. What does the process look like?","emoji":"🎨"},{"label":"Retail products","message":"What products do you carry that I can take home?","emoji":"🛍️"},{"label":"Gift cards","message":"I'd like to buy a gift card for someone. What options do you have?","emoji":"🎁"}],"inventoryLevelDetection":"manual","stations":[{"id":"pos","label":"Point of Sale","route":"/api/manage/pos","icon":"💳","roles":["staff","manager","owner"],"scope":"platform","context":"physical"},{"id":"checkin","label":"Check-in","route":"/api/manage/checkin","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":"chair-schedule","label":"Chair Schedule","route":"/api/manage/chair-schedule","icon":"💺","roles":["manager","owner"],"scope":"kit","context":"physical"}],"fees":{"billingModel":"per-transaction","feeMode":"all-channels"}}},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"wanderlands","type":"soulcraft","role":"primary","status":"beta","name":"Wanderlands","description":"Explore vast outdoor biomes, discover hidden caves, conquer the mountain peak","longDescription":"A turn-based roguelike wilderness adventure that showcases rich Brainy storage for RPG game state. Explore 5 outdoor biomes from lush Woodlands to the frozen Mountain Peak, discover cave mini-dungeons, fight 100+ monster types, and unlock 10 character classes. Brainy AI provides narration, shop dialogue, and combat companion.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🗡️","tags":["game","roguelike","exploration","rpg","adventure","inventory","brainy","sveltekit"],"allowedUsers":["david@soulcraft.com"],"variables":[{"key":"appName","label":"App Name","description":"The name of your Wanderlands installation","type":"string","required":true,"example":"wanderlands"},{"key":"description","label":"Description","description":"A short description of your adventure","type":"string","required":false,"example":"Explore vast wilderness biomes and discover hidden caves","default":"Explore vast wilderness biomes and discover hidden caves"}],"shared":{"industry":"games-entertainment","category":"games","aiExpertise":["RPG game mechanics and balancing","Roguelike design patterns","Procedural generation","Turn-based combat systems","Character progression design"],"dataModelHints":["person","thing","agent","location","event","concept","function"],"dataModel":{"entities":[{"domain":"character","type":"Person","description":"The player character with class, stats, and progression","products":{"workshop":{"view":"gallery","icon":"🧑"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"equipment","type":"Thing","description":"A weapon, armour, or accessory the character can equip","products":{"workshop":{"view":"gallery","icon":"⚔️"},"academy":{"mapsTo":"resource","assessable":false},"venue":{"mapsTo":"InventoryItemMeta","pos":false}}},{"domain":"consumable","type":"Thing","description":"A single-use item such as a potion or scroll","products":{"workshop":{"view":"gallery","icon":"🧪"},"academy":{"mapsTo":"resource","assessable":false},"venue":{"mapsTo":"InventoryItemMeta","pos":false}}},{"domain":"monster","type":"Person","description":"An enemy creature with combat stats and loot table","products":{"workshop":{"view":"gallery","icon":"👾"},"academy":{"mapsTo":"learning-subject","assessable":false}}},{"domain":"dungeon","type":"Location","description":"A cave or dungeon zone with floors, enemies, and rewards","products":{"workshop":{"view":"graph","icon":"🗺️"}}},{"domain":"run","type":"Event","description":"A complete adventure run with depth, kills, and outcome","products":{"workshop":{"view":"timeline","icon":"🎲"},"academy":{"mapsTo":"practice-session","assessable":true},"venue":{"mapsTo":"BookingMeta","pos":false}}},{"domain":"achievement","type":"Concept","description":"A permanently unlocked achievement earned through gameplay","products":{"workshop":{"view":"gallery","icon":"🏆"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"skill","type":"Concept","description":"An active or passive skill in a character's ability kit","products":{"workshop":{"view":"graph","icon":"✨"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}}],"relationships":[{"from":"character","to":"equipment","verb":"Owns","description":"Character has this item in inventory"},{"from":"character","to":"equipment","verb":"Equips","description":"Character has this item currently equipped"},{"from":"run","to":"character","verb":"Contains","description":"Adventure run is played by this character"},{"from":"character","to":"achievement","verb":"Achieves","description":"Character has earned this achievement"}]},"suggestions":[{"label":"Start adventure","prompt":"Start a new adventure run and help me explore"},{"label":"Check inventory","prompt":"Show me my current inventory and equipped items"},{"label":"View stats","prompt":"Show my character stats, level, and progression"},{"label":"Combat tips","prompt":"Give me combat strategy tips for my current situation"},{"label":"Run history","prompt":"Show my previous adventure runs and best achievements"},{"label":"Customize Brainy","prompt":"Show me the Brainy AI personas and help me customize the narrator, merchant, or companion personality"}]},"academy":{"skillPath":"game-development","level":"advanced","learningObjectives":["Implement turn-based combat with damage formulas, status effects, and AI decision logic","Design a procedural dungeon generator that produces varied but solvable floor layouts","Build a persistent game state layer that saves and restores character progression across sessions","Create a balanced character class system with distinct playstyles and late-game viability","Integrate an AI companion with context-aware dialogue that responds to game events"],"assessmentTypes":["demo","code-review","playtest"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"game-developer"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"advanced","templateTier":4,"aiPersona":{"role":"You are Brainy, a multi-role AI companion for Wanderlands: an encouraging adventure narrator, a friendly merchant who reveals secrets, and a loyal combat ally with enthusiastic battle commentary.","expertise":["RPG game mechanics","Adventure narration","Combat strategy","Item and inventory management","Character class optimization"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"creative","defaultTab":"app","defaultView":"app","layout":{"leftDock":"files","rightDock":"inspector"},"onboarding":{"showGuide":true,"highlightFeatures":["app"],"suggestedActions":["Start a new adventure","Choose your character class","Explore and find loot","Battle monsters"]}},"graphGuidance":{"conceptCreation":{"typeMapping":{"character":"person","equipment":"thing","consumable":"thing","monster":"agent","dungeon":"location","run":"event","achievement":"concept","skill":"function"}},"relationshipPatterns":[{"from":"person","to":"thing","verb":"owns","description":"Character owns item"},{"from":"person","to":"thing","verb":"equips","description":"Character has item equipped"},{"from":"event","to":"person","verb":"contains","description":"Run uses character"},{"from":"person","to":"concept","verb":"achieves","description":"Character earned achievement"}],"rules":["Characters persist across runs","Equipment is stored with stats metadata","Runs track depth, kills, and loot","Achievements unlock permanently"]},"qualityGates":{"fileChecks":[{"path":"package.json","required":["svelte","@sveltejs/kit"]},{"path":"src/lib/game/Dungeon.ts","required":["generateFloor"]},{"path":"src/lib/game/Combat.ts","required":["Combat","attack"]}],"projectChecks":["App starts with npm run dev","Zones generate correctly","Combat system works","Inventory persists to Brainy","Character progression saves"]},"publishConfig":{"contentType":"app","publishable":false},"sampleData":{"entities":[{"type":"person","name":"Hero","properties":{"class":"warrior","level":1,"xp":0,"gold":0,"stats":{"hp":100,"maxHp":100,"attack":10,"defense":5}}}]},"templateMetadata":{"runnable":true,"runnableCommand":"npm run dev"}},"venue":{"bookingNumberPrefix":"WL","subdomainPrefix":"wanderlands","features":{"customerAccounts":true,"apps":true,"subscriptions":true,"website":true,"analytics":true,"cms":true,"blog":true,"giftCards":false,"pos":false,"loyalty":true,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.35 0.14 155)","bgBase":"oklch(0.08 0.04 240)","accent":"oklch(0.68 0.20 55)","textPrimary":"oklch(0.95 0.02 240)","displayFont":"Cinzel Decorative","bodyFont":"Lato"},"experienceTypes":[],"chatSuggestions":[{"label":"Start a new run","message":"I want to start a new dungeon run. Give me a quick overview of the classes.","emoji":"⚔️"},{"label":"My progress","message":"Show me my current run stats, achievements, and unlocks.","emoji":"📊"},{"label":"Upgrade to premium","message":"What extra characters and content do premium subscribers get?","emoji":"👑"},{"label":"Join the community","message":"Is there a community or leaderboard for Wanderlands players?","emoji":"🏆"}]},"previewImageUrl":"kits/wanderlands/images/preview.webp"},{"id":"restaurant-cafe","type":"soulcraft","role":"primary","status":"released","name":"Restaurant & Cafe","description":"Full-service restaurant and cafe platform for reservations, table management, menu curation, and kitchen operations","longDescription":"Complete restaurant and cafe management for dine-in, takeout, catering, and private dining — table reservations, menu engineering, kitchen display coordination, inventory tracking, and guest history. Handles walk-in seating alongside booked reservations.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🍽️","tags":["restaurant","cafe","dining","food","reservations","kitchen"],"previewImageUrl":"kits/restaurant-cafe/images/preview.webp","variables":[{"key":"businessName","label":"Business Name","description":"The name of your restaurant or cafe (e.g. \"The Copper Table\")","type":"string","required":true,"example":"The Copper Table","default":"The Copper Table"},{"key":"tagline","label":"Tagline","description":"A short phrase shown under the logo (e.g. \"farm to fork, every day.\")","type":"string","required":false,"example":"farm to fork, every day.","default":"farm to fork, every day."},{"key":"locationName","label":"Location Name","description":"The display name for this specific location (e.g. \"The Copper Table Downtown\")","type":"string","required":true,"example":"The Copper Table Downtown"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this location used in reservation links (e.g. \"downtown\")","type":"string","required":true,"example":"downtown"},{"key":"address","label":"Street Address","description":"Street address of your restaurant (e.g. \"412 Main St\")","type":"address","required":true,"example":"412 Main St"},{"key":"city","label":"City","description":"City where your restaurant is located","type":"string","required":true,"example":"Portland"},{"key":"state","label":"State / Province","description":"Two-letter state or province code","type":"string","required":true,"example":"OR"},{"key":"zip","label":"ZIP / Postal Code","type":"string","required":true,"example":"97201"},{"key":"timezone","label":"Timezone","description":"IANA timezone for this location (used for scheduling)","type":"timezone","required":true,"example":"America/Los_Angeles","default":"America/New_York"},{"key":"phone","label":"Phone Number","type":"phone","required":true,"example":"(503) 555-0187"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"hello@thecoppertable.com"},{"key":"cuisineType","label":"Cuisine Type","description":"Primary cuisine style (e.g. \"American\", \"Italian\", \"Japanese\", \"Cafe & Bakery\")","type":"string","required":false,"example":"New American","default":"New American"}],"shared":{"industry":"food-beverage","category":"hospitality","glossary":{"cover":"A single seated guest — used to measure dining room capacity and turnover rate","turn":"The number of times a table is seated and cleared during a service period","mise en place":"The complete preparation and organization of ingredients and tools before service begins","86'd":"An item that is no longer available for the current service, either sold out or pulled from the menu","ticket":"A printed or digital order sent from the POS to the kitchen display for preparation","comp":"A menu item served at no charge, typically for guest recovery or staff meals"},"aiExpertise":["restaurant and cafe operations and service flow","reservation management and table turn optimization","menu engineering, food costing, and pricing strategy","kitchen workflow and ticket pacing","food safety, allergen awareness, and dietary accommodation"],"dataModelHints":["booking","experience","time_slot","staff","customer","inventory_item","menu_item","loyalty_account","transaction"],"dataModel":{"entities":[{"domain":"location","type":"Location","description":"A physical restaurant or cafe location with its own floor plan, table layout, menu, and kitchen.","products":{"workshop":{"view":"graph","icon":"📍"},"venue":{"mapsTo":"LocationMeta","pos":false}}},{"domain":"booking","type":"Event","description":"A table reservation for a specific party size, date, and time — with optional seating preferences and special occasion notes.","products":{"workshop":{"view":"board","icon":"📅"},"venue":{"mapsTo":"BookingMeta","pos":true},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"time_slot","type":"Event","description":"An available reservation slot at a specific time, tied to table availability and service period capacity.","products":{"workshop":{"view":"timeline","icon":"🕐"},"venue":{"mapsTo":"TimeSlotMeta","pos":false}}},{"domain":"experience","type":"Product","description":"A dining experience type such as Dine-In, Takeout/Pickup, Catering Event, or Private Dining — each with its own flow, duration, and pricing model.","products":{"workshop":{"view":"gallery","icon":"🍽️"},"venue":{"mapsTo":"ExperienceMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"menu_item","type":"Thing","description":"A dish, drink, or dessert on the menu with price, category, dietary flags, allergen info, and prep time.","products":{"workshop":{"view":"board","icon":"🍴"},"venue":{"mapsTo":"InventoryItemMeta","pos":true},"academy":{"mapsTo":"material","assessable":false}}},{"domain":"customer","type":"Person","description":"A restaurant guest with reservation history, dietary preferences, seating preferences, and loyalty account.","products":{"workshop":{"view":"board","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"staff","type":"Person","description":"A team member — head chef, line cook, server, host, bartender, barista, or manager — with their schedule, role, and section assignments.","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 dining check, takeout order, or catering invoice, always stored in cents.","products":{"workshop":{"view":"timeline","icon":"💳"},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"inventory_item","type":"Thing","description":"A kitchen supply or ingredient — fresh produce, proteins, dry goods, beverages, or packaging — tracked for usage, waste, and reorder.","products":{"workshop":{"view":"graph","icon":"📦"},"venue":{"mapsTo":"InventoryItemMeta","pos":false},"academy":{"mapsTo":"material","assessable":false}}},{"domain":"gift_card","type":"Thing","description":"A digital or physical gift card redeemable for dine-in, takeout, or catering services.","products":{"workshop":{"view":"board","icon":"🎁"},"venue":{"mapsTo":"GiftCardMeta","pos":true}}},{"domain":"loyalty_account","type":"Person","description":"A guest loyalty account tracking visits and spend, with tier rewards for frequent diners.","products":{"workshop":{"view":"stats","icon":"⭐"},"venue":{"mapsTo":"LoyaltyAccountMeta","pos":false}}},{"domain":"content_page","type":"Document","description":"A CMS-managed page such as Menu, About Us, Private Events, or Catering.","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 seasonal menus, chef spotlights, sourcing stories, or event recaps.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"customer","to":"booking","verb":"Creates","description":"Guest makes a reservation for a specific date, time, and party size."},{"from":"booking","to":"experience","verb":"Contains","description":"Reservation is for a specific dining experience (dine-in, private dining, catering)."},{"from":"booking","to":"time_slot","verb":"ParticipatesIn","description":"Reservation occupies a specific time slot within the service period."},{"from":"experience","to":"time_slot","verb":"OccursAt","description":"A dining experience is available at scheduled reservation slots."},{"from":"staff","to":"time_slot","verb":"ParticipatesIn","description":"A server, host, or bartender is assigned to a section or station during a service period."},{"from":"experience","to":"menu_item","verb":"Contains","description":"A dining experience includes access to the menu — dine-in sees the full menu, catering uses a curated selection."},{"from":"menu_item","to":"inventory_item","verb":"Consumes","description":"Each dish consumes specific ingredients tracked for prep, waste, and reorder."},{"from":"transaction","to":"booking","verb":"References","description":"Payment or refund record links back to the dining reservation or takeout order."}]},"suggestions":[{"label":"Table turn rates tonight","prompt":"Show me table turn rates and cover counts for tonight's dinner service — where are the bottlenecks?"},{"label":"Menu item profitability","prompt":"Break down food cost percentage and margin for each menu category this month"},{"label":"Reservation trends","prompt":"What are the busiest reservation windows this week and where do we have open capacity?"},{"label":"Inventory usage report","prompt":"Which ingredients are running low and need to be reordered before the weekend?"}]},"workshop":{"aiPersona":{"role":"You are the AI assistant for a restaurant and cafe. You help chefs, managers, and front-of-house staff manage reservations, menu engineering, kitchen inventory, and service flow. You understand the business of food — from plate costing and allergen safety to table turn optimization and seasonal menu planning.","expertise":["reservation management and table turn optimization","menu engineering, food costing, and pricing strategy","kitchen inventory and ingredient sourcing","front-of-house service flow and section management","restaurant and cafe operations"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["reservation or booking mentioned","menu item, dish, or drink introduced","chef, server, or kitchen staff referenced","ingredient or kitchen supply mentioned","guest or regular diner discussed"],"typeMapping":{"reservation":"event","booking":"event","time slot":"event","chef":"person","server":"person","bartender":"person","barista":"person","host":"person","guest":"person","customer":"person","ingredient":"thing","supply":"thing","menu item":"thing","dish":"thing","experience":"product","transaction":"measurement"}},"relationshipPatterns":[{"from":"customer","to":"booking","verb":"Creates","description":"Guest makes a reservation for a specific date and party size"},{"from":"staff","to":"booking","verb":"ParticipatesIn","description":"Server or host manages the table during the guest's visit"},{"from":"booking","to":"experience","verb":"Contains","description":"Reservation is for a specific dining experience (dine-in, catering, private)"},{"from":"menu_item","to":"inventory_item","verb":"Consumes","description":"Each dish consumes ingredients tracked for prep and reorder"}],"rules":["Menu items must include allergen flags and dietary accommodation notes","Catering and private dining experiences require advance deposit confirmation","Kitchen inventory should track par levels and trigger reorder alerts at threshold"]},"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"board"},"qualityGates":{"projectChecks":["All menu items have accurate food cost percentages and allergen flags","Each service period has configured table capacity and reservation slots","Kitchen inventory par levels and reorder thresholds are set for all categories"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Reservation Board","view":"board","entityTypes":["booking","time_slot"],"description":"Tonight's reservations with table assignments, party sizes, and seating preferences"},{"name":"Guest Directory","view":"gallery","entityTypes":["customer"],"description":"Guest profiles with visit history, dietary preferences, and special occasion notes"},{"name":"Revenue by Service","view":"stats","entityTypes":["transaction"],"description":"Revenue breakdown across dine-in, takeout, catering, and private dining"},{"name":"Staff Schedule","view":"board","entityTypes":["staff","time_slot"],"description":"Front-of-house and kitchen staff shifts with section and station assignments"},{"name":"Menu & Inventory","view":"tree","entityTypes":["menu_item","inventory_item"],"description":"Menu items organized by category with ingredient usage, food cost, and stock levels"}]}},"academy":{"skillPath":"food-service-fundamentals","level":"beginner","learningObjectives":["Understanding kitchen brigade hierarchy and station responsibilities","Food safety fundamentals — temperature control, cross-contamination prevention, and allergen management","Basic knife skills, mise en place, and prep workflow","Menu engineering — balancing food cost, plate presentation, and guest value perception","Front-of-house service standards — greeting, pacing, upselling, and guest recovery"],"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":"food-service-fundamentals"},"gamification":{"enabled":true,"achievements":["chain-maker","deep-thinker","bridge-builder"],"streaks":false,"leaderboard":false},"cohort":{"maxSize":4,"durationDays":90,"fixedStart":false}},"venue":{"bookingNumberPrefix":"RC","subdomainPrefix":"restaurant","features":{"animals":false,"adoption":false,"memories":false,"loyalty":true,"giftCards":true,"waivers":false,"blog":true,"pos":true,"cms":true,"partners":false,"franchise":true,"customerAccounts":true,"booking":true,"inventory":true,"analytics":true,"subscriptions":false,"support":false,"website":true},"theme":{"primary":"oklch(0.50 0.10 55)","bgBase":"oklch(0.97 0.01 60)","accent":"oklch(0.45 0.12 15)","textPrimary":"oklch(0.22 0.03 50)","displayFont":"Playfair Display","bodyFont":"Inter"},"experienceTypes":[{"slug":"dine-in","name":"Dine-In","description":"Full table service with your choice from the current menu. Reservations recommended for dinner service, walk-ins welcome subject to availability.","priceInCents":0,"durationMinutes":90,"minGuests":1,"maxGuests":8,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.65 0.10 55)","sessionAttributeDefinitions":[{"key":"tableNumber","label":"Table Number","type":"text","perGuest":false,"required":false},{"key":"serverName","label":"Server Name","type":"text","perGuest":false,"required":false},{"key":"dietaryNotes","label":"Dietary Notes","type":"text","perGuest":false,"required":false},{"key":"specialOccasion","label":"Special Occasion","type":"text","perGuest":false,"required":false}]},{"slug":"takeout-pickup","name":"Takeout / Pickup","description":"Order ahead for pickup at the counter. Full menu available with packaging optimized for transport.","priceInCents":0,"durationMinutes":20,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.60 0.08 140)","sessionAttributeDefinitions":[{"key":"pickupTime","label":"Pickup Time","type":"text","perGuest":false,"required":true},{"key":"orderNotes","label":"Order Notes","type":"text","perGuest":false,"required":false}]},{"slug":"catering-event","name":"Catering Event","description":"Full-service or drop-off catering for corporate events, weddings, and private parties. Custom menus built with the chef, minimum 20 guests.","priceInCents":7500,"durationMinutes":240,"minGuests":20,"maxGuests":200,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.55 0.12 280)","sessionAttributeDefinitions":[{"key":"eventType","label":"Event Type","type":"text","perGuest":false,"required":true},{"key":"menuSelection","label":"Menu Selection","type":"text","perGuest":false,"required":false},{"key":"venueAddress","label":"Venue Address","type":"text","perGuest":false,"required":false},{"key":"dietaryRequirements","label":"Dietary Requirements","type":"text","perGuest":false,"required":false},{"key":"serviceNotes","label":"Service Notes","type":"text","perGuest":false,"required":false}]},{"slug":"private-dining","name":"Private Dining","description":"Exclusive use of the private dining room with a prix fixe or custom menu. Ideal for celebrations, business dinners, and tasting events.","priceInCents":12500,"durationMinutes":120,"minGuests":6,"maxGuests":24,"requiresWaiver":false,"isCombo":false,"sortOrder":3,"color":"oklch(0.45 0.10 15)","sessionAttributeDefinitions":[{"key":"serverName","label":"Server Name","type":"text","perGuest":false,"required":false},{"key":"menuSelection","label":"Menu Selection","type":"text","perGuest":false,"required":true},{"key":"specialOccasion","label":"Special Occasion","type":"text","perGuest":false,"required":false},{"key":"dietaryRequirements","label":"Dietary Requirements","type":"text","perGuest":false,"required":false},{"key":"serviceNotes","label":"Service Notes","type":"text","perGuest":false,"required":false}]}],"inventoryCategories":[{"id":"fresh-produce","label":"Fresh Produce","icon":"🥬"},{"id":"proteins-dairy","label":"Proteins & Dairy","icon":"🥩"},{"id":"dry-goods-pantry","label":"Dry Goods & Pantry","icon":"🫙"},{"id":"beverages","label":"Beverages","icon":"🍷"},{"id":"supplies-packaging","label":"Supplies & Packaging","icon":"📦"}],"staffRoles":[{"id":"head-chef","label":"Head Chef","defaultCapabilities":["session-log","inventory-view","inventory-edit"]},{"id":"line-cook","label":"Line Cook","defaultCapabilities":["session-log","inventory-view"]},{"id":"server","label":"Server","defaultCapabilities":["checkin","pos","session-log"]},{"id":"host-hostess","label":"Host / Hostess","defaultCapabilities":["checkin","bookings-view","session-log"]},{"id":"bartender","label":"Bartender","defaultCapabilities":["pos","session-log","inventory-view"]},{"id":"barista","label":"Barista","defaultCapabilities":["pos","session-log"]},{"id":"manager","label":"Manager","defaultCapabilities":["checkin","pos","session-log","bookings-view","inventory-view","inventory-edit"]}],"chatSuggestions":[{"label":"Make a reservation","message":"I'd like to make a reservation. What times are available?","emoji":"📅"},{"label":"See the menu","message":"Can I see your current menu? I have some dietary restrictions I'd like to ask about.","emoji":"📋"},{"label":"Private dining","message":"I'm interested in booking your private dining room for a special event. What are the options?","emoji":"🥂"},{"label":"Gift cards","message":"I'd like to purchase a gift card. What denominations do you offer?","emoji":"🎁"}],"inventoryLevelDetection":"manual","stations":[{"id":"pos","label":"Point of Sale","route":"/api/manage/pos","icon":"💳","roles":["staff","manager","owner"],"scope":"platform","context":"physical"},{"id":"checkin","label":"Check-in","route":"/api/manage/checkin","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":"kitchen-display","label":"Kitchen Display","route":"/api/manage/kitchen-display","icon":"🖥️","roles":["staff","manager","owner"],"scope":"kit","context":"physical"}],"fees":{"billingModel":"per-transaction","feeMode":"all-channels"}}},{"id":"consulting-practice","type":"soulcraft","role":"primary","status":"released","name":"Consulting Practice","description":"Full-service consulting platform for coaches, advisors, and consultants managing client engagements","longDescription":"Complete practice management for consultants, coaches, and advisors — client scheduling, engagement tracking, service tier pricing, resource sharing, and revenue analytics. Supports discovery calls through ongoing retainers with video sessions for remote client work.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"💼","tags":["consulting","coaching","advisory","professional-services","engagements","retainers"],"previewImageUrl":"kits/consulting-practice/images/preview.webp","variables":[{"key":"businessName","label":"Business Name","description":"The name of your consulting practice (e.g. \"Clearpath Advisory\")","type":"string","required":true,"example":"Clearpath Advisory","default":"Clearpath Advisory"},{"key":"tagline","label":"Tagline","description":"A short phrase shown under the logo (e.g. \"clarity through strategy.\")","type":"string","required":false,"example":"clarity through strategy.","default":"clarity through strategy."},{"key":"locationName","label":"Location Name","description":"The display name for this office or practice location (e.g. \"Clearpath Advisory Downtown\")","type":"string","required":true,"example":"Clearpath Advisory Downtown"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this location used in booking links (e.g. \"downtown\")","type":"string","required":true,"example":"downtown"},{"key":"address","label":"Street Address","description":"Street address of your office (e.g. \"400 Market St, Suite 1200\")","type":"address","required":true,"example":"400 Market St, Suite 1200"},{"key":"city","label":"City","description":"City where your practice is located","type":"string","required":true,"example":"San Francisco"},{"key":"state","label":"State / Province","description":"Two-letter state or province code","type":"string","required":true,"example":"CA"},{"key":"zip","label":"ZIP / Postal Code","type":"string","required":true,"example":"94105"},{"key":"timezone","label":"Timezone","description":"IANA timezone for this location (used for scheduling)","type":"timezone","required":true,"example":"America/Los_Angeles","default":"America/New_York"},{"key":"phone","label":"Phone Number","type":"phone","required":true,"example":"(415) 555-0198"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"hello@clearpathadvisory.com"},{"key":"specialty","label":"Area of Expertise","description":"Your primary consulting specialty (e.g. \"organizational strategy\", \"executive coaching\", \"digital transformation\")","type":"string","required":true,"example":"organizational strategy"}],"shared":{"industry":"professional-services","category":"hospitality","glossary":{"discovery call":"A complimentary introductory conversation to assess fit, understand the client's challenges, and outline a potential engagement path","engagement":"A defined consulting project or ongoing advisory relationship with a client, scoped by deliverables and timeline","retainer":"A recurring monthly arrangement where the client has ongoing access to consulting services at a fixed rate","scope of work":"A detailed document defining deliverables, timeline, responsibilities, and success criteria for an engagement","deliverable":"A tangible output produced during an engagement — a report, framework, strategy deck, or implementation plan","stakeholder mapping":"The process of identifying and analyzing key decision-makers, influencers, and affected parties in a client organization"},"aiExpertise":["consulting practice operations and client management","engagement scoping, pricing, and proposal development","client scheduling and session preparation","framework and methodology application","revenue tracking and pipeline management"],"dataModelHints":["booking","experience","time_slot","staff","customer","transaction","resource"],"dataModel":{"entities":[{"domain":"location","type":"Location","description":"A physical office or virtual practice location where consulting sessions are held.","products":{"workshop":{"view":"graph","icon":"📍"},"venue":{"mapsTo":"LocationMeta","pos":false}}},{"domain":"booking","type":"Event","description":"A scheduled consultation session — discovery call, strategy session, coaching meeting, or workshop — with a specific consultant.","products":{"workshop":{"view":"board","icon":"📅"},"venue":{"mapsTo":"BookingMeta","pos":true},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"time_slot","type":"Event","description":"An available consultation slot tied to a consultant's calendar, bookable by clients.","products":{"workshop":{"view":"timeline","icon":"🕐"},"venue":{"mapsTo":"TimeSlotMeta","pos":false}}},{"domain":"experience","type":"Product","description":"A service tier such as Discovery Call, Strategy Session, Half-Day Workshop, Monthly Retainer, or Executive Coaching — each with pricing and duration.","products":{"workshop":{"view":"gallery","icon":"💼"},"venue":{"mapsTo":"ExperienceMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"customer","type":"Person","description":"A client with engagement history, session notes, shared resources, and billing records.","products":{"workshop":{"view":"board","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"staff","type":"Person","description":"A senior consultant, associate consultant, practice manager, or administrative assistant on the team.","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 consultation session or retainer payment, always stored in cents.","products":{"workshop":{"view":"timeline","icon":"💳"},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"resource","type":"Document","description":"An article, framework, template, case study, or reference document shared with clients during engagements.","products":{"workshop":{"view":"board","icon":"📄"},"venue":{"mapsTo":"ContentPageMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}},{"domain":"content_page","type":"Document","description":"A CMS-managed page such as Services, About, Case Studies, or Methodology.","products":{"workshop":{"view":"board","icon":"📄"},"venue":{"mapsTo":"ContentPageMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}},{"domain":"blog_post","type":"Document","description":"A published thought leadership article, industry insight, or case study summary.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"customer","to":"booking","verb":"Creates","description":"Client books a consultation session for a specific service tier."},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific service type (discovery call, strategy session, workshop, etc.)."},{"from":"booking","to":"time_slot","verb":"ParticipatesIn","description":"Booking occupies a specific slot in the consultant's calendar."},{"from":"experience","to":"time_slot","verb":"OccursAt","description":"A service tier is available at scheduled slots for client booking."},{"from":"staff","to":"time_slot","verb":"ParticipatesIn","description":"A consultant is assigned to a time slot and conducts the session."},{"from":"resource","to":"booking","verb":"References","description":"Frameworks, templates, or articles shared with the client during or after a session."},{"from":"transaction","to":"booking","verb":"References","description":"Payment or refund record links back to the consultation session."},{"from":"staff","to":"customer","verb":"ParticipatesIn","description":"A consultant is assigned as the primary advisor for a client relationship."}]},"suggestions":[{"label":"Client pipeline overview","prompt":"Show me the current client pipeline — who's in discovery, active engagements, and pending proposals?"},{"label":"Revenue by service tier","prompt":"Break down revenue across discovery calls, strategy sessions, workshops, coaching, and retainers for this month"},{"label":"Upcoming sessions this week","prompt":"What sessions are scheduled this week and which consultants are assigned to each?"},{"label":"Client engagement history","prompt":"Pull up the full engagement history and session notes for a specific client"}]},"workshop":{"aiPersona":{"role":"You are the AI assistant for a consulting practice. You help consultants and practice managers track client engagements, schedule sessions, manage service tiers, share resources, and analyze revenue. You understand professional services — from scoping engagements to building long-term advisory relationships.","expertise":["consulting engagement management and scoping","client scheduling and session preparation","service tier pricing and proposal development","revenue tracking and pipeline analytics","resource and framework library management"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["consultation or session mentioned","consultant or team member introduced","client or prospect discussed","framework, template, or deliverable referenced","engagement or retainer scoped"],"typeMapping":{"booking":"event","session":"event","consultation":"event","time slot":"event","consultant":"person","advisor":"person","coach":"person","client":"person","customer":"person","framework":"document","template":"document","resource":"document","experience":"product","service":"product","transaction":"measurement"}},"relationshipPatterns":[{"from":"customer","to":"booking","verb":"Creates","description":"Client books a consultation session"},{"from":"staff","to":"booking","verb":"ParticipatesIn","description":"Consultant conducts the session with the client"},{"from":"booking","to":"experience","verb":"Contains","description":"Session is for a specific service tier (discovery, strategy, workshop, coaching)"},{"from":"resource","to":"booking","verb":"References","description":"Frameworks and templates shared during the session"}],"rules":["Discovery calls are always complimentary — never charge for initial consultations","Each engagement should have a defined scope of work before the first paid session","Session notes and shared resources should be linked to the client record for continuity"]},"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"board"},"qualityGates":{"projectChecks":["All service tiers have pricing and duration configured","Each consultant has availability slots published for client booking","Client engagement records include scope of work and session history"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Engagement Board","view":"board","entityTypes":["booking","time_slot"],"description":"Active and upcoming consultation sessions with consultant assignments and client details"},{"name":"Client Directory","view":"gallery","entityTypes":["customer"],"description":"Client profiles with engagement history, session notes, and shared resources"},{"name":"Revenue Dashboard","view":"stats","entityTypes":["transaction"],"description":"Revenue breakdown across service tiers, retainer income, and monthly trends"},{"name":"Team Schedule","view":"board","entityTypes":["staff","time_slot"],"description":"Consultant availability with session assignments and capacity overview"},{"name":"Resource Library","view":"board","entityTypes":["resource"],"description":"Frameworks, templates, case studies, and reference documents organized by topic"}]}},"academy":{"skillPath":"consulting-fundamentals","level":"intermediate","learningObjectives":["Structuring a discovery call to qualify prospects and identify core challenges","Scoping engagements with clear deliverables, timelines, and pricing models","Facilitating strategy sessions that drive actionable outcomes for clients","Building and applying consulting frameworks to diverse business problems","Managing client relationships from initial engagement through long-term advisory"],"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":"consulting-fundamentals"},"gamification":{"enabled":true,"achievements":["chain-maker","deep-thinker","bridge-builder"],"streaks":false,"leaderboard":false},"cohort":{"maxSize":5,"durationDays":60,"fixedStart":false}},"venue":{"bookingNumberPrefix":"CP","subdomainPrefix":"consulting","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,"subscriptions":true,"support":true,"analytics":true,"website":true,"hall":{"enabled":true,"maxParticipants":10}},"theme":{"primary":"oklch(0.35 0.08 260)","bgBase":"oklch(0.98 0.005 260)","accent":"oklch(0.68 0.12 70)","textPrimary":"oklch(0.18 0.03 260)","displayFont":"Merriweather","bodyFont":"Inter"},"experienceTypes":[{"slug":"discovery-call","name":"Discovery Call","description":"A complimentary introductory conversation to understand your challenges, assess fit, and outline a potential engagement path. No commitment required.","priceInCents":0,"durationMinutes":30,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.65 0.10 150)","sessionAttributeDefinitions":[{"key":"consultantName","label":"Consultant Name","type":"text","perGuest":false,"required":false},{"key":"sessionNotes","label":"Session Notes","type":"text","perGuest":false,"required":false},{"key":"nextSteps","label":"Next Steps","type":"text","perGuest":false,"required":false}]},{"slug":"strategy-session","name":"Strategy Session","description":"A focused 90-minute deep-dive into a specific business challenge. Includes pre-session preparation, structured analysis, and a written summary with actionable recommendations.","priceInCents":35000,"durationMinutes":90,"minGuests":1,"maxGuests":4,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.45 0.10 260)","sessionAttributeDefinitions":[{"key":"consultantName","label":"Consultant Name","type":"text","perGuest":false,"required":false},{"key":"sessionNotes","label":"Session Notes","type":"text","perGuest":false,"required":false},{"key":"deliverables","label":"Deliverables","type":"text","perGuest":false,"required":false},{"key":"nextSteps","label":"Next Steps","type":"text","perGuest":false,"required":false}]},{"slug":"half-day-workshop","name":"Half-Day Workshop","description":"An intensive 4-hour facilitated workshop for teams. Covers strategic planning, process optimization, or organizational design with collaborative exercises and a post-workshop action plan.","priceInCents":150000,"durationMinutes":240,"minGuests":2,"maxGuests":10,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.55 0.12 30)","sessionAttributeDefinitions":[{"key":"consultantName","label":"Lead Facilitator","type":"text","perGuest":false,"required":false},{"key":"sessionNotes","label":"Session Notes","type":"text","perGuest":false,"required":false},{"key":"deliverables","label":"Deliverables","type":"text","perGuest":false,"required":false},{"key":"participantCount","label":"Participant Count","type":"text","perGuest":false,"required":false}]},{"slug":"monthly-retainer","name":"Monthly Retainer","description":"Ongoing strategic advisory with dedicated consultant access. Includes weekly check-ins, unlimited async communication, and monthly strategy reviews. Billed as a recurring subscription.","priceInCents":500000,"durationMinutes":60,"minGuests":1,"maxGuests":4,"requiresWaiver":false,"isCombo":false,"sortOrder":3,"color":"oklch(0.40 0.08 260)","sessionAttributeDefinitions":[{"key":"consultantName","label":"Consultant Name","type":"text","perGuest":false,"required":false},{"key":"sessionNotes","label":"Session Notes","type":"text","perGuest":false,"required":false},{"key":"retainerMonth","label":"Retainer Month","type":"text","perGuest":false,"required":false},{"key":"nextSteps","label":"Next Steps","type":"text","perGuest":false,"required":false}]},{"slug":"executive-coaching","name":"Executive Coaching","description":"A confidential one-on-one coaching session for leaders and executives. Focuses on leadership development, decision-making, communication, and personal effectiveness.","priceInCents":50000,"durationMinutes":60,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":4,"color":"oklch(0.60 0.10 45)","sessionAttributeDefinitions":[{"key":"consultantName","label":"Coach Name","type":"text","perGuest":false,"required":false},{"key":"sessionNotes","label":"Session Notes","type":"text","perGuest":false,"required":false},{"key":"goalsReviewed","label":"Goals Reviewed","type":"text","perGuest":false,"required":false},{"key":"nextSteps","label":"Next Steps","type":"text","perGuest":false,"required":false}]}],"inventoryCategories":[{"id":"office-supplies","label":"Office Supplies","icon":"🖊️"},{"id":"training-materials","label":"Training Materials","icon":"📚"},{"id":"subscriptions-tools","label":"Subscriptions & Tools","icon":"🔧"}],"staffRoles":[{"id":"senior-consultant","label":"Senior Consultant","defaultCapabilities":["checkin","pos","session-log","inventory-view","bookings-view"]},{"id":"associate-consultant","label":"Associate Consultant","defaultCapabilities":["checkin","pos","session-log"]},{"id":"practice-manager","label":"Practice Manager","defaultCapabilities":["checkin","pos","session-log","inventory-view","bookings-view"]},{"id":"administrative-assistant","label":"Administrative Assistant","defaultCapabilities":["checkin","pos","bookings-view"]}],"chatSuggestions":[{"label":"Book a consultation","message":"I'd like to schedule a consultation. What services do you offer?","emoji":"📅"},{"label":"Strategy session details","message":"I'm interested in a strategy session. What does the process look like and what should I prepare?","emoji":"🎯"},{"label":"Retainer options","message":"I'd like to learn about your monthly retainer offering. What's included?","emoji":"🤝"},{"label":"Executive coaching","message":"Tell me about your executive coaching program. What areas do you focus on?","emoji":"💡"}],"inventoryLevelDetection":"manual","stations":[{"id":"pos","label":"Point of Sale","route":"/api/manage/pos","icon":"💳","roles":["staff","manager","owner"],"scope":"platform","context":"both"},{"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":"Clients","route":"/api/manage/customers","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":"client-portal","label":"Client Portal","route":"/api/manage/client-portal","icon":"🏢","roles":["manager","owner"],"scope":"kit","context":"both"}],"fees":{"billingModel":"per-transaction","feeMode":"all-channels"}}},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"blog-series","type":"soulcraft","role":"primary","status":"released","name":"Blog Series","description":"Multi-part blog series with editorial calendar and SEO optimization","longDescription":"Plan and write a comprehensive blog series with content strategy, SEO keywords, publishing schedule, and cross-linking between posts.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"✍️","tags":["blogging","content","seo","writing"],"variables":[{"key":"projectName","label":"Series Title","description":"The title of your blog series","type":"string","required":true,"example":"Complete Guide to Web Development"},{"key":"author","label":"Author","description":"The author's name","type":"string","required":false,"example":"Your Name"},{"key":"targetAudience","label":"Target Audience","description":"Who you are writing for","type":"string","required":false,"example":"Junior developers"}],"shared":{"industry":"content-marketing","category":"creative","glossary":{},"aiExpertise":["Content strategy and planning","SEO optimization techniques","Editorial calendar management","Audience engagement","Content series structuring"],"dataModelHints":["document","topic","event"],"dataModel":{"entities":[{"domain":"post","type":"Document","description":"A single blog post within the series","products":{"workshop":{"view":"board","icon":"📝"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"topic","type":"Concept","description":"A subject or theme that posts explore","products":{"workshop":{"view":"graph","icon":"💡"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"category","type":"Concept","description":"A broad category grouping related posts","products":{"workshop":{"view":"graph","icon":"🏷️"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}},{"domain":"keyword","type":"Concept","description":"An SEO keyword targeted by one or more posts","products":{"workshop":{"view":"stats","icon":"🔑"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"audience","type":"Concept","description":"A reader segment the series is written for","products":{"workshop":{"view":"gallery","icon":"👥"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}}],"relationships":[{"from":"post","to":"category","verb":"InstanceOf","description":"Post belongs to this category"},{"from":"post","to":"keyword","verb":"References","description":"Post targets this SEO keyword"},{"from":"post","to":"post","verb":"RelatedTo","description":"Posts are part of the same series"},{"from":"post","to":"audience","verb":"References","description":"Post is written for this audience segment"}]},"suggestions":[{"label":"Plan a blog post","prompt":"Help me plan and outline a new blog post"},{"label":"Write a draft","prompt":"Help me write a draft for my next blog post"},{"label":"Generate topic ideas","prompt":"Brainstorm new blog topic ideas based on my existing content"},{"label":"Improve SEO","prompt":"Review my blog posts and suggest SEO improvements"},{"label":"Create content calendar","prompt":"Help me create a publishing schedule for my blog series"},{"label":"Review my posts","prompt":"Show me all my blog posts and their current status"}]},"academy":{"skillPath":"content-creation","level":"beginner","learningObjectives":["Plan a multi-part blog series with a unifying thesis and logical post sequence","Research and integrate primary SEO keywords into headlines and body copy naturally","Write introductions that hook readers and establish the value of reading on","Build an editorial calendar and maintain a consistent publishing cadence"],"assessmentTypes":["portfolio","peer-review"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"exploratory","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"blog-writer"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"beginner","templateTier":4,"aiPersona":{"role":"You are an expert content strategist and SEO writer helping creators plan, write, and publish successful blog series.","expertise":["Content strategy","SEO and keyword research","Editorial calendar planning","Blog writing and editing","Audience development"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"writer","defaultTab":"edit","defaultView":"calendar","defaultFile":"posts/01-intro.md","fallbackFiles":["planning/content-strategy.md","README.md"],"layout":{"leftDock":"files","rightDock":"properties"},"onboarding":{"showGuide":true,"highlightFeatures":["calendar","ai-chat"],"suggestedActions":["Define your content strategy first","Plan your post schedule in Calendar view","Write your first post using the template","Ask AI to help with headlines and SEO"]}},"graphGuidance":{"conceptCreation":{"triggers":["When user creates a new blog post","When user defines a topic or category","When user identifies a target keyword","When user mentions an audience segment"],"typeMapping":{"post":"document","topic":"concept","category":"concept","keyword":"concept","audience":"socialGroup"}},"relationshipPatterns":[{"from":"document","to":"concept","verb":"instanceOf","description":"Post belongs to category"},{"from":"document","to":"concept","verb":"references","description":"Post targets keyword"},{"from":"document","to":"document","verb":"relatedTo","description":"Posts in same series"},{"from":"document","to":"socialGroup","verb":"references","description":"Post targets audience"}],"rules":["Create document entities for each blog post","Link posts to their categories and topics","Track series relationships between posts","Note target keywords and audience segments"]},"qualityGates":{"fileChecks":[{"path":"posts/*.md","required":["Title","Meta Description","Primary Keyword"],"optional":["Draft","Checklist Before Publishing"]},{"path":"calendar.md","required":["Title","Status"],"optional":["Publish Date","Word Count"]}],"projectChecks":["Series overview is complete","At least one post is drafted","Publishing schedule is defined","SEO keywords are identified"],"exportReady":["All posts have meta descriptions","Internal links are in place","Images have alt text","Publishing dates are set"]},"templateMetadata":{"identifyByStructure":true},"exporters":[{"id":"blog-bundle","name":"Blog Series Bundle","description":"All blog posts ready for publishing","icon":"📦","format":"zip","category":"archive","handler":"markdown-bundle","options":{"includeFiles":["**/*.md"],"preserveStructure":true,"addReadme":true}}]},"venue":{"bookingNumberPrefix":"BS","subdomainPrefix":"blog","features":{"blog":true,"cms":true,"customerAccounts":true,"subscriptions":true,"website":true,"notifications":true,"analytics":true,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.40 0.14 255)","bgBase":"oklch(0.99 0.005 255)","accent":"oklch(0.60 0.12 200)","textPrimary":"oklch(0.20 0.03 255)","displayFont":"Merriweather","bodyFont":"Inter"},"experienceTypes":[{"slug":"content-strategy-consultation","name":"Content Strategy Consultation","description":"A one-on-one session to map your blog's niche, target audience, and editorial direction. Walk away with a tailored content strategy and 90-day topic roadmap.","priceInCents":15000,"durationMinutes":60,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.55 0.12 255)","sessionAttributeDefinitions":[{"key":"blogNiche","label":"Blog Niche","type":"text","perGuest":false,"required":true},{"key":"currentState","label":"Current State","type":"select","perGuest":false,"options":["Starting fresh","Existing blog (< 1 year)","Established blog (1+ years)"],"required":false}]},{"slug":"guest-post-placement","name":"Guest Post Placement","description":"Pitch and publish a contributed post in this blog. Includes editorial review, SEO optimization, and promotion to the subscriber list.","priceInCents":30000,"durationMinutes":30,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.50 0.10 200)","sessionAttributeDefinitions":[{"key":"topicPitch","label":"Article Topic / Pitch","type":"text","perGuest":false,"required":true}]}],"staffRoles":[{"id":"editor","label":"Editor","defaultCapabilities":["cms","analytics","notifications"]},{"id":"contributor","label":"Contributor","defaultCapabilities":["cms"]}],"chatSuggestions":[{"label":"Subscribe to the blog","message":"I'd like to subscribe and get new posts delivered to my inbox.","emoji":"📬"},{"label":"Write a guest post","message":"I'm interested in contributing a guest post. How does that work?","emoji":"✍️"},{"label":"Content strategy session","message":"I'd like to book a content strategy consultation. What does that involve?","emoji":"🗺️"},{"label":"Browse the archive","message":"Can you show me what topics are covered in this blog?","emoji":"📚"}]},"previewImageUrl":"kits/blog-series/images/preview.webp"},{"id":"saas-app","type":"soulcraft","role":"primary","status":"released","name":"SaaS Application","description":"Full-stack SaaS platform with recurring subscriptions, customer accounts, AI-powered support, and integrated marketing. Built for digital-first software businesses.","longDescription":"A complete SaaS platform kit covering subscription billing, customer lifecycle management, onboarding flows, and product analytics. Designed for digital-first software businesses that need to move fast without sacrificing operational clarity.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"💻","tags":["saas","software","subscriptions","digital","developer","b2b","b2c"],"variables":[{"key":"productName","label":"Product Name","description":"The name of your software product (e.g. \"Acme Analytics\")","type":"string","required":true,"example":"Acme Analytics"},{"key":"tagline","label":"Tagline","description":"A short phrase describing what your product does (shown under the logo)","type":"string","required":false,"example":"The analytics platform that grows with you"},{"key":"supportEmail","label":"Support Email","description":"Customer-facing support email address","type":"email","required":true,"example":"support@acmeanalytics.com"},{"key":"websiteUrl","label":"Website URL","description":"Your product's public website (used for links in transactional emails)","type":"url","required":false,"example":"https://acmeanalytics.com"},{"key":"twitter","label":"Twitter / X Handle","description":"Twitter username without the @","type":"string","required":false,"example":"acmeanalytics"},{"key":"trialDays","label":"Free Trial Length (days)","description":"Number of days in the free trial before payment is required. Set to 0 to disable trials.","type":"number","required":false,"example":"14","default":"14"}],"shared":{"industry":"saas","category":"business","glossary":{"MRR":"Monthly Recurring Revenue — the predictable monthly revenue from active subscriptions, excluding one-time charges","ARR":"Annual Recurring Revenue — MRR multiplied by 12, used for annual business reporting","churn":"The rate at which customers cancel their subscriptions, expressed as a percentage over a given period","ARPU":"Average Revenue Per User — total MRR divided by number of active subscribers","CAC":"Customer Acquisition Cost — total sales and marketing spend divided by new customers acquired","LTV":"Lifetime Value — average revenue a customer generates over their entire relationship with the product","NRR":"Net Revenue Retention — measures revenue growth or contraction within the existing customer base, accounting for expansions, contractions, and churn","activation":"The moment a new user reaches the 'aha moment' — the point where they've experienced the core value of the product","trial conversion":"The percentage of free trial users who become paying subscribers","expansion revenue":"Additional revenue from existing customers upgrading their plan or adding seats/usage","cohort":"A group of customers who started at the same time (e.g. all customers who signed up in January 2026)"},"aiExpertise":["SaaS metrics and business model analysis","subscription pricing strategy and packaging","customer churn analysis and retention","user onboarding and activation optimization","product-led growth (PLG) strategies","unit economics (CAC, LTV, payback period)","SaaS financial modeling and forecasting"],"dataModelHints":["subscription","subscription_plan","customer","transaction","usage_event","support_ticket"],"dataModel":{"entities":[{"domain":"customer","type":"Person","description":"A registered user or organization with an active or trialing account in the SaaS product.","products":{"workshop":{"view":"board","icon":"👤"},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"subscription","type":"Event","description":"An active, trialing, or canceled subscription linking a customer to a plan with billing cycle and status.","products":{"workshop":{"view":"board","icon":"🔄"},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"subscription_plan","type":"Product","description":"A pricing tier (e.g. Starter, Pro, Enterprise) defining feature access, usage limits, and monthly price.","products":{"workshop":{"view":"gallery","icon":"💳"},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"transaction","type":"Measurement","description":"A billing event — charge, refund, or credit — always stored in cents and linked to a subscription.","products":{"workshop":{"view":"timeline","icon":"💰"}}},{"domain":"usage_event","type":"Measurement","description":"A recorded product usage metric such as API calls, seats used, or storage consumed in a billing period.","products":{"workshop":{"view":"stats","icon":"📊"}}},{"domain":"support_ticket","type":"Event","description":"An inbound support request from a customer, tracked through triage, assignment, and resolution.","products":{"workshop":{"view":"board","icon":"🎫"}}},{"domain":"content_page","type":"Document","description":"A CMS-managed page such as Pricing, Documentation overview, or Terms of Service.","products":{"workshop":{"view":"board","icon":"📄"},"academy":{"mapsTo":"learning-resource","assessable":false}}},{"domain":"blog_post","type":"Document","description":"A published post covering product updates, tutorials, engineering stories, or company news.","products":{"workshop":{"view":"board","icon":"✍️"},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"customer","to":"subscription","verb":"Creates","description":"Customer signs up for or upgrades to a subscription plan."},{"from":"subscription","to":"subscription_plan","verb":"References","description":"Subscription is bound to a specific pricing plan defining feature flags and usage limits."},{"from":"transaction","to":"subscription","verb":"References","description":"Billing transaction links back to the subscription it charges or credits."},{"from":"usage_event","to":"subscription","verb":"References","description":"Usage metric is attributed to the subscription account that consumed it."},{"from":"customer","to":"support_ticket","verb":"Creates","description":"Customer opens a support ticket that is triaged, assigned, and resolved by the team."}]},"suggestions":[{"label":"Design pricing tiers","prompt":"Help me design my subscription pricing tiers — plans, features, and pricing strategy."},{"label":"Map onboarding flow","prompt":"Let's map out the ideal onboarding flow from signup to activation for my product."},{"label":"Analyze churn drivers","prompt":"I want to understand why customers are churning and build a retention strategy."},{"label":"Visualize knowledge graph","prompt":"Show me a visualization of my product knowledge graph."}]},"academy":{"skillPath":"saas-product-management","level":"intermediate","learningObjectives":["Product analytics and key SaaS metric interpretation","User lifecycle management and activation strategies","Feature prioritization frameworks and roadmap planning","SaaS metrics modeling: MRR, churn, LTV, and NRR"],"assessmentTypes":["portfolio","peer-review"],"mode":"certification","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"neutral","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":true,"certificationSlug":"saas-builder"},"gamification":{"enabled":true,"achievements":["deep-thinker","completionist","chain-maker"],"streaks":false,"leaderboard":true}},"venue":{"features":{"subscriptions":true,"customerAccounts":true,"apps":true,"documents":true,"support":true,"blog":true,"cms":true,"website":true,"notifications":true},"theme":{"primary":"oklch(0.52 0.24 258)","bgBase":"oklch(0.99 0.005 258)","accent":"oklch(0.62 0.18 195)","textPrimary":"oklch(0.22 0.03 258)","displayFont":"Plus Jakarta Sans","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Manage subscription","message":"I'd like to view or make changes to my subscription.","emoji":"💳"},{"label":"Billing question","message":"I have a question about my bill or invoice.","emoji":"🧾"},{"label":"Get help","message":"I need help with something. Can you assist me?","emoji":"💬"},{"label":"Upgrade my plan","message":"I'm interested in upgrading to a higher plan. What are my options?","emoji":"🚀"}],"fees":{"billingModel":"subscription","feeMode":"online-only"}},"workshop":{"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"graph"},"aiPersona":{"role":"You are a senior SaaS architect and product strategist with deep experience building subscription software businesses. You think in unit economics, product-led growth loops, and scalable architecture. You are direct and practical — you help founders and product teams make clear, evidence-based decisions.","expertise":["SaaS metrics and business model analysis","subscription pricing and packaging strategy","customer churn analysis and retention playbooks","user onboarding and activation flow design","API design and developer experience","product-led growth (PLG) and self-serve funnels","SaaS financial modeling and scenario analysis"],"tone":"collaborator","avoidances":["Don't over-engineer — prefer the simplest solution that solves the actual problem","Don't design for scale that doesn't exist yet — validate first, optimize later","Don't recommend tooling without understanding the team's context and constraints"]},"publishConfig":{"contentType":"app","publishable":true,"appEntry":"src/App.svelte"},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Customer Accounts","view":"board","entityTypes":["customer"],"description":"Track customers by plan tier, trial status, and lifecycle stage"},{"name":"Revenue Metrics","view":"stats","entityTypes":["transaction"],"description":"MRR, ARR, churn, ARPU, and expansion revenue at a glance"},{"name":"Support Queue","view":"board","entityTypes":["event"],"description":"Triage and resolve open support tickets by priority"},{"name":"App Analytics","view":"timeline","entityTypes":["measurement"],"description":"Usage events and activation milestones over time"},{"name":"Subscription Graph","view":"graph","entityTypes":["customer","transaction"],"description":"Graph of customer relationships, plans, and revenue flows"}]}},"previewImageUrl":"kits/saas-app/images/preview.webp"},{"id":"petal-press","type":"soulcraft","role":"primary","status":"released","name":"Petal & Press","description":"Flower arrangement workshop studio. Design seasonal bouquets, centerpieces, and wreaths — guided by a floral designer. Take home what you create.","longDescription":"A floral studio platform for seasonal arrangement workshops, centerpiece classes, wreath making, and private floral parties. Manages fresh flower inventory, designer scheduling, and guest bookings for take-home botanical creations.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🌸","tags":["flowers","floral design","bouquet","workshop","arrangement","botanical","experience"],"previewImageUrl":"kits/petal-press/images/preview.webp","variables":[{"key":"businessName","label":"Business Name","description":"The name of your floral studio (e.g. \"Petal & Press\")","type":"string","required":true,"example":"Petal & Press","default":"Petal & Press"},{"key":"tagline","label":"Tagline","description":"A short phrase describing your studio (shown under the logo)","type":"string","required":false,"example":"bloom. arrange. take home.","default":"bloom. arrange. take home."},{"key":"locationName","label":"Location Name","description":"The display name for this specific location (e.g. \"Petal & Press Westside\")","type":"string","required":true,"example":"Petal & Press Westside"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this location used in booking links (e.g. \"westside\")","type":"string","required":true,"example":"westside"},{"key":"address","label":"Street Address","description":"Street address of your floral studio","type":"address","required":true,"example":"214 Bloom St"},{"key":"city","label":"City","description":"City where your studio is located","type":"string","required":true,"example":"Asheville"},{"key":"state","label":"State / Province","description":"Two-letter state or province code","type":"string","required":true,"example":"NC"},{"key":"zip","label":"ZIP / Postal Code","type":"string","required":true,"example":"28801"},{"key":"timezone","label":"Timezone","description":"IANA timezone for this location (used for scheduling)","type":"timezone","required":true,"example":"America/New_York","default":"America/New_York"},{"key":"phone","label":"Phone Number","type":"phone","required":true,"example":"(828) 555-0163"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"hello@petalandpress.com"},{"key":"instagram","label":"Instagram Handle","description":"Instagram username without the @","type":"string","required":false,"example":"petalandpress"},{"key":"facebook","label":"Facebook Page","description":"Facebook page name or URL slug","type":"string","required":false,"example":"PetalAndPress"},{"key":"tiktok","label":"TikTok Handle","description":"TikTok username without the @","type":"string","required":false,"example":"petalandpress"},{"key":"maxCapacity","label":"Workshop Studio Capacity","description":"Maximum number of guests at arrangement stations at one time","type":"number","required":false,"example":"12","default":"12"},{"key":"floralDesignerName","label":"Lead Floral Designer Name","description":"Name of the lead floral designer / instructor (shown on About page)","type":"string","required":false,"example":"Maya Chen"}],"shared":{"industry":"floral-studio","category":"creative","glossary":{"focal flower":"The primary bloom in an arrangement that draws the eye — typically the largest or most dramatic flower","filler":"Smaller flowers and greenery that fill space and add texture around the focal flowers","hand-tied bouquet":"A style where stems are gathered and tied below the bloom heads, leaving stems visible","mechanics":"Hidden structural materials — foam, wire, tape — used to hold an arrangement in place","color palette":"The coordinated set of flower and greenery colors selected for a workshop or client arrangement"},"aiExpertise":["floral design principles and arrangement styles","seasonal flower sourcing and supply chain","workshop scheduling and capacity management","fresh flower inventory and perishable stock control","private event and wedding workshop coordination"],"dataModelHints":["booking","experience","time_slot","staff","customer","inventory_item"],"dataModel":{"entities":[{"domain":"location","type":"Location","description":"A physical Petal & Press floral studio with arrangement stations, flower cooler, and designer workspace.","products":{"workshop":{"view":"graph","icon":"📍"},"venue":{"mapsTo":"LocationMeta","pos":false}}},{"domain":"booking","type":"Event","description":"A guest reservation for a seasonal bouquet class, centerpiece workshop, wreath making, or private floral party.","products":{"workshop":{"view":"board","icon":"📅"},"venue":{"mapsTo":"BookingMeta","pos":true},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"time_slot","type":"Event","description":"A scheduled workshop session with a seasonal flower palette, station capacity, and designer assignment.","products":{"workshop":{"view":"timeline","icon":"🕐"},"venue":{"mapsTo":"TimeSlotMeta","pos":false}}},{"domain":"experience","type":"Product","description":"A workshop type such as Seasonal Bouquet Class, Centerpiece Workshop, Wreath Making, Private Floral Party, or Date Night Florals.","products":{"workshop":{"view":"gallery","icon":"🌸"},"venue":{"mapsTo":"ExperienceMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"customer","type":"Person","description":"A workshop guest who designs a floral arrangement to take home, potentially a repeat student or party organizer.","products":{"workshop":{"view":"board","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"staff","type":"Person","description":"A Floral Designer who teaches arrangement technique and guides color palette selection, or a Studio Assistant.","products":{"workshop":{"view":"board","icon":"💐"},"venue":{"mapsTo":"StaffMeta","pos":false},"academy":{"mapsTo":"instructor","assessable":false}}},{"domain":"inventory_item","type":"Thing","description":"A perishable or durable supply such as fresh flowers, greenery, vases, floral foam, wire, tape, or ribbon.","products":{"workshop":{"view":"graph","icon":"📦"},"venue":{"mapsTo":"InventoryItemMeta","pos":false},"academy":{"mapsTo":"material","assessable":false}}},{"domain":"gift_card","type":"Thing","description":"A digital or physical gift card redeemable for any arrangement workshop or private floral party booking.","products":{"workshop":{"view":"board","icon":"🎁"},"venue":{"mapsTo":"GiftCardMeta","pos":true}}},{"domain":"loyalty_account","type":"Person","description":"A returning student's loyalty account tracking workshop attendance points and seasonal rewards.","products":{"workshop":{"view":"stats","icon":"⭐"},"venue":{"mapsTo":"LoyaltyAccountMeta","pos":false}}},{"domain":"transaction","type":"Measurement","description":"A revenue or refund record for a workshop booking, always stored in cents.","products":{"workshop":{"view":"timeline","icon":"💳"},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"content_page","type":"Document","description":"A CMS-managed page such as About Our Designers, What's in Season, or Private Party Details.","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 covering seasonal flower guides, arrangement tips, studio events, or designer spotlights.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"customer","to":"booking","verb":"Creates","description":"Guest registers for a floral workshop or books a private floral party."},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific workshop type with a seasonal color palette and arrangement style."},{"from":"booking","to":"time_slot","verb":"ParticipatesIn","description":"Booking occupies arrangement stations in a specific workshop session."},{"from":"experience","to":"time_slot","verb":"OccursAt","description":"A workshop type is offered at scheduled session slots open for enrollment."},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Workshops consume fresh flowers, greenery, and mechanics per guest — critical for perishable stock planning.","products":{"venue":{"triggers":"inventoryDeduction"}}},{"from":"staff","to":"time_slot","verb":"ParticipatesIn","description":"A Floral Designer is assigned to lead a specific workshop session."},{"from":"transaction","to":"booking","verb":"References","description":"Payment or refund record links back to the workshop or private party booking."}]},"suggestions":[{"label":"What's in season?","prompt":"What flowers are in peak season right now and what should we be featuring in workshops?"},{"label":"Workshop enrollment","prompt":"Show me enrollment across all workshop types for the next month"},{"label":"Flower inventory check","prompt":"What fresh flowers and greenery are in stock? Are there any shortfalls before this week's workshops?"},{"label":"Private party pipeline","prompt":"Show me all upcoming private floral parties and their flower palette requirements"}]},"workshop":{"aiPersona":{"role":"You are the AI assistant for Petal & Press — a floral arrangement workshop studio. You help designers and managers plan seasonal workshops, track fresh flower inventory, schedule classes, and coordinate private floral events.","expertise":["floral design and arrangement instruction","seasonal flower sourcing and inventory management","workshop scheduling and capacity planning","private event coordination and custom palettes","perishable stock management and waste reduction"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["workshop or floral class mentioned","flower type or arrangement style referenced","designer or instructor introduced","color palette or seasonal theme discussed","private party or event booking mentioned"],"typeMapping":{"booking":"event","workshop":"event","floral session":"event","designer":"person","instructor":"person","customer":"person","flower":"thing","greenery":"thing","vessel":"thing","experience":"product","transaction":"measurement"}},"relationshipPatterns":[{"from":"customer","to":"booking","verb":"Creates","description":"Guest registers for a workshop or private floral event"},{"from":"staff","to":"booking","verb":"ParticipatesIn","description":"Floral designer leads the arrangement session"},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific workshop type with a color palette"},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Fresh flowers, greenery, and mechanics consumed per guest"}],"rules":["Every workshop should record the color palette and flower types used","Fresh flower inventory must be updated after each delivery and workshop","Private party bookings require a confirmed color palette before ordering flowers"]},"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"graph"},"qualityGates":{"projectChecks":["All flower and greenery inventory items are linked to consuming experience types","Designer schedule is populated for the next 4 weeks","Seasonal flower availability is updated at least weekly"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Workshop Schedule","view":"board","entityTypes":["time_slot","booking"],"description":"Upcoming workshops with enrollment counts and remaining spots"},{"name":"Arrangement Gallery","view":"gallery","entityTypes":["event"],"description":"Browse arrangements from past workshops by style and season"},{"name":"Seasonal Inventory","view":"board","entityTypes":["inventory_item"],"description":"Fresh flower and greenery stock levels with reorder status"},{"name":"Revenue Trends","view":"timeline","entityTypes":["transaction"],"description":"Revenue across workshop types and private events over time"},{"name":"Supply Graph","view":"graph","entityTypes":["inventory_item","experience"],"description":"Graph of floral supplies consumed by each workshop type"}]}},"academy":{"skillPath":"floral-design","level":"beginner","learningObjectives":["Flower conditioning, stem cutting, and hydration techniques","Color theory and palette selection for seasonal arrangements","Arrangement composition: focal flowers, filler, and foliage structure","Foliage technique for volume, texture, and visual balance"],"assessmentTypes":["hands-on","portfolio"],"mode":"classroom","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":false,"voiceEnabled":true},"certification":{"requiresHumanCertifier":true,"aiCertifierAllowed":false,"lineageEnabled":true,"certificationSlug":"floral-designer"},"gamification":{"enabled":true,"achievements":["connector","streak","bridge-builder"],"streaks":true,"leaderboard":true},"cohort":{"maxSize":20,"durationDays":42,"fixedStart":true}},"venue":{"bookingNumberPrefix":"PP","subdomainPrefix":"petal","features":{"animals":false,"adoption":false,"memories":true,"loyalty":true,"giftCards":true,"waivers":false,"blog":true,"pos":true,"cms":true,"partners":true,"franchise":true,"customerAccounts":true},"theme":{"primary":"oklch(0.55 0.08 150)","bgBase":"oklch(0.97 0.02 90)","accent":"oklch(0.70 0.10 10)","textPrimary":"oklch(0.25 0.03 120)","displayFont":"Playfair Display","bodyFont":"Inter"},"experienceTypes":[{"slug":"seasonal-bouquet-class","name":"Seasonal Bouquet Class","description":"Design a seasonal hand-tied bouquet using fresh flowers selected for what's at peak bloom. Take your arrangement home wrapped and ready to display.","priceInCents":5500,"durationMinutes":90,"minGuests":1,"maxGuests":12,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.70 0.10 10)","imageUrl":"kits/petal-press/images/seasonal-bouquet-class.svg","sessionAttributeDefinitions":[{"key":"arrangementStyle","label":"Arrangement Style","type":"select","perGuest":false,"options":["hand-tied","vase arrangement","spiral"],"required":false},{"key":"colorPalette","label":"Color Palette","type":"select","perGuest":false,"options":["warm & earthy","cool & moody","bright & vibrant","soft & romantic","monochromatic"],"required":false},{"key":"flowerTypes","label":"Today's Flowers","type":"text","perGuest":false,"required":false}]},{"slug":"centerpiece-workshop","name":"Centerpiece Workshop","description":"Create a statement centerpiece for your table — in a low vase, compote, or vessel of your choosing. Perfect for entertaining season.","priceInCents":6500,"durationMinutes":120,"minGuests":1,"maxGuests":10,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.60 0.09 140)","imageUrl":"kits/petal-press/images/centerpiece-workshop.jpg","sessionAttributeDefinitions":[{"key":"arrangementStyle","label":"Arrangement Style","type":"select","perGuest":false,"options":["low centerpiece","tall centerpiece","compote","garden-style"],"required":false},{"key":"vesselType","label":"Vessel Type","type":"select","perGuest":false,"options":["low vase","compote","crate","lantern"],"required":false},{"key":"colorPalette","label":"Color Palette","type":"select","perGuest":false,"options":["warm & earthy","cool & moody","bright & vibrant","soft & romantic","monochromatic"],"required":false},{"key":"flowerTypes","label":"Today's Flowers","type":"text","perGuest":false,"required":false}]},{"slug":"wreath-making","name":"Wreath Making","description":"Design a fresh floral wreath on a grapevine or wire base — seasonal flowers, greenery, and ribbon. For door display or table center.","priceInCents":5000,"durationMinutes":90,"minGuests":1,"maxGuests":10,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.58 0.10 155)","imageUrl":"kits/petal-press/images/wreath-making.jpg","sessionAttributeDefinitions":[{"key":"wreathBase","label":"Wreath Base","type":"select","perGuest":false,"options":["grapevine","wire","willow","eucalyptus"],"required":false},{"key":"colorPalette","label":"Color Palette","type":"select","perGuest":false,"options":["warm & earthy","cool & moody","bright & vibrant","soft & romantic","monochromatic"],"required":false},{"key":"flowerTypes","label":"Today's Flowers","type":"text","perGuest":false,"required":false}]},{"slug":"private-floral-party","name":"Private Floral Party","description":"Full studio buyout with a custom flower palette chosen just for your group. Perfect for birthdays, bachelorettes, bridal showers, and team events.","priceInCents":7000,"durationMinutes":120,"minGuests":6,"maxGuests":16,"requiresWaiver":false,"isCombo":false,"sortOrder":3,"color":"oklch(0.65 0.12 10)","imageUrl":"kits/petal-press/images/private-floral-party.jpg","pricingTiers":[{"minGuests":6,"maxGuests":8,"pricePerPersonInCents":7000},{"minGuests":9,"maxGuests":12,"pricePerPersonInCents":6000},{"minGuests":13,"maxGuests":16,"pricePerPersonInCents":5500}],"sessionAttributeDefinitions":[{"key":"arrangementStyle","label":"Arrangement Style","type":"select","perGuest":false,"options":["hand-tied","vase arrangement","low centerpiece","garden-style"],"required":false},{"key":"colorPalette","label":"Color Palette","type":"select","perGuest":false,"options":["warm & earthy","cool & moody","bright & vibrant","soft & romantic","monochromatic"],"required":false},{"key":"flowerTypes","label":"Today's Flowers","type":"text","perGuest":false,"required":false},{"key":"partyTheme","label":"Party Theme","type":"text","perGuest":false,"required":false}]},{"slug":"date-night-florals","name":"Date Night Florals","description":"Design coordinating arrangements side-by-side. Leave with two pieces that look stunning displayed together.","priceInCents":6000,"durationMinutes":90,"minGuests":2,"maxGuests":2,"requiresWaiver":false,"isCombo":false,"sortOrder":4,"color":"oklch(0.68 0.11 5)","imageUrl":"kits/petal-press/images/date-night-florals.svg","sessionAttributeDefinitions":[{"key":"arrangementStyle","label":"Arrangement Style","type":"select","perGuest":false,"options":["hand-tied","vase arrangement","spiral"],"required":false},{"key":"colorPalette","label":"Color Palette","type":"select","perGuest":false,"options":["warm & earthy","cool & moody","bright & vibrant","soft & romantic","monochromatic"],"required":false},{"key":"flowerTypes","label":"Today's Flowers","type":"text","perGuest":false,"required":false}]}],"inventoryCategories":[{"id":"fresh-flowers","label":"Fresh Flowers","icon":"🌸"},{"id":"greenery","label":"Greenery & Filler","icon":"🌿"},{"id":"vessels","label":"Vases & Vessels","icon":"🫙"},{"id":"mechanics","label":"Floral Foam, Wire & Tape","icon":"🧵"},{"id":"ribbon","label":"Ribbon & Wrapping","icon":"🎀"},{"id":"tools","label":"Floral Tools & Scissors","icon":"✂️"},{"id":"retail","label":"Retail & Botanical Products","icon":"🛍️"}],"staffRoles":[{"id":"floral-designer","label":"Floral Designer / Instructor","defaultCapabilities":["checkin","pos","inventory-view","session-log"]},{"id":"studio-assistant","label":"Studio Assistant","defaultCapabilities":["checkin","pos"]}],"chatSuggestions":[{"label":"Book a bouquet class","message":"I'd like to book a bouquet class. What seasonal options do you have?","emoji":"💐"},{"label":"What flowers are in season?","message":"What flowers are in season right now? What will we be working with?","emoji":"🌸"},{"label":"Private floral party for my group","message":"Tell me about booking a private floral party for my group.","emoji":"🥂"},{"label":"Gift cards","message":"I'd like to buy a gift card. What are my options?","emoji":"🎁"}],"inventoryLevelDetection":"manual","fees":{"billingModel":"per-transaction","feeMode":"all-channels"}}},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"character-relationship-map","type":"soulcraft","role":"primary","status":"released","name":"Character Relationship Map","description":"Visual map of character relationships for fiction writing","longDescription":"Create an interactive character relationship map for your story. Shows connections, conflicts, alliances, and dynamics between characters. Perfect for novelists, screenwriters, or tabletop RPG worldbuilding.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🎭","tags":["characters","fiction","relationships","storytelling"],"variables":[{"key":"storyTitle","label":"Story Title","description":"The title of your story or world","type":"string","required":true,"example":"My Novel"},{"key":"genre","label":"Genre","description":"The genre of your story","type":"string","required":false,"example":"Fantasy"}],"shared":{"industry":"creative-writing","category":"creative","glossary":{"protagonist":"The main character driving the story forward","antagonist":"The opposing force creating conflict for the protagonist","faction":"A group of characters with shared allegiances or goals"},"aiExpertise":["Character development and psychology","Relationship dynamics and conflict","Story structure and narrative arcs","Worldbuilding and faction design","Character voice and motivation"],"dataModelHints":["person","thing","event","topic"],"dataModel":{"entities":[{"domain":"character","type":"Person","description":"A named character with role, backstory, and motivation","products":{"workshop":{"view":"gallery","icon":"🧑"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"faction","type":"Concept","description":"A group or organization with shared allegiances and goals","products":{"workshop":{"view":"graph","icon":"⚔️"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"group","type":"Concept","description":"A social group characters belong to","products":{"workshop":{"view":"graph","icon":"👥"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}},{"domain":"place","type":"Location","description":"A significant location associated with characters","products":{"workshop":{"view":"graph","icon":"📍"}}}],"relationships":[{"from":"character","to":"character","verb":"Conflicts","description":"Characters are in opposition or rivalry"},{"from":"character","to":"character","verb":"FriendOf","description":"Allied or friendly relationship"},{"from":"character","to":"character","verb":"Mentors","description":"Teacher or guide relationship"},{"from":"character","to":"character","verb":"RelatedTo","description":"Family or romantic connection"},{"from":"character","to":"faction","verb":"MemberOf","description":"Character belongs to this group or faction"},{"from":"character","to":"place","verb":"LocatedAt","description":"Character's home or base location"}]},"suggestions":[{"label":"Add a character","prompt":"Help me create a new character with their background and traits"},{"label":"Define a relationship","prompt":"Help me define the relationship between two characters"},{"label":"Develop backstory","prompt":"Help me develop a deeper backstory for one of my characters"},{"label":"Find conflicts","prompt":"Analyze my character relationships and suggest potential conflicts or tensions"},{"label":"Character arc planning","prompt":"Help me plan a character arc for one of my characters"},{"label":"Explore relationships","prompt":"Show me all character relationships in the graph view"}]},"academy":{"skillPath":"creative-writing","level":"beginner","learningObjectives":["Build character profiles with distinct motivation, want vs. need, and internal contradiction","Map relationship dynamics using named relationship types (mentor, rival, ally, foil)","Identify how character relationships create or resolve narrative conflict","Trace a character arc from start state to end state through key story events"],"assessmentTypes":["portfolio"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"character-designer"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"beginner","templateTier":4,"aiPersona":{"role":"You are an expert narrative designer and fiction writing coach helping writers create vivid, interconnected characters with compelling relationship dynamics.","expertise":["Character psychology and motivation","Relationship dynamics and conflict arcs","Faction and group dynamics","Backstory and world history","Character voice and consistency"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"creative","defaultTab":"explore","defaultView":"graph","defaultFile":"characters/protagonist.md","layout":{"leftDock":"concepts","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["graph","ai-chat"],"suggestedActions":["Create your main characters first","Define relationships between characters","Use Graph view to visualize the network","Ask AI to suggest relationship dynamics"]}},"graphGuidance":{"conceptCreation":{"triggers":["When user introduces a new character by name","When user describes a group or faction","When user mentions a significant location","When user describes an organization"],"typeMapping":{"character":"person","faction":"organization","group":"socialGroup","place":"location","family":"socialGroup"}},"relationshipPatterns":[{"from":"person","to":"person","verb":"conflicts","description":"Characters in opposition or rivalry"},{"from":"person","to":"person","verb":"friendOf","description":"Allied or friendly characters"},{"from":"person","to":"person","verb":"mentors","description":"Teacher/student or guide relationship"},{"from":"person","to":"person","verb":"relatedTo","description":"Family or romantic connection"},{"from":"person","to":"person","verb":"opposes","description":"Direct opposition or antagonism"},{"from":"person","to":"organization","verb":"memberOf","description":"Character belongs to a group"},{"from":"person","to":"location","verb":"locatedAt","description":"Character's home or base"}],"rules":["Create person entities for named characters","Link characters when relationships are mentioned","Track faction allegiances with memberOf relationships","Use conflicts verb for antagonistic relationships","Use relatedTo for family and romantic bonds"]},"sampleData":{"description":"Sample character relationship map for a fantasy novel","entities":[{"type":"person","name":"Elena Stormbringer","properties":{"role":"protagonist","age":24,"description":"A reluctant hero with hidden magical abilities. Grew up as an orphan in the coastal village of Saltmere.","status":"main","createdAt":"2025-01-05"}},{"type":"person","name":"Lord Varen Blackthorn","properties":{"role":"antagonist","age":45,"description":"The power-hungry sorcerer seeking to control the realm's magic. Once a respected mage.","status":"main","createdAt":"2025-01-05"}},{"type":"person","name":"Kira Sunweaver","properties":{"role":"mentor","age":68,"description":"Wise elder mage who recognizes Elena's potential. Carries secrets about her past.","status":"main","createdAt":"2025-01-06"}}],"relationships":[{"from":"Elena Stormbringer","verb":"conflicts","to":"Lord Varen Blackthorn"},{"from":"Kira Sunweaver","verb":"mentors","to":"Elena Stormbringer"}]},"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"512Mi"},"oneClickCommand":"gcloud run deploy"}},"venue":{"bookingNumberPrefix":"CR","subdomainPrefix":"charmap","features":{"customerAccounts":true,"apps":true,"website":true,"subscriptions":true,"notifications":true,"analytics":true,"cms":false,"blog":false,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.40 0.12 310)","bgBase":"oklch(0.99 0.005 255)","accent":"oklch(0.58 0.16 45)","textPrimary":"oklch(0.20 0.03 255)","displayFont":"Lora","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Map my characters","message":"I'm writing a story and want to map my character relationships. How do I start?","emoji":"🗺️"},{"label":"Track relationships","message":"How do I show how characters are connected and how their relationships evolve?","emoji":"🔗"},{"label":"Export for sharing","message":"How do I export my character map to share with a co-author or editor?","emoji":"📤"},{"label":"Manage subscription","message":"I'd like to manage my account and subscription.","emoji":"💳"}]},"previewImageUrl":"kits/character-relationship-map/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"mind-map","type":"soulcraft","role":"primary","status":"released","name":"Mind Map","description":"Radial mind map for brainstorming and idea organization","longDescription":"Create a beautiful mind map that automatically visualizes your ideas in radial layout. Perfect for brainstorming sessions, project planning, learning new topics, or organizing complex information. The central idea branches out to main topics, which connect to sub-ideas.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🧠","tags":["brainstorming","ideas","planning","visualization"],"variables":[{"key":"centralTopic","label":"Central Topic","description":"The main idea at the center of your mind map","type":"string","required":true,"example":"My Project Idea"},{"key":"purpose","label":"Purpose","description":"What you are using this mind map for","type":"string","required":false,"example":"Brainstorming new features"}],"shared":{"industry":"personal-productivity","category":"knowledge","glossary":{"branch":"A main subtopic radiating from the central idea","cross-link":"A connection between branches that are not directly related by hierarchy"},"aiExpertise":["Mind mapping methodology","Brainstorming facilitation","Idea organization and clustering","Creative thinking techniques","Visual thinking and spatial reasoning"],"dataModelHints":["topic","thing","document"],"dataModel":{"entities":[{"domain":"topic","type":"Concept","description":"A main topic or branch radiating from the central idea","products":{"workshop":{"view":"graph","icon":"💡"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"branch","type":"Concept","description":"A sub-branch expanding on a parent topic","products":{"workshop":{"view":"graph","icon":"🌿"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"idea","type":"Concept","description":"A leaf-level idea or insight","products":{"workshop":{"view":"graph","icon":"✨"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"category","type":"Concept","description":"A grouping category that clusters related branches","products":{"workshop":{"view":"graph","icon":"🗂️"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}}],"relationships":[{"from":"branch","to":"topic","verb":"PartOf","description":"Branch is a subdivision of this topic"},{"from":"topic","to":"topic","verb":"RelatedTo","description":"Cross-branch association between topics"},{"from":"topic","to":"idea","verb":"Contains","description":"Topic contains this leaf idea"}]},"suggestions":[{"label":"Add a central idea","prompt":"Help me define and add a central idea for my mind map"},{"label":"Branch out","prompt":"Help me expand a branch of my mind map with new sub-topics"},{"label":"Brainstorm freely","prompt":"Let's brainstorm ideas and I'll help organize them into a mind map"},{"label":"Find connections","prompt":"Analyze my mind map and suggest cross-branch connections"},{"label":"Prioritize ideas","prompt":"Help me prioritize the ideas in my mind map"},{"label":"View mind map","prompt":"Show me my ideas in the mind map view"}]},"academy":{"skillPath":"visual-thinking","level":"beginner","learningObjectives":["Define a focused central idea that anchors all branches of the map","Generate branches rapidly using divergent thinking without premature filtering","Identify clusters and cross-links that reveal hidden structure in a topic","Distill a mind map into a prioritized list of actionable next steps"],"assessmentTypes":["portfolio"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"visual-thinker"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"beginner","templateTier":4,"aiPersona":{"role":"You are an expert brainstorming facilitator and creative thinking coach helping people map and organize ideas visually using mind mapping techniques.","expertise":["Mind mapping methodology and best practices","Brainstorming and ideation techniques","Idea clustering and pattern recognition","Visual thinking frameworks","Creative problem solving"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"creative","defaultTab":"explore","defaultView":"mindmap","defaultFile":"topics/central.md","layout":{"leftDock":"concepts","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["graph","ai-chat"],"suggestedActions":["Start with your central topic","Add branches for main themes","Use MindMap view to see the radial layout","Ask AI to expand on ideas"]}},"graphGuidance":{"conceptCreation":{"triggers":["When user adds a new topic branch","When user expands an idea","When user identifies a category","When user makes an association"],"typeMapping":{"topic":"concept","branch":"concept","idea":"concept","category":"concept"}},"relationshipPatterns":[{"from":"concept","to":"concept","verb":"partOf","description":"Branch of topic"},{"from":"concept","to":"concept","verb":"relatedTo","description":"Associated ideas"},{"from":"concept","to":"concept","verb":"contains","description":"Topic contains subtopic"}],"rules":["Create concept entities for each branch","Link branches to their parent topics","Track associations between branches","Note color-coded groupings"]},"qualityGates":{"fileChecks":[{"path":"central-idea.md","required":["Core Concept"],"optional":["Goals","Next Steps"]},{"path":"branches/*.md","required":["Overview"],"optional":["Sub-Ideas","Connections"]}],"projectChecks":["Central topic is clearly defined","At least 3 main branches exist","Branches have sub-ideas","Some cross-connections are documented"],"exportReady":["All branches have keywords (not sentences)","Cross-links are documented","Main themes are identified","Summary is complete"]},"sampleData":{"description":"Sample mind map for brainstorming a mobile app startup idea","entities":[{"type":"concept","name":"Mobile App Idea","properties":{"description":"Central topic: Brainstorming a new mobile app product.","status":"in_progress","createdAt":"2025-01-10"}},{"type":"concept","name":"Target Users","properties":{"description":"Who will use this app? Demographics and user personas.","status":"in_progress","createdAt":"2025-01-10"}},{"type":"concept","name":"Core Features","properties":{"description":"Essential functionality the app must have.","status":"todo","createdAt":"2025-01-10"}}],"relationships":[{"from":"Target Users","verb":"relatedTo","to":"Mobile App Idea"},{"from":"Core Features","verb":"relatedTo","to":"Mobile App Idea"}]},"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"512Mi"},"oneClickCommand":"gcloud run deploy"}},"venue":{"bookingNumberPrefix":"MM","subdomainPrefix":"mindmap","features":{"customerAccounts":true,"apps":true,"website":true,"subscriptions":true,"notifications":true,"analytics":true,"cms":false,"blog":false,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.42 0.18 280)","bgBase":"oklch(0.99 0.005 255)","accent":"oklch(0.62 0.16 55)","textPrimary":"oklch(0.20 0.03 255)","displayFont":"Inter","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Create a mind map","message":"I want to brainstorm a complex topic. Help me start a mind map.","emoji":"🗺️"},{"label":"Export my map","message":"How do I export my mind map to share or present it?","emoji":"📤"},{"label":"Upgrade my plan","message":"What premium features are available for power users?","emoji":"⭐"},{"label":"Mind map for planning","message":"I want to use a mind map to plan a project. Where do I start?","emoji":"🎯"}]},"previewImageUrl":"kits/mind-map/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"franchise-ops","type":"soulcraft","role":"extension","status":"released","name":"Franchise Operations","description":"Multi-location operations with comparative analytics and location-specific settings","longDescription":"A composable franchise operations extension that adds multi-location management to any Venue kit. Enables location-to-location revenue comparisons, shared inventory templates, standardised pricing across locations, and franchise owner reporting dashboards. Each location remains independently operated with its own staff and data, while the franchise layer provides the consolidated view that owners and operators need to spot outliers, share best practices, and grow the network.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🏢","tags":["franchise","multi-location","analytics","operations","extension","reporting","standardisation"],"requires":[],"shared":{"industry":"franchise-management","category":"business","glossary":{"franchisee":"An operator who runs one or more locations under the franchisor's brand and systems, typically paying a royalty on revenue.","franchisor":"The brand owner who grants franchisees the right to operate under their systems, standards, and trademark.","royalty":"A percentage of gross revenue paid by the franchisee to the franchisor in exchange for brand rights, systems, and ongoing support.","comp store sales":"Comparable store sales — revenue for locations open for more than one year, used to measure organic growth independent of new openings.","location scorecard":"A standardised performance summary comparing a location's KPIs against network averages and top-quartile benchmarks.","compliance audit":"A periodic review confirming that a franchisee location meets the brand's operational, safety, and presentation standards."},"aiExpertise":["multi-location franchise operations","comparative analytics and benchmarking","standardisation across locations","franchise agreement and royalty structures","location performance diagnostics","network expansion planning","operations manual and compliance management"],"dataModelHints":["franchise_location","franchise_report","location_scorecard","network_benchmark"],"dataModel":{"entities":[{"domain":"franchise_location","type":"Location","description":"A single franchise location with its own address, franchisee owner, operating hours, and Stripe account. Extends the parent kit's Location entity with franchise-specific metadata.","products":{"workshop":{"view":"graph","icon":"📍"},"venue":{"mapsTo":"LocationMeta","pos":false},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"franchise_report","type":"Measurement","description":"A generated performance report aggregating revenue, bookings, and operational metrics across some or all franchise locations for a specified date range.","products":{"workshop":{"view":"stats","icon":"📊"},"academy":{"mapsTo":"learning-artifact","assessable":true}}},{"domain":"location_scorecard","type":"Measurement","description":"A standardised KPI snapshot for a single location — revenue per seat, booking fill rate, average transaction value — benchmarked against the network average.","products":{"workshop":{"view":"stats","icon":"🏅"}}},{"domain":"network_benchmark","type":"Concept","description":"A computed network-wide average or percentile for a specific KPI, used to contextualise individual location scorecards.","products":{"workshop":{"view":"stats","icon":"📈"}}}],"relationships":[{"from":"franchise_location","to":"booking","verb":"Contains","description":"Franchise location is home to all bookings and transactions made at that address."},{"from":"franchise_report","to":"transaction","verb":"Aggregates","description":"Franchise report summarises transaction revenue across the selected locations and date window."},{"from":"location_scorecard","to":"franchise_location","verb":"References","description":"Scorecard is computed for and linked to a specific franchise location."},{"from":"location_scorecard","to":"network_benchmark","verb":"References","description":"Scorecard compares the location's metrics against the applicable network benchmarks."}]},"suggestions":[{"label":"Compare locations","prompt":"Show me a revenue comparison across all franchise locations for the past 30 days."},{"label":"Identify top performer","prompt":"Which location is performing best this quarter, and what can others learn from it?"},{"label":"Flag underperformers","prompt":"Flag any locations tracking below the network average on fill rate or revenue per seat."},{"label":"Standardise pricing","prompt":"Help me review and standardise pricing across all locations for consistency."},{"label":"Generate a franchise report","prompt":"Generate a monthly franchise network report with revenue, bookings, and key KPIs."},{"label":"Plan a new location","prompt":"Help me model the revenue potential for a new franchise location based on network performance."}]},"academy":{"skillPath":"franchise-management","level":"advanced","learningObjectives":["Configure and manage a multi-location franchise network with per-location settings and shared brand standards","Generate and interpret comparative performance reports across franchise locations","Identify outlier locations — both overperformers and underperformers — and design interventions","Apply standardised pricing, inventory templates, and operational checklists across the network","Model network expansion economics using comp store data and location scorecards"],"assessmentTypes":["portfolio","peer-review"],"mode":"training","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"direct","encouragementLevel":"neutral","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":true,"aiCertifierAllowed":false,"lineageEnabled":false,"certificationSlug":"franchise-operator"},"gamification":{"enabled":true,"achievements":["completionist","streak"],"streaks":true,"leaderboard":true},"compliance":{"deadlineEnforcement":true,"managerDashboard":true,"completionReport":"pdf","renewalPeriod":"annual"}},"workshop":{"aiPersona":{"role":"You are a franchise operations consultant helping multi-location business owners understand network performance, standardise operations, and identify growth opportunities. You think in benchmarks, scorecards, and comp store comparisons.","expertise":["multi-location franchise operations and management","comparative performance analytics and benchmarking","franchise standardisation and compliance","location scorecard design and KPI selection","network expansion modelling","royalty structure and franchise agreement economics"],"tone":"collaborator","avoidances":["Don't compare locations in isolation — always benchmark against the network average and top quartile","Don't recommend operational changes to a location without looking at its scorecard history first","Don't conflate individual location ownership with network strategy — they require different conversations"]},"graphGuidance":{"conceptCreation":{"triggers":["new franchise location opened or onboarded","franchise report generated or requested","location scorecard reviewed or benchmarked","network-wide KPI or benchmark discussed","franchisee performance issue raised"],"typeMapping":{"franchise location":"location","location":"location","franchise report":"measurement","scorecard":"measurement","benchmark":"concept","KPI":"concept"}},"relationshipPatterns":[{"from":"franchise_location","to":"booking","verb":"Contains","description":"Location owns its bookings and revenue"},{"from":"franchise_report","to":"transaction","verb":"Aggregates","description":"Report aggregates transaction data"},{"from":"location_scorecard","to":"franchise_location","verb":"References","description":"Scorecard is for a specific location"}],"rules":["Every franchise location must have a unique identifier used consistently across all reports","Franchise reports should always specify the date range they cover","Network benchmarks are updated after each reporting cycle — never use stale benchmarks","Location scorecards must link to the benchmarks they compare against"]},"qualityGates":{"projectChecks":["At least two franchise locations are configured with distinct addresses","A franchise report is generated covering all locations for a defined date range","Location scorecards show per-location KPIs benchmarked against the network average","Revenue comparison across locations is functional","Standardised pricing or inventory template is applied across locations"]},"publishConfig":{"contentType":"document","publishable":true},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Location Comparison","view":"stats","entityTypes":["franchise_location","location_scorecard"],"description":"Side-by-side KPI comparison across all franchise locations"},{"name":"Cross-Location Revenue","view":"timeline","entityTypes":["franchise_report"],"description":"Revenue trends by location over time with network average overlay"},{"name":"Franchise Health Dashboard","view":"board","entityTypes":["franchise_location","network_benchmark"],"description":"At-a-glance health status for each location — green, amber, or red"},{"name":"Network Graph","view":"graph","entityTypes":["franchise_location"],"description":"Geographic and relational map of all locations in the network"}]}},"venue":{"features":{"franchise":true},"stations":[{"id":"franchise","label":"Franchise Dashboard","route":"/api/manage/franchise","icon":"🏢","roles":["owner"],"scope":"kit","context":"both"},{"id":"multi-location","label":"All Locations","route":"/api/manage/locations","icon":"📍","roles":["owner"],"scope":"kit","context":"both"}],"fees":{"billingModel":"per-transaction","feeMode":"all-channels"}},"previewImageUrl":"kits/franchise-ops/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"content-calendar","type":"soulcraft","role":"primary","status":"released","name":"Content Calendar","description":"Editorial calendar for planning and managing content across channels","longDescription":"Plan, organize, and track your content creation across all platforms. Manage blog posts, social media, videos, podcasts, and email campaigns with a visual calendar. Perfect for content creators, marketing teams, and agencies who need to coordinate content publishing.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"📅","tags":["content","calendar","editorial","social-media","marketing","planning"],"variables":[{"key":"projectName","label":"Brand/Publication Name","description":"The name of your brand or publication","type":"string","required":true,"example":"My Brand"},{"key":"planPeriod","label":"Planning Period","description":"What time period are you planning for?","type":"string","required":false,"example":"Q1 2024"},{"key":"primaryPlatform","label":"Primary Platform","description":"Your main content platform","type":"string","required":false,"example":"Blog"},{"key":"publishingFrequency","label":"Publishing Frequency","description":"How often do you publish?","type":"string","required":false,"example":"3x per week"}],"shared":{"industry":"content-marketing","category":"creative","glossary":{},"aiExpertise":["Content strategy and planning","Editorial calendar management","Multi-channel content distribution","Content repurposing","Publishing workflows"],"dataModelHints":["document","event","topic","person"],"dataModel":{"entities":[{"domain":"article","type":"Document","description":"A piece of content such as a blog post, social post, or video","products":{"workshop":{"view":"board","icon":"📝"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"campaign","type":"Event","description":"A coordinated content campaign with a start and end date","products":{"workshop":{"view":"timeline","icon":"📣"},"academy":{"mapsTo":"practice-session","assessable":true},"venue":{"mapsTo":"BookingMeta","pos":false}}},{"domain":"topic","type":"Concept","description":"A content topic or pillar that posts address","products":{"workshop":{"view":"graph","icon":"💡"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"author","type":"Person","description":"A person who creates or is responsible for content","products":{"workshop":{"view":"gallery","icon":"✍️"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"channel","type":"Concept","description":"A publishing channel such as blog, Instagram, or email","products":{"workshop":{"view":"stats","icon":"📡"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}}],"relationships":[{"from":"article","to":"campaign","verb":"PartOf","description":"Content piece belongs to this campaign"},{"from":"article","to":"topic","verb":"AboutTopic","description":"Content covers this topic"},{"from":"article","to":"channel","verb":"PublishedOn","description":"Content is published on this channel"},{"from":"author","to":"article","verb":"Creates","description":"Author is responsible for this content"},{"from":"article","to":"article","verb":"RelatedTo","description":"Content pieces that link or relate to each other"}]},"suggestions":[{"label":"Plan content","prompt":"Help me plan content for the upcoming week"},{"label":"Add a content piece","prompt":"Help me create a new content piece with platform and schedule"},{"label":"Generate ideas","prompt":"Brainstorm content ideas based on my existing topics and themes"},{"label":"Review schedule","prompt":"Review my content calendar and identify gaps in the schedule"},{"label":"Repurpose content","prompt":"Suggest ways to repurpose my existing content for different platforms"},{"label":"View calendar","prompt":"Show me my content schedule in the calendar view"}]},"academy":{"skillPath":"content-strategy","level":"intermediate","learningObjectives":["Define content pillars that align publishing output to business or audience goals","Manage an editorial calendar across multiple channels with realistic publishing cadences","Write content briefs that give creators a clear angle, audience, and call to action","Audit existing content and build a repurposing strategy across formats and platforms","Measure content performance and adjust the calendar based on engagement data"],"assessmentTypes":["portfolio","peer-review"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"content-strategist"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"beginner","templateTier":3,"aiPersona":{"role":"You are an expert content strategist helping teams plan, schedule, and execute content across multiple platforms and channels.","expertise":["Content strategy and planning","Editorial calendar management","Multi-channel publishing","Content repurposing strategies","Audience engagement and growth"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"planner","defaultTab":"explore","defaultView":"calendar","defaultFile":"strategy/content-strategy.md","layout":{"leftDock":"files","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["calendar","board","ai-chat"],"suggestedActions":["Define content pillars in the Strategy document","Set up your publishing schedule in Calendar view","Create content briefs using the template","Track content status using Board view","Ask AI to help generate content ideas"]}},"graphGuidance":{"conceptCreation":{"triggers":["User creates a new content piece","User defines a content series","User adds a new channel","User creates a campaign"],"typeMapping":{"article":"document","post":"document","campaign":"event","series":"category","topic":"concept","author":"person","channel":"category"}},"relationshipPatterns":[{"from":"document","to":"event","verb":"part-of","description":"Content belongs to campaign"},{"from":"document","to":"concept","verb":"aboutTopic","description":"Content covers topic"},{"from":"document","to":"category","verb":"publishedOn","description":"Content goes on channel"},{"from":"person","to":"document","verb":"creates","description":"Author writes content"},{"from":"document","to":"document","verb":"relatedTo","description":"Content links together"}]},"qualityGates":{"fileChecks":[{"path":"strategy/content-strategy.md","required":["Content Pillars","Audience"],"optional":["Competitors"]},{"path":"calendar/schedule.md","required":["Publishing Schedule","Channels"],"optional":["Automation"]}],"projectChecks":["Content pillars defined","Target audience documented","Publishing schedule established","At least 2 weeks of content planned","Content briefs created for scheduled pieces"],"exportReady":["Calendar populated with scheduled content","All content pieces have assignments","Strategy document complete"]},"exporters":[{"id":"calendar-pdf","name":"Calendar View (PDF)","description":"Visual calendar of scheduled content","icon":"📅","format":"pdf","category":"document","handler":"calendar-pdf","options":{"view":"month","includeDetails":true}},{"id":"editorial-calendar-csv","name":"Editorial Calendar (CSV)","description":"Spreadsheet of all content","icon":"📊","format":"csv","category":"data","handler":"entity-csv","options":{"entityType":"Content","fields":["title","date","channel","status","author"]}},{"id":"content-strategy-doc","name":"Content Strategy (PDF)","description":"Strategy and planning document","icon":"📄","format":"pdf","category":"document","handler":"wdoc-pdf","options":{"includeFiles":["strategy/*.md"],"combineFiles":true}}],"exportStructure":{"combineStrategy":"path-order","includePatterns":["strategy/*.md","calendar/*.md"],"excludePatterns":["_drafts/*"]},"exportPreferences":{"defaultExporter":"calendar-pdf","fileNameTemplate":"{{projectName}}-content-calendar-{{planPeriod}}"}},"venue":{"bookingNumberPrefix":"CC","subdomainPrefix":"contentcal","features":{"customerAccounts":true,"apps":true,"website":true,"subscriptions":true,"notifications":true,"analytics":true,"cms":false,"blog":false,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.45 0.16 255)","bgBase":"oklch(0.99 0.005 255)","accent":"oklch(0.62 0.14 195)","textPrimary":"oklch(0.20 0.03 255)","displayFont":"Inter","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Plan next month","message":"Help me plan my content calendar for the coming month.","emoji":"📅"},{"label":"Manage subscription","message":"I'd like to manage my subscription plan.","emoji":"💳"},{"label":"Add a campaign","message":"How do I create and track a content campaign?","emoji":"📣"},{"label":"Content performance","message":"Show me how my recent content has performed.","emoji":"📊"}]},"previewImageUrl":"kits/content-calendar/images/preview.webp"},{"id":"escape-vault","type":"soulcraft","role":"primary","status":"released","name":"The Escape Vault","description":"Escape room venue. Teams solve puzzles, crack codes, and escape themed rooms before time runs out.","longDescription":"A full-featured escape room venue platform managing room bookings, game master workflows, completion tracking, and corporate team builds. Captures hints used, completion times, and escape outcomes for every session.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🔐","tags":["escape room","puzzle","mystery","team building","adventure","experience"],"previewImageUrl":"kits/escape-vault/images/preview.webp","variables":[{"key":"businessName","label":"Business Name","description":"The name of your escape room venue (e.g. \"The Escape Vault\")","type":"string","required":true,"example":"The Escape Vault","default":"The Escape Vault"},{"key":"tagline","label":"Tagline","description":"A short phrase describing your venue (shown under the logo)","type":"string","required":false,"example":"solve. escape. repeat.","default":"solve. escape. repeat."},{"key":"locationName","label":"Location Name","description":"The display name for this specific location (e.g. \"The Escape Vault Downtown\")","type":"string","required":true,"example":"The Escape Vault Downtown"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this location used in booking links (e.g. \"downtown\")","type":"string","required":true,"example":"downtown"},{"key":"address","label":"Street Address","description":"Street address of your venue","type":"address","required":true,"example":"312 Vault Lane, Ste 100"},{"key":"city","label":"City","description":"City where your venue is located","type":"string","required":true,"example":"Nashville"},{"key":"state","label":"State / Province","description":"Two-letter state or province code","type":"string","required":true,"example":"TN"},{"key":"zip","label":"ZIP / Postal Code","type":"string","required":true,"example":"37201"},{"key":"timezone","label":"Timezone","description":"IANA timezone for this location (used for scheduling)","type":"timezone","required":true,"example":"America/New_York","default":"America/New_York"},{"key":"phone","label":"Phone Number","type":"phone","required":true,"example":"(615) 555-0177"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"hello@theescapevault.com"},{"key":"instagram","label":"Instagram Handle","description":"Instagram username without the @","type":"string","required":false,"example":"theescapevault"},{"key":"facebook","label":"Facebook Page","description":"Facebook page name or URL slug","type":"string","required":false,"example":"TheEscapeVault"},{"key":"tiktok","label":"TikTok Handle","description":"TikTok username without the @","type":"string","required":false,"example":"theescapevault"},{"key":"roomCount","label":"Number of Rooms","description":"Total number of escape rooms available at this location","type":"number","required":false,"example":"4","default":"4"},{"key":"gamemaster","label":"Game Master Name(s)","description":"Name(s) of your lead game masters","type":"string","required":false,"example":"Riley & Sam"}],"shared":{"industry":"escape-room","category":"games","glossary":{"game master":"Staff member who monitors the room via camera, delivers clues, and guides teams without giving away solutions","hint":"A clue delivered by the game master to help a stuck team progress — typically limited per session","escape rate":"The percentage of teams that successfully escape a room within the time limit","theme":"The narrative setting of a room (e.g. detective's office, pharaoh's tomb, submarine)","debrief":"A post-session conversation where the game master walks through the puzzle logic and what teams missed"},"aiExpertise":["escape room operations and room scheduling","game master workflow and hint delivery","team performance analytics and escape rates","corporate team building event management","prop and electronics maintenance tracking"],"dataModelHints":["booking","experience","time_slot","staff","customer","inventory_item"],"dataModel":{"entities":[{"domain":"location","type":"Location","description":"A physical Escape Vault location with multiple themed rooms, game master control room, and front desk.","products":{"workshop":{"view":"graph","icon":"📍"},"venue":{"mapsTo":"LocationMeta","pos":false}}},{"domain":"booking","type":"Event","description":"A team reservation for a specific escape room, recording room choice, team name, and post-game escape outcome.","products":{"workshop":{"view":"board","icon":"📅"},"venue":{"mapsTo":"BookingMeta","pos":true},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"time_slot","type":"Event","description":"A scheduled room session with capacity, room assignment, and game master coverage.","products":{"workshop":{"view":"timeline","icon":"🕐"},"venue":{"mapsTo":"TimeSlotMeta","pos":false}}},{"domain":"experience","type":"Product","description":"A room experience type such as Standard Room, Advanced Room, Family Room, Private Booking, or Corporate Team Build.","products":{"workshop":{"view":"gallery","icon":"🔐"},"venue":{"mapsTo":"ExperienceMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"customer","type":"Person","description":"A team booker or repeat guest, potentially a corporate client or returning leaderboard competitor.","products":{"workshop":{"view":"board","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"staff","type":"Person","description":"A Game Master who monitors rooms and delivers hints, or a Front Desk associate handling arrivals.","products":{"workshop":{"view":"board","icon":"🎭"},"venue":{"mapsTo":"StaffMeta","pos":false},"academy":{"mapsTo":"instructor","assessable":false}}},{"domain":"inventory_item","type":"Thing","description":"A room asset such as props, locks, electronic mechanisms, or costumes tracked for maintenance and replacement.","products":{"workshop":{"view":"graph","icon":"📦"},"venue":{"mapsTo":"InventoryItemMeta","pos":false},"academy":{"mapsTo":"material","assessable":false}}},{"domain":"gift_card","type":"Thing","description":"A digital or physical gift card redeemable for any room booking or merchandise purchase.","products":{"workshop":{"view":"board","icon":"🎁"},"venue":{"mapsTo":"GiftCardMeta","pos":true}}},{"domain":"loyalty_account","type":"Person","description":"A repeat escapee's account tracking completed rooms, escape rate, and points earned toward future bookings.","products":{"workshop":{"view":"stats","icon":"⭐"},"venue":{"mapsTo":"LoyaltyAccountMeta","pos":false}}},{"domain":"transaction","type":"Measurement","description":"A revenue or refund record for a room booking, always stored in cents.","products":{"workshop":{"view":"timeline","icon":"💳"},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"content_page","type":"Document","description":"A CMS-managed page such as Room Descriptions, How It Works, or Corporate Events.","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 covering escape tips, leaderboard spotlights, new room reveals, or team challenge recaps.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"customer","to":"booking","verb":"Creates","description":"Team lead books a room session, private booking, or corporate team build event."},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific room type and difficulty level."},{"from":"booking","to":"time_slot","verb":"ParticipatesIn","description":"Booking occupies a room at a specific scheduled session slot."},{"from":"experience","to":"time_slot","verb":"OccursAt","description":"A room experience is offered at scheduled session slots available for team booking."},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Room sessions consume prop consumables and trigger maintenance checks on locks and electronics."},{"from":"staff","to":"time_slot","verb":"ParticipatesIn","description":"A Game Master is assigned to monitor and run a specific room session."},{"from":"transaction","to":"booking","verb":"References","description":"Payment or refund record links back to the room booking it covers."}]},"suggestions":[{"label":"Room performance stats","prompt":"Show me escape rates, average completion time, and hint usage across all rooms"},{"label":"Busiest booking windows","prompt":"Which days and times are we fully booked? Where do we have room to grow?"},{"label":"Corporate event pipeline","prompt":"Show me all upcoming corporate team builds and their headcounts"},{"label":"Leaderboard top teams","prompt":"Who are the fastest escape teams this month? Show me names, room, and completion time"}]},"workshop":{"aiPersona":{"role":"You are the AI assistant for The Escape Vault — an escape room venue. You help managers track room performance, game master schedules, and corporate event bookings. You understand puzzle venue operations and team dynamics.","expertise":["escape room venue management and room scheduling","game master operations and hint delivery protocols","corporate team building event design","prop inventory and maintenance tracking","customer loyalty and repeat visit programs"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["room booking or reservation mentioned","game master or staff referenced","escape outcome or completion time discussed","puzzle or room theme introduced","corporate team or company mentioned"],"typeMapping":{"booking":"event","room session":"event","game master":"person","customer":"person","team":"person","prop":"thing","lock":"thing","room":"thing","experience":"product","transaction":"measurement"}},"relationshipPatterns":[{"from":"customer","to":"booking","verb":"Creates","description":"Customer books a room for their team"},{"from":"staff","to":"booking","verb":"ParticipatesIn","description":"Game master monitors and runs the room session"},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific room and difficulty level"},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Props and electronics used per room session"},{"from":"customer","to":"customer","verb":"ParticipatesIn","description":"Team members grouped under a single booking"}],"rules":["Every session should record escape outcome (escaped / not escaped) and hints used","Room name must be selected before a booking can be confirmed","Corporate team builds should capture company name for invoicing"]},"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"graph"},"qualityGates":{"projectChecks":["All rooms have difficulty ratings and time limits configured","Game master schedule is populated for the next two weeks","Escape rate and hint data is being logged for each session"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Room Schedule","view":"board","entityTypes":["time_slot","booking"],"description":"Live view of room assignments and booking status across all sessions"},{"name":"Completion Stats","view":"stats","entityTypes":["event","booking"],"description":"Escape rates, average completion times, and hints used per room"},{"name":"Leaderboard","view":"gallery","entityTypes":["customer"],"description":"Top teams by completion time and escape rate"},{"name":"Booking Pipeline","view":"board","entityTypes":["booking","customer"],"description":"Upcoming bookings with team size and room assignment"},{"name":"Revenue by Room","view":"timeline","entityTypes":["transaction","booking"],"description":"Revenue trends broken down by room type and experience"}]}},"academy":{"skillPath":"escape-room-problem-solving","level":"beginner","learningObjectives":["Pattern recognition and visual puzzle decoding","Lateral thinking and non-linear problem approach","Team communication and task delegation under pressure","Time management and prioritization strategies"],"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":"escape-artist"},"gamification":{"enabled":true,"achievements":["chain-maker","deep-thinker","bridge-builder"],"streaks":false,"leaderboard":false},"cohort":{"maxSize":3,"durationDays":90,"fixedStart":false}},"venue":{"bookingNumberPrefix":"EV","subdomainPrefix":"vault","features":{"animals":false,"adoption":false,"memories":true,"loyalty":true,"giftCards":true,"waivers":false,"blog":true,"pos":true,"cms":true,"partners":true,"franchise":true,"customerAccounts":true},"theme":{"primary":"oklch(0.25 0.08 260)","bgBase":"oklch(0.12 0.04 260)","accent":"oklch(0.75 0.15 85)","textPrimary":"oklch(0.92 0.02 85)","displayFont":"Cinzel","bodyFont":"Inter"},"experienceTypes":[{"slug":"standard-room","name":"Standard Room","description":"Our signature 60-minute escape room. Solve puzzles, find the clues, crack the code. Can your team escape in time?","priceInCents":3500,"durationMinutes":60,"minGuests":2,"maxGuests":8,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.45 0.10 260)","imageUrl":"kits/escape-vault/images/standard-room.jpg","sessionAttributeDefinitions":[{"key":"roomName","label":"Room Name","type":"select","perGuest":false,"options":["The Clockmaker's Workshop","The Detective's Office","The Pharaoh's Tomb","The Submarine"],"required":true},{"key":"teamName","label":"Team Name","type":"text","perGuest":false,"required":false},{"key":"completionTime","label":"Completion Time (MM:SS)","type":"text","perGuest":false,"required":false},{"key":"hintsUsed","label":"Hints Used","type":"text","perGuest":false,"required":false},{"key":"escaped","label":"Escape Outcome","type":"select","perGuest":false,"options":["Yes! Escaped","Almost — X seconds remaining","Not this time"],"required":false}]},{"slug":"advanced-room","name":"Advanced Room","description":"Our most challenging room. 75 minutes, harder puzzles, and more complex multi-step logic. For experienced teams only.","priceInCents":4000,"durationMinutes":75,"minGuests":2,"maxGuests":6,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.35 0.12 15)","imageUrl":"kits/escape-vault/images/advanced-room.svg","sessionAttributeDefinitions":[{"key":"roomName","label":"Room Name","type":"select","perGuest":false,"options":["The Clockmaker's Workshop","The Detective's Office","The Pharaoh's Tomb","The Submarine"],"required":true},{"key":"teamName","label":"Team Name","type":"text","perGuest":false,"required":false},{"key":"completionTime","label":"Completion Time (MM:SS)","type":"text","perGuest":false,"required":false},{"key":"hintsUsed","label":"Hints Used","type":"text","perGuest":false,"required":false},{"key":"escaped","label":"Escape Outcome","type":"select","perGuest":false,"options":["Yes! Escaped","Almost — X seconds remaining","Not this time"],"required":false}]},{"slug":"family-room","name":"Family Room","description":"A shorter, age-appropriate room with kid-friendly puzzles. Perfect for families and mixed ages.","priceInCents":2800,"durationMinutes":45,"minGuests":3,"maxGuests":10,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.60 0.12 145)","imageUrl":"kits/escape-vault/images/family-room.jpg","sessionAttributeDefinitions":[{"key":"roomName","label":"Room Name","type":"select","perGuest":false,"options":["The Clockmaker's Workshop","The Detective's Office","The Pharaoh's Tomb","The Submarine"],"required":true},{"key":"teamName","label":"Team Name","type":"text","perGuest":false,"required":false},{"key":"ageRange","label":"Age Range","type":"select","perGuest":false,"options":["All families / mixed ages","Mostly kids 8-12","Mostly teens"],"required":false},{"key":"completionTime","label":"Completion Time (MM:SS)","type":"text","perGuest":false,"required":false},{"key":"hintsUsed","label":"Hints Used","type":"text","perGuest":false,"required":false},{"key":"escaped","label":"Escape Outcome","type":"select","perGuest":false,"options":["Yes! Escaped","Almost — X seconds remaining","Not this time"],"required":false}]},{"slug":"private-booking","name":"Private Booking","description":"Reserve the room exclusively for your group. Same great experience — no strangers.","priceInCents":35000,"durationMinutes":75,"minGuests":2,"maxGuests":8,"requiresWaiver":false,"isCombo":false,"sortOrder":3,"color":"oklch(0.55 0.10 300)","imageUrl":"kits/escape-vault/images/private-booking.jpg","sessionAttributeDefinitions":[{"key":"roomName","label":"Room Name","type":"select","perGuest":false,"options":["The Clockmaker's Workshop","The Detective's Office","The Pharaoh's Tomb","The Submarine"],"required":true},{"key":"teamName","label":"Team Name","type":"text","perGuest":false,"required":false},{"key":"completionTime","label":"Completion Time (MM:SS)","type":"text","perGuest":false,"required":false},{"key":"hintsUsed","label":"Hints Used","type":"text","perGuest":false,"required":false},{"key":"escaped","label":"Escape Outcome","type":"select","perGuest":false,"options":["Yes! Escaped","Almost — X seconds remaining","Not this time"],"required":false}]},{"slug":"corporate-team-build","name":"Corporate Team Build","description":"Multiple simultaneous rooms + debrief session. Compete, collaborate, and discover how your team thinks under pressure.","priceInCents":4500,"durationMinutes":90,"minGuests":8,"maxGuests":20,"requiresWaiver":false,"isCombo":true,"sortOrder":4,"color":"oklch(0.50 0.08 260)","imageUrl":"kits/escape-vault/images/corporate-team-build.jpg","sessionAttributeDefinitions":[{"key":"teamName","label":"Team Name","type":"text","perGuest":false,"required":false},{"key":"companyName","label":"Company Name","type":"text","perGuest":false,"required":false},{"key":"roomsUsed","label":"Rooms Used","type":"text","perGuest":false,"required":false},{"key":"completionTime","label":"Completion Time (MM:SS)","type":"text","perGuest":false,"required":false},{"key":"hintsUsed","label":"Hints Used","type":"text","perGuest":false,"required":false},{"key":"escaped","label":"Escape Outcome","type":"select","perGuest":false,"options":["Yes! Escaped","Almost — X seconds remaining","Not this time"],"required":false}]}],"inventoryCategories":[{"id":"props","label":"Room Props & Decorations","icon":"🎭"},{"id":"locks","label":"Locks & Mechanisms","icon":"🔐"},{"id":"electronics","label":"Electronics & Tech","icon":"💡"},{"id":"costumes","label":"Costumes & Accessories","icon":"👗"},{"id":"retail","label":"Retail & Merchandise","icon":"🛍️"},{"id":"maintenance","label":"Maintenance Supplies","icon":"🔧"}],"staffRoles":[{"id":"game-master","label":"Game Master","defaultCapabilities":["checkin","pos","session-log"]},{"id":"front-desk","label":"Front Desk","defaultCapabilities":["checkin","pos"]}],"chatSuggestions":[{"label":"Book a room","message":"I'd like to book an escape room. What options do you have?","emoji":"🔐"},{"label":"Which room first?","message":"Which room should we do first? We've never done an escape room before.","emoji":"🗝️"},{"label":"Tell me about the rooms","message":"Tell me about your escape rooms — themes, difficulty, how long they take.","emoji":"🎭"},{"label":"Corporate team building","message":"I'm interested in booking a corporate team building experience for my company. What do you offer?","emoji":"🏢"}],"inventoryLevelDetection":"manual","fees":{"billingModel":"per-transaction","feeMode":"all-channels"}}},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"freelance-portfolio","type":"soulcraft","role":"primary","status":"released","name":"Freelance Portfolio","description":"A personal portfolio site with project showcase, about page, and contact form","longDescription":"A responsive portfolio site built with SvelteKit. Showcase projects with images and descriptions, write your bio, list services, collect testimonials, and capture contact enquiries directly into your knowledge graph. Because it runs as a full Svelte app, you can add dynamic features at any time — AI-powered chat, a live project gallery that reads from Brainy, or a contact form that stores enquiries as entities — without rebuilding from scratch.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🎨","tags":["portfolio","freelance","website","design","static site","creative","personal branding"],"variables":[{"key":"yourName","label":"Your Name","description":"Your full name as it appears in your portfolio header and meta tags","type":"string","required":true,"example":"Priya Nair"},{"key":"tagline","label":"Tagline","description":"A one-line description of what you do, shown prominently on the hero","type":"string","required":false,"example":"Brand designer helping startups find their visual voice"},{"key":"profession","label":"Profession","description":"Your job title or creative role (used in meta descriptions and the about section)","type":"string","required":false,"example":"Brand Designer","default":"Freelancer"},{"key":"email","label":"Contact Email","description":"Email address used in the contact form mailto link and footer","type":"email","required":true,"example":"hello@priyanair.design"},{"key":"primaryColor","label":"Primary Colour","description":"Main brand colour for headings, buttons, and highlights (CSS colour value)","type":"string","required":false,"example":"#1a1a2e","default":"#1a1a2e"},{"key":"accentColor","label":"Accent Colour","description":"Secondary colour for hover states, links, and decorative elements","type":"string","required":false,"example":"#e94560","default":"#6c63ff"},{"key":"fontChoice","label":"Display Font","description":"Google Fonts family name for headings — any font available at fonts.google.com","type":"string","required":false,"example":"Playfair Display","default":"Inter"}],"shared":{"industry":"creative-arts","category":"creative","glossary":{"above the fold":"The portion of the web page visible without scrolling — the most prime real estate for your headline, tagline, and primary call to action.","case study":"A detailed project write-up explaining the problem, your approach, and the outcome — far more persuasive than a simple before/after image.","CTA":"Call to action — a button or link prompting the visitor to take the next step, typically 'View my work' or 'Get in touch'.","testimonial":"A quote from a satisfied client endorsing your work — ideally specific about what you did and what result it produced.","social proof":"Evidence that others trust you — testimonials, client logos, press mentions, and follower counts.","conversion":"When a portfolio visitor takes the action you want — sending a contact form, booking a call, or downloading your CV."},"aiExpertise":["portfolio curation and project selection strategy","professional bio writing","project presentation and case study structure","visual hierarchy and information architecture","contact and conversion rate optimisation","service packaging and positioning","testimonial collection and display"],"dataModelHints":["project","service","testimonial","contact_inquiry"],"dataModel":{"entities":[{"domain":"project","type":"Document","description":"A portfolio piece representing a completed or notable work. Contains title, client name, description, outcome, technologies or disciplines used, and images.","products":{"workshop":{"view":"gallery","icon":"🖼️"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"service","type":"Concept","description":"A category of work offered to clients — brand identity, web design, copywriting, photography. Defines what you do and at what starting price.","products":{"workshop":{"view":"gallery","icon":"✨"},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"testimonial","type":"Document","description":"A client endorsement quote with attribution (name, title, company). May reference a specific project it relates to.","products":{"workshop":{"view":"board","icon":"💬"},"academy":{"mapsTo":"learning-artifact","assessable":false},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"contact_inquiry","type":"Event","description":"An inbound enquiry submitted via the portfolio contact form. Records name, email, message, and timestamp.","products":{"workshop":{"view":"board","icon":"📨"},"venue":{"mapsTo":"BookingMeta","pos":false}}}],"relationships":[{"from":"project","to":"service","verb":"Shows","description":"Project demonstrates competency in a particular service category."},{"from":"testimonial","to":"project","verb":"References","description":"Testimonial is linked to the specific project it praises for context."},{"from":"contact_inquiry","to":"service","verb":"References","description":"Inbound enquiry expresses interest in a specific service category."}]},"suggestions":[{"label":"Write my bio","prompt":"Help me write a compelling professional bio that conveys my expertise, style, and personality without sounding generic."},{"label":"Curate my projects","prompt":"Help me choose which projects to feature and in what order to maximise impact for my ideal client."},{"label":"Write a case study","prompt":"Help me write a project case study explaining the problem, my approach, and the outcome."},{"label":"Define my services","prompt":"Help me package and name my services in a way that makes it easy for clients to understand what to hire me for."},{"label":"Craft a testimonial request","prompt":"Write a friendly email asking a past client for a testimonial I can feature on my portfolio."},{"label":"Improve my CTA","prompt":"Review my portfolio's calls to action and suggest improvements to increase contact form submissions."}]},"academy":{"skillPath":"personal-branding","level":"beginner","learningObjectives":["Curate and present portfolio work in an order and format that speaks directly to an ideal client","Write a compelling professional bio that communicates expertise, personality, and unique value","Define and name service offerings in terms of client outcomes rather than deliverables","Collect and display client testimonials that build social proof and trust","Design a contact flow that converts portfolio visitors into enquiries"],"assessmentTypes":["portfolio","peer-review"],"mode":"certification","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"neutral","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":true,"certificationSlug":"portfolio-creator"},"gamification":{"enabled":true,"achievements":["deep-thinker","completionist","chain-maker"],"streaks":false,"leaderboard":true}},"workshop":{"difficulty":"beginner","templateTier":3,"aiPersona":{"role":"You are a portfolio design consultant helping creatives present their best work with clarity, personality, and professionalism. You balance aesthetic sensibility with conversion strategy — a beautiful portfolio that nobody hires from is just a gallery.","expertise":["portfolio curation and project selection","bio writing and personal positioning","project presentation and case study structure","service packaging and pricing communication","visual hierarchy and information architecture","testimonial collection and display strategy","contact and conversion optimisation"],"tone":"collaborator","avoidances":["Don't recommend showing every project ever made — edit ruthlessly to the best 4–8 pieces","Don't write a bio that reads like a CV — it should sound like a real person talking to their ideal client","Don't over-design the contact section — friction kills conversions"]},"workspaceConfig":{"paradigm":"creative","defaultTab":"app","defaultView":"app"},"graphGuidance":{"conceptCreation":{"triggers":["project, case study, or piece of work described","service offering or skill area defined","client testimonial or endorsement added","contact or enquiry form set up"],"typeMapping":{"project":"document","case study":"document","work sample":"document","service":"concept","skill":"concept","testimonial":"document","recommendation":"document","contact inquiry":"event"}},"relationshipPatterns":[{"from":"project","to":"service","verb":"Shows","description":"Project demonstrates the service it falls under"},{"from":"testimonial","to":"project","verb":"References","description":"Testimonial endorses a specific project"}],"rules":["Every project should be linked to at least one service category","Testimonials must reference the project they describe for context","Contact inquiries are events, not documents — record them but don't expose them publicly","Services should describe outcomes for clients, not deliverables for the freelancer"]},"qualityGates":{"projectChecks":["Site loads and hero section displays name, tagline, and a primary CTA","At least three projects are shown with descriptions and outcomes","About section is complete with a professional bio","At least two services are defined with descriptions","Contact form is functional and submits successfully","Site is responsive on mobile viewport widths"],"exportReady":["All images have alt text","Meta title and description are set","Contact form has a clear success state","All links open correctly"]},"templateMetadata":{"identifyByStructure":true,"runnable":true,"runnableCommand":"npx serve ."},"publishConfig":{"contentType":"app","publishable":true},"sampleData":{"description":"Sample projects and services to demonstrate the portfolio template","entities":[{"type":"document","name":"Nova Brand Identity","properties":{"client":"Nova Fintech","year":"2025","description":"Full brand identity system for a Series A fintech startup — logo, typography, colour palette, and brand guidelines.","outcome":"Brand launched to 40k email subscribers with 94% positive sentiment in post-launch survey.","services":["brand-identity"],"featured":true}},{"type":"document","name":"Moss & Stone E-commerce","properties":{"client":"Moss & Stone Co.","year":"2025","description":"Complete redesign of the e-commerce storefront and product photography art direction.","outcome":"32% increase in conversion rate within 60 days of launch.","services":["web-design"],"featured":true}},{"type":"concept","name":"Brand Identity","properties":{"description":"Logo, typography, colour, and brand guidelines for businesses finding their visual voice.","startingFrom":"from $2,500","deliverables":["Logo suite","Brand guidelines PDF","Social media kit"]}},{"type":"document","name":"Working with Priya was a game-changer for our brand.","properties":{"author":"Sarah Kim","title":"CEO, Nova Fintech","quote":"Working with Priya was a game-changer for our brand. She understood exactly what we were trying to say and translated it into visuals that our customers immediately connected with.","project":"Nova Brand Identity"}}],"relationships":[{"from":"Nova Brand Identity","verb":"Shows","to":"Brand Identity"},{"from":"Working with Priya was a game-changer for our brand.","verb":"References","to":"Nova Brand Identity"}]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Project Gallery","view":"gallery","entityTypes":["project"],"description":"Visual grid of all portfolio projects with status and featured flag"},{"name":"Services Board","view":"board","entityTypes":["service"],"description":"Manage and edit your service offerings and descriptions"},{"name":"Testimonials","view":"board","entityTypes":["testimonial"],"description":"Collect, edit, and curate client testimonials for display"},{"name":"Portfolio Graph","view":"graph","entityTypes":["project","service","testimonial"],"description":"Graph of projects, the services they demonstrate, and their testimonials"}]}},"venue":{"bookingNumberPrefix":"FP","subdomainPrefix":"portfolio","features":{"blog":true,"cms":true,"customerAccounts":true,"website":true,"notifications":true,"analytics":true,"giftCards":false,"pos":false,"subscriptions":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"per-transaction","feeMode":"online-only"},"theme":{"primary":"oklch(0.35 0.10 270)","bgBase":"oklch(0.99 0.005 270)","accent":"oklch(0.55 0.14 195)","textPrimary":"oklch(0.18 0.03 270)","displayFont":"DM Sans","bodyFont":"Inter"},"experienceTypes":[{"slug":"discovery-consultation","name":"Discovery Consultation","description":"A focused 30-minute call to discuss your project needs, timeline, and budget. No obligation — just clarity on whether we're a good fit.","priceInCents":0,"durationMinutes":30,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.55 0.10 270)","sessionAttributeDefinitions":[{"key":"projectType","label":"Project Type","type":"select","perGuest":false,"options":["Website design","Brand identity","App UI/UX","Marketing materials","Other"],"required":true},{"key":"timeline","label":"Desired Timeline","type":"select","perGuest":false,"options":["ASAP (1–2 weeks)","Short (3–4 weeks)","Standard (1–2 months)","Flexible"],"required":false}]},{"slug":"project-kickoff","name":"Project Kickoff","description":"A 90-minute deep-dive session to align on goals, deliverables, and success criteria. Includes a written brief and initial concept directions.","priceInCents":25000,"durationMinutes":90,"minGuests":1,"maxGuests":3,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.45 0.14 195)","sessionAttributeDefinitions":[{"key":"projectName","label":"Project Name","type":"text","perGuest":false,"required":true}]},{"slug":"workshop-training","name":"Skills Workshop","description":"A 2-hour hands-on workshop tailored to your team's needs — design thinking, prototyping, content strategy, or a custom topic.","priceInCents":45000,"durationMinutes":120,"minGuests":1,"maxGuests":8,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.40 0.12 270)","sessionAttributeDefinitions":[{"key":"topic","label":"Workshop Topic","type":"text","perGuest":false,"required":true},{"key":"skillLevel","label":"Team Skill Level","type":"select","perGuest":false,"options":["Beginner","Intermediate","Advanced"],"required":false}]}],"staffRoles":[{"id":"freelancer","label":"Freelancer","defaultCapabilities":["checkin","pos","analytics","notifications"]},{"id":"associate","label":"Associate","defaultCapabilities":["checkin","pos"]}],"chatSuggestions":[{"label":"Book a consultation","message":"I'd like to book a free discovery call. What does that involve?","emoji":"📅"},{"label":"See past work","message":"Can you show me examples of previous projects?","emoji":"🖼️"},{"label":"Get a quote","message":"I have a project in mind. How do I get a quote?","emoji":"💬"},{"label":"Workshop for my team","message":"I'm interested in booking a workshop for my team. What topics do you cover?","emoji":"🎓"}]},"previewImageUrl":"kits/freelance-portfolio/images/preview.webp"},{"id":"event-venue","type":"soulcraft","role":"primary","status":"released","name":"Event Venue","description":"Event space management platform for weddings, conferences, workshops, and private events","longDescription":"Complete venue management for event spaces — room and hall scheduling, event package bookings, AV and catering coordination, setup crew dispatch, and client relationship tracking. Handles multi-room events alongside single-space bookings with full inventory and capacity management.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🏛️","tags":["event-venue","weddings","conferences","corporate-events","hospitality","event-management"],"previewImageUrl":"kits/event-venue/images/preview.webp","variables":[{"key":"businessName","label":"Business Name","description":"The name of your event venue (e.g. \"The Grand Hall\")","type":"string","required":true,"example":"The Grand Hall","default":"The Grand Hall"},{"key":"tagline","label":"Tagline","description":"A short phrase shown under the logo (e.g. \"where moments become memories\")","type":"string","required":false,"example":"where moments become memories","default":"where moments become memories"},{"key":"locationName","label":"Location Name","description":"The display name for this specific location (e.g. \"The Grand Hall Downtown\")","type":"string","required":true,"example":"The Grand Hall Downtown"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this location used in booking links (e.g. \"downtown\")","type":"string","required":true,"example":"downtown"},{"key":"address","label":"Street Address","description":"Street address of your venue (e.g. \"500 Grand Avenue\")","type":"address","required":true,"example":"500 Grand Avenue"},{"key":"city","label":"City","description":"City where your venue is located","type":"string","required":true,"example":"Chicago"},{"key":"state","label":"State / Province","description":"Two-letter state or province code","type":"string","required":true,"example":"IL"},{"key":"zip","label":"ZIP / Postal Code","type":"string","required":true,"example":"60601"},{"key":"timezone","label":"Timezone","description":"IANA timezone for this location (used for scheduling)","type":"timezone","required":true,"example":"America/Chicago","default":"America/New_York"},{"key":"phone","label":"Phone Number","type":"phone","required":true,"example":"(312) 555-0200"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"events@thegrandhall.com"},{"key":"maxCapacity","label":"Maximum Capacity","description":"Total maximum guest capacity across all event spaces","type":"string","required":true,"example":"500"}],"shared":{"industry":"events-hospitality","category":"hospitality","glossary":{"BEO":"Banquet Event Order — a detailed document listing all event logistics including room setup, catering, AV needs, and timeline","turnover":"The time required between consecutive events to break down one setup and prepare the next","block booking":"Reserving an event space for multiple consecutive days, common for multi-day conferences or wedding weekends","AV rider":"A technical specification sheet listing all audio-visual equipment and staging requirements for an event","guarantee":"The confirmed final guest count provided by the client before the event, used for catering and seating","day-of coordinator":"The staff member responsible for executing all logistics on the event day, serving as the primary point of contact"},"aiExpertise":["event venue operations and multi-room scheduling","wedding planning and ceremony/reception coordination","corporate conference and seminar logistics","catering coordination and menu planning","AV equipment setup and technical production","event space capacity planning and layout optimization"],"dataModelHints":["booking","experience","time_slot","staff","customer","inventory_item","event_space","transaction"],"dataModel":{"entities":[{"domain":"location","type":"Location","description":"The physical venue property containing multiple event spaces, each with its own capacity, amenities, and booking calendar.","products":{"workshop":{"view":"graph","icon":"📍"},"venue":{"mapsTo":"LocationMeta","pos":false}}},{"domain":"booking","type":"Event","description":"An event booking for a specific package — wedding reception, corporate conference, workshop, cocktail reception, or private party — with confirmed dates, guest count, and assigned spaces.","products":{"workshop":{"view":"board","icon":"📅"},"venue":{"mapsTo":"BookingMeta","pos":true},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"time_slot","type":"Event","description":"An available booking window for a specific event space, accounting for setup time, event duration, and turnover between events.","products":{"workshop":{"view":"timeline","icon":"🕐"},"venue":{"mapsTo":"TimeSlotMeta","pos":false}}},{"domain":"experience","type":"Product","description":"An event package such as Wedding Reception, Corporate Conference, Workshop/Seminar, Cocktail Reception, or Private Party — each with pricing, duration, and included amenities.","products":{"workshop":{"view":"gallery","icon":"🎪"},"venue":{"mapsTo":"ExperienceMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"event_space","type":"Thing","description":"An individual room or hall within the venue — ballroom, garden terrace, boardroom, atrium — with its own capacity, layout options, and AV capabilities.","products":{"workshop":{"view":"gallery","icon":"🏛️"},"venue":{"mapsTo":"EventSpaceMeta","pos":false},"academy":{"mapsTo":"facility","assessable":false}}},{"domain":"customer","type":"Person","description":"An event client — the individual or organization booking the venue, with contact details, event history, and billing information.","products":{"workshop":{"view":"board","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"staff","type":"Person","description":"A venue team member — event coordinator, AV technician, catering manager, setup crew member, or venue manager — with role assignments and event schedules.","products":{"workshop":{"view":"board","icon":"👔"},"venue":{"mapsTo":"StaffMeta","pos":false},"academy":{"mapsTo":"instructor","assessable":false}}},{"domain":"transaction","type":"Measurement","description":"A revenue, deposit, or refund record for an event booking, always stored in cents. Tracks deposits, milestone payments, and final settlement.","products":{"workshop":{"view":"timeline","icon":"💳"},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"inventory_item","type":"Thing","description":"A venue asset — tables, chairs, AV equipment, linens, decor, lighting rigs, or kitchen equipment — tracked for availability across simultaneous events.","products":{"workshop":{"view":"graph","icon":"📦"},"venue":{"mapsTo":"InventoryItemMeta","pos":false},"academy":{"mapsTo":"material","assessable":false}}},{"domain":"content_page","type":"Document","description":"A CMS-managed page such as Spaces, Packages, Gallery, or About Us.","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 past event showcases, venue updates, planning tips, or seasonal promotions.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"customer","to":"booking","verb":"Creates","description":"Client books a venue for their event, specifying package, date, and guest count."},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific event package (wedding, conference, workshop, etc.)."},{"from":"booking","to":"time_slot","verb":"ParticipatesIn","description":"Booking occupies a specific date/time window in the venue calendar."},{"from":"booking","to":"event_space","verb":"OccursAt","description":"Booking is assigned to one or more event spaces within the venue."},{"from":"experience","to":"time_slot","verb":"OccursAt","description":"An event package type has standard duration requirements that define time slot allocation."},{"from":"staff","to":"booking","verb":"ParticipatesIn","description":"Staff members are assigned to events — coordinator, AV tech, catering, setup crew."},{"from":"event_space","to":"inventory_item","verb":"Contains","description":"Each event space has default inventory — tables, chairs, AV equipment — that can be supplemented."},{"from":"transaction","to":"booking","verb":"References","description":"Payment, deposit, or refund record links back to the event booking."}]},"suggestions":[{"label":"Space availability this month","prompt":"Show me which event spaces are available this month and what bookings are already confirmed"},{"label":"Revenue by event type","prompt":"Break down revenue across weddings, conferences, workshops, and private events for this quarter"},{"label":"Upcoming event prep","prompt":"What events are coming up this week and what setup, catering, and AV needs do they require?"},{"label":"Inventory across events","prompt":"Do we have enough tables, chairs, and AV equipment for all events booked this weekend?"}]},"workshop":{"aiPersona":{"role":"You are the AI assistant for an event venue. You help venue managers and coordinators track bookings, manage event spaces, coordinate catering and AV logistics, schedule setup crews, and optimize space utilization. You understand the event industry — from wedding timelines to corporate conference production.","expertise":["event space scheduling and multi-room coordination","wedding and reception planning logistics","corporate conference and seminar production","catering coordination and guest count management","AV equipment setup and technical requirements","venue capacity planning and layout optimization"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["event booking or reservation mentioned","event space or room discussed","staff member or coordinator introduced","catering, AV, or setup requirements referenced","client or event planner discussed"],"typeMapping":{"booking":"event","reservation":"event","time slot":"event","event coordinator":"person","AV technician":"person","catering manager":"person","client":"person","customer":"person","event space":"thing","ballroom":"thing","boardroom":"thing","garden":"thing","inventory":"thing","AV equipment":"thing","experience":"product","package":"product","transaction":"measurement"}},"relationshipPatterns":[{"from":"customer","to":"booking","verb":"Creates","description":"Client books the venue for their event"},{"from":"staff","to":"booking","verb":"ParticipatesIn","description":"Coordinator, AV tech, or catering manager assigned to the event"},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific event package (wedding, conference, etc.)"},{"from":"booking","to":"event_space","verb":"OccursAt","description":"Event is assigned to specific rooms or halls within the venue"},{"from":"event_space","to":"inventory_item","verb":"Contains","description":"Each space has default furniture, AV, and decor inventory"}],"rules":["Every booking must have a confirmed guest count (guarantee) at least 72 hours before the event","Turnover time between events must be scheduled — minimum 2 hours for standard, 4 hours for full resets","Multi-room events must have a single assigned event coordinator as the day-of point of contact"]},"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"board"},"qualityGates":{"projectChecks":["All event spaces have defined capacity limits and available layout configurations","Each event package has accurate pricing, duration, and included amenities documented","Staff roles are assigned with clear event-day responsibilities and contact information"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Event Calendar","view":"timeline","entityTypes":["booking","time_slot"],"description":"Full venue calendar showing all confirmed, tentative, and pending bookings across every space"},{"name":"Space Overview","view":"gallery","entityTypes":["event_space"],"description":"All event spaces with capacity, layout options, AV capabilities, and current availability"},{"name":"Client Directory","view":"board","entityTypes":["customer"],"description":"Event clients with booking history, outstanding balances, and upcoming events"},{"name":"Revenue Dashboard","view":"stats","entityTypes":["transaction"],"description":"Revenue breakdown by event type, space utilization rates, and deposit tracking"},{"name":"Staff & Crew Schedule","view":"board","entityTypes":["staff","booking"],"description":"Staff assignments for upcoming events — coordinators, AV techs, catering, and setup crews"},{"name":"Equipment Inventory","view":"tree","entityTypes":["inventory_item"],"description":"Tables, chairs, AV gear, linens, and decor organized by category with availability status"}]}},"academy":{"skillPath":"event-management-fundamentals","level":"beginner","learningObjectives":["Understanding event types and how venue layout affects guest experience","Creating and managing Banquet Event Orders (BEOs) for different event formats","Coordinating catering, AV, and decor vendors for seamless event execution","Managing event timelines — from initial inquiry through day-of execution to post-event follow-up","Capacity planning and safety compliance for different event configurations"],"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":"event-venue-client"},"gamification":{"enabled":true,"achievements":["chain-maker","deep-thinker","bridge-builder"],"streaks":false,"leaderboard":false},"cohort":{"maxSize":3,"durationDays":90,"fixedStart":false}},"venue":{"bookingNumberPrefix":"EV","subdomainPrefix":"events","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,"subscriptions":true,"analytics":true,"website":true},"theme":{"primary":"oklch(0.30 0.06 260)","bgBase":"oklch(0.98 0.005 260)","accent":"oklch(0.72 0.12 85)","textPrimary":"oklch(0.18 0.03 260)","displayFont":"Cormorant Garamond","bodyFont":"Inter"},"experienceTypes":[{"slug":"wedding-reception","name":"Wedding Reception","description":"Full wedding reception package including ceremony-to-reception transition, banquet seating, dance floor, and dedicated event coordinator. Accommodates rehearsal dinner coordination.","priceInCents":3600000,"durationMinutes":480,"minGuests":50,"maxGuests":300,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.78 0.10 350)","sessionAttributeDefinitions":[{"key":"coordinatorName","label":"Event Coordinator","type":"text","perGuest":false,"required":true},{"key":"guestCount","label":"Confirmed Guest Count","type":"text","perGuest":false,"required":true},{"key":"cateringNotes","label":"Catering Notes","type":"text","perGuest":false,"required":false},{"key":"layoutType","label":"Room Layout","type":"text","perGuest":false,"required":false}]},{"slug":"corporate-conference","name":"Corporate Conference","description":"Full-day conference package with theater or classroom seating, breakout rooms, AV production, podium and staging, and catered breaks. Includes on-site AV technician.","priceInCents":2500000,"durationMinutes":480,"minGuests":20,"maxGuests":500,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.55 0.08 240)","sessionAttributeDefinitions":[{"key":"coordinatorName","label":"Event Coordinator","type":"text","perGuest":false,"required":true},{"key":"guestCount","label":"Confirmed Attendee Count","type":"text","perGuest":false,"required":true},{"key":"avRequirements","label":"AV Requirements","type":"text","perGuest":false,"required":false},{"key":"breakoutRooms","label":"Breakout Rooms Needed","type":"text","perGuest":false,"required":false}]},{"slug":"workshop-seminar","name":"Workshop / Seminar","description":"Half-day workshop or seminar package with classroom seating, projector and screen, whiteboard, and catered lunch or refreshments.","priceInCents":1500000,"durationMinutes":240,"minGuests":10,"maxGuests":100,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.62 0.10 150)","sessionAttributeDefinitions":[{"key":"coordinatorName","label":"Event Coordinator","type":"text","perGuest":false,"required":true},{"key":"guestCount","label":"Confirmed Attendee Count","type":"text","perGuest":false,"required":true},{"key":"avRequirements","label":"AV Requirements","type":"text","perGuest":false,"required":false}]},{"slug":"cocktail-reception","name":"Cocktail Reception","description":"Standing cocktail reception with open bar stations, passed hors d'oeuvres, lounge seating areas, ambient lighting, and background music setup.","priceInCents":2000000,"durationMinutes":180,"minGuests":30,"maxGuests":250,"requiresWaiver":false,"isCombo":false,"sortOrder":3,"color":"oklch(0.72 0.12 85)","sessionAttributeDefinitions":[{"key":"coordinatorName","label":"Event Coordinator","type":"text","perGuest":false,"required":true},{"key":"guestCount","label":"Confirmed Guest Count","type":"text","perGuest":false,"required":true},{"key":"barSetup","label":"Bar Setup Notes","type":"text","perGuest":false,"required":false}]},{"slug":"private-party","name":"Private Party","description":"Flexible private event package for birthdays, anniversaries, galas, or fundraisers. Includes configurable room layout, catering coordination, and optional DJ or entertainment staging.","priceInCents":1800000,"durationMinutes":300,"minGuests":20,"maxGuests":200,"requiresWaiver":false,"isCombo":false,"sortOrder":4,"color":"oklch(0.65 0.10 30)","sessionAttributeDefinitions":[{"key":"coordinatorName","label":"Event Coordinator","type":"text","perGuest":false,"required":true},{"key":"guestCount","label":"Confirmed Guest Count","type":"text","perGuest":false,"required":true},{"key":"eventTheme","label":"Event Theme / Style","type":"text","perGuest":false,"required":false},{"key":"entertainmentNotes","label":"Entertainment Notes","type":"text","perGuest":false,"required":false}]}],"inventoryCategories":[{"id":"tables-seating","label":"Tables & Seating","icon":"🪑"},{"id":"av-equipment","label":"AV Equipment","icon":"🎤"},{"id":"linens-decor","label":"Linens & Decor","icon":"🎀"},{"id":"kitchen-catering","label":"Kitchen & Catering","icon":"🍽️"},{"id":"lighting","label":"Lighting","icon":"💡"}],"staffRoles":[{"id":"event-coordinator","label":"Event Coordinator","defaultCapabilities":["checkin","pos","session-log","inventory-view","bookings-view"]},{"id":"venue-manager","label":"Venue Manager","defaultCapabilities":["checkin","pos","session-log","inventory-view","bookings-view","staff-manage"]},{"id":"av-technician","label":"AV Technician","defaultCapabilities":["session-log","inventory-view"]},{"id":"catering-manager","label":"Catering Manager","defaultCapabilities":["session-log","inventory-view"]},{"id":"setup-crew","label":"Setup Crew","defaultCapabilities":["session-log"]}],"chatSuggestions":[{"label":"Book an event","message":"I'd like to book your venue for an event. What spaces and packages do you offer?","emoji":"🏛️"},{"label":"Wedding inquiry","message":"I'm planning a wedding reception. What does your wedding package include?","emoji":"💒"},{"label":"Corporate event","message":"I need a venue for a corporate conference. What AV and breakout room options do you have?","emoji":"🎤"},{"label":"Check availability","message":"I'd like to check availability for a specific date. What spaces are open?","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":"event-board","label":"Event Board","route":"/api/manage/event-board","icon":"📋","roles":["staff","manager","owner"],"scope":"kit","context":"physical"}],"fees":{"billingModel":"per-transaction","feeMode":"all-channels"}}},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"marketing-plan","type":"soulcraft","role":"primary","status":"released","name":"Marketing Plan","description":"Strategic marketing plan with campaigns, channels, budget, and performance tracking","longDescription":"Create a comprehensive marketing plan that aligns strategy with execution. Includes situation analysis, target audience definition, channel strategy, campaign planning, budget allocation, and KPI tracking. Perfect for annual planning, product launches, or scaling marketing efforts.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"📣","tags":["marketing","strategy","campaigns","growth","content","digital"],"variables":[{"key":"projectName","label":"Company/Product Name","description":"The company or product being marketed","type":"string","required":true,"example":"Acme Product"},{"key":"planPeriod","label":"Planning Period","description":"The time period this plan covers","type":"string","required":false,"example":"2024"},{"key":"marketingBudget","label":"Marketing Budget","description":"Total annual marketing budget","type":"string","required":false,"example":"$100,000"},{"key":"primaryGoal","label":"Primary Goal","description":"Main objective for this period","type":"string","required":false,"example":"Increase brand awareness"}],"shared":{"industry":"business-strategy","category":"business","glossary":{},"aiExpertise":["Marketing strategy and planning","Campaign management","Customer persona development","Digital marketing channels","KPI definition and measurement"],"dataModelHints":["document","event","person","topic"],"dataModel":{"entities":[{"domain":"campaign","type":"Event","description":"A marketing campaign with dates, goals, and channels","products":{"workshop":{"view":"timeline","icon":"📣"},"academy":{"mapsTo":"practice-session","assessable":true},"venue":{"mapsTo":"BookingMeta","pos":false}}},{"domain":"persona","type":"Person","description":"A detailed customer persona with demographics and motivations","products":{"workshop":{"view":"gallery","icon":"🎯"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"channel","type":"Concept","description":"A marketing channel such as social, email, or paid ads","products":{"workshop":{"view":"stats","icon":"📡"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"metric","type":"Concept","description":"A KPI or performance metric used to measure campaign success","products":{"workshop":{"view":"stats","icon":"📊"},"academy":{"mapsTo":"assessment-criterion","assessable":false}}},{"domain":"content","type":"Document","description":"A piece of marketing content supporting a campaign","products":{"workshop":{"view":"board","icon":"📝"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}}],"relationships":[{"from":"campaign","to":"persona","verb":"Targets","description":"Campaign is directed at this customer persona"},{"from":"campaign","to":"channel","verb":"Uses","description":"Campaign runs on this channel"},{"from":"content","to":"campaign","verb":"Supports","description":"Content supports and promotes this campaign"},{"from":"metric","to":"campaign","verb":"Measures","description":"Metric is used to evaluate campaign performance"}]},"suggestions":[{"label":"Define target audience","prompt":"Help me define and document my target audience personas"},{"label":"Plan a campaign","prompt":"Help me plan a marketing campaign with goals and channels"},{"label":"Analyze competitors","prompt":"Help me analyze my competitors' marketing strategies"},{"label":"Set KPIs","prompt":"Help me define key performance indicators for my marketing plan"},{"label":"Create messaging","prompt":"Help me develop core messaging and value propositions"},{"label":"Review plan progress","prompt":"Show me my marketing plan structure and what needs attention"}]},"academy":{"skillPath":"marketing","level":"intermediate","learningObjectives":["Conduct a situation analysis with SWOT and current-performance benchmarks","Build detailed customer personas with demographics, motivations, and buying journey","Select and justify a channel mix based on audience behavior and budget","Set SMART marketing objectives with KPIs tied to business outcomes","Allocate a marketing budget across campaigns and track spend against projections"],"assessmentTypes":["portfolio","peer-review"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"marketing-strategist"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are an expert marketing strategist helping businesses create comprehensive, data-driven marketing plans that drive measurable growth.","expertise":["Marketing strategy and planning","Campaign design and management","Customer persona and segmentation","Channel strategy and media mix","Performance measurement and KPIs"],"tone":"mentor"},"workspaceConfig":{"paradigm":"planner","defaultTab":"explore","defaultView":"calendar","defaultFile":"strategy/situation-analysis.md","layout":{"leftDock":"files","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["calendar","board","export"],"suggestedActions":["Start with Situation Analysis using current data","Define your target personas in detail","Set SMART objectives for each quarter","Use Calendar view to plan campaign timing","Track campaigns on the Board view"]}},"graphGuidance":{"conceptCreation":{"triggers":["User defines a new campaign","User creates a customer persona","User adds a marketing channel","User defines a KPI"],"typeMapping":{"campaign":"event","persona":"person","channel":"category","metric":"concept","content":"document"}},"relationshipPatterns":[{"from":"event","to":"person","verb":"targets","description":"Campaign targets persona"},{"from":"event","to":"category","verb":"uses","description":"Campaign uses channel"},{"from":"document","to":"event","verb":"supports","description":"Content supports campaign"},{"from":"concept","to":"event","verb":"measures","description":"Metric measures campaign"}]},"qualityGates":{"fileChecks":[{"path":"strategy/01-situation-analysis.md","required":["Current Performance","SWOT"],"optional":["Competitor Analysis"]},{"path":"strategy/02-target-audience.md","required":["Primary Persona","Audience Segments"],"optional":["Customer Journey"]},{"path":"strategy/04-objectives.md","required":["SMART Goals","KPIs"],"optional":["OKRs"]}],"projectChecks":["Situation analysis complete with data","At least one detailed persona defined","SMART objectives set with specific targets","Channel strategy aligned with audience","Budget allocated by channel and campaign","Calendar populated for planning period"],"exportReady":["All strategy sections complete","Budget finalized","Calendar filled in","KPIs defined"]},"exporters":[{"id":"marketing-plan-pdf","name":"Marketing Plan (PDF)","description":"Professional marketing plan document","icon":"📄","format":"pdf","category":"document","handler":"wdoc-pdf","options":{"includeFiles":["strategy/*.md"],"combineFiles":true}},{"id":"marketing-plan-slides","name":"Presentation Deck","description":"Slides for team presentations","icon":"🎭","format":"html","category":"presentation","handler":"wdoc-slides","options":{"includeFiles":["strategy/*.md"],"theme":"light"}},{"id":"campaign-briefs","name":"Campaign Briefs","description":"Individual campaign documents","icon":"📋","format":"zip","category":"archive","handler":"markdown-bundle","options":{"includeFiles":["campaigns/*.md"],"preserveStructure":true}}],"exportStructure":{"combineStrategy":"graph-order","orderRelationship":"precedes","includePatterns":["strategy/*.md"],"excludePatterns":["campaigns/*","analytics/*"]},"exportPreferences":{"defaultExporter":"marketing-plan-pdf","fileNameTemplate":"{{projectName}}-marketing-plan-{{planPeriod}}"}},"venue":{"bookingNumberPrefix":"MP","subdomainPrefix":"mktgplan","features":{"customerAccounts":true,"apps":true,"website":true,"subscriptions":true,"notifications":true,"analytics":true,"cms":false,"blog":false,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.42 0.20 30)","bgBase":"oklch(0.99 0.005 255)","accent":"oklch(0.60 0.16 350)","textPrimary":"oklch(0.20 0.03 255)","displayFont":"Inter","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Build my marketing plan","message":"I need to create a marketing plan for my product. Where do I start?","emoji":"📣"},{"label":"Define my audience","message":"Help me create detailed buyer personas for my target market.","emoji":"🎯"},{"label":"Channel strategy","message":"What marketing channels should I prioritise for my budget?","emoji":"📊"},{"label":"Manage subscription","message":"I'd like to manage my subscription.","emoji":"💳"}]},"previewImageUrl":"kits/marketing-plan/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"farkle-dice-game","type":"soulcraft","role":"primary","status":"released","name":"Farkle Dice Game","description":"Classic dice game with 3D animations - play solo against Brainy AI","longDescription":"Farkle is a classic push-your-luck dice game. Roll six dice, score combinations, and decide whether to bank your points or risk it all for more!\n\n**Features:**\n- Beautiful 3D CSS dice with smooth animations\n- Play against Brainy AI opponent\n- Multiplayer support in Collaborative mode\n- Complete Farkle scoring rules\n- Game history and statistics\n- Persistent high scores\n\n**Rules:**\n- Roll 6 dice, score combinations (1s, 5s, triples, straights)\n- After scoring, choose to bank points or roll remaining dice\n- Roll with no scoring dice = bust (lose all unbanked points)\n- First to 10,000 points wins!\n\n**Scoring:**\n- Single 1 = 100 points\n- Single 5 = 50 points\n- Three of a kind = face value × 100 (e.g., three 3s = 300)\n- Three 1s = 1,000 points\n- Four of a kind = triple score × 2\n- Five of a kind = triple score × 4\n- Six of a kind = triple score × 8\n- 1-2-3-4-5-6 straight = 1,500 points\n- Three pairs = 1,500 points","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🎲","tags":["game","dice","farkle","multiplayer","ai-opponent","brainy","sveltekit"],"variables":[{"key":"appName","label":"App Name","description":"The slug name for the application","type":"string","required":true,"example":"farkle"},{"key":"description","label":"Description","description":"A short description of the game","type":"string","required":false,"example":"A classic dice game of risk and reward"}],"shared":{"industry":"games-entertainment","category":"games","glossary":{"farkle":"Rolling dice with no scoring combinations, causing a bust","bank":"Lock in your current score and end your turn safely"},"aiExpertise":["Farkle game rules and scoring","Probability and dice game strategy","Game history and statistics","Optimal play analysis"],"dataModelHints":["event","person","thing"],"dataModel":{"entities":[{"domain":"game","type":"Event","description":"A complete game session from start to finish","products":{"workshop":{"view":"timeline","icon":"🎲"},"academy":{"mapsTo":"practice-session","assessable":true},"venue":{"mapsTo":"BookingMeta","pos":false}}},{"domain":"player","type":"Person","description":"A human or AI player with score history","products":{"workshop":{"view":"gallery","icon":"👤"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"turn","type":"Event","description":"A single turn within a game with dice rolls and banking decisions","products":{"workshop":{"view":"board","icon":"🎯"},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"score","type":"Measurement","description":"A numeric score recorded for a player in a game","products":{"workshop":{"view":"stats","icon":"📊"},"academy":{"mapsTo":"assessment-criterion","assessable":false},"venue":{"mapsTo":"TransactionMeta","pos":false}}}],"relationships":[{"from":"game","to":"player","verb":"Contains","description":"Game includes this player"},{"from":"game","to":"turn","verb":"Contains","description":"Game is composed of turns"},{"from":"score","to":"game","verb":"PartOf","description":"Score belongs to this game session"}]},"suggestions":[{"label":"Play against Brainy","prompt":"Start a new game of Farkle against the AI opponent"},{"label":"Explain the rules","prompt":"Explain the rules and scoring for Farkle"},{"label":"Best strategy","prompt":"What's the optimal strategy for playing Farkle? When should I bank vs roll again?"},{"label":"My statistics","prompt":"Show me my game statistics - wins, losses, and high scores"},{"label":"Game history","prompt":"Show my recent Farkle games and how they went"},{"label":"Run the app","prompt":"Run the Farkle game so I can play"}]},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are a game companion helping players learn Farkle strategy, track scores, and enjoy the game.","expertise":["Farkle rules and scoring combinations","Probability and risk assessment","Game strategy optimization","SvelteKit and TypeScript game development"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"creative","defaultTab":"app","defaultView":"app","layout":{"leftDock":"files","rightDock":"inspector"},"onboarding":{"showGuide":true,"highlightFeatures":["app"],"suggestedActions":["Start a new game against Brainy","Learn the scoring rules","Try to beat the high score","Challenge a friend in Collaborative mode"]}},"graphGuidance":{"conceptCreation":{"typeMapping":{"game":"event","player":"person","turn":"event","score":"measurement"}},"relationshipPatterns":[{"from":"event","to":"person","verb":"contains","description":"Game includes player"},{"from":"event","to":"event","verb":"contains","description":"Game contains turns"},{"from":"measurement","to":"event","verb":"partOf","description":"Score belongs to game"}],"rules":["Each game tracks all players","Turns record dice rolls and decisions","High scores are persisted"]},"qualityGates":{"fileChecks":[{"path":"package.json","required":["svelte","@sveltejs/kit"]},{"path":"src/lib/game/scoring.ts","required":["scoreDice","isFarkle"]},{"path":"src/lib/components/Die.svelte","required":["face","rolling"]}],"projectChecks":["App starts with npm run dev","Dice roll with smooth 3D animation","Scoring calculates correctly","AI opponent makes strategic decisions","Games persist to Brainy"],"exportReady":["No TypeScript errors","All animations perform at 60fps"]},"sampleData":{"entities":[{"type":"person","name":"Player 1","properties":{"role":"player","gamesPlayed":0,"gamesWon":0,"highScore":0}},{"type":"person","name":"Brainy","properties":{"role":"ai","difficulty":"medium","description":"Your AI opponent"}}],"relationships":[]},"templateMetadata":{"runnable":true,"runnableCommand":"npm run dev"},"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"512Mi"}}},"venue":{"bookingNumberPrefix":"FK","subdomainPrefix":"farkle","features":{"customerAccounts":true,"apps":true,"subscriptions":true,"website":true,"analytics":true,"cms":false,"blog":false,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.50 0.20 35)","bgBase":"oklch(0.15 0.03 260)","accent":"oklch(0.70 0.16 55)","textPrimary":"oklch(0.95 0.01 255)","displayFont":"Rubik","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"How to play","message":"Can you explain the rules of Farkle?","emoji":"🎲"},{"label":"Challenge a friend","message":"I want to challenge a friend to a game. How do I invite someone?","emoji":"🤝"},{"label":"My high scores","message":"Show me my personal bests and game history.","emoji":"🏆"},{"label":"Upgrade account","message":"What's included in the premium plan?","emoji":"⭐"}]},"academy":{"skillPath":"game-development","level":"beginner","learningObjectives":["Implement a complete turn-based dice game with scoring logic and win conditions","Design risk-reward decision trees that create genuine player tension each roll","Build persistent player profiles with score history and achievement tracking","Add multiplayer support with real-time turn synchronization and game state management","Test and balance scoring rules using probability analysis and playtesting feedback"],"assessmentTypes":["portfolio","demo"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"previewImageUrl":"kits/farkle-dice-game/images/preview.webp"},{"id":"gather-and-grill","type":"soulcraft","role":"primary","status":"released","name":"Gather & Grill","description":"Cooking class studio. Learn to cook, eat what you make, and take home the recipe. Chef-led classes for all skill levels.","longDescription":"A culinary studio platform for chef-led cooking classes, private dining events, and kids cooking camps. Manages class bookings, ingredient inventory, chef scheduling, and the full guest journey from reservation to recipe card.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🍳","tags":["cooking","culinary","food","chef","class","experience","dinner","party"],"previewImageUrl":"kits/gather-and-grill/images/preview.webp","variables":[{"key":"businessName","label":"Business Name","description":"The name of your cooking studio (e.g. \"Gather & Grill\")","type":"string","required":true,"example":"Gather & Grill","default":"Gather & Grill"},{"key":"tagline","label":"Tagline","description":"A short phrase describing your studio (shown under the logo)","type":"string","required":false,"example":"cook. eat. gather.","default":"cook. eat. gather."},{"key":"locationName","label":"Location Name","description":"The display name for this specific location (e.g. \"Gather & Grill Midtown\")","type":"string","required":true,"example":"Gather & Grill Midtown"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this location used in booking links (e.g. \"midtown\")","type":"string","required":true,"example":"midtown"},{"key":"address","label":"Street Address","description":"Street address of your kitchen studio","type":"address","required":true,"example":"312 W 14th St"},{"key":"city","label":"City","description":"City where your studio is located","type":"string","required":true,"example":"New York"},{"key":"state","label":"State / Province","description":"Two-letter state or province code","type":"string","required":true,"example":"NY"},{"key":"zip","label":"ZIP / Postal Code","type":"string","required":true,"example":"10014"},{"key":"timezone","label":"Timezone","description":"IANA timezone for this location (used for scheduling)","type":"timezone","required":true,"example":"America/New_York","default":"America/New_York"},{"key":"phone","label":"Phone Number","type":"phone","required":true,"example":"(212) 555-0183"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"hello@gatherandgrill.com"},{"key":"instagram","label":"Instagram Handle","description":"Instagram username without the @","type":"string","required":false,"example":"gatherandgrill"},{"key":"facebook","label":"Facebook Page","description":"Facebook page name or URL slug","type":"string","required":false,"example":"GatherAndGrill"},{"key":"tiktok","label":"TikTok Handle","description":"TikTok username without the @","type":"string","required":false,"example":"gatherandgrill"},{"key":"maxCapacity","label":"Kitchen Studio Capacity","description":"Maximum number of guests cooking at one time","type":"number","required":false,"example":"16","default":"16"},{"key":"headChefName","label":"Head Chef / Lead Instructor Name","description":"Name of the lead chef instructor (shown on the About page)","type":"string","required":false,"example":"Chef Marco Reyes"}],"shared":{"industry":"cooking-studio","category":"creative","glossary":{"mise en place":"French for 'everything in its place' — prepping and organizing all ingredients before cooking begins","chef's table":"An intimate dining experience where guests cook alongside the chef and eat the meal they prepare","deglazing":"Adding liquid to a hot pan to loosen browned bits and build a sauce","knife skills":"Fundamental cutting techniques — julienne, brunoise, chiffonade — taught in foundational classes","wine pairing":"Matching wine varietals to food courses based on flavor profiles and regional tradition"},"aiExpertise":["culinary instruction and recipe development","kitchen operations and ingredient sourcing","private dining event coordination","food cost analysis and menu pricing","dietary restriction and allergy management"],"dataModelHints":["booking","experience","time_slot","staff","customer","inventory_item"],"dataModel":{"entities":[{"domain":"location","type":"Location","description":"A physical Gather & Grill kitchen studio with cooking stations, demonstration space, and dining area.","products":{"workshop":{"view":"graph","icon":"📍"},"venue":{"mapsTo":"LocationMeta","pos":false}}},{"domain":"booking","type":"Event","description":"A guest reservation for a cooking class, kids camp, private cooking party, or date night cook session.","products":{"workshop":{"view":"board","icon":"📅"},"venue":{"mapsTo":"BookingMeta","pos":true},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"time_slot","type":"Event","description":"A scheduled kitchen session with a featured dish, enrolled headcount, and chef assignment.","products":{"workshop":{"view":"timeline","icon":"🕐"},"venue":{"mapsTo":"TimeSlotMeta","pos":false}}},{"domain":"experience","type":"Product","description":"A class format such as Chef's Table Class, Quick Bites Workshop, Kids Cooking Camp, Private Cooking Party, or Date Night Cook.","products":{"workshop":{"view":"gallery","icon":"🍳"},"venue":{"mapsTo":"ExperienceMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"customer","type":"Person","description":"A culinary guest who attends cooking classes, potentially with dietary restrictions or repeat visit history.","products":{"workshop":{"view":"board","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"staff","type":"Person","description":"A Head Chef who designs and leads class menus, or a Kitchen Assistant who supports instruction.","products":{"workshop":{"view":"board","icon":"👨‍🍳"},"venue":{"mapsTo":"StaffMeta","pos":false},"academy":{"mapsTo":"instructor","assessable":false}}},{"domain":"inventory_item","type":"Thing","description":"A fresh ingredient, pantry staple, spice, dairy item, or kitchen equipment item consumed or used during classes.","products":{"workshop":{"view":"graph","icon":"📦"},"venue":{"mapsTo":"InventoryItemMeta","pos":false},"academy":{"mapsTo":"material","assessable":false}}},{"domain":"gift_card","type":"Thing","description":"A digital or physical gift card redeemable for any cooking class or private party booking.","products":{"workshop":{"view":"board","icon":"🎁"},"venue":{"mapsTo":"GiftCardMeta","pos":true}}},{"domain":"loyalty_account","type":"Person","description":"A repeat cooking student's loyalty account tracking class attendance points and reward tiers.","products":{"workshop":{"view":"stats","icon":"⭐"},"venue":{"mapsTo":"LoyaltyAccountMeta","pos":false}}},{"domain":"transaction","type":"Measurement","description":"A revenue or refund record for a cooking class or private event booking, always stored in cents.","products":{"workshop":{"view":"timeline","icon":"💳"},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"content_page","type":"Document","description":"A CMS-managed page such as About Our Chefs, Class Philosophy, or Private Event Information.","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 recipes, chef profiles, seasonal menus, or cooking class highlights.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"customer","to":"booking","verb":"Creates","description":"Guest registers for a cooking class or books a private kitchen party."},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific class format with a featured dish and cuisine type."},{"from":"booking","to":"time_slot","verb":"ParticipatesIn","description":"Booking occupies kitchen stations in a specific scheduled class session."},{"from":"experience","to":"time_slot","verb":"OccursAt","description":"A class format is scheduled at session slots available for enrollment."},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Classes consume fresh ingredients per guest, driving food cost tracking and reorder planning.","products":{"venue":{"triggers":"inventoryDeduction"}}},{"from":"staff","to":"time_slot","verb":"ParticipatesIn","description":"A Head Chef is assigned to instruct a specific cooking class session."},{"from":"transaction","to":"booking","verb":"References","description":"Payment or refund record links back to the class or private event booking."}]},"suggestions":[{"label":"Upcoming class menu","prompt":"What dishes are scheduled for upcoming classes? Show me the next 4 weeks"},{"label":"Ingredient cost per class","prompt":"Calculate the ingredient cost per guest for each class type this month"},{"label":"Private party pipeline","prompt":"Show me all upcoming private cooking parties with headcount and menu requirements"},{"label":"Dietary flags this week","prompt":"Are there any allergy or dietary flags I need to know about for this week's classes?"}]},"workshop":{"aiPersona":{"role":"You are the AI assistant for Gather & Grill — a culinary studio and cooking class venue. You help chefs and managers plan menus, track ingredient costs, schedule classes, and coordinate private events. You understand professional kitchen operations.","expertise":["cooking class scheduling and curriculum design","ingredient sourcing and food cost management","private dining event coordination","kitchen staff scheduling and workflow","dietary restriction and allergy tracking"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["cooking class or culinary session mentioned","chef or instructor referenced","dish or cuisine type discussed","ingredient or supply referenced","private party or corporate event introduced"],"typeMapping":{"booking":"event","class":"event","cooking session":"event","chef":"person","instructor":"person","customer":"person","ingredient":"thing","dish":"thing","recipe":"thing","experience":"product","transaction":"measurement"}},"relationshipPatterns":[{"from":"customer","to":"booking","verb":"Creates","description":"Customer registers for a cooking class or books a private event"},{"from":"staff","to":"booking","verb":"ParticipatesIn","description":"Chef instructor leads the cooking session"},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific class format with a dish on the menu"},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Ingredients consumed per class per guest"}],"rules":["Every class booking should record the dish name and cuisine type","Dietary notes and allergy flags should be collected at booking time","Private party bookings require a custom menu confirmed before the session"]},"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"graph"},"qualityGates":{"projectChecks":["All class experience types have a dish name and cuisine type defined","Ingredient inventory is linked to consuming experience types","Chef schedule is populated for the next 4 weeks"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Class Schedule","view":"board","entityTypes":["time_slot","booking"],"description":"Upcoming classes with current enrollment and remaining capacity"},{"name":"Recipe Collection","view":"gallery","entityTypes":["event"],"description":"Dishes taught per class with booking history and popularity"},{"name":"Revenue Trends","view":"timeline","entityTypes":["transaction"],"description":"Revenue across class types and private events over time"},{"name":"Chef Schedule","view":"board","entityTypes":["staff","time_slot"],"description":"Chef and assistant assignments across upcoming sessions"},{"name":"Ingredient Inventory","view":"graph","entityTypes":["inventory_item","experience"],"description":"Graph of ingredients consumed by each class type"}]}},"academy":{"skillPath":"culinary-arts","level":"beginner","learningObjectives":["Knife skills, safe handling, and fundamental cutting techniques","Heat control and understanding cooking temperatures","Recipe interpretation and mise en place workflow","Plating fundamentals and dish presentation"],"assessmentTypes":["hands-on","portfolio"],"mode":"classroom","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":false,"voiceEnabled":true},"certification":{"requiresHumanCertifier":true,"aiCertifierAllowed":false,"lineageEnabled":true,"certificationSlug":"home-chef"},"gamification":{"enabled":true,"achievements":["connector","streak","bridge-builder"],"streaks":true,"leaderboard":true},"cohort":{"maxSize":20,"durationDays":42,"fixedStart":true}},"venue":{"bookingNumberPrefix":"GG","subdomainPrefix":"gather","features":{"animals":false,"adoption":false,"memories":true,"loyalty":true,"giftCards":true,"waivers":false,"blog":true,"pos":true,"cms":true,"partners":true,"franchise":true,"customerAccounts":true},"theme":{"primary":"oklch(0.55 0.10 55)","bgBase":"oklch(0.97 0.02 70)","accent":"oklch(0.65 0.12 45)","textPrimary":"oklch(0.25 0.03 50)","displayFont":"Bitter","bodyFont":"Inter"},"experienceTypes":[{"slug":"chefs-table-class","name":"Chef's Table Class","description":"A full chef-led cooking class where you make a 3-course meal from scratch and eat it together. New menu every month.","priceInCents":7500,"durationMinutes":150,"minGuests":1,"maxGuests":12,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.60 0.12 55)","imageUrl":"kits/gather-and-grill/images/chef-s-table-class.jpg","sessionAttributeDefinitions":[{"key":"dishName","label":"Dish Name","type":"text","perGuest":false,"required":true},{"key":"cuisineType","label":"Cuisine Type","type":"select","perGuest":false,"options":["Italian","French","Asian","American","Latin","Mediterranean"],"required":false},{"key":"difficultyLevel","label":"Difficulty Level","type":"select","perGuest":false,"options":["Beginner","Intermediate","Advanced"],"required":false}]},{"slug":"quick-bites-workshop","name":"Quick Bites Workshop","description":"Learn 2–3 impressive small plates or appetizers in 90 minutes. Perfect for entertaining at home.","priceInCents":4500,"durationMinutes":90,"minGuests":1,"maxGuests":16,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.68 0.10 65)","imageUrl":"kits/gather-and-grill/images/quick-bites-workshop.jpg","sessionAttributeDefinitions":[{"key":"dishName","label":"Dish Name","type":"text","perGuest":false,"required":true},{"key":"cuisineType","label":"Cuisine Type","type":"select","perGuest":false,"options":["Italian","French","Asian","American","Latin","Mediterranean"],"required":false},{"key":"dietaryNotes","label":"Dietary Notes","type":"text","perGuest":false,"required":false}]},{"slug":"kids-cooking-camp","name":"Kids Cooking Camp","description":"Young chefs learn real cooking skills — knife safety, heat control, and how to make a dish from scratch. Ages 7–14.","priceInCents":3500,"durationMinutes":90,"minGuests":1,"maxGuests":12,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.72 0.11 75)","imageUrl":"kits/gather-and-grill/images/kids-cooking-camp.jpg","sessionAttributeDefinitions":[{"key":"dishName","label":"Dish Name","type":"text","perGuest":false,"required":true},{"key":"ageRange","label":"Age Range","type":"select","perGuest":false,"options":["7-9","10-12","13-14","Mixed"],"required":false}]},{"slug":"private-cooking-party","name":"Private Cooking Party","description":"Full kitchen buyout with a custom menu designed around your group. Chef-led from start to finish — you cook, you eat, you celebrate.","priceInCents":8500,"durationMinutes":180,"minGuests":8,"maxGuests":16,"requiresWaiver":false,"isCombo":false,"sortOrder":3,"color":"oklch(0.55 0.13 45)","imageUrl":"kits/gather-and-grill/images/private-cooking-party.jpg","pricingTiers":[{"minGuests":8,"maxGuests":10,"pricePerPersonInCents":8500},{"minGuests":11,"maxGuests":14,"pricePerPersonInCents":7500},{"minGuests":15,"maxGuests":16,"pricePerPersonInCents":6500}],"sessionAttributeDefinitions":[{"key":"dishName","label":"Dish Name","type":"text","perGuest":false,"required":true},{"key":"cuisineType","label":"Cuisine Type","type":"select","perGuest":false,"options":["Italian","French","Asian","American","Latin","Mediterranean"],"required":false},{"key":"dietaryNotes","label":"Dietary Notes","type":"text","perGuest":false,"required":false},{"key":"partyTheme","label":"Party Theme","type":"text","perGuest":false,"required":false}]},{"slug":"date-night-cook","name":"Date Night Cook","description":"Cook a 2-course dinner side-by-side with your person. Wine pairing included. The kitchen is yours for the evening.","priceInCents":6500,"durationMinutes":120,"minGuests":2,"maxGuests":2,"requiresWaiver":false,"isCombo":false,"sortOrder":4,"color":"oklch(0.58 0.11 35)","imageUrl":"kits/gather-and-grill/images/date-night-cook.jpg","sessionAttributeDefinitions":[{"key":"dishName","label":"Dish Name","type":"text","perGuest":false,"required":true},{"key":"cuisineType","label":"Cuisine Type","type":"select","perGuest":false,"options":["Italian","French","Asian","American","Latin","Mediterranean"],"required":false}]}],"inventoryCategories":[{"id":"proteins","label":"Proteins & Seafood","icon":"🥩"},{"id":"produce","label":"Fresh Produce","icon":"🥬"},{"id":"pantry","label":"Pantry Staples","icon":"🫙"},{"id":"spices","label":"Spices & Herbs","icon":"🌿"},{"id":"dairy","label":"Dairy & Eggs","icon":"🥚"},{"id":"oils","label":"Oils & Vinegars","icon":"🫒"},{"id":"equipment","label":"Kitchen Equipment","icon":"🍳"},{"id":"packaging","label":"Recipe & Packaging","icon":"📦"},{"id":"beverages","label":"Wine & Beverages","icon":"🍷"},{"id":"retail","label":"Retail Products","icon":"🛍️"}],"staffRoles":[{"id":"head-chef","label":"Head Chef / Instructor","defaultCapabilities":["checkin","pos","inventory-view","session-log"]},{"id":"kitchen-assistant","label":"Kitchen Assistant","defaultCapabilities":["checkin","pos"]}],"chatSuggestions":[{"label":"Book a class","message":"I'd like to book a cooking class. What options do you have?","emoji":"🍳"},{"label":"What's on the menu?","message":"What's on the menu for upcoming classes?","emoji":"🍽️"},{"label":"Private cooking party info","message":"Tell me about booking a private cooking party for my group.","emoji":"🥂"},{"label":"Gift cards","message":"I'd like to buy a gift card. What are my options?","emoji":"🎁"}],"inventoryLevelDetection":"manual","fees":{"billingModel":"per-transaction","feeMode":"all-channels"}}},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"persona-driven-strategy","type":"soulcraft","role":"primary","status":"released","name":"Persona-Driven Strategy Suite","description":"Complete strategic planning with personas at the center - product, marketing, GTM, and sales plans all connected","longDescription":"A comprehensive strategy system that puts customer personas at the heart of all planning. Create detailed personas using Jobs-to-be-Done and empathy mapping, then connect them to product features, marketing campaigns, go-to-market strategy, and sales playbooks. The knowledge graph reveals how each persona flows through your entire strategy.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🎯","tags":["personas","strategy","gtm","product","marketing","sales","planning"],"variables":[{"key":"productName","label":"Product/Company Name","description":"The name of your product or company","type":"string","required":true,"example":"Acme Analytics"},{"key":"author","label":"Strategy Owner","description":"The person leading this strategy","type":"string","required":false,"example":"Your Name"},{"key":"market","label":"Target Market","description":"The primary market you are targeting","type":"string","required":false,"example":"B2B SaaS","default":""},{"key":"launchDate","label":"Target Launch","description":"Planned launch or go-to-market date","type":"string","required":false,"example":"Q2 2025","default":""}],"shared":{"industry":"business-strategy","category":"business","aiExpertise":["User persona development","Jobs-to-be-done framework","Customer journey mapping","Go-to-market strategy","Sales playbook design","Market segmentation"],"dataModelHints":["person","concept","socialGroup","document"],"dataModel":{"entities":[{"domain":"persona","type":"Person","description":"A detailed customer persona with demographics, goals, and pain points","products":{"workshop":{"view":"gallery","icon":"🎯"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"need","type":"Concept","description":"A functional or emotional need a persona has","products":{"workshop":{"view":"graph","icon":"💬"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"goal","type":"Concept","description":"A desired outcome or job-to-be-done for a persona","products":{"workshop":{"view":"graph","icon":"🏆"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"painPoint","type":"Concept","description":"A frustration or blocker standing between a persona and their goal","products":{"workshop":{"view":"board","icon":"😤"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"journeyStep","type":"Concept","description":"A stage in the customer journey for a persona","products":{"workshop":{"view":"timeline","icon":"🗺️"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"segment","type":"Concept","description":"A market segment or audience group containing personas","products":{"workshop":{"view":"graph","icon":"👥"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}}],"relationships":[{"from":"persona","to":"goal","verb":"Desires","description":"Persona wants to achieve this goal"},{"from":"persona","to":"painPoint","verb":"Fears","description":"Persona is frustrated by this pain point"},{"from":"persona","to":"segment","verb":"MemberOf","description":"Persona belongs to this market segment"},{"from":"journeyStep","to":"journeyStep","verb":"Precedes","description":"Customer journey step ordering"}]},"suggestions":[{"label":"Create a persona","prompt":"Help me create a new user persona with demographics and behaviors"},{"label":"Map user journey","prompt":"Help me map out a user journey for one of my personas"},{"label":"Identify pain points","prompt":"Help me identify and document pain points for my personas"},{"label":"Align strategy","prompt":"Help me align my product strategy with persona needs"},{"label":"Compare personas","prompt":"Compare my personas and highlight key differences"},{"label":"View persona map","prompt":"Show me all my personas and their relationships in the graph"}]},"academy":{"skillPath":"strategic-thinking","level":"intermediate","learningObjectives":["Build evidence-based customer personas using Jobs-to-be-Done and empathy mapping","Trace a persona's journey from awareness to purchase and identify friction at each stage","Connect persona pain points to specific product features with a clear value narrative","Write a go-to-market positioning statement that differentiates by persona need","Align product, marketing, and sales plans around a shared persona foundation"],"assessmentTypes":["portfolio","peer-review"],"mode":"certification","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"neutral","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":true,"certificationSlug":"strategic-thinker"},"gamification":{"enabled":true,"achievements":["deep-thinker","completionist","chain-maker"],"streaks":false,"leaderboard":true}},"workshop":{"difficulty":"advanced","templateTier":4,"aiPersona":{"role":"You are a user research and strategy consultant helping teams create evidence-based personas and customer-centric strategies that drive GTM, product, and sales alignment.","expertise":["User persona development","Jobs-to-be-done framework","Customer journey mapping","Market segmentation","Go-to-market strategy"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"planner","defaultTab":"explore","defaultView":"board","defaultFile":"personas/primary-persona.md","layout":{"leftDock":"files","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["graph","board","ai-chat"],"suggestedActions":["Start by defining your key personas","Document pain points and goals","Map product features to pain points","Use Graph view to see strategy connections"]}},"graphGuidance":{"conceptCreation":{"triggers":["When user creates a new persona","When user identifies a user need or goal","When user describes a pain point","When user maps a journey step"],"typeMapping":{"persona":"person","need":"concept","goal":"concept","painPoint":"concept","journeyStep":"concept","segment":"socialGroup"}},"relationshipPatterns":[{"from":"person","to":"concept","verb":"desires","description":"Persona has goal"},{"from":"person","to":"concept","verb":"fears","description":"Persona has pain point"},{"from":"person","to":"socialGroup","verb":"memberOf","description":"Persona in segment"},{"from":"concept","to":"concept","verb":"precedes","description":"Journey step order"}],"rules":["Create person entities for each persona","Link personas to their goals and pain points","Track journey steps in sequence","Note which segments personas belong to"]},"exporters":[{"id":"strategy-bundle","name":"Complete Strategy Package","description":"All strategy documents in organized bundle","icon":"📦","format":"zip","category":"archive","handler":"markdown-bundle","options":{"includeFiles":["**/*.md"],"preserveStructure":true,"addReadme":true}}],"templateMetadata":{"identifyByStructure":true}},"venue":{"bookingNumberPrefix":"PG","subdomainPrefix":"strategy","features":{"cms":true,"customerAccounts":true,"documents":true,"website":true,"notifications":true,"analytics":true,"blog":false,"giftCards":false,"pos":false,"subscriptions":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"per-transaction","feeMode":"online-only"},"theme":{"primary":"oklch(0.38 0.16 225)","bgBase":"oklch(0.99 0.005 225)","accent":"oklch(0.58 0.14 175)","textPrimary":"oklch(0.20 0.03 225)","displayFont":"DM Sans","bodyFont":"Inter"},"experienceTypes":[{"slug":"persona-workshop","name":"Persona Workshop","description":"A half-day facilitated workshop (up to 8 stakeholders) to define and validate 3–5 key user personas. Outputs a complete persona set with needs, goals, pain points, and journey maps.","priceInCents":120000,"durationMinutes":240,"minGuests":2,"maxGuests":8,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.50 0.14 225)","sessionAttributeDefinitions":[{"key":"businessType","label":"Business / Product Type","type":"text","perGuest":false,"required":true},{"key":"existingResearch","label":"Existing User Research","type":"select","perGuest":false,"required":false,"options":["None yet","Some interviews/surveys","Substantial data","Full UX research programme"]}]},{"slug":"strategy-review","name":"Strategy Review","description":"A 90-minute review of your current strategy documents, persona definitions, or customer journey maps. Receive prioritised recommendations and a written action plan.","priceInCents":35000,"durationMinutes":90,"minGuests":1,"maxGuests":4,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.50 0.12 175)","sessionAttributeDefinitions":[{"key":"reviewFocus","label":"Review Focus","type":"select","perGuest":false,"required":false,"options":["Persona definitions","Customer journey maps","Value proposition","Go-to-market strategy","Full strategy audit"]}]}],"staffRoles":[{"id":"strategist","label":"Strategist","defaultCapabilities":["checkin","pos","cms","analytics","notifications"]},{"id":"researcher","label":"Researcher","defaultCapabilities":["cms","analytics"]}],"chatSuggestions":[{"label":"Book a persona workshop","message":"I'd like to run a persona workshop with my team. What does it involve?","emoji":"🎯"},{"label":"Review our strategy","message":"I'd like an expert review of our current strategy docs. How do I book that?","emoji":"🔍"},{"label":"Define our audience","message":"We don't know enough about our users. Where do we start?","emoji":"👥"},{"label":"Journey mapping","message":"Can you help us map our customer journey?","emoji":"🗺️"}]},"previewImageUrl":"kits/persona-driven-strategy/images/preview.webp"},{"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"}}},{"id":"gym-fitness","type":"soulcraft","role":"primary","status":"released","name":"Gym & Fitness Studio","description":"Membership and class-based fitness center — scheduling, memberships, and trainer management","longDescription":"All-in-one fitness studio management covering class schedules, membership tiers, personal training sessions, check-in, and retail. Handles drop-in visitors and recurring members equally well.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🏋️","tags":["gym","fitness","yoga","crossfit","classes","membership"],"previewImageUrl":"kits/gym-fitness/images/preview.webp","variables":[{"key":"businessName","label":"Business Name","description":"The name of your gym or fitness studio (e.g. \"Iron & Flow Studio\")","type":"string","required":true,"example":"Iron & Flow Studio","default":"Iron & Flow Studio"},{"key":"tagline","label":"Tagline","description":"A short phrase shown under the logo (e.g. \"stronger every day.\")","type":"string","required":false,"example":"stronger every day.","default":"stronger every day."},{"key":"locationName","label":"Location Name","description":"The display name for this specific location (e.g. \"Iron & Flow Studio Westside\")","type":"string","required":true,"example":"Iron & Flow Studio Westside"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this location used in booking links (e.g. \"westside\")","type":"string","required":true,"example":"westside"},{"key":"address","label":"Street Address","description":"Street address of your studio (e.g. \"1820 Fitness Way, Ste 100\")","type":"address","required":true,"example":"1820 Fitness Way, Ste 100"},{"key":"city","label":"City","description":"City where your studio is located","type":"string","required":true,"example":"Portland"},{"key":"state","label":"State / Province","description":"Two-letter state or province code","type":"string","required":true,"example":"OR"},{"key":"zip","label":"ZIP / Postal Code","type":"string","required":true,"example":"97201"},{"key":"timezone","label":"Timezone","description":"IANA timezone for this location (used for scheduling)","type":"timezone","required":true,"example":"America/Los_Angeles","default":"America/New_York"},{"key":"phone","label":"Phone Number","type":"phone","required":true,"example":"(503) 555-0174"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"hello@ironandflow.com"},{"key":"instagram","label":"Instagram Handle","description":"Instagram username without the @","type":"string","required":false,"example":"ironandflowstudio"}],"shared":{"industry":"health-fitness","category":"hospitality","glossary":{"drop-in":"A single class visit purchased without a membership commitment","AMRAP":"As Many Rounds (or Reps) As Possible — a common CrossFit/HIIT workout format","WOD":"Workout of the Day — the daily programming posted for class participants","open gym":"Unstructured access to the gym floor during designated hours for self-directed training","rack rate":"The standard day-pass or drop-in price before any membership discounts","benchmark":"A standardized workout used to track fitness progress over time"},"aiExpertise":["fitness studio class scheduling and capacity","membership tiers and recurring billing","personal training session management","fitness programming and WOD design","member retention and attendance analytics"],"dataModelHints":["booking","experience","time_slot","staff","customer","inventory_item","gift_card","loyalty_account","transaction"],"dataModel":{"entities":[{"domain":"location","type":"Location","description":"A physical gym or fitness studio location with a class schedule, training floor, and membership configuration.","products":{"workshop":{"view":"graph","icon":"📍"},"venue":{"mapsTo":"LocationMeta","pos":false}}},{"domain":"booking","type":"Event","description":"A class reservation or personal training session booking, with check-in tracking and attendance logging.","products":{"workshop":{"view":"board","icon":"📅"},"venue":{"mapsTo":"BookingMeta","pos":true},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"time_slot","type":"Event","description":"A scheduled class or training session with capacity, instructor assignment, and room allocation.","products":{"workshop":{"view":"timeline","icon":"🕐"},"venue":{"mapsTo":"TimeSlotMeta","pos":false}}},{"domain":"experience","type":"Product","description":"A class or session type such as Drop-in Class, Personal Training, Day Pass, or Monthly Unlimited Membership.","products":{"workshop":{"view":"gallery","icon":"🏋️"},"venue":{"mapsTo":"ExperienceMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"customer","type":"Person","description":"A gym member or drop-in guest with attendance history, fitness goals, and loyalty points.","products":{"workshop":{"view":"board","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"staff","type":"Person","description":"A trainer, instructor, or front desk staff member with certifications, class assignments, and client roster.","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 class drop-in, membership purchase, or supplement sale, always in cents.","products":{"workshop":{"view":"timeline","icon":"💳"},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"inventory_item","type":"Thing","description":"A supplement, piece of merchandise, accessory, or cleaning supply stocked for sale or operational use.","products":{"workshop":{"view":"graph","icon":"📦"},"venue":{"mapsTo":"InventoryItemMeta","pos":false},"academy":{"mapsTo":"material","assessable":false}}},{"domain":"waiver","type":"Document","description":"A signed liability waiver required before a member's first class or training session.","products":{"workshop":{"view":"board","icon":"📋"},"venue":{"mapsTo":"WaiverMeta","pos":false},"academy":{"mapsTo":"safety-acknowledgment","assessable":false}}},{"domain":"gift_card","type":"Thing","description":"A digital or physical gift card redeemable for classes, day passes, personal training, or merchandise.","products":{"workshop":{"view":"board","icon":"🎁"},"venue":{"mapsTo":"GiftCardMeta","pos":true}}},{"domain":"loyalty_account","type":"Person","description":"A member loyalty account tracking class attendance milestones and reward tier benefits.","products":{"workshop":{"view":"stats","icon":"⭐"},"venue":{"mapsTo":"LoyaltyAccountMeta","pos":false}}},{"domain":"content_page","type":"Document","description":"A CMS-managed page such as Class Schedule, Membership Options, or Meet the Trainers.","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 covering workout programming, nutrition guides, or member transformation stories.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"customer","to":"booking","verb":"Creates","description":"Member or drop-in guest books a class slot or personal training session."},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific class type (yoga, CrossFit, spin, HIIT, etc.) or training session."},{"from":"booking","to":"time_slot","verb":"ParticipatesIn","description":"Booking occupies a spot in a scheduled class session with defined capacity."},{"from":"experience","to":"time_slot","verb":"OccursAt","description":"A class type is scheduled at specific time slots on the studio calendar."},{"from":"staff","to":"time_slot","verb":"ParticipatesIn","description":"An instructor or trainer is assigned to lead the class or session."},{"from":"transaction","to":"booking","verb":"References","description":"Payment or refund record links back to the class booking or training session."},{"from":"waiver","to":"booking","verb":"References","description":"Signed liability waiver is associated with the member's first booking at this location."}]},"suggestions":[{"label":"Class attendance by type","prompt":"Show me attendance rates per class type this month — which formats are filling up and which are undersubscribed?"},{"label":"Member retention","prompt":"Which members haven't attended in over 30 days? Give me a list I can use for a re-engagement campaign"},{"label":"Trainer booking load","prompt":"How many personal training sessions has each trainer run this week? Who has capacity?"},{"label":"Revenue by class type","prompt":"Compare drop-in revenue across yoga, CrossFit, spin, HIIT, and pilates for the last 90 days"}]},"workshop":{"aiPersona":{"role":"You are the AI assistant for a gym and fitness studio. You help studio managers track class attendance, member engagement, trainer assignments, and revenue. You understand fitness operations — from managing membership tiers to optimizing class schedules.","expertise":["fitness studio class scheduling and capacity management","membership programs and recurring billing","personal training session logistics","member retention and attendance analytics","supplement and merchandise inventory"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["class booking or session reservation mentioned","trainer or instructor introduced","membership type or tier referenced","fitness class type or WOD discussed","supplement or merchandise inventory mentioned"],"typeMapping":{"booking":"event","class reservation":"event","training session":"event","time slot":"event","trainer":"person","instructor":"person","member":"person","customer":"person","equipment":"thing","supplement":"thing","merchandise":"thing","experience":"product","membership":"product","transaction":"measurement"}},"relationshipPatterns":[{"from":"customer","to":"booking","verb":"Creates","description":"Member or drop-in guest books a class or training session"},{"from":"staff","to":"booking","verb":"ParticipatesIn","description":"Trainer or instructor leads the session"},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific class type or personal training"}],"rules":["New members must sign a liability waiver before their first class","Class bookings should respect the capacity limit for the room or time slot","Personal training sessions must be assigned to a specific trainer"]},"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"board"},"qualityGates":{"projectChecks":["All class types have a waiver requirement set for first-time participants","Trainer assignments are configured for all active class time slots","Membership experience types have accurate pricing and duration"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Class Schedule","view":"board","entityTypes":["time_slot","booking"],"description":"Daily class grid with instructor assignments, capacity, and waitlist status"},{"name":"Membership Overview","view":"gallery","entityTypes":["customer"],"description":"Active members with attendance streaks, tier status, and last visit date"},{"name":"Trainer Assignments","view":"board","entityTypes":["staff"],"description":"Trainer schedules with session counts and specialties"},{"name":"Revenue by Class Type","view":"stats","entityTypes":["transaction"],"description":"Drop-in and membership revenue broken down by class format"},{"name":"Equipment & Stock","view":"tree","entityTypes":["inventory_item"],"description":"Supplements, merchandise, and equipment organized by category with stock levels"}]}},"academy":{"skillPath":"fitness-fundamentals","level":"beginner","learningObjectives":["Understanding major muscle groups and functional movement patterns","Safe form and technique for foundational lifts and bodyweight movements","Principles of progressive overload and recovery","Reading a class schedule and selecting the right workout format for your goals","Gym etiquette, equipment care, and member community norms"],"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":"fitness-member"},"gamification":{"enabled":true,"achievements":["chain-maker","deep-thinker","bridge-builder"],"streaks":false,"leaderboard":false},"cohort":{"maxSize":3,"durationDays":90,"fixedStart":false}},"venue":{"bookingNumberPrefix":"GF","subdomainPrefix":"gym","features":{"animals":false,"adoption":false,"memories":false,"loyalty":true,"giftCards":true,"waivers":true,"blog":true,"pos":true,"cms":true,"partners":false,"franchise":true,"customerAccounts":true,"booking":true,"inventory":true},"theme":{"primary":"oklch(0.45 0.15 145)","bgBase":"oklch(0.12 0.03 250)","accent":"oklch(0.65 0.18 145)","textPrimary":"oklch(0.92 0.01 145)","displayFont":"Oswald","bodyFont":"Inter"},"experienceTypes":[{"slug":"drop-in-class","name":"Drop-in Class","description":"Single class drop-in for any format on the schedule — yoga, CrossFit, spin, HIIT, or pilates. No commitment required.","priceInCents":2500,"durationMinutes":60,"minGuests":1,"maxGuests":20,"requiresWaiver":true,"isCombo":false,"sortOrder":0,"color":"oklch(0.55 0.14 145)","sessionAttributeDefinitions":[{"key":"classType","label":"Class Type","type":"select","options":["yoga","CrossFit","spin","HIIT","pilates","other"],"perGuest":false,"required":true},{"key":"instructorName","label":"Instructor Name","type":"text","perGuest":false,"required":false},{"key":"fitnessLevel","label":"Fitness Level","type":"select","options":["beginner","intermediate","advanced","all-levels"],"perGuest":true,"required":false}]},{"slug":"personal-training","name":"Personal Training Session","description":"One-on-one session with a certified personal trainer. Tailored programming, real-time coaching, and progress tracking.","priceInCents":8500,"durationMinutes":60,"minGuests":1,"maxGuests":1,"requiresWaiver":true,"isCombo":false,"sortOrder":1,"color":"oklch(0.48 0.16 200)","sessionAttributeDefinitions":[{"key":"classType","label":"Session Focus","type":"select","options":["strength","cardio","mobility","sport-specific","other"],"perGuest":false,"required":false},{"key":"instructorName","label":"Trainer Name","type":"text","perGuest":false,"required":false},{"key":"fitnessLevel","label":"Fitness Level","type":"select","options":["beginner","intermediate","advanced"],"perGuest":true,"required":false}]},{"slug":"day-pass","name":"Day Pass","description":"Full-day open gym access during staffed hours. Use the floor, equipment, and amenities without attending a structured class.","priceInCents":1500,"durationMinutes":480,"minGuests":1,"maxGuests":1,"requiresWaiver":true,"isCombo":false,"sortOrder":2,"color":"oklch(0.60 0.10 80)","sessionAttributeDefinitions":[{"key":"classType","label":"Primary Use","type":"select","options":["open-gym","cardio","weights","stretching"],"perGuest":true,"required":false},{"key":"instructorName","label":"Check-in Staff","type":"text","perGuest":false,"required":false},{"key":"fitnessLevel","label":"Fitness Level","type":"select","options":["beginner","intermediate","advanced"],"perGuest":true,"required":false}]},{"slug":"monthly-unlimited","name":"Monthly Unlimited Membership","description":"Unlimited class access for 30 days. Best value for members who attend 3+ times per week. Auto-renews monthly.","priceInCents":7500,"durationMinutes":60,"minGuests":1,"maxGuests":1,"requiresWaiver":true,"isCombo":false,"sortOrder":3,"color":"oklch(0.45 0.14 145)","sessionAttributeDefinitions":[{"key":"classType","label":"Primary Interest","type":"select","options":["yoga","CrossFit","spin","HIIT","pilates","mixed"],"perGuest":true,"required":false},{"key":"instructorName","label":"Assigned Trainer","type":"text","perGuest":false,"required":false},{"key":"fitnessLevel","label":"Fitness Level","type":"select","options":["beginner","intermediate","advanced"],"perGuest":true,"required":false}]}],"inventoryCategories":[{"id":"supplements","label":"Supplements","icon":"💊"},{"id":"merchandise","label":"Merchandise","icon":"👕"},{"id":"equipment-accessories","label":"Equipment & Accessories","icon":"🏋️"},{"id":"cleaning-supplies","label":"Cleaning Supplies","icon":"🧹"},{"id":"office-supplies","label":"Office Supplies","icon":"📎"}],"staffRoles":[{"id":"head-trainer","label":"Head Trainer","defaultCapabilities":["checkin","pos","session-log","inventory-view","bookings-view"]},{"id":"group-instructor","label":"Group Instructor","defaultCapabilities":["checkin","pos","session-log"]},{"id":"personal-trainer","label":"Personal Trainer","defaultCapabilities":["checkin","pos","session-log"]},{"id":"front-desk","label":"Front Desk","defaultCapabilities":["checkin","pos","bookings-view"]},{"id":"maintenance","label":"Maintenance","defaultCapabilities":["inventory-view"]}],"chatSuggestions":[{"label":"Drop into a class","message":"I'd like to drop into a class today. What's on the schedule?","emoji":"🏋️"},{"label":"Membership options","message":"What membership options do you have and what's included?","emoji":"🏆"},{"label":"Book a personal trainer","message":"I'm interested in personal training. How do I get started?","emoji":"💪"},{"label":"Gift cards","message":"I'd like to buy a gift card for someone. What options are available?","emoji":"🎁"}],"inventoryLevelDetection":"manual","stations":[{"id":"pos","label":"Point of Sale","route":"/api/manage/pos","icon":"💳","roles":["staff","manager","owner"],"scope":"platform","context":"physical"},{"id":"checkin","label":"Check-in","route":"/api/manage/checkin","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":"class-schedule","label":"Class Schedule","route":"/api/manage/class-schedule","icon":"📋","roles":["manager","owner"],"scope":"kit","context":"both"}],"fees":{"billingModel":"hybrid","feeMode":"all-channels"}}},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"organization-chart","type":"soulcraft","role":"primary","status":"released","name":"Organization Chart","description":"Company or team hierarchy with reporting structure visualization","longDescription":"Create an interactive organization chart that visualizes reporting lines and team structure. Perfect for companies, departments, clubs, or any hierarchical organization. Auto-opens in org chart layout.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🏢","tags":["organization","hierarchy","team","management"],"variables":[{"key":"companyName","label":"Organization Name","description":"The name of your organization or company","type":"string","required":true,"example":"Acme Corp"},{"key":"industry","label":"Industry","description":"Your industry sector","type":"string","required":false,"example":"Technology"}],"shared":{"industry":"business-strategy","category":"business","glossary":{"span of control":"The number of direct reports a manager oversees","reporting line":"The chain of authority from an employee to their manager"},"aiExpertise":["Organizational design principles","Team structure and hierarchy","Role definition and responsibilities","Reporting relationships","Org chart visualization"],"dataModelHints":["person","thing","topic"],"dataModel":{"entities":[{"domain":"person","type":"Person","description":"An individual with a role, department, and reporting line","products":{"workshop":{"view":"gallery","icon":"👤"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"team","type":"Concept","description":"A team or department grouping multiple roles","products":{"workshop":{"view":"tree","icon":"👥"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}},{"domain":"department","type":"Concept","description":"A division or department within the organisation","products":{"workshop":{"view":"tree","icon":"🏢"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}}],"relationships":[{"from":"person","to":"person","verb":"ReportsTo","description":"Direct reporting relationship"},{"from":"person","to":"team","verb":"MemberOf","description":"Person is a member of this team"},{"from":"team","to":"department","verb":"PartOf","description":"Team belongs to this department"},{"from":"person","to":"person","verb":"WorksWith","description":"Cross-functional collaboration"}]},"suggestions":[{"label":"Add a team member","prompt":"Help me add a new team member to the organization chart"},{"label":"Define a department","prompt":"Help me create and structure a new department"},{"label":"Map reporting lines","prompt":"Help me define reporting relationships between team members"},{"label":"Plan restructuring","prompt":"Help me plan an organizational restructuring"},{"label":"Identify gaps","prompt":"Analyze my org chart and identify potential gaps or redundancies"},{"label":"View org chart","prompt":"Show me my organization chart in the tree view"}]},"academy":{"skillPath":"organizational-design","level":"intermediate","learningObjectives":["Map all roles with clear reporting relationships leaving no orphan nodes","Analyse spans of control and identify where reporting ratios are too wide or narrow","Define role responsibilities that eliminate overlap and cover all functions","Design a restructured hierarchy that improves decision-making speed or communication flow","Document cross-functional collaboration relationships beyond the formal reporting chain"],"assessmentTypes":["portfolio","peer-review"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"org-designer"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"beginner","templateTier":4,"aiPersona":{"role":"You are an expert organizational designer helping teams map, visualize, and optimize their reporting structures and team hierarchies.","expertise":["Organizational design and restructuring","Team hierarchy and reporting structures","Role definition and job design","Span of control analysis","Cross-functional collaboration mapping"],"tone":"mentor"},"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"tree","layout":{"leftDock":"concepts","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["graph","export"],"suggestedActions":["Add team members and their roles","Use Tree view to see reporting hierarchy","Track reporting relationships","Use Graph view for cross-functional teams"]}},"graphGuidance":{"conceptCreation":{"triggers":["When user adds a person or role","When user creates a team or department","When user defines reporting relationship","When user notes cross-functional collaboration"],"typeMapping":{"person":"person","role":"role","team":"organization","department":"organization"}},"relationshipPatterns":[{"from":"person","to":"person","verb":"reportsTo","description":"Direct reporting"},{"from":"person","to":"organization","verb":"memberOf","description":"Team membership"},{"from":"organization","to":"organization","verb":"partOf","description":"Department structure"},{"from":"person","to":"person","verb":"worksWith","description":"Cross-functional"}],"rules":["Create person entities for each role holder","Track reporting relationships","Group people into teams","Note cross-functional collaborations"]},"qualityGates":{"fileChecks":[{"path":"roles/*.md","required":["Reports To","Responsibilities"],"optional":["Manages","Skills Required","Goals"]}],"projectChecks":["All roles have clear reporting relationships","No orphan nodes (disconnected roles)","No circular reporting chains","Manager spans of control are documented","Role responsibilities are defined"],"exportReady":["All positions have role descriptions","Reporting relationships are complete","No placeholder names remain","Department structure is clear"]},"sampleData":{"description":"Sample organization chart for a technology startup","entities":[{"type":"person","name":"Sarah Chen","properties":{"role":"CEO","department":"Executive","hireDate":"2020-03-15","description":"Founder and Chief Executive Officer. Sets company vision and strategy.","status":"active"}},{"type":"person","name":"Michael Rodriguez","properties":{"role":"CTO","department":"Engineering","hireDate":"2020-04-01","description":"Chief Technology Officer. Leads technical strategy and architecture.","status":"active"}},{"type":"organization","name":"Engineering","properties":{"headcount":5,"description":"Technology and development department."}}],"relationships":[{"from":"Michael Rodriguez","verb":"reportsTo","to":"Sarah Chen"},{"from":"Michael Rodriguez","verb":"memberOf","to":"Engineering"}]},"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"512Mi"},"oneClickCommand":"gcloud run deploy"}},"venue":{"bookingNumberPrefix":"OC","subdomainPrefix":"orgchart","features":{"customerAccounts":true,"apps":true,"website":true,"subscriptions":true,"notifications":true,"analytics":true,"cms":false,"blog":false,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.38 0.14 240)","bgBase":"oklch(0.99 0.005 255)","accent":"oklch(0.56 0.18 195)","textPrimary":"oklch(0.20 0.03 255)","displayFont":"Inter","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Build my org chart","message":"I want to create an org chart for my company. How do I start?","emoji":"🏢"},{"label":"Update my team","message":"How do I add new team members and update reporting lines?","emoji":"👥"},{"label":"Export the chart","message":"How do I export my org chart as a PDF or image?","emoji":"📤"},{"label":"Manage subscription","message":"I'd like to manage my account and subscription.","emoji":"💳"}]},"previewImageUrl":"kits/organization-chart/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"concept-map","type":"soulcraft","role":"primary","status":"released","name":"Concept Map / Learning Path","description":"Educational concept map showing topic relationships and prerequisites","longDescription":"Create an interactive concept map for learning a new subject or organizing knowledge. Shows prerequisite relationships, related concepts, and learning progression. Perfect for students, teachers, or self-directed learning.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🎓","tags":["learning","education","concepts","study"],"variables":[{"key":"subject","label":"Subject","description":"The topic or subject you are mapping","type":"string","required":true,"example":"Machine Learning"},{"key":"skillLevel","label":"Skill Level","description":"Your current level with this subject","type":"string","required":false,"example":"Beginner"}],"shared":{"industry":"education","category":"knowledge","glossary":{},"aiExpertise":["Concept mapping and knowledge organization","Learning path design","Prerequisite analysis","Educational content development","Curriculum design"],"dataModelHints":["topic","thing","document"],"dataModel":{"entities":[{"domain":"concept","type":"Concept","description":"A discrete idea or topic node in the knowledge map","products":{"workshop":{"view":"graph","icon":"💡"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"example","type":"Thing","description":"A concrete instance or illustration of a concept","products":{"workshop":{"view":"gallery","icon":"📦"},"academy":{"mapsTo":"resource","assessable":false}}},{"domain":"domain","type":"Concept","description":"A broad subject area grouping related concepts","products":{"workshop":{"view":"graph","icon":"🗂️"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}}],"relationships":[{"from":"concept","to":"concept","verb":"RelatedTo","description":"General associative relationship between concepts"},{"from":"concept","to":"concept","verb":"Contains","description":"Concept includes or subsumes another concept"},{"from":"concept","to":"concept","verb":"Causes","description":"Causal relationship from one concept to another"},{"from":"concept","to":"example","verb":"InstanceOf","description":"Concrete example of this concept"}]},"suggestions":[{"label":"Add a concept","prompt":"Help me add a new concept to my concept map"},{"label":"Connect concepts","prompt":"Help me identify and create connections between my concepts"},{"label":"Explain a concept","prompt":"Help me write a clear explanation for one of my concepts"},{"label":"Find patterns","prompt":"Analyze my concept map and identify patterns or clusters"},{"label":"Expand a topic","prompt":"Help me break down a concept into sub-concepts"},{"label":"View the mind map","prompt":"Show me my concepts in the mind map view"}]},"academy":{"skillPath":"knowledge-mapping","level":"beginner","learningObjectives":["Decompose a complex subject into discrete, well-scoped concept nodes","Label relationships between concepts with precise linking phrases (causes, requires, extends)","Identify prerequisite chains and sequence learning from foundational to advanced topics","Spot gaps and cross-links in a knowledge map by reviewing graph structure"],"assessmentTypes":["portfolio","peer-review"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"knowledge-mapper"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"beginner","templateTier":4,"aiPersona":{"role":"You are an expert educator and learning designer helping learners map out complex subjects and build structured learning paths.","expertise":["Concept mapping methodology","Learning path design","Prerequisite chain analysis","Knowledge organization","Educational scaffolding"],"tone":"mentor"},"workspaceConfig":{"paradigm":"researcher","defaultTab":"explore","defaultView":"mindmap","defaultFile":"topics/overview.md","layout":{"leftDock":"concepts","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["graph","ai-chat"],"suggestedActions":["Start with the central concept","Add related topics as branches","Define prerequisite relationships","Use Graph view to see the learning path"]}},"graphGuidance":{"conceptCreation":{"triggers":["When user identifies a new concept","When user describes a relationship","When user adds an example","When user creates a cross-link"],"typeMapping":{"concept":"concept","example":"thing","domain":"concept"}},"relationshipPatterns":[{"from":"concept","to":"concept","verb":"relatedTo","description":"General relationship"},{"from":"concept","to":"concept","verb":"contains","description":"Concept includes another"},{"from":"concept","to":"concept","verb":"causes","description":"Causal relationship"},{"from":"concept","to":"thing","verb":"instanceOf","description":"Example of concept"}],"rules":["Create concept entities with clear labels","Label all relationships with linking phrases","Track hierarchy levels","Note cross-links between domains"]},"qualityGates":{"fileChecks":[{"path":"README.md","required":["Learning Path"],"optional":["Focus Question","Prerequisites"]},{"path":"topics/*.md","required":["Prerequisites"],"optional":["Resources","Examples"]}],"projectChecks":["Focus question is defined","Concepts have prerequisite relationships","Linking words describe relationships","Hierarchy is clear (general to specific)","At least one cross-link exists between areas"],"exportReady":["All concepts have notes or resources","Prerequisite chains are complete","Cross-links are documented","Learning sequence is clear"]},"sampleData":{"description":"Sample concept map for learning Machine Learning fundamentals","entities":[{"type":"concept","name":"Machine Learning","properties":{"description":"Field of AI that enables computers to learn from data without explicit programming.","status":"in_progress","difficulty":"beginner","createdAt":"2025-01-05"}},{"type":"concept","name":"Linear Algebra","properties":{"description":"Mathematical foundation: vectors, matrices, transformations.","status":"done","difficulty":"prerequisite","createdAt":"2025-01-05"}},{"type":"concept","name":"Supervised Learning","properties":{"description":"Learning from labeled training data.","status":"in_progress","difficulty":"intermediate","createdAt":"2025-01-08"}}],"relationships":[{"from":"Linear Algebra","verb":"requires","to":"Machine Learning"},{"from":"Supervised Learning","verb":"partOf","to":"Machine Learning"}]},"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"512Mi"},"oneClickCommand":"gcloud run deploy"}},"venue":{"bookingNumberPrefix":"CM","subdomainPrefix":"conceptmap","features":{"customerAccounts":true,"apps":true,"website":true,"subscriptions":true,"notifications":true,"analytics":true,"cms":false,"blog":false,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.40 0.16 195)","bgBase":"oklch(0.99 0.005 255)","accent":"oklch(0.60 0.14 140)","textPrimary":"oklch(0.20 0.03 255)","displayFont":"Inter","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Map a concept","message":"I want to build a concept map for a topic I'm learning. How do I start?","emoji":"🔗"},{"label":"Share my map","message":"How do I share my concept map with others?","emoji":"📤"},{"label":"Explore a domain","message":"Help me map out all the key concepts in a domain I'm studying.","emoji":"🔍"},{"label":"Manage subscription","message":"I'd like to manage my account and subscription.","emoji":"💳"}]},"previewImageUrl":"kits/concept-map/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"gtd-productivity-system","type":"soulcraft","role":"primary","status":"released","name":"GTD Productivity System","description":"Getting Things Done productivity system with projects, next actions, and contexts","longDescription":"Implement David Allen's Getting Things Done methodology with a complete workflow system. Includes inbox capture, project lists, next actions organized by context, waiting for tracking, and someday/maybe lists. All connected through the knowledge graph for easy navigation.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"✅","tags":["productivity","gtd","task-management","organization","workflow"],"variables":[{"key":"projectName","label":"System Name","description":"What to call your GTD system","type":"string","required":true,"example":"My GTD System"},{"key":"userName","label":"Your Name","description":"Your name for the system","type":"string","required":false,"example":"Your Name"}],"shared":{"industry":"personal-productivity","category":"knowledge","glossary":{"inbox":"The capture zone for all new items before processing","next action":"The very next physical action required to move a project forward","context":"The location or tool required to complete a task (e.g., @computer, @phone)","weekly review":"A regular system maintenance session to keep GTD current"},"aiExpertise":["GTD methodology and principles","Task and project management","Context-based productivity","Weekly review facilitation","Work-life balance and prioritization"],"dataModelHints":["thing","event","topic","person"],"dataModel":{"entities":[{"domain":"project","type":"Concept","description":"A multi-step outcome requiring more than one next action","products":{"workshop":{"view":"board","icon":"📋"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"action","type":"Event","description":"A concrete next physical action that can be done now","products":{"workshop":{"view":"board","icon":"✅"},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"context","type":"Concept","description":"A location or tool context grouping actionable tasks","products":{"workshop":{"view":"graph","icon":"🏷️"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}},{"domain":"area","type":"Concept","description":"A life area such as Work, Personal, or Health","products":{"workshop":{"view":"graph","icon":"🗂️"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}},{"domain":"person","type":"Person","description":"A person to whom a waiting-for item is delegated","products":{"workshop":{"view":"gallery","icon":"👤"},"academy":{"mapsTo":"learning-subject","assessable":false}}}],"relationships":[{"from":"action","to":"project","verb":"PartOf","description":"Action belongs to this project"},{"from":"action","to":"context","verb":"Requires","description":"Action needs this context to be completed"},{"from":"project","to":"area","verb":"PartOf","description":"Project belongs to this life area"},{"from":"action","to":"person","verb":"DelegatedTo","description":"Waiting-for item delegated to this person"},{"from":"project","to":"project","verb":"RelatedTo","description":"Projects that affect or depend on each other"}]},"suggestions":[{"label":"Add a task","prompt":"Help me capture a new task or action item"},{"label":"Process my inbox","prompt":"Help me process and organize my inbox items"},{"label":"Plan my week","prompt":"Help me plan my tasks and priorities for the week"},{"label":"Review projects","prompt":"Help me do a weekly review of all my projects and next actions"},{"label":"Clear blockers","prompt":"Identify blocked tasks and help me find solutions"},{"label":"View task board","prompt":"Show me my tasks organized on the board view"}]},"academy":{"skillPath":"personal-productivity","level":"beginner","learningObjectives":["Perform a complete mind sweep to capture all open loops into a single inbox","Clarify each inbox item by deciding if it is actionable and what the next physical action is","Organize projects and next actions into context lists for reliable retrieval","Run a weekly review to keep the system current and identify stalled projects"],"assessmentTypes":["portfolio"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"productivity-practitioner"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are an expert productivity coach specializing in the Getting Things Done methodology, helping users capture, organize, and execute their commitments with clarity.","expertise":["GTD methodology and best practices","Task and project management","Context-based work organization","Weekly review process","Mind sweep and brain dump techniques"],"tone":"mentor"},"workspaceConfig":{"paradigm":"planner","defaultTab":"explore","defaultView":"board","defaultFile":"inbox/capture.md","layout":{"leftDock":"files","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["board","calendar","ai-chat"],"suggestedActions":["Do a mind sweep - capture everything in inbox/","Process inbox using the clarify workflow","Use Board view to see next actions by context","Do weekly reviews to stay on track"]}},"graphGuidance":{"conceptCreation":{"triggers":["User creates a new project","A new context is established","User identifies a recurring area of focus","A major life area is discussed"],"typeMapping":{"project":"project","context":"context","area":"category","person":"person","action":"task"}},"relationshipPatterns":[{"from":"task","to":"project","verb":"partOf","description":"Action belongs to project"},{"from":"task","to":"context","verb":"requires","description":"Action needs this context"},{"from":"project","to":"category","verb":"partOf","description":"Project belongs to life area"},{"from":"task","to":"person","verb":"delegatedTo","description":"Waiting for someone"},{"from":"project","to":"project","verb":"relatedTo","description":"Projects that affect each other"}],"rules":["Every project should be linked to at least one next action","Contexts are categories that group next actions","Waiting for items should link to the person responsible","Projects can be grouped under life areas (work, personal, health)","Don't create actions as concepts - keep them in list files"]},"qualityGates":{"fileChecks":[{"path":"inbox/capture.md","required":[],"optional":["Processing Rules"]},{"path":"projects/active/_project-list.md","required":["Work","Personal"],"optional":["Health","Finance","Learning"]}],"projectChecks":["Inbox has been processed recently","Every active project has a next action","Context lists have actionable items (not vague tasks)","Waiting for items have who and when"],"exportReady":["Weekly review has been completed","All projects have clear outcomes","Context lists are current"]},"sampleData":{"description":"Sample GTD system with projects, tasks, and contexts","entities":[{"type":"project","name":"Launch Marketing Website","properties":{"status":"in_progress","area":"Work","outcome":"New marketing site live with analytics","description":"Complete redesign and launch of company marketing website.","dueDate":"2025-02-28","createdAt":"2025-01-05"}},{"type":"task","name":"Email designer about homepage mockups","properties":{"status":"todo","context":"@computer","description":"Request revised mockups with feedback from last meeting.","createdAt":"2025-01-12"}}],"relationships":[{"from":"Email designer about homepage mockups","verb":"partOf","to":"Launch Marketing Website"}]},"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"512Mi"},"oneClickCommand":"gcloud run deploy"}},"venue":{"bookingNumberPrefix":"GT","subdomainPrefix":"gtd","features":{"customerAccounts":true,"apps":true,"website":true,"subscriptions":true,"notifications":true,"analytics":true,"cms":false,"blog":false,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.42 0.18 145)","bgBase":"oklch(0.99 0.005 145)","accent":"oklch(0.60 0.14 210)","textPrimary":"oklch(0.20 0.03 145)","displayFont":"Inter","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Get started","message":"I want to start using GTD. What's the first step?","emoji":"🎯"},{"label":"Manage my subscription","message":"I'd like to view or change my subscription plan.","emoji":"💳"},{"label":"Capture everything","message":"Help me do a full brain dump and capture everything on my mind.","emoji":"🧠"},{"label":"Weekly review","message":"I want to do my weekly review. Walk me through it.","emoji":"📅"}]},"previewImageUrl":"kits/gtd-productivity-system/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"pitch-deck","type":"soulcraft","role":"primary","status":"released","name":"Pitch Deck","description":"Investor pitch deck with proven structure for fundraising presentations","longDescription":"Create a compelling investor pitch deck using the proven 10-12 slide structure used by Y Combinator and top VCs. Includes AI coaching on storytelling, market sizing, and pitch delivery. Export to beautiful presentations or PDF.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"💰","tags":["startup","fundraising","investors","presentation","vc","pitch"],"variables":[{"key":"projectName","label":"Company Name","description":"Your company or startup name","type":"string","required":true,"example":"Acme Inc"},{"key":"tagline","label":"One-Line Pitch","description":"Your company in one sentence","type":"string","required":false,"example":"We help X do Y better"},{"key":"fundingRound","label":"Funding Round","description":"The funding round you are raising","type":"string","required":false,"example":"Seed","default":"Seed"},{"key":"askAmount","label":"Funding Ask","description":"How much are you raising?","type":"string","required":false,"example":"$2M"}],"shared":{"industry":"business-strategy","category":"business","aiExpertise":["Startup fundraising strategy","Investor pitch storytelling","Market sizing (TAM/SAM/SOM)","VC deck structure and best practices","Competitive positioning"],"dataModelHints":["document","organization","person","concept"],"dataModel":{"entities":[{"domain":"slide","type":"Document","description":"An individual slide in the pitch deck","products":{"workshop":{"view":"board","icon":"📊"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"competitor","type":"Concept","description":"A competing company or alternative solution","products":{"workshop":{"view":"gallery","icon":"🏢"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"customer","type":"Person","description":"A target customer segment or example buyer","products":{"workshop":{"view":"gallery","icon":"🎯"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"metric","type":"Concept","description":"A traction or growth metric cited in the deck","products":{"workshop":{"view":"stats","icon":"📈"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"team-member","type":"Person","description":"A founding team member with relevant experience","products":{"workshop":{"view":"gallery","icon":"👤"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}}],"relationships":[{"from":"slide","to":"slide","verb":"Precedes","description":"Slide deck ordering"},{"from":"slide","to":"metric","verb":"Addresses","description":"Slide presents or references this metric"},{"from":"competitor","to":"metric","verb":"CompetesOn","description":"Competitor differentiates on this dimension"}]},"suggestions":[{"label":"Write a slide","prompt":"Help me write content for the next slide in my pitch deck"},{"label":"Craft the problem slide","prompt":"Help me articulate the problem my product solves"},{"label":"Define the ask","prompt":"Help me define and justify my funding ask"},{"label":"Sharpen the narrative","prompt":"Review my pitch deck narrative and suggest improvements"},{"label":"Competition analysis","prompt":"Help me create a competitive landscape slide"},{"label":"Review deck structure","prompt":"Show me my pitch deck structure and what slides need work"}]},"academy":{"skillPath":"public-speaking","level":"intermediate","learningObjectives":["Open a pitch with a problem story that creates emotional urgency before the product reveal","Calculate market size using a bottom-up methodology with cited sources","Structure a competitive positioning matrix that shows where your solution is differentiated","Deliver a timed pitch that hits all 11 slides within a 10-minute constraint","Handle hostile investor questions with evidence-backed responses"],"assessmentTypes":["demo","peer-review"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"pitch-presenter"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are an experienced startup advisor and pitch coach helping founders craft compelling investor presentations using proven YC and VC-backed frameworks.","expertise":["Startup fundraising","Investor pitch storytelling","Market sizing and validation","Competitive positioning","Pitch deck structure"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"planner","defaultTab":"edit","defaultView":"board","defaultFile":"slides/01-title.wslide","layout":{"leftDock":"files","rightDock":"properties"},"onboarding":{"showGuide":true,"highlightFeatures":["board","slideshow","export"],"suggestedActions":["Fill in your company name and tagline on the Title slide","Complete each slide in the suggested order","Use Board view to see all slides at once","Click the Present button to preview your slideshow","Export to PDF when ready to share with investors"]}},"graphGuidance":{"conceptCreation":{"triggers":["User adds a new slide topic","User identifies a competitor","User defines a customer segment","User adds a team member"],"typeMapping":{"slide":"document","competitor":"organization","customer":"person","metric":"concept","team-member":"person"}},"relationshipPatterns":[{"from":"document","to":"document","verb":"precedes","description":"Slide order"},{"from":"document","to":"concept","verb":"addresses","description":"Slide addresses topic"},{"from":"organization","to":"concept","verb":"competes-on","description":"Competitor differentiator"}],"rules":["Maintain slide order with precedes relationships","Link competitor analysis to relevant slides","Connect metrics to slides that reference them"]},"qualityGates":{"fileChecks":[{"path":"slides/02-problem.wslide","required":["Problem","Impact","Alternatives"],"optional":["Story","Data"]},{"path":"slides/04-market-size.wslide","required":["TAM","SAM","SOM"],"optional":["Sources","Growth"]},{"path":"slides/06-traction.wslide","required":["Metrics"],"optional":["Growth","Testimonials"]}],"projectChecks":["All 11 core slides have content","Problem slide has specific pain point","Market size has bottom-up calculation","Traction has real numbers","Ask amount is clearly stated"],"exportReady":["All slides complete","Visuals added to each slide","Market sources cited","Team bios finalized"]},"exporters":[{"id":"pitch-presentation","name":"Presentation (Slides)","description":"Interactive presentation for pitching","icon":"🎭","format":"html","category":"presentation","handler":"wslide-html","options":{"includeFiles":["slides/*.wslide"],"combineFiles":true,"theme":"dark"},"instructions":"Present using arrow keys. Press 'S' for speaker notes."},{"id":"pitch-pdf","name":"PDF Deck","description":"PDF for sending to investors","icon":"📄","format":"pdf","category":"document","handler":"wslide-pdf","options":{"includeFiles":["slides/*.wslide"],"includeNotes":false}},{"id":"pitch-bundle","name":"Complete Bundle","description":"All materials including appendix and research","icon":"📦","format":"zip","category":"archive","handler":"archive-bundle","options":{"includeFiles":["**/*"],"preserveStructure":true}}],"exportStructure":{"combineStrategy":"path-order","includePatterns":["slides/*.wslide"],"excludePatterns":["_templates/*","appendix/*","research/*"]},"exportPreferences":{"defaultExporter":"pitch-presentation","fileNameTemplate":"{{projectName}}-pitch-deck-{{date}}","instructions":"Review all slides for completeness before exporting. Ensure market size sources are cited."}},"venue":{"bookingNumberPrefix":"PD","subdomainPrefix":"pitchdeck","features":{"customerAccounts":true,"apps":true,"website":true,"subscriptions":true,"notifications":true,"analytics":true,"cms":false,"blog":false,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.32 0.12 270)","bgBase":"oklch(0.99 0.005 255)","accent":"oklch(0.55 0.20 200)","textPrimary":"oklch(0.20 0.03 255)","displayFont":"DM Sans","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Build my pitch deck","message":"I'm building a pitch deck for investors. What's the best structure?","emoji":"💼"},{"label":"Review my deck","message":"Can you review my current pitch deck and give feedback?","emoji":"🔍"},{"label":"Investor research","message":"Help me research investors in my sector.","emoji":"🎯"},{"label":"Upgrade my plan","message":"What premium features are available to help me close my round?","emoji":"🚀"}]},"previewImageUrl":"kits/pitch-deck/images/preview.webp"},{"id":"wicks-and-whiskers","type":"soulcraft","role":"primary","status":"released","visibility":{"scope":"private","allowedDomains":["wicksandwhiskers.com","soulcraft.com"],"allowedEmails":["dev-owner@venue.local","david@soulcraft.com"]},"name":"Wicks & Whiskers","description":"Candle-making studio + kitten rescue lounge. Guests pour custom scented candles and spend time with foster kittens looking for their forever homes.","longDescription":"A turnkey platform for candle-making studios that partner with rescue organizations to host kitten lounges. Manages bookings, inventory, waivers, staff, kitten profiles, adoption tracking, loyalty programs, and experience memory storybooks.","version":"1.7.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🕯️","tags":["candle","kitten","cat-cafe","craft","rescue","experience"],"previewImageUrl":"kits/wicks-and-whiskers/images/preview.webp","variables":[{"key":"businessName","label":"Business Name","description":"The name of your business (e.g. \"Wicks & Whiskers\")","type":"string","required":true,"example":"Wicks & Whiskers","default":"Wicks & Whiskers"},{"key":"tagline","label":"Tagline","description":"A short phrase describing your business (shown under the logo)","type":"string","required":false,"example":"candle bar & kitten rescue","default":"candle bar & kitten rescue"},{"key":"locationName","label":"Location Name","description":"The display name for this specific location (e.g. \"Wicks & Whiskers Charlotte\"). After the 2026-05-14 location=tenant simplification, the Venue onboarding wizard auto-fills this from `businessName`; kits that share state with multi-location operators may still set it explicitly.","type":"string","required":false,"example":"Wicks & Whiskers Charlotte"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this location used in booking links (e.g. \"charlotte-plaza-midwood\")","type":"string","required":true,"example":"charlotte-plaza-midwood"},{"key":"address","label":"Street Address","description":"Street address of your venue (e.g. \"1800 Central Ave, Ste A2\")","type":"address","required":true,"example":"1800 Central Ave, Ste A2"},{"key":"city","label":"City","description":"City where your venue is located","type":"string","required":true,"example":"Charlotte"},{"key":"state","label":"State / Province","description":"Two-letter state or province code","type":"string","required":true,"example":"NC"},{"key":"zip","label":"ZIP / Postal Code","type":"string","required":true,"example":"28205"},{"key":"timezone","label":"Timezone","description":"IANA timezone for this location (used for scheduling)","type":"timezone","required":true,"example":"America/New_York","default":"America/New_York"},{"key":"phone","label":"Phone Number","type":"phone","required":false,"example":"(704) 400-1496"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"contact@wicksandwhiskers.com"},{"key":"instagram","label":"Instagram Handle","description":"Instagram username without the @","type":"string","required":false,"example":"wicks_whiskers"},{"key":"facebook","label":"Facebook Page","description":"Facebook page name or URL slug","type":"string","required":false,"example":"WicksandWhiskersCLT"},{"key":"tiktok","label":"TikTok Handle","description":"TikTok username without the @","type":"string","required":false,"example":"wicks_whiskers"},{"key":"maxCapacity","label":"Candle Bar Capacity","description":"Maximum number of guests at the candle bar at one time","type":"number","required":false,"example":"12","default":"12"},{"key":"rescuePartnerName","label":"Rescue Partner Name","description":"Name of the rescue organization providing foster kittens","type":"string","required":false,"example":"Killer Kitties Rescue"}],"shared":{"industry":"experiential-retail","category":"creative","glossary":{"cover":"One seated guest at the candle bar","chandler":"Candle-making guide or instructor","fragrance load":"Percentage of fragrance oil to wax (typically 10%)","chandling":"The art and craft of candle-making","kitten lounge":"The room where foster kittens socialize with guests","Klubhouse Kounselor":"Staff member assigned to supervise the kitten lounge","pour":"A single candle-making session completed by a guest"},"aiExpertise":["candle making and fragrance blending","animal rescue operations and foster care","experiential retail and hospitality","small business operations and scheduling","customer experience design"],"dataModelHints":["booking","experience","time_slot","staff","kitten","customer","inventory_item","gift_card","memory","waiver"],"dataModel":{"entities":[{"domain":"location","type":"Location","description":"A physical Wicks & Whiskers studio location with its own candle bar, kitten lounge, and franchise settings.","products":{"workshop":{"view":"graph","icon":"📍"},"venue":{"mapsTo":"LocationMeta","pos":false}}},{"domain":"booking","type":"Event","description":"A guest reservation for a candle-making session, kitten lounge visit, or combo experience.","products":{"workshop":{"view":"board","icon":"📅"},"venue":{"mapsTo":"BookingMeta","pos":true},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"time_slot","type":"Event","description":"An available candle bar or kitten lounge session slot with capacity and scheduled start time.","products":{"workshop":{"view":"timeline","icon":"🕐"},"venue":{"mapsTo":"TimeSlotMeta","pos":false}}},{"domain":"experience","type":"Product","description":"A bookable experience type such as the Kandle Experience, Kitten Experience, or Kitten & Kandle Combo.","products":{"workshop":{"view":"gallery","icon":"🕯️"},"venue":{"mapsTo":"ExperienceMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"customer","type":"Person","description":"A guest or returning customer who has booked a candle-making or kitten lounge session.","products":{"workshop":{"view":"board","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"staff","type":"Person","description":"A Chandler Guide or Klubhouse Kounselor employee who runs sessions and manages the venue.","products":{"workshop":{"view":"board","icon":"👩‍🔬"},"venue":{"mapsTo":"StaffMeta","pos":false},"academy":{"mapsTo":"instructor","assessable":false}}},{"domain":"kitten","type":"Organism","description":"A foster kitten in residence at the Kitten Klubhouse, tracked for welfare, interactions, and adoption status.","products":{"workshop":{"view":"gallery","icon":"🐱"},"venue":{"mapsTo":"KittenMeta","pos":false},"academy":{"mapsTo":"learning-subject","assessable":false}}},{"domain":"inventory_item","type":"Thing","description":"A supply item such as soy wax, fragrance oil, wicks, or vessels consumed during candle-making experiences.","products":{"workshop":{"view":"graph","icon":"📦"},"venue":{"mapsTo":"InventoryItemMeta","pos":false},"academy":{"mapsTo":"material","assessable":false}}},{"domain":"waiver","type":"Document","description":"A digitally signed liability waiver required before guests interact with kittens or participate in sessions.","products":{"workshop":{"view":"board","icon":"📋"},"venue":{"mapsTo":"WaiverMeta","pos":false},"academy":{"mapsTo":"safety-acknowledgment","assessable":false}}},{"domain":"gift_card","type":"Thing","description":"A digital or physical gift card redeemable for any candle-making or kitten lounge experience.","products":{"workshop":{"view":"board","icon":"🎁"},"venue":{"mapsTo":"GiftCardMeta","pos":true}}},{"domain":"loyalty_account","type":"Person","description":"A guest loyalty account tracking points earned from pours and kitten sessions, redeemable for discounts.","products":{"workshop":{"view":"stats","icon":"⭐"},"venue":{"mapsTo":"LoyaltyAccountMeta","pos":false}}},{"domain":"transaction","type":"Measurement","description":"A revenue or refund record for a candle-making or kitten lounge booking, always stored in cents.","products":{"workshop":{"view":"timeline","icon":"💳"},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"content_page","type":"Document","description":"A CMS-managed public-facing page such as About, FAQ, or Kitten Adoption information.","products":{"workshop":{"view":"board","icon":"📄"},"venue":{"mapsTo":"ContentPageMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}},{"domain":"blog_post","type":"Document","description":"A published blog post covering candle-making tips, kitten rescue stories, or studio news.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"customer","to":"booking","verb":"Creates","description":"Guest books a candle-making or kitten lounge session."},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific experience type (Kandle, Kitten, Combo, or Private)."},{"from":"booking","to":"time_slot","verb":"ParticipatesIn","description":"Booking occupies a specific scheduled session slot on the candle bar or in the lounge."},{"from":"experience","to":"time_slot","verb":"OccursAt","description":"An experience type is scheduled at available time slots for guest selection."},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Candle-making experiences consume soy wax, fragrance oil, wicks, and vessels per guest."},{"from":"staff","to":"time_slot","verb":"ParticipatesIn","description":"A Chandler Guide or Klubhouse Kounselor is assigned to run the session slot."},{"from":"kitten","to":"time_slot","verb":"ParticipatesIn","description":"Foster kittens are present in the Kitten Klubhouse during lounge session slots."},{"from":"transaction","to":"booking","verb":"References","description":"Payment or refund transaction records link back to their source booking.","products":{"venue":{"triggers":"loyaltyPointsEarn"}}},{"from":"waiver","to":"booking","verb":"References","description":"Signed waiver is associated with the booking it covers, required before kitten interaction."}]},"suggestions":[{"label":"Add experience","prompt":"Help me add a new candle-making experience to the menu with pricing and capacity"},{"label":"Staff schedule","prompt":"Show me this week's staff schedule and suggest optimizations based on bookings"},{"label":"Revenue analysis","prompt":"Analyze revenue trends across experience types for the past 30 days"},{"label":"Kitten profiles","prompt":"Show me all available kittens and their current adoption status"},{"label":"Inventory check","prompt":"Check fragrance oil inventory levels and flag anything running low"},{"label":"Booking insights","prompt":"Analyze booking patterns by day and time — where is capacity underutilized?"}]},"workshop":{"graphGuidance":{"conceptCreation":{"triggers":["booking or reservation mentioned","kitten name or foster cat referenced","experience type or session described","staff member or role introduced","fragrance, vessel, or wax discussed","inventory item or supply referenced"],"typeMapping":{"booking":"event","reservation":"event","session":"event","kitten":"organism","foster cat":"organism","candle":"thing","vessel":"thing","fragrance":"thing","wax":"thing","staff":"person","chandler":"person","kounselor":"person","customer":"person","guest":"person","experience":"product","transaction":"measurement","gift card":"document"}},"relationshipPatterns":[{"from":"customer","to":"booking","verb":"Creates","description":"Customer makes a reservation"},{"from":"booking","to":"experience","verb":"Contains","description":"Booking includes one or more experience types"},{"from":"staff","to":"session","verb":"ParticipatesIn","description":"Staff member runs a session"},{"from":"kitten","to":"session","verb":"ParticipatesIn","description":"Kitten socializes with guests during this session"},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Materials consumed per experience (wax, fragrance, wicks)"}],"rules":["Every booking should link to at least one experience type","Every kitten should have an adoption status field in its metadata","Inventory items should link to the experiences that consume them","Memories should link back to their source booking"]},"aiPersona":{"role":"You are the AI assistant for Wicks & Whiskers — a candle-making studio and kitten rescue lounge. You help owners and managers understand their business data, optimize operations, and grow the experience.","expertise":["candle making and fragrance blending","animal rescue and kitten foster care","experiential retail and hospitality","small business scheduling and staffing","revenue analysis and inventory management"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"graph"},"qualityGates":{"projectChecks":["Each experience type has a price, capacity, and duration defined","At least one kitten profile exists with adoption status set","Fragrance and wax inventory items are linked to their consuming experiences"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Booking Pipeline","view":"board","entityTypes":["booking","time_slot","customer"],"description":"Track bookings from reservation through check-in and completion"},{"name":"Kitten Profiles","view":"gallery","entityTypes":["kitten"],"description":"Browse foster kittens, adoption status, and interaction history"},{"name":"Revenue Timeline","view":"timeline","entityTypes":["transaction","booking"],"description":"Visualize revenue across experience types over time"},{"name":"Staff & Schedule","view":"board","entityTypes":["staff","time_slot"],"description":"View and manage staff assignments across upcoming sessions"},{"name":"Inventory Network","view":"graph","entityTypes":["inventory_item","experience"],"description":"Graph of supplies consumed by each experience type"}]}},"academy":{"skillPath":"candle-crafting","level":"beginner","learningObjectives":["Fragrance blending and scent note layering","Wax types, melting points, and pour technique","Wick selection, centering, and burn testing","Container design, labeling, and presentation"],"assessmentTypes":["hands-on","portfolio"],"mode":"classroom","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":false,"voiceEnabled":true},"certification":{"requiresHumanCertifier":true,"aiCertifierAllowed":false,"lineageEnabled":true,"certificationSlug":"candle-artisan"},"gamification":{"enabled":true,"achievements":["connector","streak","bridge-builder"],"streaks":true,"leaderboard":true},"cohort":{"maxSize":20,"durationDays":42,"fixedStart":true}},"venue":{"bookingNumberPrefix":"WW","subdomainPrefix":"wicks","features":{"animals":true,"adoption":true,"memories":true,"loyalty":true,"giftCards":true,"waivers":true,"blog":true,"pos":true,"cms":true,"partners":true,"franchise":true,"customerAccounts":true,"craftChoices":true,"kittens":true,"rescuePartner":true},"catalogThemeId":"soulcraft-light","theme":{"primary":"oklch(0.55 0.05 188)","bgBase":"oklch(0.95 0.01 85)","accent":"oklch(0.66 0.10 51)","textPrimary":"oklch(0.47 0.03 228)","displayFont":"Fraunces","bodyFont":"Inter","logoUrl":"https://forge.soulcraft.com/api/kits/wicks-and-whiskers/files/images/logo.webp"},"experienceTypes":[{"slug":"kitten-kandle-combo","name":"Kitten & Kandle Combo","description":"The best of both worlds! Pour a custom scented candle and spend time with adorable foster kittens. Save $5 on the combo.","priceInCents":5500,"durationMinutes":120,"minGuests":1,"maxGuests":8,"requiresWaiver":true,"isCombo":true,"componentSlugs":["kandle-experience","kitten-experience"],"sortOrder":0,"color":"oklch(0.82 0.10 75)","imageUrl":"kits/wicks-and-whiskers/images/kitten-kandle-combo.jpg"},{"slug":"kandle-experience","name":"Kandle Experience","description":"Choose a vessel, blend up to 3 fragrance oils from 60+ options, and pour your own custom candle. All-natural Golden Brands 464 soy wax.","priceInCents":4000,"durationMinutes":60,"minGuests":1,"maxGuests":12,"requiresWaiver":true,"isCombo":false,"sortOrder":1,"color":"oklch(0.85 0.08 75)","imageUrl":"kits/wicks-and-whiskers/images/kandle-experience.jpg"},{"slug":"kitten-experience","name":"Kitten Experience","description":"50 minutes in the Kitten Klubhouse with adorable foster kittens. Pet, play, take photos, and maybe find your new best friend.","priceInCents":1500,"durationMinutes":50,"minGuests":1,"maxGuests":8,"requiresWaiver":true,"isCombo":false,"sortOrder":2,"color":"oklch(0.85 0.08 350)","imageUrl":"kits/wicks-and-whiskers/images/kitten-experience.jpg"},{"slug":"private-experience","imageUrl":"kits/wicks-and-whiskers/images/private-experience.jpg","name":"Private Experience","description":"Book the entire space for your group! 2 hours, 4–10 guests. Includes candle-making, kitten lounge, DJ jukebox, and party favors.","priceInCents":5500,"durationMinutes":120,"minGuests":4,"maxGuests":10,"requiresWaiver":true,"isCombo":false,"sortOrder":3,"color":"oklch(0.82 0.08 300)","pricingTiers":[{"minGuests":4,"maxGuests":6,"pricePerPersonInCents":5500},{"minGuests":7,"maxGuests":8,"pricePerPersonInCents":5000},{"minGuests":9,"maxGuests":10,"pricePerPersonInCents":4500}]}],"inventoryCategories":[{"id":"jar","label":"Candle Jars & Vessels","icon":"🫙"},{"id":"wax","label":"Wax","icon":"🕯️"},{"id":"fragrance","label":"Fragrance Oils","icon":"🌸"},{"id":"wick","label":"Wicks","icon":"🧵"},{"id":"lid","label":"Lids & Closures","icon":"🔘"},{"id":"dye","label":"Dye Chips","icon":"🎨"},{"id":"supplies","label":"Supplies & Packaging","icon":"📦"},{"id":"retail","label":"Retail Products","icon":"🛍️"},{"id":"kitten","label":"Kitten Supplies","icon":"🐱"}],"staffRoles":[{"id":"chandler-guide","label":"Chandler Guide","defaultCapabilities":["checkin","pos","inventory-view"]},{"id":"klubhouse-kounselor","label":"Klubhouse Kounselor","defaultCapabilities":["checkin","kitten-log","pos"]}],"chatSuggestions":[{"label":"Book an experience","message":"I'd like to book an experience. What are my options?","emoji":"📅"},{"label":"What is the Kitten Klubhouse?","message":"Tell me about the Kitten Klubhouse and the kittens.","emoji":"🐱"},{"label":"How does candle-making work?","message":"How does the candle-making experience work?","emoji":"🕯️"},{"label":"Gift cards","message":"I'm interested in buying a gift card. What options do you have?","emoji":"🎁"}],"inventoryLevelDetection":"manual","stations":[{"id":"staff-dashboard","label":"Dashboard","route":"staff","icon":"M3.75 6A2.25 2.25 0 016 3.75h2.25A2.25 2.25 0 0110.5 6v2.25a2.25 2.25 0 01-2.25 2.25H6a2.25 2.25 0 01-2.25-2.25V6zM3.75 15.75A2.25 2.25 0 016 13.5h2.25a2.25 2.25 0 012.25 2.25V18a2.25 2.25 0 01-2.25 2.25H6A2.25 2.25 0 013.75 18v-2.25zM13.5 6a2.25 2.25 0 012.25-2.25H18A2.25 2.25 0 0120.25 6v2.25A2.25 2.25 0 0118 10.5h-2.25a2.25 2.25 0 01-2.25-2.25V6zM13.5 15.75a2.25 2.25 0 012.25-2.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-2.25A2.25 2.25 0 0113.5 18v-2.25z","roles":["staff","manager","owner"],"scope":"platform","context":"physical","group":"Staff"},{"id":"staff-schedule","label":"Schedule","route":"staff/schedule","icon":"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5","roles":["staff","manager","owner"],"scope":"platform","context":"physical","group":"Staff"},{"id":"staff-checkin","label":"Check-In","route":"staff/checkin","icon":"M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z","roles":["staff","manager","owner"],"scope":"platform","context":"physical","group":"Staff"},{"id":"staff-pos","label":"Point of Sale","route":"staff/pos","icon":"M2.25 8.25h19.5M2.25 9h19.5m-16.5 5.25h6m-6 2.25h3m-3.75 3h15a2.25 2.25 0 002.25-2.25V6.75A2.25 2.25 0 0019.5 4.5h-15a2.25 2.25 0 00-2.25 2.25v10.5A2.25 2.25 0 004.5 19.5z","roles":["staff","manager","owner"],"scope":"platform","context":"physical","group":"Staff"},{"id":"staff-bookings","label":"Bookings","route":"staff/bookings","icon":"M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zM3.75 12h.007v.008H3.75V12zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zm-.375 5.25h.007v.008H3.75v-.008zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z","roles":["staff","manager","owner"],"scope":"platform","context":"physical","group":"Staff"},{"id":"staff-waivers","label":"Waivers","route":"staff/waivers","icon":"M9 12.75L11.25 15 15 9.75m-3-7.036A11.959 11.959 0 013.598 6 11.99 11.99 0 003 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285z","roles":["staff","manager","owner"],"scope":"platform","context":"physical","group":"Staff"},{"id":"experiences","label":"Experiences","route":"experiences","icon":"M11.48 3.499a.562.562 0 011.04 0l2.125 5.111a.563.563 0 00.475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 00-.182.557l1.285 5.385a.562.562 0 01-.84.61l-4.725-2.885a.563.563 0 00-.586 0L6.982 20.54a.562.562 0 01-.84-.61l1.285-5.386a.562.562 0 00-.182-.557l-4.204-3.602a.562.562 0 01.321-.988l5.518-.442a.563.563 0 00.475-.345L11.48 3.5z","roles":["manager","owner"],"scope":"platform","context":"physical","group":"Operations"},{"id":"schedule","label":"Schedule","route":"schedule","icon":"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5","roles":["manager","owner"],"scope":"platform","context":"physical","group":"Operations"},{"id":"inventory","label":"Inventory","route":"inventory","icon":"M20.25 7.5l-.625 10.632a2.25 2.25 0 01-2.247 2.118H6.622a2.25 2.25 0 01-2.247-2.118L3.75 7.5M10 11.25h4M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z","roles":["manager","owner"],"scope":"platform","context":"physical","group":"Operations"},{"id":"customers","label":"Customers","route":"customers","icon":"M17.982 18.725A7.488 7.488 0 0012 15.75a7.488 7.488 0 00-5.982 2.975m11.963 0a9 9 0 10-11.963 0m11.963 0A8.966 8.966 0 0112 21a8.966 8.966 0 01-5.982-2.275M15 9.75a3 3 0 11-6 0 3 3 0 016 0z","roles":["manager","owner"],"scope":"platform","context":"both","group":"Operations"},{"id":"memory-cards","label":"Memory Cards","route":"memories","icon":"M2.25 15.75l5.159-5.159a2.25 2.25 0 013.182 0l5.159 5.159m-1.5-1.5l1.409-1.409a2.25 2.25 0 013.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 001.5-1.5V6a1.5 1.5 0 00-1.5-1.5H3.75A1.5 1.5 0 002.25 6v12a1.5 1.5 0 001.5 1.5zm10.5-11.25h.008v.008h-.008V8.25zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z","roles":["manager","owner"],"scope":"platform","context":"both","group":"Operations"},{"id":"analytics","label":"Analytics","route":"analytics","icon":"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 013 19.875v-6.75zM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V8.625zM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V4.125z","roles":["manager","owner"],"scope":"platform","context":"both","group":"Operations"},{"id":"kittens","label":"Kittens","route":"kittens","icon":"M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12z","roles":["manager","owner"],"scope":"kit","context":"physical","group":"Operations"},{"id":"financials","label":"Financials","route":"financials","icon":"M2.25 18.75a60.07 60.07 0 0115.797 2.101c.727.198 1.453-.342 1.453-1.096V18.75M3.75 4.5v.75A.75.75 0 013 6h-.75m0 0v-.375c0-.621.504-1.125 1.125-1.125H20.25M2.25 6v9m18-10.5v.75c0 .414.336.75.75.75h.75m-1.5-1.5h.375c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-.375m1.5-1.5H21a.75.75 0 00-.75.75v.75m0 0H3.75m0 0h-.375a1.125 1.125 0 01-1.125-1.125V15m1.5 1.5v-.75A.75.75 0 003 15h-.75M15 10.5a3 3 0 11-6 0 3 3 0 016 0zm3 0h.008v.008H18V10.5zm-12 0h.008v.008H6V10.5z","roles":["manager","owner"],"scope":"platform","context":"both","group":"Business"},{"id":"gift-cards","label":"Gift Cards","route":"gift-cards","icon":"M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L9.568 3zM6 6h.008v.008H6V6z","roles":["manager","owner"],"scope":"platform","context":"both","group":"Business"},{"id":"loyalty","label":"Loyalty","route":"loyalty","icon":"M16.5 18.75h-9m9 0a3 3 0 013 3h-15a3 3 0 013-3m9 0v-3.375c0-.621-.503-1.125-1.125-1.125h-.871M7.5 18.75v-3.375c0-.621.504-1.125 1.125-1.125h.872m5.007 0H9.497m5.007 0a7.454 7.454 0 01-.982-3.172M9.497 14.25a7.454 7.454 0 00.981-3.172M5.25 4.236c-.982.143-1.954.317-2.916.52A6.003 6.003 0 007.73 9.728M5.25 4.236V4.5c0 2.108.966 3.99 2.48 5.228M5.25 4.236V2.721C7.456 2.41 9.71 2.25 12 2.25c2.291 0 4.545.16 6.75.47v1.516M7.73 9.728a6.726 6.726 0 002.748 1.35m8.272-6.842V4.5c0 2.108-.966 3.99-2.48 5.228m2.48-5.492a46.32 46.32 0 012.916.52 6.003 6.003 0 01-5.395 4.972m0 0a6.726 6.726 0 01-2.749 1.35m0 0a6.772 6.772 0 01-3.044 0","roles":["manager","owner"],"scope":"platform","context":"both","group":"Business"},{"id":"promotions","label":"Promotions","route":"promotions","icon":"M9 14.25l6-6m4.5-3.493V21.75l-3.75-1.5-3.75 1.5-3.75-1.5-3.75 1.5V4.757c0-1.108.806-2.057 1.907-2.185a48.507 48.507 0 0111.186 0c1.1.128 1.907 1.077 1.907 2.185zM9.75 9h.008v.008H9.75V9zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zm4.125 4.5h.008v.008h-.008V13.5zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z","roles":["manager","owner"],"scope":"platform","context":"both","group":"Business"},{"id":"reviews","label":"Reviews","route":"reviews","icon":"M20.25 8.511c.884.284 1.5 1.128 1.5 2.097v4.286c0 1.136-.847 2.1-1.98 2.193-.34.027-.68.052-1.02.072v3.091l-3-3c-1.354 0-2.694-.055-4.02-.163a2.115 2.115 0 01-.825-.242m9.345-8.334a2.126 2.126 0 00-.476-.095 48.64 48.64 0 00-8.048 0c-1.131.094-1.976 1.057-1.976 2.192v4.286c0 .837.46 1.58 1.155 1.951m9.345-8.334V6.637c0-1.621-1.152-3.026-2.76-3.235A48.455 48.455 0 0011.25 3c-2.115 0-4.198.137-6.24.402-1.608.209-2.76 1.614-2.76 3.235v6.226c0 1.621 1.152 3.026 2.76 3.235.577.075 1.157.14 1.74.194V21l4.155-4.155","roles":["manager","owner"],"scope":"platform","context":"both","group":"Business"},{"id":"blog","label":"Blog","route":"blog","icon":"M12 7.5h1.5m-1.5 3h1.5m-7.5 3h7.5m-7.5 3h7.5m3-9h3.375c.621 0 1.125.504 1.125 1.125V18a2.25 2.25 0 01-2.25 2.25M16.5 7.5V18a2.25 2.25 0 002.25 2.25M16.5 7.5V4.875c0-.621-.504-1.125-1.125-1.125H4.125C3.504 3.75 3 4.254 3 4.875V18a2.25 2.25 0 002.25 2.25h13.5M6 7.5h3v3H6V7.5z","roles":["manager","owner"],"scope":"platform","context":"both","group":"Business"},{"id":"content","label":"Content","route":"content","icon":"M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z","roles":["manager","owner"],"scope":"platform","context":"both","group":"Business"},{"id":"partners","label":"Partners","route":"partners","icon":"M15 19.128a9.38 9.38 0 002.625.372 9.337 9.337 0 004.121-.952 4.125 4.125 0 00-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 018.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0111.964-3.07M12 6.375a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zm8.25 2.25a2.625 2.625 0 11-5.25 0 2.625 2.625 0 015.25 0z","roles":["manager","owner"],"scope":"platform","context":"physical","group":"Business"},{"id":"franchise","label":"Locations","route":"franchise","icon":"M3.75 21h16.5M4.5 3h15M5.25 3v18m13.5-18v18M9 6.75h1.5m-1.5 3h1.5m-1.5 3h1.5m3-6H15m-1.5 3H15m-1.5 3H15M9 21v-3.375c0-.621.504-1.125 1.125-1.125h3.75c.621 0 1.125.504 1.125 1.125V21","roles":["owner"],"scope":"platform","context":"physical","group":"Business"},{"id":"reports","label":"Reports","route":"reports","icon":"M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25M9 16.5v.75m3-3v3M15 12v5.25m-4.5-15H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z","roles":["manager","owner"],"scope":"platform","context":"both","group":"Settings"},{"id":"analytics-advanced","label":"Advanced Analytics","route":"analytics/advanced","icon":"M3.75 3v11.25A2.25 2.25 0 006 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0118 16.5h-2.25m-7.5 0h7.5m-7.5 0l-1 3m8.5-3l1 3m0 0l.5 1.5m-.5-1.5h-9.5m0 0l-.5 1.5M9 11.25v1.5M12 9v3.75m3-6v6","roles":["owner"],"scope":"platform","context":"both","group":"Settings"},{"id":"staff-management","label":"Staff Management","route":"staff-management","icon":"M15 9h3.75M15 12h3.75M15 15h3.75M4.5 19.5h15a2.25 2.25 0 002.25-2.25V6.75A2.25 2.25 0 0019.5 4.5h-15a2.25 2.25 0 00-2.25 2.25v10.5A2.25 2.25 0 004.5 19.5zm6-10.125a1.875 1.875 0 11-3.75 0 1.875 1.875 0 013.75 0zm1.294 6.336a6.721 6.721 0 01-3.17.789 6.721 6.721 0 01-3.168-.789 3.376 3.376 0 016.338 0z","roles":["owner"],"scope":"platform","context":"physical","group":"Settings"},{"id":"notifications","label":"Notifications","route":"notifications","icon":"M14.857 17.082a23.848 23.848 0 005.454-1.31A8.967 8.967 0 0118 9.75v-.7V9A6 6 0 006 9v.75a8.967 8.967 0 01-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 01-5.714 0m5.714 0a3 3 0 11-5.714 0","roles":["owner"],"scope":"platform","context":"both","group":"Settings"},{"id":"integrations","label":"Integrations","route":"integrations","icon":"M14.25 6.087c0-.355.186-.676.401-.959.221-.29.349-.634.349-1.003 0-1.036-1.007-1.875-2.25-1.875s-2.25.84-2.25 1.875c0 .369.128.713.349 1.003.215.283.401.604.401.959v0a.64.64 0 01-.657.643 48.39 48.39 0 01-4.163-.3c.186 1.613.293 3.25.315 4.907a.656.656 0 01-.658.663v0c-.355 0-.676-.186-.959-.401a1.647 1.647 0 00-1.003-.349c-1.036 0-1.875 1.007-1.875 2.25s.84 2.25 1.875 2.25c.369 0 .713-.128 1.003-.349.283-.215.604-.401.959-.401v0c.31 0 .555.26.532.57a48.039 48.039 0 01-.642 5.056c1.518.19 3.058.309 4.616.354a.64.64 0 00.657-.643v0c0-.355-.186-.676-.401-.959a1.647 1.647 0 01-.349-1.003c0-1.035 1.008-1.875 2.25-1.875 1.243 0 2.25.84 2.25 1.875 0 .369-.128.713-.349 1.003-.215.283-.401.604-.401.959v0c0 .333.277.599.61.58a48.1 48.1 0 005.427-.63 48.05 48.05 0 00.582-4.717.532.532 0 00-.533-.57v0c-.355 0-.676.186-.959.401-.29.221-.634.349-1.003.349-1.035 0-1.875-1.007-1.875-2.25s.84-2.25 1.875-2.25c.37 0 .713.128 1.003.349.283.215.604.401.959.401v0a.656.656 0 00.658-.663 48.422 48.422 0 00-.37-5.36c-1.886.342-3.81.574-5.766.689a.578.578 0 01-.61-.58v0z","roles":["owner"],"scope":"platform","context":"digital","group":"Settings"},{"id":"settings","label":"Settings","route":"settings","icon":"M10.5 6h9.75M10.5 6a1.5 1.5 0 11-3 0m3 0a1.5 1.5 0 10-3 0M3.75 6H7.5m3 12h9.75m-9.75 0a1.5 1.5 0 01-3 0m3 0a1.5 1.5 0 00-3 0m-3.75 0H7.5m9-6h3.75m-3.75 0a1.5 1.5 0 01-3 0m3 0a1.5 1.5 0 00-3 0m-9.75 0h9.75","roles":["owner"],"scope":"platform","context":"both","group":"Settings"},{"id":"subscriptions","label":"Subscriptions","route":"subscriptions","icon":"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99","roles":["owner"],"scope":"platform","context":"digital","group":"Settings"},{"id":"audit","label":"Audit Log","route":"audit","icon":"M12 6v6h4.5m4.5 0a9 9 0 11-18 0 9 9 0 0118 0z","roles":["owner"],"scope":"platform","context":"both","group":"Settings"}],"fees":{"billingModel":"per-transaction","feeMode":"all-channels"},"terminology":{"participant":{"singular":"guest","plural":"guests"},"offering":{"singular":"experience","plural":"experiences"},"reservation":{"singular":"booking","plural":"bookings"},"group":{"singular":"party","plural":"parties"},"document":{"singular":"waiver","plural":"waivers"},"host":{"singular":"guide","plural":"guides"},"space":{"singular":"studio","plural":"studios"},"partySize":"Party size","checkIn":"Check-in"},"contentDefaults":{"tagline":"candle bar & kitten rescue","heroHeadline":"Create. Relax. Play.","heroSubheadline":"Pour custom candles and play with adorable foster kittens — the most unique experience in Charlotte.","aboutHeadline":"A candle bar like no other","aboutBody":"At Wicks & Whiskers, we believe the best experiences combine creativity with cuddles. Pour a candle that smells like your happiest memory, then spend time with rescue kittens looking for their forever home.\n\nEvery kitten visit supports our partnership with Killer Kitties Rescue — a non-profit dedicated to giving kittens a loving home-like setting instead of waiting in a cage. With dozens of successful adoptions and counting, your visit makes a real difference.","experienceSteps":[{"title":"Book Online","description":"Pick your date, choose your experience, select your party size. Takes about 2 minutes.","color":"kandle"},{"title":"Show Up & Create","description":"Arrive at the top of the hour. Blend fragrances and pour your candle with your personal chandler guide.","color":"kandle"},{"title":"Play with Kittens","description":"While your candle cools, spend time with adorable foster kittens in the Kitten Klubhouse. Maybe find your new best friend!","color":"kitten"},{"title":"Take It Home","description":"Explore Plaza Midwood while your candle sets. We'll text when it's ready to pick up!","color":"combo"}],"faqSections":[{"title":"Kandle Experience","color":"kandle","items":[{"q":"Do I need a reservation?","a":"Reservations are not required but we highly recommend them! There are a limited number of seats at our candle bar and walk-ins will be accepted if space is available."},{"q":"I need to sign a waiver?","a":"All kandle experience participants must sign a waiver, or have one signed by a legal guardian, prior to starting the activity. These can be completed online before you arrive at the shop. There are certain inherent risks associated with candle making, such as handling hot wax, and we want our chandlers to be fully informed."},{"q":"What should I wear?","a":"Be comfortable! But not <em>too</em> comfortable! We will have aprons available but suggest you leave the designer duds at home, just in case."},{"q":"Is there an age minimum?","a":"Pouring your own candle means you will be handling hot wax, glass containers and fragrance oils so participants must be at least 7 years old. All chandlers under the age of 18 must be accompanied by an adult at all times."},{"q":"What does the $40 fee cover?","a":"$40 covers the entire process to create your own custom scented candle. This includes your choice of vessel, up to 3 fragrances you blend yourself at the candle bar, and a lid. Wax and wick are included too."},{"q":"How long does a kandle experience last?","a":"Your spot at the candle bar is reserved for 1 hour. Once you have selected and blended your fragrance, the candle pouring process takes about 25 to 30 minutes. Once poured, your candle will need time to cool."},{"q":"How many fragrances can I blend together?","a":"You may choose up to three fragrance oils to create your signature scented candle. We have taken some of the guesswork out by providing suggested scent pairings, but feel free to experiment!"},{"q":"What is your cancellation policy?","a":"We offer guests full refunds for cancellations made up to 24 hours (1 day) prior to their experience. For same-day or next-day cancellations, refunds will not be issued."},{"q":"When can I take my candle home?","a":"Once poured, your candle will need 2 to 3 hours to cool before it is ready to take home. We will text you when your candle is ready."},{"q":"What are the candles made from?","a":"All wicks & whiskers fragrance oils are 100% phthalate-free. We use all-natural Golden Brands 464 wax produced from US-grown soybeans with soy-based additives."},{"q":"I'm allergic to cats. Can I still do a kandle experience?","a":"Yes! While our candle bar and kitten klubhouse are in the same space, they are completely closed off from each other and have separate filtration systems."}]},{"title":"Kitten Klubhouse","color":"kitten","items":[{"q":"Do I need a reservation?","a":"Reservations are not required but we highly recommend them! Space is limited in the kitten klubhouse and walk-ins will be accepted if space is available."},{"q":"I need to sign a waiver?","a":"All kitten experience participants must sign a waiver, or have one signed by a legal guardian, prior to starting the activity."},{"q":"Is there an age minimum?","a":"Participants in the kitten experience must be at least 7 years old. Visitors under the age of 18 must be accompanied by an adult at all times."},{"q":"What does the $15 fee cover?","a":"$15 covers a 50-minute visit in the kitten klubhouse to play with our fosters. Your fee helps us with the upkeep of the kitten klubhouse and purchase kitten essentials like food and litter."},{"q":"Yep, a kitten has stolen my heart. How do I adopt?","a":"All adoptions are handled by our partner Killer Kitties Rescue. Let the klubhouse kounselor know which kitten you would like to adopt and they will get you started."},{"q":"Where do the kittens come from?","a":"We have partnered with Killer Kitties Rescue of Stanly County to provide foster care for their rescues. All our kittens are healthy, spayed/neutered, and fully vaccinated."}]},{"title":"Allergies & Accessibility","color":"combo","items":[{"q":"I'm allergic to cats. Can I still come?","a":"Yes! Our candle bar and kitten klubhouse are completely closed off from each other and have separate filtration systems."},{"q":"Are there any fragrance allergy concerns?","a":"All our fragrance oils are 100% phthalate-free. If you have severe fragrance sensitivities, please let us know when you arrive."},{"q":"Is the space wheelchair accessible?","a":"Yes, our location is ADA accessible with ground-level entry and accessible restrooms."}]},{"title":"Visiting & Parking","color":"private","items":[{"q":"Where are you located?","a":"1800 Central Ave, Ste A2, Charlotte, NC 28205 — in the heart of Plaza Midwood, one of Charlotte's most walkable neighborhoods."},{"q":"Is there parking?","a":"Yes! The lot at 1800 Central Ave is a paid lot, but we validate parking for up to 3 hours. Important: do NOT use the Harris Teeter lot — they will tow."},{"q":"What are your hours?","a":"Tuesday–Thursday: 11am–8pm, Friday–Saturday: 11am–9pm, Sunday: 11am–8pm. Closed Mondays."}]},{"title":"Gift Cards & Private Events","color":"private","items":[{"q":"Do you sell gift cards?","a":"Yes! Digital gift cards are available in any amount and delivered instantly via email. Physical gift cards ($10–$100) are available in-store. Gift cards never expire."},{"q":"Can I host a private event?","a":"Absolutely! A kitten & kandle experience is a great way to celebrate birthdays, bachelorette parties, company outings, and more. Email us at contact@wicksandwhiskers.com for availability."}]}]},"seedData":{"seed":true,"demo":true}}},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"music-collection","type":"soulcraft","role":"primary","status":"released","name":"Music Collection Manager","description":"Organize and explore your music library with albums, artists, playlists, and listening journal","longDescription":"A comprehensive system for music lovers to catalog their collection, track listening habits, create smart playlists based on moods and genres, and discover connections between artists. Perfect for vinyl collectors, streaming curators, or anyone who wants to engage more deeply with their music.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🎵","tags":["music","collection","vinyl","playlists","listening","curation"],"variables":[{"key":"projectName","label":"Collection Name","description":"The name of your music collection","type":"string","required":true,"example":"My Music Collection"},{"key":"ownerName","label":"Your Name","description":"Your name as the collector","type":"string","required":false,"example":"Your Name"},{"key":"primaryFormat","label":"Primary Format","description":"Your main way of listening","type":"string","required":false,"example":"Vinyl, Digital, CD, Streaming"}],"shared":{"industry":"creative-arts","category":"creative","glossary":{"vinyl":"A physical record format prized for its warm, analog sound","curation":"The art of selecting and organizing music into meaningful collections"},"aiExpertise":["Music history and artist knowledge","Genre classification and connections","Album and artist recommendations","Playlist curation by mood and context","Music metadata and discography"],"dataModelHints":["person","thing","topic","event"],"dataModel":{"entities":[{"domain":"artist","type":"Person","description":"A musician or band whose work is in the collection","products":{"workshop":{"view":"gallery","icon":"🎸"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"album","type":"Thing","description":"A music album or release with track listing and rating","products":{"workshop":{"view":"gallery","icon":"💿"},"academy":{"mapsTo":"resource","assessable":false},"venue":{"mapsTo":"InventoryItemMeta","pos":true}}},{"domain":"track","type":"Thing","description":"An individual song or track within an album","products":{"workshop":{"view":"gallery","icon":"🎵"},"academy":{"mapsTo":"resource","assessable":false},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"playlist","type":"Concept","description":"A curated collection of tracks grouped by mood or theme","products":{"workshop":{"view":"board","icon":"📋"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"genre","type":"Concept","description":"A music genre or style category","products":{"workshop":{"view":"graph","icon":"🎼"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}}],"relationships":[{"from":"album","to":"artist","verb":"CreatedBy","description":"Album was created by this artist"},{"from":"artist","to":"artist","verb":"InfluencedBy","description":"Musical influence relationship"},{"from":"artist","to":"artist","verb":"CollaboratedWith","description":"Artists who have worked together"},{"from":"album","to":"genre","verb":"HasGenre","description":"Album belongs to this genre"},{"from":"track","to":"playlist","verb":"InPlaylist","description":"Track appears in this playlist"}]},"suggestions":[{"label":"Add an album","prompt":"Help me add a new album to my music collection"},{"label":"Rate and review","prompt":"Help me write a review and rating for an album"},{"label":"Discover connections","prompt":"Find connections between artists and genres in my collection"},{"label":"Create a playlist","prompt":"Help me curate a playlist from my collection"},{"label":"Collection stats","prompt":"Show me statistics about my music collection by genre and decade"},{"label":"Browse collection","prompt":"Show me my music collection in the gallery view"}]},"academy":{"skillPath":"music-curation","level":"beginner","learningObjectives":["Catalog albums with complete metadata (artist, year, genre, format, personal rating)","Identify and document influence relationships between artists across genres and eras","Build thematic playlists by selecting tracks that share mood, key, or narrative arc","Write a substantive album review that articulates why a record is significant"],"assessmentTypes":["portfolio"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"exploratory","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"music-curator"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"beginner","templateTier":4,"aiPersona":{"role":"You are an expert music curator and historian helping music lovers catalog their collections, discover connections between artists, and deepen their appreciation of music.","expertise":["Music history and genre knowledge","Artist biography and discography","Album curation and recommendation","Playlist design by mood and context","Music metadata and cataloging"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"creative","defaultTab":"explore","defaultView":"gallery","defaultFile":"albums/first-album.md","layout":{"leftDock":"concepts","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["gallery","graph"],"suggestedActions":["Add albums to your collection","Use Gallery view to browse album art","Explore artist connections in Graph view","Build playlists by linking tracks"]}},"graphGuidance":{"conceptCreation":{"triggers":["User adds a new album to their collection","User mentions a new artist","User creates a new playlist","User references a genre not yet in the system"],"typeMapping":{"artist":"person","album":"creative-work","track":"creative-work","playlist":"collection","genre":"category","mood":"category","label":"organization","era":"category"}},"relationshipPatterns":[{"from":"creative-work","to":"person","verb":"createdBy","description":"Album by artist"},{"from":"person","to":"person","verb":"influencedBy","description":"Musical influence"},{"from":"person","to":"person","verb":"collaboratedWith","description":"Worked together"},{"from":"creative-work","to":"category","verb":"hasGenre","description":"Album genre"},{"from":"creative-work","to":"collection","verb":"inPlaylist","description":"Track in playlist"}],"rules":["Every album should link to its artist","Artists should have at least one genre","Influential relationships should be bidirectional when known","Playlists should link to their tracks or albums"]},"qualityGates":{"fileChecks":[{"path":"artists/*.md","required":["Genres","Key Albums"],"optional":["Influences","Personal Notes","Rating"]},{"path":"albums/*.md","required":["Artist","Year","Track Listing"],"optional":["My Review","Rating","When to Listen"]}],"projectChecks":["At least 5 artists documented","At least 10 albums in collection","At least one playlist created","Listening journal has entries"],"exportReady":["All albums linked to artists","Genres assigned to artists","Collection stats updated"]},"sampleData":{"description":"Sample music collection with albums, artists, and playlists","entities":[{"type":"media","name":"OK Computer","properties":{"artist":"Radiohead","year":1997,"format":"Vinyl LP","rating":10,"description":"Groundbreaking alternative rock album exploring technology and alienation.","status":"owned"}},{"type":"person","name":"Radiohead","properties":{"genre":"Alternative Rock","activeYears":"1985-present","origin":"Oxford, UK","description":"Influential British band known for experimental rock and electronic music."}}],"relationships":[{"from":"OK Computer","verb":"createdBy","to":"Radiohead"}]},"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"512Mi"},"oneClickCommand":"gcloud run deploy"}},"venue":{"bookingNumberPrefix":"MC","subdomainPrefix":"musicstore","features":{"blog":true,"cms":true,"customerAccounts":true,"subscriptions":true,"website":true,"notifications":true,"analytics":true,"giftCards":true,"pos":true,"loyalty":true,"waivers":false,"animals":false,"adoption":false,"memories":true,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.35 0.12 290)","bgBase":"oklch(0.10 0.04 290)","accent":"oklch(0.65 0.18 50)","textPrimary":"oklch(0.95 0.01 290)","displayFont":"Space Grotesk","bodyFont":"Inter"},"experienceTypes":[{"slug":"vinyl-listening-session","name":"Vinyl Listening Session","description":"Reserve a private listening booth for 60 minutes. Browse our curated vinyl selection, spin whatever calls to you, and enjoy the warm analogue sound.","priceInCents":2000,"durationMinutes":60,"minGuests":1,"maxGuests":4,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.48 0.14 290)","sessionAttributeDefinitions":[{"key":"genrePreference","label":"Genre Preference","type":"select","perGuest":false,"options":["Jazz","Soul/R&B","Rock","Electronic","Hip-Hop","Classical","Surprise me"],"required":false}]},{"slug":"music-discovery-consultation","name":"Music Discovery Consultation","description":"A 45-minute session with our resident music curator. Tell us what you love, what you've never heard, and walk away with a personalised listening roadmap.","priceInCents":8000,"durationMinutes":45,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.58 0.16 50)","sessionAttributeDefinitions":[{"key":"favoriteArtists","label":"Favourite Artists","type":"text","perGuest":false,"required":false},{"key":"explorationGoal","label":"Exploration Goal","type":"select","perGuest":false,"options":["Discover new genres","Dig deeper into one genre","Find obscure gems","Build my vinyl collection","Create the perfect playlist"],"required":false}]}],"inventoryCategories":[{"id":"vinyl","label":"Vinyl Records","icon":"💿"},{"id":"cd","label":"CDs","icon":"📀"},{"id":"merch","label":"Band Merch","icon":"👕"},{"id":"accessories","label":"Accessories","icon":"🎧"},{"id":"equipment","label":"Turntables & Equipment","icon":"🎚️"}],"staffRoles":[{"id":"music-curator","label":"Music Curator","defaultCapabilities":["checkin","pos","inventory-view","cms","analytics"]},{"id":"floor-staff","label":"Floor Staff","defaultCapabilities":["checkin","pos","inventory-view"]}],"chatSuggestions":[{"label":"Browse the collection","message":"What genres and artists do you stock? I'm looking for something specific.","emoji":"🎵"},{"label":"Book a listening session","message":"I'd love to book a private vinyl listening session. What's available?","emoji":"🎶"},{"label":"Get music recommendations","message":"I want to expand my listening. Can I book a music discovery consultation?","emoji":"🔍"},{"label":"Subscribe for new arrivals","message":"How do I get notified when new records arrive?","emoji":"📬"}],"inventoryLevelDetection":"manual"},"previewImageUrl":"kits/music-collection/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"match-3-puzzle","type":"soulcraft","role":"primary","status":"released","name":"Match 3 Puzzle","description":"Colorful gem-matching puzzle with cascading combos and power-ups","longDescription":"A polished match-3 puzzle game with smooth animations and satisfying cascades.\n\n**Features:**\n- PixiJS WebGL rendering for 60fps animations\n- Cascading chain reactions\n- Special gems (bombs, row clearers, rainbow)\n- Timed and moves-limited modes\n- High score leaderboard\n- Level progression\n\n**Gameplay:**\n- Swap adjacent gems to make 3+ matches\n- Create special gems with 4+ matches\n- Chain cascades for bonus points\n- Beat the target score to advance\n\n**Controls:**\n- Click a gem, then click an adjacent gem to swap\n- Or drag to swap","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"💎","tags":["game","puzzle","match-3","casual","pixi","webgl","brainy","sveltekit"],"variables":[{"key":"appName","label":"App Name","description":"The slug name for the application","type":"string","required":true,"example":"gem-puzzle"},{"key":"description","label":"Description","description":"A short description of the game","type":"string","required":false,"example":"A colorful gem-matching puzzle game"}],"shared":{"industry":"games-entertainment","category":"games","glossary":{"cascade":"A chain reaction where falling gems create additional matches","special gem":"A gem with unique powers created by matching 4+ gems"},"aiExpertise":["Match-3 puzzle game mechanics","Game balance and progression design","PixiJS and WebGL rendering","SvelteKit game development","Score system and leaderboard design"],"dataModelHints":["event","thing","topic"],"dataModel":{"entities":[{"domain":"score","type":"Measurement","description":"A player's score for a completed game session","products":{"workshop":{"view":"stats","icon":"📊"},"academy":{"mapsTo":"assessment-criterion","assessable":false},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"level","type":"Event","description":"A game level with target score and board configuration","products":{"workshop":{"view":"timeline","icon":"🎮"},"academy":{"mapsTo":"practice-session","assessable":true},"venue":{"mapsTo":"BookingMeta","pos":false}}},{"domain":"achievement","type":"Concept","description":"A milestone or challenge unlocked through gameplay","products":{"workshop":{"view":"gallery","icon":"🏆"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}}],"relationships":[{"from":"score","to":"level","verb":"PartOf","description":"Score belongs to this game level session"}]},"suggestions":[{"label":"Play a game","prompt":"Run the Match 3 game so I can play"},{"label":"Explain mechanics","prompt":"Explain how the match-3 mechanics work - matching, cascades, special gems"},{"label":"Add a new gem type","prompt":"Help me add a new special gem type with a unique effect"},{"label":"High scores","prompt":"Show me the high score leaderboard"},{"label":"Customize board","prompt":"Help me customize the board size or gem colors"},{"label":"Debug an issue","prompt":"Help me debug an issue with the game"}]},"academy":{"skillPath":"web-development","level":"beginner","learningObjectives":["Use a WebGL canvas library (PixiJS) to render and animate 2D game objects at 60fps","Implement a grid-based data structure with swap, match detection, and cascade logic","Design a special-item system where 4+ matches produce power-ups with distinct behaviors","Persist game state and high scores to a backend and display a live leaderboard"],"assessmentTypes":["demo","code-review"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"web-game-developer"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are an expert game developer and designer helping build and extend a match-3 puzzle game with smooth animations and compelling progression.","expertise":["Match-3 game mechanics and design","PixiJS WebGL rendering","Game balance and level design","SvelteKit application development","Performance optimization for games"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"creative","defaultTab":"app","defaultView":"app","layout":{"leftDock":"files","rightDock":"inspector"},"onboarding":{"showGuide":true,"highlightFeatures":["app"],"suggestedActions":["Start playing to learn the mechanics","Try to create chain reactions","Beat the high score"]}},"graphGuidance":{"conceptCreation":{"typeMapping":{"score":"measurement","level":"event","achievement":"concept"}},"relationshipPatterns":[{"from":"measurement","to":"event","verb":"partOf","description":"Score belongs to game session"}]},"qualityGates":{"fileChecks":[{"path":"package.json","required":["svelte","@sveltejs/kit","pixi.js"]},{"path":"src/lib/game/Board.ts","required":["Board","swap","findMatches"]}],"projectChecks":["App starts with npm run dev","Board renders at 60fps","Gem swapping works smoothly","Matches cascade correctly"]},"templateMetadata":{"runnable":true,"runnableCommand":"npm run dev"}},"venue":{"bookingNumberPrefix":"M3","subdomainPrefix":"match3","features":{"customerAccounts":true,"apps":true,"subscriptions":true,"website":true,"analytics":true,"cms":false,"blog":false,"giftCards":false,"pos":false,"loyalty":true,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.48 0.22 295)","bgBase":"oklch(0.10 0.04 260)","accent":"oklch(0.72 0.20 55)","textPrimary":"oklch(0.96 0.01 260)","displayFont":"Fredoka","bodyFont":"Nunito"},"experienceTypes":[],"chatSuggestions":[{"label":"Play now","message":"How do I start playing? Is there a free tier?","emoji":"🎮"},{"label":"My high scores","message":"Show me my best scores and progress.","emoji":"🏆"},{"label":"Upgrade to premium","message":"What extra levels and features do I get with a premium subscription?","emoji":"⭐"},{"label":"Challenge a friend","message":"Can I compete against friends? How do I send a challenge?","emoji":"🤝"}]},"previewImageUrl":"kits/match-3-puzzle/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"marketing-site","type":"soulcraft","role":"primary","status":"released","name":"Marketing Website","description":"Multi-page static website - edit HTML/CSS directly, deploy anywhere","longDescription":"A clean, modern multi-page marketing website you can edit directly and deploy anywhere.\n\n**What's Included:**\n- Landing page with hero, features, testimonials, and CTA\n- About page with company story and team section\n- Contact page with form and contact info\n- Responsive CSS with easy-to-customize variables\n- Minimal JavaScript for interactivity\n\n**How to Use:**\n- Edit HTML files directly in the editor\n- Ask the AI to add sections, change colors, or create new pages\n- Export as ZIP and deploy to Netlify, Vercel, or any static host\n\n**No build step required** - just HTML, CSS, and JavaScript.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🌐","tags":["html","css","static","marketing","landing-page","no-build"],"variables":[{"key":"siteName","label":"Site Name","description":"The name of your website or product","type":"string","required":true,"example":"My Awesome Site"},{"key":"tagline","label":"Tagline","description":"Your site's hero tagline","type":"string","required":false,"example":"Build something amazing"},{"key":"primaryColor","label":"Primary Color","description":"The main brand color (hex code)","type":"string","required":false,"example":"#2563eb"}],"shared":{"industry":"software-development","category":"dev","glossary":{},"aiExpertise":["HTML and CSS web development","Responsive design principles","Conversion copywriting","Landing page optimization","Static site deployment"],"dataModelHints":["document","thing"],"dataModel":{"entities":[{"domain":"page","type":"Document","description":"An HTML page of the marketing site with copy and sections","products":{"workshop":{"view":"tree","icon":"🌐"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"section","type":"Concept","description":"A content section within a page such as hero, features, or CTA","products":{"workshop":{"view":"tree","icon":"📐"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"asset","type":"Thing","description":"A static file such as an image, icon, or CSS stylesheet","products":{"workshop":{"view":"gallery","icon":"🖼️"},"academy":{"mapsTo":"resource","assessable":false},"venue":{"mapsTo":"InventoryItemMeta","pos":false}}}],"relationships":[{"from":"page","to":"section","verb":"Contains","description":"Page contains this content section"},{"from":"page","to":"page","verb":"References","description":"Page links to another page in the site"},{"from":"page","to":"asset","verb":"Uses","description":"Page references this static asset"}]},"suggestions":[{"label":"Write landing copy","prompt":"Help me write compelling landing page copy"},{"label":"Plan site structure","prompt":"Help me plan the structure and pages of my marketing site"},{"label":"Create a CTA","prompt":"Help me craft effective call-to-action text and placement"},{"label":"Write testimonials","prompt":"Help me structure and write customer testimonial sections"},{"label":"SEO optimization","prompt":"Help me optimize my marketing site content for SEO"},{"label":"Review site content","prompt":"Show me all my marketing site pages and their status"}]},"academy":{"skillPath":"web-development","level":"intermediate","learningObjectives":["Structure a multi-page site with semantic HTML and a clear navigation hierarchy","Write conversion-focused landing page copy with a compelling hero, benefits, and CTA","Apply responsive CSS using custom properties and media queries for mobile-first layouts","Deploy a static site to a public host and verify it loads correctly across devices"],"assessmentTypes":["demo","code-review"],"mode":"certification","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"neutral","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":true,"certificationSlug":"web-builder"},"gamification":{"enabled":true,"achievements":["deep-thinker","completionist","chain-maker"],"streaks":false,"leaderboard":true}},"workshop":{"difficulty":"beginner","templateTier":4,"aiPersona":{"role":"You are an expert web designer and copywriter helping creators build beautiful, conversion-focused marketing websites with clean HTML and CSS.","expertise":["HTML and CSS web development","Responsive design and mobile-first development","Conversion copywriting","Landing page optimization","Static site deployment"],"tone":"collaborator"},"qualityGates":{"fileChecks":[{"path":"index.html","required":["<!DOCTYPE html>","<meta name=\"viewport\"","<link rel=\"stylesheet\""],"optional":["<script"]},{"path":"styles.css","required":[":root","@media"],"optional":[]}],"projectChecks":["All pages have consistent header/footer","Site is responsive on mobile","All images have alt text","Forms have proper labels"],"exportReady":["No broken links","Valid HTML structure","CSS loads correctly"]},"templateMetadata":{"identifyByStructure":true,"runnable":true,"runnableCommand":"npm run dev"},"publishConfig":{"contentType":"app","publishable":true,"appEntry":"src/App.svelte"}},"venue":{"bookingNumberPrefix":"MS","subdomainPrefix":"mktgsite","features":{"blog":true,"cms":true,"customerAccounts":true,"apps":true,"documents":true,"website":true,"subscriptions":true,"support":true,"notifications":true,"analytics":true,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.45 0.20 255)","bgBase":"oklch(0.99 0.005 255)","accent":"oklch(0.62 0.16 175)","textPrimary":"oklch(0.20 0.03 255)","displayFont":"Plus Jakarta Sans","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Launch my site","message":"I want to publish my marketing site. What do I need to do?","emoji":"🚀"},{"label":"Improve my SEO","message":"How do I optimise my site for search engines?","emoji":"🔍"},{"label":"Manage subscription","message":"I'd like to manage my account and subscription.","emoji":"💳"},{"label":"Connect a domain","message":"How do I connect my custom domain to my site?","emoji":"🌐"}]},"previewImageUrl":"kits/marketing-site/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"api-documentation","type":"soulcraft","role":"primary","status":"released","name":"API Documentation","description":"Complete API reference with endpoints, authentication, and examples","longDescription":"Professional API documentation structure with endpoint specifications, authentication guides, code examples, and error handling. Includes OpenAPI/Swagger export capabilities.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"⚡","tags":["api","documentation","development","technical"],"variables":[{"key":"projectName","label":"API Name","description":"The name of the API being documented","type":"string","required":true,"example":"Payment Processing API"},{"key":"version","label":"Version","description":"API version number","type":"string","required":false,"example":"v1.0"},{"key":"baseUrl","label":"Base URL","description":"The root URL for all API endpoints","type":"string","required":false,"example":"https://api.example.com"}],"shared":{"industry":"software-development","category":"dev","glossary":{},"aiExpertise":["API documentation best practices","OpenAPI/Swagger specification","REST endpoint design","Authentication flows","Developer experience"],"dataModelHints":["document","thing","topic"],"dataModel":{"entities":[{"domain":"endpoint","type":"Concept","description":"An API endpoint with HTTP method, path, and contract","products":{"workshop":{"view":"tree","icon":"⚡"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"resource","type":"Concept","description":"A domain object or data resource operated on by endpoints","products":{"workshop":{"view":"graph","icon":"🗂️"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"errorCode","type":"Concept","description":"An error code with meaning, cause, and resolution","products":{"workshop":{"view":"gallery","icon":"⚠️"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"parameter","type":"Concept","description":"A request or response field with type and constraints","products":{"workshop":{"view":"tree","icon":"🔧"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}}],"relationships":[{"from":"endpoint","to":"resource","verb":"References","description":"Endpoint operates on this resource"},{"from":"endpoint","to":"errorCode","verb":"Returns","description":"Endpoint can return this error code"},{"from":"resource","to":"parameter","verb":"Contains","description":"Resource has this field or parameter"},{"from":"endpoint","to":"endpoint","verb":"RelatedTo","description":"Related endpoints within the same resource group"}]},"suggestions":[{"label":"Add an endpoint","prompt":"Help me document a new API endpoint"},{"label":"Generate examples","prompt":"Generate request and response examples for my API endpoints"},{"label":"Write authentication docs","prompt":"Help me write the authentication section of my API documentation"},{"label":"Create error reference","prompt":"Help me create a comprehensive error code reference"},{"label":"Review consistency","prompt":"Review my API documentation for consistency in naming and formatting"},{"label":"Explore API structure","prompt":"Show me the structure of my API documentation and what's complete"}]},"academy":{"skillPath":"technical-writing","level":"intermediate","learningObjectives":["Write endpoint specifications that developers can implement without asking follow-up questions","Structure authentication documentation covering all supported flows with code examples","Design an error taxonomy with machine-readable codes and actionable resolution guidance","Apply OpenAPI/Swagger conventions to produce spec-compliant reference documentation","Review and edit API docs for consistency in naming, tone, and formatting"],"assessmentTypes":["portfolio","peer-review"],"mode":"certification","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"neutral","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":true,"certificationSlug":"api-documenter"},"gamification":{"enabled":true,"achievements":["deep-thinker","completionist","chain-maker"],"streaks":false,"leaderboard":true}},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are an expert API documentation specialist helping developers create clear, complete, and consistent reference documentation.","expertise":["API documentation best practices","OpenAPI/Swagger specification","Endpoint design and naming","Authentication documentation","Error handling documentation"],"tone":"mentor"},"workspaceConfig":{"paradigm":"analyst","defaultTab":"edit","defaultView":"tree","defaultFile":"README.md","layout":{"leftDock":"files","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["graph","export"],"suggestedActions":["Define your API resources","Document endpoints for each resource","Add code examples in multiple languages","Use Tree view to see endpoint hierarchy"]}},"graphGuidance":{"conceptCreation":{"triggers":["When user creates an endpoint","When user defines a resource","When user specifies an error code","When user documents authentication"],"typeMapping":{"endpoint":"interface","resource":"concept","errorCode":"concept","parameter":"concept"}},"relationshipPatterns":[{"from":"interface","to":"concept","verb":"references","description":"Endpoint uses resource"},{"from":"interface","to":"concept","verb":"returns","description":"Endpoint returns error"},{"from":"concept","to":"concept","verb":"contains","description":"Resource contains field"},{"from":"interface","to":"interface","verb":"relatedTo","description":"Related endpoints"}],"rules":["Create interface entities for endpoints","Document resources and their fields","Track error codes per endpoint","Note authentication requirements"]},"qualityGates":{"fileChecks":[{"path":"README.md","required":["Base URL","Authentication","Quick Start"],"optional":["SDK","Rate Limits"]},{"path":"authentication.md","required":["Authorization","API Key"],"optional":["OAuth","Scopes","Security"]},{"path":"errors.md","required":["Error Response Format","Status Codes"],"optional":["Error Codes","Troubleshooting"]}],"projectChecks":["At least one resource with CRUD endpoints documented","Authentication section is complete with examples","Error handling documentation exists","All endpoints have request/response examples","Rate limiting is documented"],"exportReady":["All endpoints have complete documentation","Code examples exist for primary language(s)","Authentication flows are fully documented","All status codes and errors are documented","Examples use consistent, realistic data"]},"templateMetadata":{"identifyByStructure":true},"exporters":[{"id":"markdown-docs","name":"Documentation Bundle","description":"Complete API documentation as ZIP","icon":"📚","format":"zip","category":"document","handler":"markdown-bundle","options":{"includeFiles":["**/*.md"],"preserveStructure":true,"addReadme":true}}]},"venue":{"bookingNumberPrefix":"AD","subdomainPrefix":"apidocs","features":{"blog":true,"cms":true,"customerAccounts":true,"apps":true,"documents":true,"website":true,"subscriptions":true,"support":true,"notifications":true,"analytics":true,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.35 0.14 240)","bgBase":"oklch(0.10 0.03 240)","accent":"oklch(0.62 0.20 175)","textPrimary":"oklch(0.92 0.02 240)","displayFont":"JetBrains Mono","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Browse the API","message":"Show me all available API endpoints and how to get started.","emoji":"🔌"},{"label":"Authentication help","message":"How do I authenticate with the API? What auth methods are supported?","emoji":"🔐"},{"label":"I found an issue","message":"I think there's an error in the documentation or the API is behaving unexpectedly.","emoji":"🐛"},{"label":"Get API access","message":"I want to access the API. How do I get credentials?","emoji":"🗝️"}]},"previewImageUrl":"kits/api-documentation/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"web-application","type":"soulcraft","role":"primary","status":"released","name":"Web Application","description":"Clean SvelteKit + Brainy starting point for any web app","longDescription":"A minimal, clean SvelteKit + Brainy application template that serves as the reference implementation for all app templates. Includes modern SvelteKit 2 with Svelte 5 runes, TypeScript, a pre-configured Brainy client, and Workshop-integrated theming.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🌐","tags":["sveltekit","brainy","typescript","web-app","starter","reference"],"variables":[{"key":"appName","label":"App Name","description":"The name of your web application","type":"string","required":true,"example":"my-app"},{"key":"description","label":"Description","description":"A short description of your application","type":"string","required":false,"example":"A knowledge-powered web application","default":"A web application built with SvelteKit and Brainy"}],"shared":{"industry":"software-development","category":"development","aiExpertise":["SvelteKit application architecture","Brainy data modeling and querying","TypeScript and Svelte 5 runes","Server-side rendering patterns","Workshop app integration"],"dataModelHints":["system","concept"],"dataModel":{"entities":[{"domain":"component","type":"Concept","description":"A reusable Svelte component in the application","products":{"workshop":{"view":"tree","icon":"🧩"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"route","type":"Concept","description":"A SvelteKit page or API route","products":{"workshop":{"view":"tree","icon":"🔗"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"type","type":"Concept","description":"A TypeScript type or interface defining data shape","products":{"workshop":{"view":"graph","icon":"📐"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}}],"relationships":[{"from":"component","to":"component","verb":"Imports","description":"Component imports and uses another component"},{"from":"route","to":"component","verb":"Renders","description":"Route renders this component"}]},"suggestions":[{"label":"Add a route","prompt":"Help me create a new SvelteKit route with a page component"},{"label":"Create a component","prompt":"Help me create a reusable Svelte component"},{"label":"Add Brainy query","prompt":"Help me add a Brainy query to fetch and display data"},{"label":"Add a form","prompt":"Help me create a form that saves data to Brainy"},{"label":"Run the app","prompt":"Run my app and show me the preview"},{"label":"Debug an issue","prompt":"Help me debug an issue with my app"}]},"academy":{"skillPath":"web-development","level":"intermediate","learningObjectives":["Set up a SvelteKit application with server-side rendering, TypeScript strict mode, and Brainy data access","Model application data as typed Brainy entities and write queries with filtering and relationship traversal","Build form actions with server-side validation and optimistic UI feedback","Implement authentication and protect server routes against unauthenticated access","Deploy the application to a cloud provider and verify production behaviour"],"assessmentTypes":["demo","code-review"],"mode":"certification","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"neutral","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":true,"certificationSlug":"web-developer"},"gamification":{"enabled":true,"achievements":["deep-thinker","completionist","chain-maker"],"streaks":false,"leaderboard":true}},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are a senior SvelteKit and Brainy developer helping users build clean, well-structured web applications using modern patterns and best practices.","expertise":["SvelteKit routing and layouts","Svelte 5 runes and reactivity","Brainy data modeling","TypeScript strict mode","Workshop app architecture"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"builder","defaultView":"app"},"graphGuidance":{"conceptCreation":{"triggers":["User creates a new component","User adds a new route","User defines a new data type"],"typeMapping":{"component":"system","route":"system","type":"concept"}},"relationshipPatterns":[{"from":"system","to":"system","verb":"imports","description":"Component imports another"},{"from":"system","to":"system","verb":"renders","description":"Route renders component"}],"rules":["Track component dependencies","Map routes to their components"]},"qualityGates":{"fileChecks":[{"path":"package.json","required":["svelte","@sveltejs/kit"]},{"path":"src/lib/brainy.ts","required":["BrainyClient","export"]}],"projectChecks":["App starts with npm run dev","Dashboard loads without errors","Brainy client initializes correctly"],"exportReady":["No TypeScript errors","All routes load correctly"]},"templateMetadata":{"identifyByStructure":true,"runnable":true,"runnableCommand":"npm run dev"},"publishConfig":{"contentType":"app","publishable":true,"appEntry":"src/App.svelte"},"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"512Mi"},"oneClickCommand":"gcloud run deploy"}},"venue":{"bookingNumberPrefix":"WA","subdomainPrefix":"webapp","features":{"blog":true,"cms":true,"customerAccounts":true,"apps":true,"documents":true,"website":true,"subscriptions":true,"support":true,"notifications":true,"analytics":true,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.45 0.20 255)","bgBase":"oklch(0.99 0.005 255)","accent":"oklch(0.62 0.16 175)","textPrimary":"oklch(0.20 0.03 255)","displayFont":"Plus Jakarta Sans","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Start a free trial","message":"I'd like to try the app. How do I get started?","emoji":"🚀"},{"label":"Pricing plans","message":"What pricing plans are available? What's included in each?","emoji":"💳"},{"label":"I need help","message":"I'm stuck on something. Can you help me?","emoji":"🆘"},{"label":"Upgrade my plan","message":"I want to upgrade to a higher tier. What are my options?","emoji":"⬆️"}]},"previewImageUrl":"kits/web-application/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"membership-community","type":"soulcraft","role":"primary","status":"released","name":"Membership Community","description":"Paid membership community platform for creators and entrepreneurs with discussions, events, and resources","longDescription":"A complete membership community platform for creators and entrepreneurs building paid communities. Includes threaded discussions with categories, live and virtual events powered by Hall video rooms, shared resources gated by membership tier, and a member directory. Designed for knowledge creators, coaches, and community builders who want to foster meaningful connections.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"👥","tags":["community","membership","creator","subscribers","forum","discussions"],"previewImageUrl":"kits/membership-community/images/preview.webp","variables":[{"key":"businessName","label":"Community Name","description":"The name of your membership community (e.g. \"The Creator Circle\")","type":"string","required":true,"example":"The Creator Circle","default":"The Creator Circle"},{"key":"tagline","label":"Tagline","description":"A short phrase shown under the community name (e.g. \"grow together.\")","type":"string","required":false,"example":"grow together.","default":"grow together."},{"key":"locationName","label":"Location Name","description":"The display name for this community hub (e.g. \"The Creator Circle HQ\")","type":"string","required":true,"example":"The Creator Circle HQ"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this community used in links (e.g. \"creator-circle\")","type":"string","required":true,"example":"creator-circle"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"hello@creatorcircle.com"},{"key":"timezone","label":"Timezone","description":"IANA timezone for event scheduling","type":"timezone","required":true,"example":"America/New_York","default":"America/New_York"}],"shared":{"industry":"creator-economy","category":"community","glossary":{"thread":"A discussion post in the community forum, which can receive replies from other members","membership tier":"A subscription level that determines which resources and events a member can access","resource":"A shared file, link, video, or document available to community members, optionally gated by tier","community event":"A scheduled gathering — live video session, workshop, AMA, or meetup — hosted for members","moderator":"A trusted member with the ability to pin threads, manage discussions, and assist with community management","pinned thread":"A discussion marked as important by a moderator or admin, displayed at the top of the feed"},"aiExpertise":["membership community management and engagement","discussion moderation and content strategy","live event planning and facilitation","resource curation and tier-based access control","member onboarding and retention"],"dataModelHints":["member","thread","event","resource","membership_tier","content_page","blog_post"],"dataModel":{"entities":[{"domain":"member","type":"Person","description":"A community member with a bio, membership tier, and role (member, moderator, or admin).","products":{"workshop":{"view":"gallery","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"thread","type":"Document","description":"A discussion post in the community forum with content, reply count, category, and optional pinned status.","products":{"workshop":{"view":"board","icon":"💬"},"venue":{"mapsTo":"ContentPageMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}},{"domain":"event","type":"Event","description":"A scheduled community event — live video session, workshop, AMA, or meetup — with capacity and optional Hall room.","products":{"workshop":{"view":"timeline","icon":"📅"},"venue":{"mapsTo":"BookingMeta","pos":true},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"resource","type":"Document","description":"A shared file, link, video, or downloadable document available to members, optionally gated by membership tier.","products":{"workshop":{"view":"gallery","icon":"📚"},"venue":{"mapsTo":"ContentPageMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}},{"domain":"membership_tier","type":"Product","description":"A subscription tier defining access level, pricing, and included resources (e.g. Free, Pro, VIP).","products":{"workshop":{"view":"board","icon":"🌟"},"venue":{"mapsTo":"ExperienceMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":false}}},{"domain":"content_page","type":"Document","description":"A CMS-managed page such as About, Community Guidelines, FAQ, or Welcome.","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 community highlights, creator tips, or event recaps.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"member","to":"thread","verb":"Creates","description":"Member starts a discussion thread in the community forum."},{"from":"member","to":"event","verb":"ParticipatesIn","description":"Member registers for or attends a community event."},{"from":"thread","to":"thread","verb":"References","description":"A reply thread references its parent discussion thread."},{"from":"membership_tier","to":"resource","verb":"Contains","description":"A membership tier includes access to specific gated resources."},{"from":"member","to":"membership_tier","verb":"MemberOf","description":"Member subscribes to a specific membership tier."},{"from":"member","to":"resource","verb":"Creates","description":"Member shares a resource with the community."}]},"suggestions":[{"label":"Start a discussion","prompt":"Create a new discussion thread to welcome new members and encourage introductions"},{"label":"Create an event","prompt":"Schedule a live community event for next week — a Q&A session or workshop for members"},{"label":"Share a resource","prompt":"Add a new resource to the community library — a guide, template, or useful link for members"},{"label":"View member directory","prompt":"Show me all community members with their membership tier, role, and join date"},{"label":"Set up membership tiers","prompt":"Create membership tiers for the community — a free tier, a pro tier, and a VIP tier with different access levels"},{"label":"Community health check","prompt":"Give me an overview of community engagement — active discussions, upcoming events, and member growth"}]},"workshop":{"aiPersona":{"role":"You are the AI assistant for a membership community platform. You help creators and community builders manage discussions, plan events, curate resources, and grow their member base. You understand community dynamics — from onboarding new members to fostering engagement and managing tier-based access.","expertise":["membership community management and engagement strategy","discussion moderation and content curation","live event planning with Hall video rooms","resource organization and tier-based access control","member onboarding, retention, and community health metrics"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["discussion thread or forum post mentioned","community event or live session scheduled","resource or content shared with members","new member introduced or onboarded","membership tier or subscription plan referenced"],"typeMapping":{"discussion":"document","thread":"document","post":"document","reply":"document","community event":"event","live session":"event","workshop":"event","AMA":"event","meetup":"event","resource":"document","guide":"document","template":"document","member":"person","subscriber":"person","moderator":"person","admin":"person","membership tier":"product","subscription":"product","plan":"product"}},"relationshipPatterns":[{"from":"member","to":"thread","verb":"Creates","description":"Member starts a discussion in the community forum"},{"from":"member","to":"event","verb":"ParticipatesIn","description":"Member registers for or attends a community event"},{"from":"membership_tier","to":"resource","verb":"Contains","description":"Membership tier grants access to gated resources"}],"rules":["Threads should track reply count and support pinning for important announcements","Events with Hall rooms should have capacity limits matching the Hall configuration","Resources gated by tier should specify which membership level is required for access"]},"workspaceConfig":{"paradigm":"builder","defaultTab":"explore","defaultView":"app"},"publishConfig":{"contentType":"app","publishable":true,"appEntry":"src/App.svelte"},"qualityGates":{"projectChecks":["At least one membership tier is configured with pricing and access level","Community guidelines content page exists with clear moderation rules","Welcome thread is pinned in the discussions feed"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Discussions","view":"board","entityTypes":["thread"],"description":"Community forum threads organized by category with pinned posts at the top"},{"name":"Events Calendar","view":"timeline","entityTypes":["event"],"description":"Upcoming and past community events with registration counts and Hall room links"},{"name":"Resource Library","view":"gallery","entityTypes":["resource"],"description":"Shared resources organized by type and membership tier access level"},{"name":"Member Directory","view":"gallery","entityTypes":["member"],"description":"All community members with tier, role, and engagement activity"},{"name":"Membership Tiers","view":"board","entityTypes":["membership_tier"],"description":"Subscription tiers with pricing, features, and member counts"}]}},"academy":{"skillPath":"community-building","level":"intermediate","learningObjectives":["Designing membership tiers that provide clear value at each level","Moderating community discussions to maintain a welcoming and productive environment","Planning and hosting live events that drive member engagement and retention","Curating and organizing resources to maximize member value","Building onboarding flows that help new members integrate quickly"],"assessmentTypes":["hands-on"],"mode":"training","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":true,"aiCertifierAllowed":false,"lineageEnabled":true,"minimumLineageDepth":2,"certificationSlug":"community-builder"},"gamification":{"enabled":true,"achievements":["connector","streak","completionist"],"streaks":true,"leaderboard":false},"cohort":{"maxSize":15,"durationDays":30,"fixedStart":false}},"venue":{"bookingNumberPrefix":"MC","subdomainPrefix":"community","features":{"animals":false,"adoption":false,"memories":false,"loyalty":false,"giftCards":false,"waivers":false,"blog":true,"pos":false,"cms":true,"partners":false,"franchise":false,"customerAccounts":true,"booking":true,"inventory":false,"subscriptions":true,"support":true,"analytics":true,"website":true,"notifications":true,"documents":true,"apps":true,"hall":{"enabled":true,"maxParticipants":50}},"theme":{"primary":"oklch(0.52 0.14 30)","bgBase":"oklch(0.97 0.01 30)","accent":"oklch(0.62 0.16 280)","textPrimary":"oklch(0.20 0.03 30)","displayFont":"DM Sans","bodyFont":"Inter"},"experienceTypes":[{"slug":"community-event","name":"Community Event","description":"A live community gathering — workshop, AMA, guest speaker, or social hangout. Open to all members or gated by tier.","priceInCents":0,"durationMinutes":60,"minGuests":1,"maxGuests":50,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.58 0.12 30)","sessionAttributeDefinitions":[{"key":"eventType","label":"Event Type","type":"select","options":["workshop","ama","guest-speaker","social","onboarding"],"perGuest":false,"required":false},{"key":"membershipTier","label":"Required Tier","type":"select","options":["free","pro","vip","any"],"perGuest":false,"required":false},{"key":"hallRoomId","label":"Hall Room ID","type":"text","perGuest":false,"required":false}]},{"slug":"one-on-one-session","name":"1:1 Session","description":"A private one-on-one session with the community creator — coaching call, mentorship, or personalized feedback. Available to Pro and VIP members.","priceInCents":5000,"durationMinutes":30,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.55 0.14 280)","sessionAttributeDefinitions":[{"key":"sessionType","label":"Session Type","type":"select","options":["coaching","mentorship","feedback","strategy"],"perGuest":false,"required":false},{"key":"sessionNotes","label":"Session Notes","type":"text","perGuest":false,"required":false}]}],"chatSuggestions":[{"label":"Join the community","message":"I'd like to learn about your membership options and what's included in each tier.","emoji":"🌟"},{"label":"Upcoming events","message":"What community events are coming up? I'd love to join a live session.","emoji":"📅"},{"label":"Browse resources","message":"What resources, guides, and templates are available in the community library?","emoji":"📚"},{"label":"Upgrade my membership","message":"I'm currently a free member. What additional benefits do I get with a Pro or VIP membership?","emoji":"🚀"}],"fees":{"billingModel":"subscription","feeMode":"all-channels"}}},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"product-requirements-doc","type":"soulcraft","role":"primary","status":"released","name":"Product Requirements (PRD)","description":"Product requirements document with user stories, features, and success metrics","longDescription":"Professional PRD template for product managers. Includes problem definition, user stories, feature specifications, success metrics, and technical considerations. Structured for stakeholder review and engineering handoff.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"📊","tags":["product","requirements","pm","features"],"variables":[{"key":"projectName","label":"Product/Feature Name","description":"The name of the product or feature being specified","type":"string","required":true,"example":"User Dashboard Redesign"},{"key":"author","label":"Product Manager","description":"The PM owning this document","type":"string","required":false,"example":"Your Name"},{"key":"targetRelease","label":"Target Release","description":"Planned release quarter or date","type":"string","required":false,"example":"Q2 2025"}],"shared":{"industry":"software-development","category":"business","aiExpertise":["Product requirements writing","User story creation with acceptance criteria","MoSCoW prioritization","Success metrics definition","Stakeholder requirements gathering"],"dataModelHints":["task","project","concept","person"],"dataModel":{"entities":[{"domain":"story","type":"Event","description":"A user story with acceptance criteria describing desired behaviour","products":{"workshop":{"view":"board","icon":"📝"},"academy":{"mapsTo":"practice-session","assessable":true},"venue":{"mapsTo":"BookingMeta","pos":false}}},{"domain":"epic","type":"Concept","description":"A large feature area grouping related user stories","products":{"workshop":{"view":"graph","icon":"🗂️"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}},{"domain":"feature","type":"Concept","description":"A discrete product capability being specified","products":{"workshop":{"view":"board","icon":"✨"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"stakeholder","type":"Person","description":"A person with requirements or sign-off authority","products":{"workshop":{"view":"gallery","icon":"👤"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"metric","type":"Concept","description":"A success metric that defines when a feature is working","products":{"workshop":{"view":"stats","icon":"📊"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}}],"relationships":[{"from":"story","to":"epic","verb":"PartOf","description":"User story belongs to this epic"},{"from":"story","to":"feature","verb":"Implements","description":"Story implements this feature"},{"from":"story","to":"story","verb":"DependsOn","description":"Story dependency"},{"from":"stakeholder","to":"feature","verb":"Owns","description":"Stakeholder owns this feature area"}]},"suggestions":[{"label":"Write a user story","prompt":"Help me write a user story with acceptance criteria"},{"label":"Define requirements","prompt":"Help me define functional requirements for a feature"},{"label":"Prioritize features","prompt":"Help me prioritize my product requirements using MoSCoW method"},{"label":"Map dependencies","prompt":"Help me identify dependencies between my product requirements"},{"label":"Create wireframe notes","prompt":"Help me describe the UX flow for a feature"},{"label":"View requirements","prompt":"Show me all my requirements organized on the board view"}]},"academy":{"skillPath":"product-management","level":"intermediate","learningObjectives":["Write a problem statement that separates observed behaviour from assumed root cause","Author user stories in As/I want/So that format with testable acceptance criteria","Prioritise a backlog using MoSCoW and defend the priority decisions to stakeholders","Define success metrics that a data team could instrument and measure in production","Identify and document dependencies between features before engineering begins"],"assessmentTypes":["portfolio","peer-review"],"mode":"certification","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"neutral","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":true,"certificationSlug":"product-manager"},"gamification":{"enabled":true,"achievements":["deep-thinker","completionist","chain-maker"],"streaks":false,"leaderboard":true}},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are a senior product manager helping teams write clear, complete product requirements documents that align stakeholders and enable engineering teams to build the right thing.","expertise":["Product requirements writing","User story creation","Acceptance criteria definition","Feature prioritization","Stakeholder alignment"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"writer","defaultTab":"edit","defaultView":"tree","defaultFile":"prd/problem-statement.md","fallbackFiles":["README.md"],"layout":{"leftDock":"files","rightDock":"properties"},"onboarding":{"showGuide":true,"highlightFeatures":["tree","ai-chat"],"suggestedActions":["Start with the problem statement","Define user stories for each feature","Set success metrics and KPIs","Ask AI to help refine requirements"]}},"graphGuidance":{"conceptCreation":{"triggers":["When user creates a user story","When user defines a feature","When user identifies a stakeholder","When user sets a success metric"],"typeMapping":{"story":"task","epic":"project","feature":"concept","stakeholder":"person","metric":"concept"}},"relationshipPatterns":[{"from":"task","to":"project","verb":"partOf","description":"Story in epic"},{"from":"task","to":"concept","verb":"implements","description":"Story implements feature"},{"from":"task","to":"task","verb":"dependsOn","description":"Story dependency"},{"from":"person","to":"concept","verb":"owns","description":"Stakeholder owns feature"}],"rules":["Create task entities for user stories","Group stories into epics","Track dependencies between stories","Link stakeholders to their areas"]},"qualityGates":{"fileChecks":[{"path":"PRD.md","required":["Problem Statement","User Stories","Success Metrics","Non-Goals"],"optional":["Technical Considerations","Launch Plan","Open Questions"]},{"path":"user-stories/*.md","required":["As a","I want","So that","Acceptance Criteria"]}],"projectChecks":["At least one persona is defined with pain points","User stories have testable acceptance criteria","Success metrics are defined for key features","MVP scope is clearly defined","Dependencies are documented"],"exportReady":["All user stories have acceptance criteria","Prioritization is complete","Success metrics are measurable","Stakeholders section is complete","Open questions are resolved or have owners"]},"exporters":[{"id":"prd-package","name":"PRD Package","description":"Complete PRD with all supporting documents","icon":"📦","format":"zip","category":"document","handler":"markdown-bundle","options":{"includeFiles":["**/*.md"],"preserveStructure":true,"addReadme":true}}],"templateMetadata":{"identifyByStructure":true}},"venue":{"bookingNumberPrefix":"RD","subdomainPrefix":"prd","features":{"cms":true,"customerAccounts":true,"documents":true,"website":true,"notifications":true,"analytics":true,"blog":false,"giftCards":false,"pos":false,"subscriptions":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"per-transaction","feeMode":"online-only"},"theme":{"primary":"oklch(0.40 0.18 255)","bgBase":"oklch(0.99 0.005 255)","accent":"oklch(0.60 0.14 195)","textPrimary":"oklch(0.20 0.03 255)","displayFont":"Inter","bodyFont":"Inter"},"experienceTypes":[{"slug":"product-discovery","name":"Product Discovery Session","description":"A 2-hour structured workshop to translate business goals into user stories, acceptance criteria, and a prioritised MVP feature list. Outputs a complete initial PRD skeleton.","priceInCents":80000,"durationMinutes":120,"minGuests":2,"maxGuests":6,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.52 0.16 255)","sessionAttributeDefinitions":[{"key":"productStage","label":"Product Stage","type":"select","perGuest":false,"required":true,"options":["Pre-concept","Concept / discovery","Early MVP","Post-launch iteration"]},{"key":"teamSize","label":"Team Size","type":"select","perGuest":false,"required":false,"options":["Solo founder","2–5 people","6–15 people","15+ people"]}]},{"slug":"prd-review","name":"PRD Review","description":"A 60-minute review of an existing PRD or requirements document. Receive written feedback on completeness, clarity, and alignment with business objectives.","priceInCents":25000,"durationMinutes":60,"minGuests":1,"maxGuests":3,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.55 0.12 195)","sessionAttributeDefinitions":[{"key":"docLength","label":"Document Length","type":"select","perGuest":false,"required":false,"options":["< 5 pages","5–20 pages","20–50 pages","50+ pages"]}]}],"staffRoles":[{"id":"product-consultant","label":"Product Consultant","defaultCapabilities":["checkin","pos","cms","analytics","notifications"]},{"id":"pm-advisor","label":"PM Advisor","defaultCapabilities":["checkin","pos","cms"]}],"chatSuggestions":[{"label":"Run a discovery session","message":"I want to run a product discovery session with my team. What's involved?","emoji":"🔭"},{"label":"Review my PRD","message":"I have a PRD that needs a professional review. Can I book that?","emoji":"📋"},{"label":"Write user stories","message":"Help me write well-defined user stories with clear acceptance criteria.","emoji":"📝"},{"label":"Prioritise features","message":"I have too many feature ideas. Help me prioritise for our next sprint.","emoji":"🎯"}]},"previewImageUrl":"kits/product-requirements-doc/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"youtube-content-plan","type":"soulcraft","role":"primary","status":"released","name":"YouTube Channel Content Plan","description":"Content calendar, video scripts, and channel strategy for YouTube creators","longDescription":"Complete YouTube content planning system with video ideas, scripts, SEO optimization, thumbnail concepts, and analytics tracking. Plan your content calendar, organize videos into playlists, and track performance metrics all in one connected workspace.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🎥","tags":["youtube","video","content-creation","social-media"],"variables":[{"key":"projectName","label":"Channel/Series Name","description":"The name of your YouTube channel or series","type":"string","required":true,"example":"TechTips Weekly"},{"key":"author","label":"Creator","description":"Your name as the content creator","type":"string","required":false,"example":"Your Name"},{"key":"niche","label":"Channel Niche","description":"The primary topic or focus of your channel","type":"string","required":false,"example":"Web Development Tutorials"}],"shared":{"industry":"writing-publishing","category":"creative","aiExpertise":["YouTube content strategy","Video script writing","SEO title and description optimization","Thumbnail concept development","Channel growth strategy"],"dataModelHints":["document","collection","concept","person"],"dataModel":{"entities":[{"domain":"video","type":"Document","description":"A YouTube video with script, title, and SEO metadata","products":{"workshop":{"view":"board","icon":"🎥"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"series","type":"Concept","description":"A thematic series or playlist grouping related videos","products":{"workshop":{"view":"timeline","icon":"📚"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}},{"domain":"topic","type":"Concept","description":"A content topic or keyword a video targets","products":{"workshop":{"view":"graph","icon":"💡"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"collaborator","type":"Person","description":"A creator or guest featured in a video","products":{"workshop":{"view":"gallery","icon":"👤"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}}],"relationships":[{"from":"video","to":"series","verb":"PartOf","description":"Video belongs to this series or playlist"},{"from":"video","to":"topic","verb":"References","description":"Video covers this topic or keyword"},{"from":"video","to":"collaborator","verb":"Contains","description":"Video features this collaborator"},{"from":"video","to":"video","verb":"RelatedTo","description":"Related videos for cross-promotion"}]},"suggestions":[{"label":"Plan a video","prompt":"Help me plan and outline a new YouTube video"},{"label":"Write a script","prompt":"Help me write a script for my next video"},{"label":"Optimize titles","prompt":"Help me write compelling titles and descriptions for my videos"},{"label":"Plan a series","prompt":"Help me plan a multi-video series on a topic"},{"label":"Content strategy","prompt":"Review my channel content and suggest strategic improvements"},{"label":"View content calendar","prompt":"Show me my video schedule in the calendar view"}]},"academy":{"skillPath":"video-production","level":"beginner","learningObjectives":["Write a video script with a hook that delivers the core value promise within the first 30 seconds","Optimise a title and description using keyword research and click-through best practices","Plan a content calendar that batches production and maintains a consistent publishing cadence","Structure a video series so each episode drives viewers to the next with clear continuity"],"assessmentTypes":["portfolio","peer-review"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"exploratory","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"content-creator"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are a YouTube growth strategist and video content expert helping creators plan, script, and optimize their content for maximum reach and audience engagement.","expertise":["YouTube content strategy","Video script writing","SEO optimization","Thumbnail and title strategy","Channel growth and retention"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"planner","defaultTab":"explore","defaultView":"calendar","defaultFile":"content/video-ideas.md","layout":{"leftDock":"files","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["calendar","board","ai-chat"],"suggestedActions":["Brainstorm video ideas in the content folder","Plan your release schedule in Calendar view","Track video status in Board view","Ask AI for title and thumbnail ideas"]}},"graphGuidance":{"conceptCreation":{"triggers":["When user creates a new video idea","When user defines a series or playlist","When user identifies a topic or keyword","When user notes a collaboration"],"typeMapping":{"video":"document","series":"collection","playlist":"collection","topic":"concept","collaborator":"person"}},"relationshipPatterns":[{"from":"document","to":"collection","verb":"partOf","description":"Video in playlist"},{"from":"document","to":"concept","verb":"references","description":"Video covers topic"},{"from":"document","to":"person","verb":"contains","description":"Video features collaborator"},{"from":"document","to":"document","verb":"relatedTo","description":"Related videos"}],"rules":["Create document entities for video ideas","Link videos to their playlists and topics","Track collaborations and features","Note content pillars and themes"]},"qualityGates":{"fileChecks":[{"path":"scripts/*.md","required":["Title","Hook","Script"],"optional":["B-Roll","Thumbnail Concept","Production Notes"]},{"path":"channel-strategy.md","required":["Mission Statement","Content Pillars"],"optional":["Publishing Schedule","Growth Strategy"]}],"projectChecks":["Channel strategy is defined","Content pillars are identified","At least one script is complete","Publishing schedule is set"],"exportReady":["Scripts have production notes","Thumbnails are designed","Metadata is optimized","Content calendar is current"]},"exporters":[{"id":"youtube-package","name":"YouTube Production Package","description":"Scripts, calendar, and analytics in one bundle","icon":"📦","format":"zip","category":"archive","handler":"markdown-bundle","options":{"includeFiles":["**/*.md"],"preserveStructure":true,"addReadme":true}}],"templateMetadata":{"identifyByStructure":true}},"venue":{"bookingNumberPrefix":"YT","subdomainPrefix":"ytchannel","features":{"blog":true,"cms":true,"customerAccounts":true,"subscriptions":true,"website":true,"notifications":true,"analytics":true,"giftCards":true,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.48 0.22 20)","bgBase":"oklch(0.12 0.03 20)","accent":"oklch(0.70 0.14 55)","textPrimary":"oklch(0.95 0.01 20)","displayFont":"YouTube Sans","bodyFont":"Roboto"},"experienceTypes":[{"slug":"channel-strategy-session","name":"Channel Strategy Session","description":"A 60-minute consultation to map your YouTube channel's niche, content pillars, and 90-day growth plan. Includes a competitor analysis and keyword roadmap.","priceInCents":18000,"durationMinutes":60,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.55 0.20 20)","sessionAttributeDefinitions":[{"key":"channelNiche","label":"Channel Niche","type":"text","perGuest":false,"required":true},{"key":"channelAge","label":"Channel Age","type":"select","perGuest":false,"options":["Not started yet","< 6 months","6–12 months","1–3 years","3+ years"],"required":false}]},{"slug":"video-collaboration","name":"Video Collaboration","description":"A cross-promotion collaboration — appear in each other's videos or co-create a joint episode. Includes pre-production planning and promotion to both audiences.","priceInCents":0,"durationMinutes":120,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.58 0.16 55)","sessionAttributeDefinitions":[{"key":"videoTopic","label":"Collaboration Topic","type":"text","perGuest":false,"required":true},{"key":"channelSize","label":"Your Channel Size","type":"select","perGuest":false,"options":["< 1K subs","1K–10K","10K–100K","100K+"],"required":false}]}],"staffRoles":[{"id":"creator","label":"Creator","defaultCapabilities":["cms","analytics","notifications"]},{"id":"editor","label":"Video Editor","defaultCapabilities":["cms"]}],"chatSuggestions":[{"label":"Join the membership","message":"I'd like to join the channel membership. What perks do members get?","emoji":"⭐"},{"label":"Collaborate with me","message":"I'm a creator and would love to collaborate. How do I reach out?","emoji":"🤝"},{"label":"Strategy session","message":"I want help growing my YouTube channel. Can I book a strategy session?","emoji":"📈"},{"label":"Content ideas","message":"What kind of videos do you cover? I'm looking for content in my niche.","emoji":"🎬"}]},"previewImageUrl":"kits/youtube-content-plan/images/preview.webp"},{"id":"music-venue","type":"soulcraft","role":"primary","status":"released","name":"Music Venue","description":"Ticketed event platform for concerts, shows, open mics, and live music","longDescription":"Complete event management for music venues — artist booking, tiered ticket sales (VIP/GA), merch sales, capacity management, and post-show analytics. Built for clubs, theaters, and intimate listening rooms.","version":"1.1.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🎵","tags":["music","concerts","events","tickets","live music","artists"],"previewImageUrl":"kits/music-venue/images/preview.webp","variables":[{"key":"businessName","label":"Business Name","description":"The name of your music venue (e.g. \"The Velvet Underground\")","type":"string","required":true,"example":"The Velvet Underground","default":"The Velvet Underground"},{"key":"tagline","label":"Tagline","description":"A short phrase shown under the logo (e.g. \"where music lives.\")","type":"string","required":false,"example":"where music lives.","default":"where music lives."},{"key":"locationName","label":"Location Name","description":"The display name for this specific venue (e.g. \"The Velvet Underground Nashville\")","type":"string","required":true,"example":"The Velvet Underground Nashville"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this location used in ticketing links (e.g. \"nashville\")","type":"string","required":true,"example":"nashville"},{"key":"address","label":"Street Address","description":"Street address of your venue (e.g. \"404 Music Row, Ste 1\")","type":"address","required":true,"example":"404 Music Row, Ste 1"},{"key":"city","label":"City","description":"City where your venue is located","type":"string","required":true,"example":"Nashville"},{"key":"state","label":"State / Province","description":"Two-letter state or province code","type":"string","required":true,"example":"TN"},{"key":"zip","label":"ZIP / Postal Code","type":"string","required":true,"example":"37203"},{"key":"timezone","label":"Timezone","description":"IANA timezone for this location (used for show scheduling)","type":"timezone","required":true,"example":"America/Chicago","default":"America/New_York"},{"key":"phone","label":"Phone Number","type":"phone","required":true,"example":"(615) 555-0161"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"booking@thevelvetunderground.com"},{"key":"instagram","label":"Instagram Handle","description":"Instagram username without the @","type":"string","required":false,"example":"thevelvetunderground"},{"key":"maxCapacity","label":"Venue Capacity","description":"Maximum standing or seated capacity for the main room","type":"number","required":false,"example":"300","default":"300"}],"shared":{"industry":"entertainment-events","category":"hospitality","glossary":{"advance ticket":"A ticket purchased before the night of the show, typically at a discounted rate","door ticket":"A ticket purchased at the venue on the night of the show","hold":"A block of tickets or capacity reserved for the artist, promoter, or guest list","guarantee":"The minimum payment promised to an artist regardless of ticket sales","buyout":"Full venue rental where an external promoter manages ticketing and pays a flat fee","soft ticket":"A free or open-admission event that still requires registration for capacity tracking","green room":"A backstage area for performers to relax and prepare before going on stage"},"aiExpertise":["music venue event booking and artist management","tiered ticket sales and capacity planning","door and box office operations","bar and merchandise revenue optimization","post-show analytics and promoter settlement"],"dataModelHints":["booking","experience","time_slot","staff","customer","inventory_item","gift_card","transaction"],"dataModel":{"entities":[{"domain":"location","type":"Location","description":"A physical music venue with a main room, bar, backstage area, and its own show calendar and capacity configuration.","products":{"workshop":{"view":"graph","icon":"📍"},"venue":{"mapsTo":"LocationMeta","pos":false}}},{"domain":"booking","type":"Event","description":"A ticket purchase for a specific show — General Admission, VIP, Backstage Pass, or an open mic registration.","products":{"workshop":{"view":"board","icon":"📅"},"venue":{"mapsTo":"BookingMeta","pos":true},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"time_slot","type":"Event","description":"A scheduled show or event night with doors time, set time, capacity tiers, and artist assignment.","products":{"workshop":{"view":"timeline","icon":"🕐"},"venue":{"mapsTo":"TimeSlotMeta","pos":false}}},{"domain":"experience","type":"Product","description":"A ticket tier such as General Admission, VIP, Backstage Pass, or Open Mic Night — each with pricing and capacity.","products":{"workshop":{"view":"gallery","icon":"🎟️"},"venue":{"mapsTo":"ExperienceMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"customer","type":"Person","description":"A ticket buyer or regular concertgoer with purchase history and show attendance records.","products":{"workshop":{"view":"board","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"staff","type":"Person","description":"A venue employee — manager, door staff, bar staff, sound engineer, security, or artist liaison.","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 ticket sale, bar tab, or merchandise purchase, always stored in cents.","products":{"workshop":{"view":"timeline","icon":"💳"},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"inventory_item","type":"Thing","description":"A merchandise item, beverage, bar supply, or piece of sound and lighting equipment tracked in stock.","products":{"workshop":{"view":"graph","icon":"📦"},"venue":{"mapsTo":"InventoryItemMeta","pos":false},"academy":{"mapsTo":"material","assessable":false}}},{"domain":"gift_card","type":"Thing","description":"A digital or physical gift card redeemable for tickets or merchandise.","products":{"workshop":{"view":"board","icon":"🎁"},"venue":{"mapsTo":"GiftCardMeta","pos":true}}},{"domain":"content_page","type":"Document","description":"A CMS-managed page such as About the Venue, Upcoming Shows, Artist Submission, or Bar Menu.","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 covering show recaps, artist spotlights, or venue news.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"customer","to":"booking","verb":"Creates","description":"Fan purchases a ticket for a specific show at a chosen tier (GA, VIP, Backstage)."},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific ticket tier (General Admission, VIP, Backstage Pass, etc.)."},{"from":"booking","to":"time_slot","verb":"ParticipatesIn","description":"Ticket grants entry to a specific show night with defined doors and set times."},{"from":"experience","to":"time_slot","verb":"OccursAt","description":"A ticket tier is offered for specific show nights on the venue calendar."},{"from":"staff","to":"time_slot","verb":"ParticipatesIn","description":"Staff members are assigned to a show night — door, bar, sound, or security roles."},{"from":"transaction","to":"booking","verb":"References","description":"Ticket purchase or refund record links back to the specific show booking."}]},"suggestions":[{"label":"Upcoming show ticket sales","prompt":"Show me ticket sales by tier (GA, VIP, Backstage) for every show in the next 30 days"},{"label":"Revenue by show","prompt":"Compare total revenue per show — tickets plus bar and merchandise — for the last 10 events"},{"label":"Door list for tonight","prompt":"Pull the full door list for tonight's show with ticket tier and check-in status"},{"label":"Merch inventory status","prompt":"What merchandise is running low? Give me a reorder list before the next big show"}]},"workshop":{"aiPersona":{"role":"You are the AI assistant for a live music venue. You help venue managers track ticket sales, door lists, artist bookings, merchandise, and nightly revenue. You understand the live music business — from settlement sheets to sound checks.","expertise":["live event ticketing and capacity management","artist booking and show night logistics","bar and merchandise revenue tracking","door and box office operations","post-show analytics and promoter settlements"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["show or concert booking mentioned","artist or band introduced","ticket tier or pricing referenced","door list or guest list discussed","merchandise or bar inventory mentioned"],"typeMapping":{"booking":"event","ticket":"event","show":"event","concert":"event","time slot":"event","artist":"person","performer":"person","fan":"person","customer":"person","door staff":"person","sound engineer":"person","merchandise":"thing","beverage":"thing","experience":"product","ticket tier":"product","transaction":"measurement"}},"relationshipPatterns":[{"from":"customer","to":"booking","verb":"Creates","description":"Fan purchases a ticket for a specific show"},{"from":"staff","to":"booking","verb":"ParticipatesIn","description":"Door staff checks in the ticketholder at the venue"},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific ticket tier (GA, VIP, Backstage)"}],"rules":["Each show night must have a defined capacity per ticket tier","Door list should be finalized and accessible to door staff by doors-open time","Artist holds must be tracked separately from public ticket inventory"]},"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"timeline"},"qualityGates":{"projectChecks":["All upcoming shows have capacity limits set per ticket tier","Artist and staff assignments are confirmed for each show night","Merchandise inventory is counted and entered before each show weekend"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Event Calendar","view":"timeline","entityTypes":["time_slot"],"description":"Full show calendar with artist names, ticket tiers, and capacity status"},{"name":"Ticket Sales Pipeline","view":"board","entityTypes":["booking","customer"],"description":"Active ticket sales by show with tier breakdown and check-in progress"},{"name":"Artist Roster","view":"gallery","entityTypes":["staff"],"description":"Artists and staff assigned to shows with contact details and role"},{"name":"Revenue by Show","view":"stats","entityTypes":["transaction"],"description":"Per-show revenue across ticket sales, bar, and merchandise"},{"name":"Merch Inventory","view":"tree","entityTypes":["inventory_item"],"description":"Merchandise and bar supplies organized by category with stock levels"}]}},"academy":{"skillPath":"music-appreciation","level":"beginner","learningObjectives":["Understanding genre history and the artists who shaped each movement","Reading a setlist and following a live performance","Venue and concert etiquette as an engaged audience member","How live sound reinforcement works and what makes a great mix","Supporting artists through merchandise, streaming, and word of mouth"],"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":"music-fan"},"gamification":{"enabled":true,"achievements":["chain-maker","deep-thinker","bridge-builder"],"streaks":false,"leaderboard":false},"cohort":{"maxSize":3,"durationDays":90,"fixedStart":false}},"venue":{"bookingNumberPrefix":"MV","subdomainPrefix":"music","features":{"animals":false,"adoption":false,"memories":false,"loyalty":false,"giftCards":true,"waivers":false,"blog":true,"pos":true,"cms":true,"partners":false,"franchise":true,"customerAccounts":true,"booking":true,"inventory":true,"craftChoices":false,"kittens":false,"rescuePartner":false},"catalogThemeId":"soulcraft-dark","theme":{"primary":"oklch(0.55 0.18 280)","bgBase":"oklch(0.10 0.03 270)","accent":"oklch(0.72 0.20 50)","textPrimary":"oklch(0.92 0.01 270)","displayFont":"Bebas Neue","bodyFont":"Inter"},"experienceTypes":[{"slug":"general-admission","name":"General Admission","description":"Standing room access to the main floor for the full show. Doors open 1 hour before the headliner.","priceInCents":2500,"durationMinutes":240,"minGuests":1,"maxGuests":500,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.55 0.14 280)","sessionAttributeDefinitions":[{"key":"artistName","label":"Artist / Headliner","type":"text","perGuest":false,"required":false},{"key":"eventName","label":"Event Name","type":"text","perGuest":false,"required":false},{"key":"showType","label":"Show Type","type":"select","options":["concert","dj","open-mic","comedy"],"perGuest":false,"required":false}]},{"slug":"vip-ticket","name":"VIP","description":"Reserved section access, priority entry, and one complimentary drink. Best view in the house.","priceInCents":7500,"durationMinutes":240,"minGuests":1,"maxGuests":20,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.65 0.18 50)","sessionAttributeDefinitions":[{"key":"artistName","label":"Artist / Headliner","type":"text","perGuest":false,"required":false},{"key":"eventName","label":"Event Name","type":"text","perGuest":false,"required":false},{"key":"showType","label":"Show Type","type":"select","options":["concert","dj","open-mic","comedy"],"perGuest":false,"required":false}]},{"slug":"backstage-pass","name":"Backstage Pass","description":"All-access experience including meet and greet with the artist, backstage access, and commemorative laminate.","priceInCents":15000,"durationMinutes":300,"minGuests":1,"maxGuests":5,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.48 0.20 320)","sessionAttributeDefinitions":[{"key":"artistName","label":"Artist / Headliner","type":"text","perGuest":false,"required":true},{"key":"eventName","label":"Event Name","type":"text","perGuest":false,"required":false},{"key":"showType","label":"Show Type","type":"select","options":["concert","dj","open-mic","comedy"],"perGuest":false,"required":false}]},{"slug":"open-mic-night","name":"Open Mic Night","description":"Free admission open mic event. Performers and audience welcome. Sign-up at the door — first come, first on stage.","priceInCents":0,"durationMinutes":180,"minGuests":1,"maxGuests":300,"requiresWaiver":false,"isCombo":false,"sortOrder":3,"color":"oklch(0.58 0.10 160)","sessionAttributeDefinitions":[{"key":"artistName","label":"Featured Host","type":"text","perGuest":false,"required":false},{"key":"eventName","label":"Event Name","type":"text","perGuest":false,"required":false},{"key":"showType","label":"Show Type","type":"select","options":["concert","dj","open-mic","comedy"],"perGuest":false,"required":false}]}],"inventoryCategories":[{"id":"merchandise","label":"Merchandise","icon":"👕"},{"id":"beverages","label":"Beverages","icon":"🍺"},{"id":"bar-supplies","label":"Bar Supplies","icon":"🍸"},{"id":"sound-lighting","label":"Sound & Lighting Equipment","icon":"🎚️"},{"id":"ticketing-supplies","label":"Ticketing Supplies","icon":"🎟️"}],"staffRoles":[{"id":"venue-manager","label":"Venue Manager","defaultCapabilities":["checkin","pos","session-log","inventory-view","bookings-view"]},{"id":"door-box-office","label":"Door / Box Office","defaultCapabilities":["checkin","pos"]},{"id":"bar-staff","label":"Bar Staff","defaultCapabilities":["pos"]},{"id":"sound-engineer","label":"Sound Engineer","defaultCapabilities":["session-log"]},{"id":"security","label":"Security","defaultCapabilities":["checkin"]},{"id":"artist-liaison","label":"Artist Liaison","defaultCapabilities":["checkin","session-log"]}],"chatSuggestions":[{"label":"Upcoming shows","message":"What shows do you have coming up? I'm looking for something to do this weekend.","emoji":"🎵"},{"label":"VIP tickets","message":"Tell me about VIP tickets. What's included and how do I get them?","emoji":"⭐"},{"label":"Private events","message":"I'm interested in booking the venue for a private event. Who do I talk to?","emoji":"🎉"},{"label":"Gift cards","message":"I'd like to buy a gift card for a music lover. What do you have?","emoji":"🎁"}],"inventoryLevelDetection":"manual","stations":[{"id":"pos","label":"Point of Sale","route":"/api/manage/pos","icon":"💳","roles":["staff","manager","owner"],"scope":"platform","context":"physical"},{"id":"checkin","label":"Check-in","route":"/api/manage/checkin","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":"door-list","label":"Door List","route":"/api/manage/door-list","icon":"🎟️","roles":["staff","manager","owner"],"scope":"kit","context":"physical"}],"fees":{"billingModel":"per-transaction","feeMode":"all-channels"},"terminology":{"participant":{"singular":"attendee","plural":"attendees"},"offering":{"singular":"show","plural":"shows"},"reservation":{"singular":"ticket","plural":"tickets"},"group":{"singular":"group","plural":"groups"},"document":{"singular":"form","plural":"forms"},"host":{"singular":"artist","plural":"artists"},"space":{"singular":"stage","plural":"stages"},"partySize":"Ticket count","checkIn":"Admit"},"contentDefaults":{"tagline":"where music lives.","heroHeadline":"Experience Live Music.","heroSubheadline":"Tickets, VIP access, and unforgettable shows — all in one place.","aboutHeadline":"Where music comes alive","aboutBody":"A premier music venue for concerts, shows, open mics, and live performances. Artist booking, tiered ticketing, and post-show analytics — everything you need to run a world-class venue.","experienceSteps":[{"title":"Buy Tickets","description":"Choose your show, pick your section (GA or VIP), and complete your order in minutes.","color":"primary"},{"title":"Arrive & Get Admitted","description":"Show up at door time. Staff scan your ticket and admit you to your section.","color":"primary"},{"title":"Enjoy the Show","description":"Settle in, grab a drink, and experience live music the way it was meant to be heard.","color":"primary"}],"faqSections":[{"title":"Tickets & Admission","color":"primary","items":[{"q":"How do I get my tickets?","a":"Tickets are delivered to your email immediately after purchase. Present the QR code at the door — printed or on your phone."},{"q":"What is your refund policy?","a":"Tickets are non-refundable but may be transferred to another person. In the event of a cancellation, a full refund is issued automatically."},{"q":"Is there an age requirement?","a":"Age requirements vary by event. Check the event listing for details. All ages shows are clearly marked."}]},{"title":"VIP & Access","color":"primary","items":[{"q":"What's included with VIP?","a":"VIP tickets include reserved seating, priority entry, and one complimentary drink. Specific perks may vary by event."},{"q":"Is the venue accessible?","a":"Yes, our venue is ADA accessible with accessible entrances, seating areas, and restrooms. Contact us in advance to arrange any specific accommodations."}]}]}}},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"technical-specification","type":"soulcraft","role":"primary","status":"released","name":"Technical Specification","description":"Detailed technical specification document for software projects","longDescription":"Complete technical specification template with architecture overview, data models, API design, security considerations, and implementation details. Structured for engineering review and stakeholder sign-off.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🏗️","tags":["technical","specification","architecture","design"],"variables":[{"key":"projectName","label":"Project Name","description":"The name of the system or feature being specified","type":"string","required":true,"example":"Customer Portal"},{"key":"author","label":"Technical Lead","description":"The engineer authoring this specification","type":"string","required":false,"example":"Your Name"},{"key":"version","label":"Spec Version","description":"The version number of this specification","type":"string","required":false,"example":"1.0","default":"1.0"}],"shared":{"industry":"software-development","category":"development","aiExpertise":["Software architecture design","API contract definition","Data model design","Security threat modeling","Non-functional requirements specification"],"dataModelHints":["concept","interface","resource","document"],"dataModel":{"entities":[{"domain":"component","type":"Concept","description":"A software component or service within the system","products":{"workshop":{"view":"graph","icon":"🔧"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"interface","type":"Concept","description":"An API contract or interface a component exposes","products":{"workshop":{"view":"tree","icon":"⚡"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"dataModel","type":"Concept","description":"A data schema or model used by the system","products":{"workshop":{"view":"graph","icon":"🗂️"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"service","type":"Concept","description":"An external or internal service depended on by components","products":{"workshop":{"view":"graph","icon":"☁️"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}},{"domain":"database","type":"Thing","description":"A data store or persistence layer used by the system","products":{"workshop":{"view":"graph","icon":"🗄️"},"academy":{"mapsTo":"resource","assessable":false}}}],"relationships":[{"from":"component","to":"component","verb":"DependsOn","description":"Component requires another component to function"},{"from":"component","to":"interface","verb":"Implements","description":"Component implements this interface contract"},{"from":"component","to":"database","verb":"Uses","description":"Component reads or writes to this data store"},{"from":"component","to":"component","verb":"Contains","description":"System or module contains this component"}]},"suggestions":[{"label":"Write a spec section","prompt":"Help me write a technical specification section"},{"label":"Define architecture","prompt":"Help me define and document the system architecture"},{"label":"Document APIs","prompt":"Help me document the API contracts and interfaces"},{"label":"List requirements","prompt":"Help me define technical requirements and constraints"},{"label":"Create diagrams","prompt":"Help me create a system diagram for my architecture"},{"label":"Review spec","prompt":"Show me my technical specification structure and completeness"}]},"academy":{"skillPath":"software-architecture","level":"advanced","learningObjectives":["Decompose a system into components with clear responsibilities and well-defined interfaces","Document API contracts with request/response schemas, error codes, and auth requirements","Design a data model identifying entities, fields, constraints, and indexing strategy","Perform a security threat model identifying attack surfaces and mitigations","Specify non-functional requirements (latency, throughput, availability) with measurable targets"],"assessmentTypes":["portfolio","peer-review"],"mode":"certification","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"neutral","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":true,"certificationSlug":"software-architect"},"gamification":{"enabled":true,"achievements":["deep-thinker","completionist","chain-maker"],"streaks":false,"leaderboard":true}},"workshop":{"difficulty":"advanced","templateTier":4,"aiPersona":{"role":"You are a senior software architect helping engineering teams write clear, complete technical specifications that guide implementation and enable effective code review.","expertise":["Software architecture design","API contract definition","Data model design","Security and threat modeling","Performance and scalability planning"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"developer","defaultTab":"edit","defaultView":"tree","defaultFile":"spec/overview.md","fallbackFiles":["README.md"],"layout":{"leftDock":"files","rightDock":"properties"},"onboarding":{"showGuide":true,"highlightFeatures":["tree","ai-chat"],"suggestedActions":["Start with the overview document","Define your architecture in architecture.md","Document API endpoints systematically","Ask AI for security considerations"]}},"graphGuidance":{"conceptCreation":{"triggers":["When user defines a component","When user describes an interface","When user creates a data model","When user identifies a dependency"],"typeMapping":{"component":"concept","interface":"interface","dataModel":"concept","service":"concept","database":"resource"}},"relationshipPatterns":[{"from":"concept","to":"concept","verb":"dependsOn","description":"Component dependency"},{"from":"concept","to":"interface","verb":"implements","description":"Component implements interface"},{"from":"concept","to":"resource","verb":"uses","description":"Component uses database"},{"from":"concept","to":"concept","verb":"contains","description":"System contains component"}],"rules":["Create concept entities for components","Track dependencies between components","Link components to interfaces","Document data flow relationships"]},"qualityGates":{"fileChecks":[{"path":"technical-spec.md","required":["Executive Summary","Goals","Architecture","Data Model","Security"],"optional":["Performance","Scalability","Deployment"]},{"path":"api-design.md","required":["Endpoints"],"optional":["Authentication","Error Handling"]}],"projectChecks":["Executive summary clearly states the problem and solution","Goals section has measurable success criteria","Architecture section includes component diagram","Non-functional requirements have specific targets","Security section addresses authentication and data protection","Risks and mitigations are documented"],"exportReady":["All sections are complete with no TODOs","Architecture diagrams are included","Data model is fully specified","API contracts are defined","Document has been reviewed and approved"]},"exporters":[{"id":"spec-bundle","name":"Technical Specification Bundle","description":"Complete specification documents","icon":"📋","format":"zip","category":"document","handler":"markdown-bundle","options":{"includeFiles":["**/*.md"],"preserveStructure":true,"addReadme":true}}],"templateMetadata":{"identifyByStructure":true}},"venue":{"bookingNumberPrefix":"TS","subdomainPrefix":"techspec","features":{"cms":true,"customerAccounts":true,"documents":true,"website":true,"notifications":true,"analytics":true,"blog":false,"giftCards":false,"pos":false,"subscriptions":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"per-transaction","feeMode":"online-only"},"theme":{"primary":"oklch(0.35 0.12 235)","bgBase":"oklch(0.99 0.005 235)","accent":"oklch(0.55 0.18 185)","textPrimary":"oklch(0.18 0.03 235)","displayFont":"JetBrains Mono","bodyFont":"Inter"},"experienceTypes":[{"slug":"architecture-review","name":"Architecture Review","description":"A 2-hour technical review of your system architecture, API design, or data model. Receive written feedback on scalability, security, and maintainability with concrete recommendations.","priceInCents":55000,"durationMinutes":120,"minGuests":1,"maxGuests":4,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.48 0.14 235)","sessionAttributeDefinitions":[{"key":"reviewScope","label":"Review Scope","type":"select","perGuest":false,"required":true,"options":["System architecture","API design","Data model","Database schema","Full-stack review"]},{"key":"techStack","label":"Tech Stack","type":"text","perGuest":false,"required":false}]},{"slug":"spec-writing-session","name":"Spec Writing Session","description":"A 90-minute collaborative session to draft or refine a technical specification document. Covers requirements, edge cases, interface contracts, and implementation notes.","priceInCents":30000,"durationMinutes":90,"minGuests":1,"maxGuests":3,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.50 0.16 185)","sessionAttributeDefinitions":[{"key":"specType","label":"Spec Type","type":"select","perGuest":false,"required":false,"options":["Feature specification","API specification","System design doc","Data model spec","Integration guide"]}]}],"staffRoles":[{"id":"solutions-architect","label":"Solutions Architect","defaultCapabilities":["checkin","pos","cms","analytics"]},{"id":"tech-writer","label":"Technical Writer","defaultCapabilities":["cms"]}],"chatSuggestions":[{"label":"Review my architecture","message":"I'd like a technical review of my system architecture. How does that work?","emoji":"🏗️"},{"label":"Write a spec","message":"I need help writing a technical specification. Can I book a session?","emoji":"📝"},{"label":"API design help","message":"I'm designing an API and need expert guidance on the interface contract.","emoji":"🔌"},{"label":"Documentation audit","message":"My technical documentation is outdated and inconsistent. Can you help?","emoji":"🔍"}]},"previewImageUrl":"kits/technical-specification/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"world-building","type":"soulcraft","role":"primary","status":"released","name":"World Building Bible","description":"Comprehensive universe bible for fantasy, sci-fi, and speculative fiction worlds","longDescription":"Create a detailed, interconnected world for your creative projects. Document characters, locations, factions, history, magic systems, technology, and cultures. Perfect for novelists, game designers, screenwriters, and RPG creators. Use the knowledge graph to track relationships and the timeline to maintain historical consistency.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🌍","tags":["worldbuilding","fantasy","sci-fi","fiction","games","rpg","writing"],"variables":[{"key":"projectName","label":"World Name","description":"The name of your fictional world","type":"string","required":true,"example":"Eldoria"},{"key":"worldGenre","label":"Genre","description":"Fantasy, Sci-Fi, Post-Apocalyptic, etc.","type":"string","required":false,"example":"High Fantasy"},{"key":"worldEra","label":"Primary Era","description":"Main time period of your story","type":"string","required":false,"example":"The Age of Dragons"},{"key":"worldLogline","label":"World Logline","description":"One sentence essence of your world","type":"string","required":false,"example":"A realm where magic flows from ancient dragons..."}],"shared":{"industry":"creative-arts","category":"creative","aiExpertise":["Fantasy and sci-fi world design","Magic system and technology rules","Faction and political dynamics","Character and cultural development","Historical timeline and lore consistency"],"dataModelHints":["person","place","organization","event","concept","thing","category"],"dataModel":{"entities":[{"domain":"character","type":"Person","description":"A named character with role, allegiance, and backstory","products":{"workshop":{"view":"gallery","icon":"🧑"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"location","type":"Location","description":"A region, city, or landmark in the world","products":{"workshop":{"view":"graph","icon":"📍"}}},{"domain":"faction","type":"Concept","description":"A political, military, or social organisation","products":{"workshop":{"view":"graph","icon":"⚔️"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"historical event","type":"Event","description":"A significant historical event or era in the world's past","products":{"workshop":{"view":"timeline","icon":"📜"},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"magic system","type":"Concept","description":"The rules, source, and limitations of magic in this world","products":{"workshop":{"view":"graph","icon":"✨"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"artifact","type":"Thing","description":"A significant object, weapon, or relic with history","products":{"workshop":{"view":"gallery","icon":"🏺"},"academy":{"mapsTo":"resource","assessable":false},"venue":{"mapsTo":"InventoryItemMeta","pos":false}}},{"domain":"species","type":"Concept","description":"A race or species inhabiting the world","products":{"workshop":{"view":"graph","icon":"🧬"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}}],"relationships":[{"from":"character","to":"location","verb":"LocatedIn","description":"Character lives in or originates from this location"},{"from":"character","to":"faction","verb":"MemberOf","description":"Character belongs to this faction"},{"from":"character","to":"character","verb":"RelatedTo","description":"Family, friendship, or alliance between characters"},{"from":"character","to":"character","verb":"OpposedTo","description":"Characters are enemies or rivals"},{"from":"location","to":"location","verb":"Contains","description":"Region contains this sub-location"},{"from":"faction","to":"faction","verb":"OpposedTo","description":"Factions are in conflict"},{"from":"historical event","to":"historical event","verb":"Precedes","description":"Historical ordering of events"}]},"suggestions":[{"label":"Create a location","prompt":"Help me create a new location with geography and culture"},{"label":"Design a faction","prompt":"Help me design a faction or organization in my world"},{"label":"Build a magic system","prompt":"Help me develop the rules and limits of my magic system"},{"label":"Write world history","prompt":"Help me write a historical event or era for my world"},{"label":"Map relationships","prompt":"Help me map the political and social relationships between factions"},{"label":"Explore the world","prompt":"Show me my world-building elements in the mind map view"}]},"academy":{"skillPath":"worldbuilding","level":"intermediate","learningObjectives":["Design a magic or technology system with internal rules, cost, and limitations that remain consistent","Create a regional geography where terrain shapes culture, economy, and political power","Document a faction with goals, methods, and internal tensions that make them feel three-dimensional","Write a historical timeline where past events causally explain the present conflicts","Identify and resolve internal consistency errors (timeline paradoxes, geography contradictions)"],"assessmentTypes":["portfolio","peer-review"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"exploratory","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"worldbuilder"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"intermediate","templateTier":3,"aiPersona":{"role":"You are a world-building consultant and creative writing collaborator helping creators build deep, consistent, and compelling fictional worlds for novels, games, and screenplays.","expertise":["Fantasy and sci-fi world design","Magic system and technology rules","Political and social dynamics","Cultural development","Historical lore and consistency"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"creative","defaultTab":"explore","defaultView":"graph","defaultFile":"overview/world-overview.md","layout":{"leftDock":"concepts","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["graph","gallery","ai-chat"],"suggestedActions":["Start with World Overview to establish core concepts","Define your magic system or technology rules","Create major regions using Location templates","Use Graph view to visualize relationships between elements","Ask AI to help develop cultures and histories"]}},"graphGuidance":{"conceptCreation":{"triggers":["User creates a new character","User defines a location","User establishes a faction","User describes a historical event","User creates a species or creature"],"typeMapping":{"character":"person","location":"place","region":"place","faction":"organization","era":"event","historical event":"event","magic system":"concept","technology":"concept","culture":"concept","species":"category","artifact":"thing"}},"relationshipPatterns":[{"from":"person","to":"place","verb":"locatedIn","description":"Character lives in location"},{"from":"person","to":"organization","verb":"memberOf","description":"Character belongs to faction"},{"from":"person","to":"person","verb":"relatedTo","description":"Characters are related"},{"from":"person","to":"person","verb":"opposedTo","description":"Characters are enemies"},{"from":"place","to":"place","verb":"contains","description":"Region contains location"},{"from":"organization","to":"organization","verb":"opposedTo","description":"Factions are rivals"},{"from":"event","to":"event","verb":"precedes","description":"Event happened before"},{"from":"thing","to":"person","verb":"ownedBy","description":"Item belongs to character"}]},"qualityGates":{"fileChecks":[{"path":"overview/world-overview.md","required":["World Name","Genre","Core Concept"],"optional":["Themes"]},{"path":"systems/magic-system.md","required":["Source","Limitations"],"optional":["Categories"]},{"path":"history/timeline.md","required":["Major Eras","Key Events"],"optional":["Detailed Timeline"]}],"projectChecks":["World has a clear identity and tone","Magic/technology system has defined rules","At least 3 major locations defined","Key characters have motivations","Historical timeline established","Major factions have goals"],"exportReady":["All core sections complete","No major consistency issues","Relationships mapped in graph","Timeline populated"]},"exporters":[{"id":"world-bible-pdf","name":"World Bible (PDF)","description":"Complete reference document","icon":"📚","format":"pdf","category":"document","handler":"wdoc-pdf","options":{"includeFiles":["**/*.md"],"combineFiles":true,"tableOfContents":true}},{"id":"world-wiki","name":"World Wiki (HTML)","description":"Linked wiki-style pages","icon":"🌐","format":"html","category":"web","handler":"wdoc-html","options":{"includeFiles":["**/*.md"],"preserveStructure":true,"generateIndex":true}},{"id":"world-overview","name":"Quick Reference","description":"One-page summary for collaborators","icon":"📋","format":"pdf","category":"document","handler":"wdoc-pdf","options":{"includeFiles":["overview/*.md"],"combineFiles":true}}],"exportStructure":{"combineStrategy":"path-order","includePatterns":["**/*.md"],"excludePatterns":["_drafts/*","_notes/*"]},"exportPreferences":{"defaultExporter":"world-bible-pdf","fileNameTemplate":"{{projectName}}-world-bible"}},"venue":{"bookingNumberPrefix":"WB","subdomainPrefix":"worldbuilder","features":{"blog":true,"cms":true,"customerAccounts":true,"website":true,"documents":true,"notifications":true,"analytics":false,"giftCards":false,"pos":false,"subscriptions":true,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"per-transaction","feeMode":"online-only"},"theme":{"primary":"oklch(0.38 0.10 175)","bgBase":"oklch(0.10 0.03 220)","accent":"oklch(0.62 0.14 50)","textPrimary":"oklch(0.92 0.02 220)","displayFont":"Uncial Antiqua","bodyFont":"Lora"},"experienceTypes":[{"slug":"world-consultation","name":"World Consultation","description":"A 60-minute session to develop your fictional world — geography, history, magic systems, or cultures. Ideal for writers who want their world to feel lived-in and internally consistent.","priceInCents":12000,"durationMinutes":60,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.50 0.12 175)","sessionAttributeDefinitions":[{"key":"worldFocus","label":"Focus Area","type":"select","perGuest":false,"required":true,"options":["Geography & maps","History & lore","Magic systems","Cultures & societies","Languages & names","General overview"]},{"key":"genre","label":"Genre","type":"text","perGuest":false,"required":false}]},{"slug":"world-building-workshop","name":"World-Building Workshop","description":"A 2-hour workshop for fantasy and sci-fi writers. Deep-dive into a single world-building pillar — magic systems, culture design, political structures, or ecology.","priceInCents":5500,"durationMinutes":120,"minGuests":3,"maxGuests":10,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.55 0.12 50)","sessionAttributeDefinitions":[{"key":"pillar","label":"Workshop Pillar","type":"select","perGuest":false,"required":true,"options":["Magic systems","Culture & religion","Political structures","Ecology & geography","Languages & naming"]}]},{"slug":"lore-bible-review","name":"Lore Bible Review","description":"A thorough review of your existing world notes or lore bible, with written feedback on consistency, depth, and narrative potential. Includes a 45-minute debrief call.","priceInCents":28000,"durationMinutes":45,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.42 0.10 175)","sessionAttributeDefinitions":[{"key":"wordCount","label":"Approx. Word Count","type":"text","perGuest":false,"required":false}]}],"staffRoles":[{"id":"world-builder","label":"World-Builder","defaultCapabilities":["checkin","pos","cms","notifications"]},{"id":"lore-editor","label":"Lore Editor","defaultCapabilities":["checkin","pos"]}],"chatSuggestions":[{"label":"Build my world","message":"I'm creating a fantasy world and need help making it feel real. Where do I start?","emoji":"🌍"},{"label":"Review my lore","message":"I have a lot of world-building notes. Can you review them for consistency?","emoji":"📖"},{"label":"Join a workshop","message":"Are there any world-building workshops coming up?","emoji":"🔮"},{"label":"Browse world wikis","message":"Can I see examples of other world wikis built with this kit?","emoji":"🗺️"}]},"previewImageUrl":"kits/world-building/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"podcast-series","type":"soulcraft","role":"primary","status":"released","name":"Podcast Series","description":"Podcast planning with episodes, guests, show notes, and production workflow","longDescription":"Complete podcast production system with episode planning, guest management, show notes templates, and production tracking. Knowledge graph connects guests, topics, and episode references for easy series navigation and content discovery.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🎙️","tags":["podcast","audio","content-creation","interviews"],"variables":[{"key":"podcastName","label":"Podcast Name","description":"The name of your podcast show","type":"string","required":true,"example":"The Tech Talk"},{"key":"host","label":"Host Name","description":"Your name as the podcast host","type":"string","required":true,"example":"Your Name"},{"key":"topic","label":"Main Topic","description":"The primary topic or theme of your podcast","type":"string","required":false,"example":"Technology and Innovation"}],"shared":{"industry":"writing-publishing","category":"creative","aiExpertise":["Podcast episode planning and structuring","Guest research and interview preparation","Show notes writing","Audience growth strategy","Content repurposing for social media"],"dataModelHints":["document","person","concept","collection"],"dataModel":{"entities":[{"domain":"episode","type":"Document","description":"A single podcast episode with outline and show notes","products":{"workshop":{"view":"board","icon":"🎙️"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"guest","type":"Person","description":"A guest speaker or interview subject","products":{"workshop":{"view":"gallery","icon":"👤"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"topic","type":"Concept","description":"A subject or theme covered across episodes","products":{"workshop":{"view":"graph","icon":"💡"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"series","type":"Concept","description":"A named season or thematic series grouping episodes","products":{"workshop":{"view":"timeline","icon":"📚"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}}],"relationships":[{"from":"episode","to":"guest","verb":"Contains","description":"Episode features this guest"},{"from":"episode","to":"topic","verb":"References","description":"Episode covers this topic"},{"from":"episode","to":"series","verb":"PartOf","description":"Episode belongs to this series or season"},{"from":"episode","to":"episode","verb":"Precedes","description":"Episode ordering within the series"}]},"suggestions":[{"label":"Plan an episode","prompt":"Help me plan and outline a new podcast episode"},{"label":"Write show notes","prompt":"Help me write show notes for my latest episode"},{"label":"Generate topic ideas","prompt":"Brainstorm new episode topic ideas based on my podcast theme"},{"label":"Prepare interview questions","prompt":"Help me prepare interview questions for an upcoming guest"},{"label":"Create episode schedule","prompt":"Help me create a recording and publishing schedule"},{"label":"View episode timeline","prompt":"Show me my podcast episodes on the timeline view"}]},"academy":{"skillPath":"podcasting","level":"beginner","learningObjectives":["Plan an episode with a clear thesis, structure, and timed segment breakdown","Research a guest and write interview questions that surface insight beyond their standard answers","Write show notes that stand alone as a useful document without requiring the audio","Build a production checklist covering recording, editing, publishing, and promotion steps"],"assessmentTypes":["portfolio","demo"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"exploratory","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"podcast-producer"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"beginner","templateTier":4,"aiPersona":{"role":"You are an experienced podcast producer and content strategist helping creators plan, record, and grow their podcast series.","expertise":["Podcast episode planning","Guest research and preparation","Show notes writing","Audience growth","Content scheduling"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"planner","defaultTab":"explore","defaultView":"calendar","defaultFile":"episodes/001-pilot.md","layout":{"leftDock":"files","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["calendar","board","ai-chat"],"suggestedActions":["Plan your pilot episode first","Create guest profiles as you book interviews","Use Calendar view to schedule releases","Track episode status in Board view"]}},"graphGuidance":{"conceptCreation":{"triggers":["When user creates a new episode","When user adds a guest","When user defines a topic or theme","When user creates a series or season"],"typeMapping":{"episode":"document","guest":"person","topic":"concept","series":"collection","season":"collection"}},"relationshipPatterns":[{"from":"document","to":"person","verb":"contains","description":"Episode features guest"},{"from":"document","to":"concept","verb":"references","description":"Episode covers topic"},{"from":"document","to":"collection","verb":"partOf","description":"Episode in series"},{"from":"document","to":"document","verb":"precedes","description":"Episode sequence"}],"rules":["Create document entities for each episode","Link episodes to their guests and topics","Track episode order within seasons","Note recurring themes across episodes"]},"qualityGates":{"fileChecks":[{"path":"episodes/*.md","required":["Episode Summary","Topics to Cover"],"optional":["Questions for Guest","Show Notes","Production Checklist"]},{"path":"guests/*.md","required":["Title/Role","Bio"],"optional":["Topics They Can Speak On","Contact"]}],"projectChecks":["Podcast format is defined","At least one episode is planned","Intro script is written","Publishing schedule is set"],"exportReady":["Episodes have show notes","Guest bios are complete","Production checklists are checked","Timestamps are added"]}},"venue":{"bookingNumberPrefix":"PS","subdomainPrefix":"podcast","features":{"blog":true,"cms":true,"customerAccounts":true,"subscriptions":true,"website":true,"notifications":true,"analytics":true,"giftCards":true,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.42 0.16 295)","bgBase":"oklch(0.12 0.04 295)","accent":"oklch(0.65 0.18 55)","textPrimary":"oklch(0.95 0.01 295)","displayFont":"Space Grotesk","bodyFont":"Inter"},"experienceTypes":[{"slug":"podcast-guest-appearance","name":"Podcast Guest Appearance","description":"Join the show as a featured guest. We'll schedule a pre-interview prep call, record the episode, and promote it to our full subscriber base.","priceInCents":0,"durationMinutes":60,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.55 0.16 295)","sessionAttributeDefinitions":[{"key":"guestExpertise","label":"Area of Expertise","type":"text","perGuest":false,"required":true},{"key":"episodeTopic","label":"Proposed Episode Topic","type":"text","perGuest":false,"required":true}]},{"slug":"live-taping-ticket","name":"Live Taping Ticket","description":"Attend a live recording session and be part of the audience. Ask questions live, meet the host, and get early access to the episode before it drops.","priceInCents":2500,"durationMinutes":90,"minGuests":1,"maxGuests":50,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.58 0.16 55)","sessionAttributeDefinitions":[{"key":"episodeTitle","label":"Episode Title / Topic","type":"text","perGuest":false,"required":true}]},{"slug":"sponsored-episode","name":"Sponsored Episode","description":"Sponsor a full episode with host-read mid-roll and post-roll mentions, a dedicated shout-out, and a link in the show notes. Includes post-episode performance report.","priceInCents":150000,"durationMinutes":30,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.45 0.14 295)","sessionAttributeDefinitions":[{"key":"brandName","label":"Brand / Product Name","type":"text","perGuest":false,"required":true},{"key":"promoUrl","label":"Promo URL or Code","type":"text","perGuest":false,"required":false}]}],"staffRoles":[{"id":"host","label":"Host","defaultCapabilities":["checkin","pos","cms","analytics","notifications"]},{"id":"producer","label":"Producer","defaultCapabilities":["cms","analytics","notifications"]}],"chatSuggestions":[{"label":"Subscribe to the podcast","message":"How do I subscribe to get new episodes and exclusive content?","emoji":"🎙️"},{"label":"Be a guest","message":"I'd love to be a guest on the show. How do I apply?","emoji":"🎤"},{"label":"Buy a live taping ticket","message":"Are there any upcoming live taping events I can attend?","emoji":"🎟️"},{"label":"Sponsor an episode","message":"I'm interested in sponsoring an episode. What's included?","emoji":"💼"}]},"previewImageUrl":"kits/podcast-series/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"screenplay-writing","type":"soulcraft","role":"primary","status":"released","name":"Screenplay Writing","description":"Professional screenplay workspace with scene breakdown, character arcs, and industry-standard formatting","longDescription":"Complete screenplay development system with scene cards, character sheets, beat sheets, and act structure. Includes concepts for characters, scenes, and acts that connect in the knowledge graph for easy navigation. Aligned to industry-standard Save the Cat! beat structure.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🎬","tags":["screenplay","film","script","creative-writing","storytelling"],"variables":[{"key":"projectName","label":"Screenplay Title","description":"The title of your screenplay","type":"string","required":true,"example":"The Last Sunset"},{"key":"author","label":"Writer","description":"Your name as the screenwriter","type":"string","required":false,"example":"Your Name","default":""},{"key":"genre","label":"Genre","description":"Primary genre (Drama, Comedy, Thriller, Sci-Fi, etc.)","type":"string","required":false,"example":"Drama"},{"key":"logline","label":"Logline","description":"One-sentence pitch for your story","type":"string","required":false,"example":"A brief, compelling summary of your screenplay"}],"shared":{"industry":"filmmaking","category":"writing","aiExpertise":["Screenplay structure and beat sheets","Character arc development","Scene writing and pacing","Dialogue and subtext","Genre conventions"],"dataModelHints":["person","document","event","location","concept"],"dataModel":{"entities":[{"domain":"character","type":"Person","description":"A character with speaking role, arc, and motivation","products":{"workshop":{"view":"gallery","icon":"🎭"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"scene","type":"Document","description":"A screenplay scene with action and dialogue","products":{"workshop":{"view":"board","icon":"🎬"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"location","type":"Location","description":"A physical setting where scenes take place","products":{"workshop":{"view":"graph","icon":"📍"}}},{"domain":"beat","type":"Concept","description":"A structural beat in the Save the Cat beat sheet","products":{"workshop":{"view":"timeline","icon":"🥁"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"act","type":"Concept","description":"An act of the three-act structure","products":{"workshop":{"view":"timeline","icon":"📋"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}}],"relationships":[{"from":"character","to":"character","verb":"Conflicts","description":"Character is in opposition with another"},{"from":"character","to":"character","verb":"RelatedTo","description":"Character relationship or bond"},{"from":"scene","to":"character","verb":"Contains","description":"Scene features this character"},{"from":"scene","to":"location","verb":"LocatedAt","description":"Scene takes place in this setting"},{"from":"scene","to":"beat","verb":"InstanceOf","description":"Scene fulfils this structural beat"}]},"suggestions":[{"label":"Write a scene","prompt":"Help me write the next scene in my screenplay"},{"label":"Develop a character","prompt":"Help me develop a character profile for my screenplay"},{"label":"Outline an act","prompt":"Help me outline the structure of an act"},{"label":"Write dialogue","prompt":"Help me write natural, compelling dialogue for a scene"},{"label":"Check pacing","prompt":"Analyze my screenplay's pacing and suggest improvements"},{"label":"View story structure","prompt":"Show me my screenplay structure in the timeline view"}]},"academy":{"skillPath":"screenwriting","level":"intermediate","learningObjectives":["Complete a Save the Cat beat sheet with all 15 beats and justified page ranges","Write a scene in industry-standard format that advances plot and reveals character simultaneously","Craft dialogue with distinct character voice and subtext that avoids on-the-nose exposition","Develop a protagonist whose external want and internal need are in direct conflict","Rewrite a scene to cut page count by 30% without losing story information"],"assessmentTypes":["portfolio","peer-review"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"exploratory","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"screenwriter"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are a professional screenwriter and story consultant helping writers develop compelling screenplays using industry-standard structure, character development, and scene craft.","expertise":["Screenplay structure (Save the Cat!, McKee)","Character arc development","Scene writing and pacing","Dialogue and subtext","Genre conventions and expectations"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"writer","defaultTab":"edit","defaultView":"timeline","defaultFile":"script/act-1/scene-01.md","fallbackFiles":["planning/treatment.md","README.md"],"layout":{"leftDock":"files","rightDock":"properties"},"onboarding":{"showGuide":true,"highlightFeatures":["timeline","graph","ai-chat"],"suggestedActions":["Start with the treatment in planning/treatment.md","Develop characters using the template","Use Timeline view to visualize scene flow","Ask AI for dialogue and scene suggestions"]}},"graphGuidance":{"conceptCreation":{"triggers":["When user creates a character","When user describes a scene","When user mentions a location","When user outlines a beat or sequence"],"typeMapping":{"character":"person","scene":"document","location":"location","beat":"concept","act":"concept"}},"relationshipPatterns":[{"from":"person","to":"person","verb":"conflicts","description":"Character opposition"},{"from":"person","to":"person","verb":"relatedTo","description":"Character relationship"},{"from":"document","to":"person","verb":"contains","description":"Scene features character"},{"from":"document","to":"location","verb":"locatedAt","description":"Scene setting"},{"from":"document","to":"concept","verb":"instanceOf","description":"Scene belongs to beat"}],"rules":["Create person entities for characters with speaking roles","Link scenes to their locations and characters","Track scene order and act placement","Note character relationships and conflicts"]},"qualityGates":{"fileChecks":[{"path":"planning/beat-sheet.md","required":["Opening Image","Catalyst","Midpoint","All Is Lost","Finale"],"optional":["Theme Stated","B Story"]},{"path":"characters/protagonist.md","required":["Name","Want","Need"],"optional":["Backstory","Voice Notes"]}],"projectChecks":["Beat sheet has all major beats filled in","Protagonist has clear want and need defined","At least one scene exists for each act","Antagonist has believable motivation"],"exportReady":["All beat sheet beats are complete","Character arcs are defined","Script pages exist for key scenes"]},"sampleData":{"description":"Sample screenplay structure for a thriller film","entities":[{"type":"person","name":"Sarah Chen","properties":{"role":"protagonist","age":35,"occupation":"FBI Cyber Crimes Agent","want":"Catch the hacker who destroyed her career","need":"Learn to trust her instincts again","description":"Brilliant but disgraced agent seeking redemption.","status":"main"}},{"type":"person","name":"Marcus Webb","properties":{"role":"antagonist","age":40,"occupation":"Tech CEO","motivation":"Expose government surveillance overreach","description":"Idealistic hacker turned corporate titan with a secret.","status":"main"}}],"relationships":[{"from":"Sarah Chen","verb":"conflicts","to":"Marcus Webb"}]},"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"512Mi"},"oneClickCommand":"gcloud run deploy"}},"venue":{"bookingNumberPrefix":"SW","subdomainPrefix":"screenplay","features":{"blog":true,"cms":true,"customerAccounts":true,"website":true,"documents":true,"notifications":true,"analytics":false,"giftCards":false,"pos":false,"subscriptions":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"per-transaction","feeMode":"online-only"},"theme":{"primary":"oklch(0.25 0.05 270)","bgBase":"oklch(0.96 0.005 270)","accent":"oklch(0.55 0.16 50)","textPrimary":"oklch(0.18 0.02 270)","displayFont":"Courier Prime","bodyFont":"Courier Prime"},"experienceTypes":[{"slug":"script-coverage","name":"Script Coverage","description":"Professional coverage of a full feature screenplay (up to 120 pages) — logline, synopsis, character breakdown, and a detailed reader notes report scored on concept, structure, character, dialogue, and marketability.","priceInCents":45000,"durationMinutes":30,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.45 0.12 270)","sessionAttributeDefinitions":[{"key":"genre","label":"Genre","type":"select","perGuest":false,"required":true,"options":["Drama","Comedy","Thriller","Horror","Action/Adventure","Sci-Fi","Fantasy","Romantic Comedy","Other"]},{"key":"pageCount","label":"Page Count","type":"text","perGuest":false,"required":true}]},{"slug":"writing-workshop","name":"Screenwriting Workshop","description":"A focused 2-hour workshop for up to 6 writers on a specific craft element: three-act structure, dialogue, visual storytelling, or building from premise to plot.","priceInCents":7500,"durationMinutes":120,"minGuests":2,"maxGuests":6,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.50 0.14 50)","sessionAttributeDefinitions":[{"key":"focus","label":"Workshop Focus","type":"select","perGuest":false,"required":true,"options":["Three-act structure","Dialogue","Visual storytelling","Premise to plot","Character & arc"]}]},{"slug":"story-consultation","name":"Story Consultation","description":"A 60-minute one-on-one session to diagnose story problems, develop your premise, or break your second act. Includes a written follow-up summary.","priceInCents":15000,"durationMinutes":60,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.38 0.08 270)","sessionAttributeDefinitions":[{"key":"storyChallenge","label":"Main Story Challenge","type":"text","perGuest":false,"required":false}]}],"staffRoles":[{"id":"script-reader","label":"Script Reader","defaultCapabilities":["checkin","pos","cms","notifications"]},{"id":"writing-coach","label":"Writing Coach","defaultCapabilities":["checkin","pos"]}],"chatSuggestions":[{"label":"Get script coverage","message":"I'd like professional coverage on my screenplay. How does it work?","emoji":"📝"},{"label":"Join a workshop","message":"Are there any upcoming screenwriting workshops I can attend?","emoji":"🎬"},{"label":"Story consultation","message":"I'm stuck on my script and need a story consultation. Can I book one?","emoji":"🧩"},{"label":"Start writing","message":"I have a story idea but don't know where to begin. Can you help?","emoji":"✍️"}]},"previewImageUrl":"kits/screenplay-writing/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"interactive-fiction","type":"soulcraft","role":"primary","status":"released","name":"Interactive Fiction","description":"Build branching narrative games with scenes, choices, and character state","longDescription":"A browser-based interactive fiction engine built on SvelteKit and Brainy. Design story scenes, build choice branches, track character flags and game state, and play your story in-browser. Brainy stores the entire story graph — characters, scenes, items, and state transitions — so every choice, consequence, and ending lives as a first-class node you can visualise, query, and evolve. Perfect for choose-your-own-adventure, text adventures, and visual novel prototypes.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"📖","tags":["interactive fiction","game","branching narrative","choose your own adventure","storytelling","text adventure","visual novel"],"variables":[{"key":"storyTitle","label":"Story Title","description":"The title displayed on the cover screen and in the browser tab","type":"string","required":true,"example":"The Verdant Labyrinth"},{"key":"storyGenre","label":"Story Genre","description":"The genre of your story — sets the AI's default tone and vocabulary","type":"string","required":false,"example":"dark fantasy","default":"adventure"},{"key":"protagonistName","label":"Protagonist Name","description":"The default name of the player character (can be overridden at game start)","type":"string","required":false,"example":"Kira","default":"Traveller"},{"key":"startingSceneId","label":"Starting Scene ID","description":"The slug of the first scene the player enters when starting a new game","type":"string","required":false,"example":"scene-arrival","default":"scene-start"}],"shared":{"industry":"games-entertainment","category":"games","glossary":{"branch":"A narrative path created by a specific choice — the story follows one branch and ignores others based on what the player picked.","node":"A scene or decision point in the story graph — every scene and every choice is a node connected by directed edges.","flag":"A boolean game state variable that records something that happened in the story (e.g. foundKey: true) and can gate future choices or dialogue.","game state":"The full snapshot of a player's progress — current scene, flags set, items held, and any numeric variables — that persists between sessions.","consequence":"A change to the world or character that results from a choice, such as gaining an item, triggering a flag, or unlocking a scene.","dead end":"A scene with no choices and no ending resolution — a design mistake that leaves the player with nowhere to go.","convergence point":"A scene that multiple branches lead into, used to reunite diverged story paths without duplicating content."},"aiExpertise":["branching narrative structure and pacing","character arc design and motivation","choice consequence design and player agency","game state management and flag-based gating","scene writing for interactive media","dead end detection and story graph repair","convergence and merge patterns in branching narratives"],"dataModelHints":["scene","choice","character","item","game_state","ending"],"dataModel":{"entities":[{"domain":"scene","type":"Document","description":"A single moment in the story — descriptive prose, ambient detail, and the set of choices presented to the player. May set or check flags.","products":{"workshop":{"view":"board","icon":"🎬"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"choice","type":"Event","description":"A player decision point within a scene. Has display text, a destination scene, optional prerequisites (flags/items), and optional consequences (flag sets, item grants).","products":{"workshop":{"view":"graph","icon":"🔀"},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"character","type":"Person","description":"A story character — protagonist, NPC, or antagonist — with a name, description, traits, and optional stat block. Tracks items held.","products":{"workshop":{"view":"gallery","icon":"🧑"},"academy":{"mapsTo":"learner","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"item","type":"Thing","description":"An object a character can hold, use, or give. May unlock choices or scenes when present in the player's inventory.","products":{"workshop":{"view":"gallery","icon":"🎒"},"venue":{"mapsTo":"InventoryItemMeta","pos":false}}},{"domain":"game_state","type":"Concept","description":"A snapshot of all flags and variables at a given point in the story. Used to gate choices and unlock conditional scenes.","products":{"workshop":{"view":"graph","icon":"⚙️"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}},{"domain":"ending","type":"Document","description":"A story conclusion — good, bad, or neutral — that terminates the game loop and presents a final message. Links back to the flags and choices that led to it.","products":{"workshop":{"view":"board","icon":"🏁"},"academy":{"mapsTo":"learning-artifact","assessable":true}}}],"relationships":[{"from":"scene","to":"choice","verb":"Contains","description":"Scene presents one or more choices to the player."},{"from":"choice","to":"scene","verb":"LeadsTo","description":"Choice navigates the player to the destination scene when selected."},{"from":"character","to":"item","verb":"Holds","description":"Character carries an item in their inventory that may unlock choices or scenes."},{"from":"scene","to":"game_state","verb":"Modifies","description":"Scene sets, clears, or checks game state flags when entered or exited."},{"from":"choice","to":"game_state","verb":"Modifies","description":"Choice sets consequences — flags or item grants — that alter game state when taken."},{"from":"scene","to":"character","verb":"References","description":"Scene features one or more characters through dialogue, description, or interaction."}]},"suggestions":[{"label":"Write a scene","prompt":"Help me write a new story scene with descriptive prose and two or three meaningful choices."},{"label":"Design a choice","prompt":"Help me design a choice that has a clear good option, a risky option, and a deceptive-looking bad option."},{"label":"Map the story graph","prompt":"Show me the current story graph — all scenes and how they connect through choices."},{"label":"Check for dead ends","prompt":"Analyse the story graph and flag any scenes with no choices and no ending resolution."},{"label":"Add a character","prompt":"Help me create a new supporting character with a name, motivation, and distinctive voice."},{"label":"Design an ending","prompt":"Help me write a satisfying ending for the path where the protagonist makes all the right choices."}]},"academy":{"skillPath":"game-design","level":"intermediate","learningObjectives":["Design a branching narrative structure with clear story beats, meaningful branches, and multiple endings","Write scenes with evocative prose that establishes tone and gives the player genuine agency","Track character and world state using flags and variables to gate choices believably","Identify and resolve dead ends, loops, and pacing problems in the story graph","Build a complete playable story from opening scene through all major branches to resolved endings"],"assessmentTypes":["demo","portfolio"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"exploratory","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"fiction-game-designer"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are a narrative game designer helping creators build compelling branching stories with meaningful choices and satisfying endings. You understand story structure, player agency, and the technical constraints of flag-based game state.","expertise":["branching narrative structure and pacing","character arc design and motivation","choice consequence design and player agency","game state management and flag-based gating","scene writing for interactive media","dead end detection and story graph repair","convergence and merge patterns in branching narratives"],"tone":"collaborator","avoidances":["Don't write choices that are obviously correct — every option should feel like a real decision","Don't let the graph grow so wide that maintaining continuity becomes impossible — recommend convergence points","Don't write more flags than the story actually needs — unnecessary state is a maintenance burden"]},"workspaceConfig":{"paradigm":"creative","defaultTab":"app","defaultView":"graph"},"graphGuidance":{"conceptCreation":{"triggers":["new scene or location described","player choice or decision point designed","character introduced or named","item or inventory object mentioned","story ending or resolution written","flag or game state variable defined"],"typeMapping":{"scene":"document","location":"document","choice":"event","decision":"event","character":"person","protagonist":"person","npc":"person","item":"thing","object":"thing","ending":"document","game state":"concept","flag":"concept"}},"relationshipPatterns":[{"from":"scene","to":"choice","verb":"Contains","description":"Scene presents choices to the player"},{"from":"choice","to":"scene","verb":"LeadsTo","description":"Choice takes the player to the destination scene"},{"from":"character","to":"item","verb":"Holds","description":"Character carries item in inventory"}],"rules":["Every scene (except endings) must have at least one choice connected to another scene","Every ending must have at least one choice that leads into it","Flag nodes should be reused across scenes — one flag, many references","Items must be linked to the character that holds them before they can gate a choice"]},"qualityGates":{"projectChecks":["App starts and the starting scene loads correctly","Player can make a choice and navigate to the destination scene","At least one flag is set by a choice and checked by a later scene","At least one item exists and gates a player choice","At least one ending scene is reachable via a complete play-through","No dead-end scenes exist in the graph"],"exportReady":["No TypeScript errors","All scenes have prose and at least one choice or an ending resolution","Story is completable from start to at least one ending"]},"templateMetadata":{"identifyByStructure":true,"runnable":true,"runnableCommand":"npm run dev"},"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"256Mi"},"oneClickCommand":"gcloud run deploy"},"publishConfig":{"contentType":"app","publishable":true},"sampleData":{"description":"A starter story with two scenes, three choices, and one branching path to demonstrate the engine","entities":[{"type":"person","name":"The Traveller","properties":{"role":"protagonist","description":"A wanderer who has arrived at the edge of the Verdant Labyrinth with nothing but a worn map and a question.","traits":["curious","cautious"]}},{"type":"document","name":"The Gate","properties":{"sceneId":"scene-start","prose":"You stand before a gate of twisted iron, overgrown with luminous moss. Two paths split before you — the wide road to the left, and a narrow gap in the hedge to the right. A crow watches from the arch above.","status":"published"}},{"type":"event","name":"Take the wide road","properties":{"choiceText":"Take the wide road","destinationSceneId":"scene-road","consequence":null}},{"type":"thing","name":"Worn Map","properties":{"description":"A folded map with faded annotations. One corner shows a landmark labelled 'the hollow oak'.","acquiredAt":"scene-start"}}],"relationships":[{"from":"The Gate","verb":"Contains","to":"Take the wide road"},{"from":"The Traveller","verb":"Holds","to":"Worn Map"}]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Story Graph","view":"graph","entityTypes":["scene","choice","ending"],"description":"Visual map of every scene and how choices connect them"},{"name":"Scene Editor","view":"board","entityTypes":["scene","ending"],"description":"Browse and edit scenes with their prose and choice lists"},{"name":"Character & Item Roster","view":"gallery","entityTypes":["character","item"],"description":"All characters and inventory items with their current holders"},{"name":"Game State Flags","view":"stats","entityTypes":["game_state"],"description":"All flags defined in the story with which scenes set and check them"}]}},"venue":{"bookingNumberPrefix":"IF","subdomainPrefix":"ifiction","features":{"blog":true,"cms":true,"customerAccounts":true,"website":true,"documents":true,"notifications":true,"subscriptions":true,"giftCards":false,"pos":false,"analytics":true,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"per-transaction","feeMode":"online-only"},"theme":{"primary":"oklch(0.30 0.12 295)","bgBase":"oklch(0.10 0.04 260)","accent":"oklch(0.65 0.18 55)","textPrimary":"oklch(0.92 0.02 260)","displayFont":"VT323","bodyFont":"Space Mono"},"experienceTypes":[{"slug":"play-through","name":"Guided Play-Through","description":"A live facilitated play-through of a featured interactive fiction story. The author guides 10-20 players through key decision points and reveals design choices behind the narrative branches.","priceInCents":1500,"durationMinutes":90,"minGuests":5,"maxGuests":20,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.48 0.14 295)","sessionAttributeDefinitions":[{"key":"storyTitle","label":"Story Title","type":"text","perGuest":false,"required":true}]},{"slug":"if-writing-workshop","name":"IF Writing Workshop","description":"A hands-on workshop on branching narrative design. Learn to map player choice trees, write for multiple endings, and design meaningful consequences.","priceInCents":6000,"durationMinutes":120,"minGuests":2,"maxGuests":8,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.55 0.16 55)","sessionAttributeDefinitions":[{"key":"experience","label":"IF Experience Level","type":"select","perGuest":true,"required":false,"options":["Complete beginner","Tried it, need help","Some experience","Experienced writer"]}]}],"staffRoles":[{"id":"if-author","label":"IF Author","defaultCapabilities":["checkin","pos","cms","analytics"]},{"id":"moderator","label":"Session Moderator","defaultCapabilities":["checkin","cms"]}],"chatSuggestions":[{"label":"Play a story","message":"What interactive stories are available to play right now?","emoji":"🎮"},{"label":"Attend a session","message":"Are there any upcoming guided play-through sessions?","emoji":"🎟️"},{"label":"Write my own story","message":"I want to write an interactive fiction story. Where do I start?","emoji":"✍️"},{"label":"Subscribe for new stories","message":"How do I get notified when new stories drop?","emoji":"📬"}]},"previewImageUrl":"kits/interactive-fiction/images/preview.webp"},{"id":"canvas-and-corks","type":"soulcraft","role":"primary","status":"released","name":"Canvas & Corks","description":"Paint & sip studio. Guests follow a guided artist through a featured painting while enjoying wine, cocktails, or mocktails. Classes for all skill levels — no experience required.","longDescription":"A paint-and-sip studio platform covering guided class bookings, private paint parties, instructor scheduling, and supply inventory. Supports memories, loyalty, and gift cards for repeat guests and occasion-driven groups.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🎨","tags":["paint","sip","wine","art","class","experience","party"],"previewImageUrl":"kits/canvas-and-corks/images/preview.webp","variables":[{"key":"businessName","label":"Business Name","description":"The name of your studio (e.g. \"Canvas & Corks\")","type":"string","required":true,"example":"Canvas & Corks","default":"Canvas & Corks"},{"key":"tagline","label":"Tagline","description":"A short phrase describing your studio (shown under the logo)","type":"string","required":false,"example":"paint. sip. create.","default":"paint. sip. create."},{"key":"locationName","label":"Location Name","description":"The display name for this specific location (e.g. \"Canvas & Corks Midtown\")","type":"string","required":true,"example":"Canvas & Corks Midtown"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this location used in booking links (e.g. \"midtown\")","type":"string","required":true,"example":"midtown"},{"key":"address","label":"Street Address","description":"Street address of your studio","type":"address","required":true,"example":"450 Park Ave S"},{"key":"city","label":"City","description":"City where your studio is located","type":"string","required":true,"example":"New York"},{"key":"state","label":"State / Province","description":"Two-letter state or province code","type":"string","required":true,"example":"NY"},{"key":"zip","label":"ZIP / Postal Code","type":"string","required":true,"example":"10016"},{"key":"timezone","label":"Timezone","description":"IANA timezone for this location (used for scheduling)","type":"timezone","required":true,"example":"America/New_York","default":"America/New_York"},{"key":"phone","label":"Phone Number","type":"phone","required":true,"example":"(212) 555-0194"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"hello@canvasandcorks.com"},{"key":"instagram","label":"Instagram Handle","description":"Instagram username without the @","type":"string","required":false,"example":"canvasandcorks"},{"key":"facebook","label":"Facebook Page","description":"Facebook page name or URL slug","type":"string","required":false,"example":"CanvasAndCorks"},{"key":"tiktok","label":"TikTok Handle","description":"TikTok username without the @","type":"string","required":false,"example":"canvasandcorks"},{"key":"maxCapacity","label":"Studio Capacity","description":"Maximum number of painters at easels at one time","type":"number","required":false,"example":"20","default":"20"},{"key":"featuredArtist","label":"Featured Artist / Instructor Name","description":"Name of the lead instructor or resident artist (shown on About page)","type":"string","required":false,"example":"Sofia Reyes"}],"shared":{"industry":"paint-and-sip","category":"creative","glossary":{"easel":"An adjustable stand holding a canvas upright at the painter's workstation","medium":"The type of paint used — acrylic, watercolor, oil, or mixed media","palette":"A flat surface for mixing paints before applying to canvas","featured painting":"The specific artwork guests reproduce during a guided class session","BYOB":"Bring Your Own Bottle — a class format where guests supply their own wine or beverages"},"aiExpertise":["painting instruction and art technique guidance","studio scheduling and class capacity management","beverage service and alcohol licensing","private event and birthday party planning","art supply inventory and COGS tracking"],"dataModelHints":["booking","experience","time_slot","staff","customer","inventory_item"],"dataModel":{"entities":[{"domain":"location","type":"Location","description":"A physical Canvas & Corks paint studio location with easel stations and beverage service.","products":{"workshop":{"view":"graph","icon":"📍"},"venue":{"mapsTo":"LocationMeta","pos":false}}},{"domain":"booking","type":"Event","description":"A guest reservation for a guided paint class, private paint party, kids class, or BYOB date night.","products":{"workshop":{"view":"board","icon":"📅"},"venue":{"mapsTo":"BookingMeta","pos":true},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"time_slot","type":"Event","description":"A scheduled class session with a featured painting, instructor assignment, and remaining easel capacity.","products":{"workshop":{"view":"timeline","icon":"🕐"},"venue":{"mapsTo":"TimeSlotMeta","pos":false}}},{"domain":"experience","type":"Product","description":"A class format such as Guided Paint Class, Private Paint Party, Kids Paint Class, or BYOB Date Night.","products":{"workshop":{"view":"gallery","icon":"🎨"},"venue":{"mapsTo":"ExperienceMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"customer","type":"Person","description":"A guest painter or returning student, potentially part of a group booking or private party.","products":{"workshop":{"view":"board","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"staff","type":"Person","description":"A Paint Instructor who leads guided class sessions, or a Studio Host who handles check-in and service.","products":{"workshop":{"view":"board","icon":"🧑‍🎨"},"venue":{"mapsTo":"StaffMeta","pos":false},"academy":{"mapsTo":"instructor","assessable":false}}},{"domain":"inventory_item","type":"Thing","description":"An art supply item such as canvases, acrylic paints, brushes, palettes, aprons, or wine and beverages.","products":{"workshop":{"view":"graph","icon":"📦"},"venue":{"mapsTo":"InventoryItemMeta","pos":false},"academy":{"mapsTo":"material","assessable":false}}},{"domain":"gift_card","type":"Thing","description":"A digital or physical gift card redeemable for any paint class or private party booking.","products":{"workshop":{"view":"board","icon":"🎁"},"venue":{"mapsTo":"GiftCardMeta","pos":true}}},{"domain":"loyalty_account","type":"Person","description":"A returning painter's loyalty account tracking class attendance points and tier benefits.","products":{"workshop":{"view":"stats","icon":"⭐"},"venue":{"mapsTo":"LoyaltyAccountMeta","pos":false}}},{"domain":"transaction","type":"Measurement","description":"A revenue or refund record for a class booking or add-on purchase, always stored in cents.","products":{"workshop":{"view":"timeline","icon":"💳"},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"content_page","type":"Document","description":"A CMS-managed page such as About Our Studio, FAQ, or Private Party Information.","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 featured paintings, artist spotlights, or studio event recaps.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"customer","to":"booking","verb":"Creates","description":"Guest registers for a paint class or books a private paint party."},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific class format with a featured painting to recreate."},{"from":"booking","to":"time_slot","verb":"ParticipatesIn","description":"Booking occupies seats in a specific class session slot."},{"from":"experience","to":"time_slot","verb":"OccursAt","description":"A class format is scheduled at session slots available for guest enrollment."},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Each class consumes canvases, paints, and brushes per guest for COGS tracking.","products":{"venue":{"triggers":"inventoryDeduction"}}},{"from":"staff","to":"time_slot","verb":"ParticipatesIn","description":"A Paint Instructor is assigned to lead a specific class session."},{"from":"transaction","to":"booking","verb":"References","description":"Payment or refund record links back to the class booking it covers."}]},"suggestions":[{"label":"Upcoming class schedule","prompt":"Show me upcoming classes with current enrollment and remaining capacity"},{"label":"Top paintings by bookings","prompt":"Which featured paintings have driven the most bookings this quarter?"},{"label":"Private party pipeline","prompt":"Show me all upcoming private paint parties and their deposit status"},{"label":"Supply reorder check","prompt":"Which paints, canvases, or brushes are running low and need reordering?"}]},"workshop":{"aiPersona":{"role":"You are the AI assistant for Canvas & Corks — a paint and sip studio. You help studio managers fill classes, run private events, and keep supplies stocked. You understand the creative hospitality business inside and out.","expertise":["paint and sip class management and scheduling","art instruction and featured painting selection","private event coordination and upsells","beverage program and supply inventory","customer retention and loyalty programs"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["class or painting session mentioned","instructor or artist referenced","painting name or featured artwork discussed","supply or paint color referenced","private party or group booking introduced"],"typeMapping":{"booking":"event","class":"event","painting session":"event","instructor":"person","customer":"person","guest":"person","canvas":"thing","paint":"thing","brush":"thing","experience":"product","transaction":"measurement"}},"relationshipPatterns":[{"from":"customer","to":"booking","verb":"Creates","description":"Customer registers for a class or books a private party"},{"from":"staff","to":"booking","verb":"ParticipatesIn","description":"Paint instructor leads the class session"},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific class type with a featured painting"},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Paints, canvases, and brushes consumed per class"}],"rules":["Every class booking must have a featured painting name recorded","Skill level should be collected per guest where possible","Private party bookings should capture color palette preference"]},"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"graph"},"qualityGates":{"projectChecks":["Each class experience type has a featured painting and medium defined","Instructor schedule is populated for the next 4 weeks","Canvas and paint inventory is linked to consuming experiences"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Class Schedule","view":"board","entityTypes":["time_slot","booking"],"description":"Upcoming classes with enrollment counts and capacity"},{"name":"Painting Gallery","view":"gallery","entityTypes":["event"],"description":"Browse featured paintings by class with booking history"},{"name":"Revenue Timeline","view":"timeline","entityTypes":["transaction"],"description":"Revenue trends across class types and private events"},{"name":"Instructor Schedule","view":"board","entityTypes":["staff","time_slot"],"description":"Instructor assignments across upcoming class sessions"},{"name":"Supply Network","view":"graph","entityTypes":["inventory_item","experience"],"description":"Graph of art supplies consumed by each experience type"}]}},"academy":{"skillPath":"painting-fundamentals","level":"beginner","learningObjectives":["Brush technique, pressure control, and stroke variation","Color mixing theory and achieving desired hues from primaries","Composition principles and layout on canvas","Acrylic layering, drying, and blending techniques"],"assessmentTypes":["hands-on","portfolio"],"mode":"classroom","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":false,"voiceEnabled":true},"certification":{"requiresHumanCertifier":true,"aiCertifierAllowed":false,"lineageEnabled":true,"certificationSlug":"canvas-painter"},"gamification":{"enabled":true,"achievements":["connector","streak","bridge-builder"],"streaks":true,"leaderboard":true},"cohort":{"maxSize":20,"durationDays":42,"fixedStart":true}},"venue":{"bookingNumberPrefix":"CC","subdomainPrefix":"canvas","features":{"animals":false,"adoption":false,"memories":true,"loyalty":true,"giftCards":true,"waivers":false,"blog":true,"pos":true,"cms":true,"partners":true,"franchise":true,"customerAccounts":true},"theme":{"primary":"oklch(0.45 0.12 10)","bgBase":"oklch(0.97 0.01 75)","accent":"oklch(0.70 0.08 55)","textPrimary":"oklch(0.25 0.03 30)","displayFont":"Playfair Display","bodyFont":"Inter"},"experienceTypes":[{"slug":"guided-paint-class","name":"Guided Paint Class","description":"Follow our artist step-by-step through a featured painting while enjoying your favorite drink. All skill levels welcome — we provide everything you need.","priceInCents":4500,"durationMinutes":120,"minGuests":1,"maxGuests":20,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.65 0.10 10)","imageUrl":"kits/canvas-and-corks/images/guided-paint-class.jpg","sessionAttributeDefinitions":[{"key":"paintingName","label":"Painting Name","type":"text","perGuest":false,"required":true},{"key":"skillLevel","label":"Skill Level","type":"select","perGuest":true,"options":["First timer","Beginner","Intermediate","Advanced"],"required":false},{"key":"medium","label":"Medium","type":"select","perGuest":false,"options":["Acrylic","Watercolor","Oil","Mixed media"],"required":false}]},{"slug":"private-paint-party","name":"Private Paint Party","description":"Reserve the whole studio for your group! Choose any painting from our catalog, bring your own food, and we handle the rest. Perfect for birthdays, bachelorettes, and team building.","priceInCents":5500,"durationMinutes":150,"minGuests":8,"maxGuests":20,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.55 0.12 350)","imageUrl":"kits/canvas-and-corks/images/private-paint-party.jpg","pricingTiers":[{"minGuests":8,"maxGuests":12,"pricePerPersonInCents":5500},{"minGuests":13,"maxGuests":16,"pricePerPersonInCents":5000},{"minGuests":17,"maxGuests":20,"pricePerPersonInCents":4500}],"sessionAttributeDefinitions":[{"key":"paintingName","label":"Painting Name","type":"text","perGuest":false,"required":true},{"key":"skillLevel","label":"Skill Level","type":"select","perGuest":true,"options":["First timer","Beginner","Intermediate","Advanced"],"required":false},{"key":"colorPalette","label":"Color Palette","type":"select","perGuest":false,"options":["Warm tones","Cool tones","Earth tones","Bright & bold","Monochrome","Pastel"],"required":false}]},{"slug":"kids-paint-class","name":"Kids Paint Class","description":"A fun, age-appropriate painting session for little artists (ages 5–12). All supplies provided. Parents are welcome to join — just book an adult ticket too!","priceInCents":2800,"durationMinutes":90,"minGuests":1,"maxGuests":16,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.72 0.12 55)","imageUrl":"kits/canvas-and-corks/images/kids-paint-class.jpg","sessionAttributeDefinitions":[{"key":"paintingName","label":"Painting Name","type":"text","perGuest":false,"required":true},{"key":"ageRange","label":"Age Range","type":"select","perGuest":false,"options":["5–7","8–10","11–12","Mixed ages"],"required":false}]},{"slug":"byob-date-night","name":"BYOB Date Night","description":"Bring your own bottle and paint side-by-side with your partner. Two coordinating paintings that look stunning displayed together. Perfect for anniversaries and date nights.","priceInCents":4000,"durationMinutes":120,"minGuests":2,"maxGuests":2,"requiresWaiver":false,"isCombo":false,"sortOrder":3,"color":"oklch(0.60 0.10 350)","imageUrl":"kits/canvas-and-corks/images/byob-date-night.jpg","sessionAttributeDefinitions":[{"key":"paintingName","label":"Painting Set Name","type":"text","perGuest":false,"required":true},{"key":"medium","label":"Medium","type":"select","perGuest":false,"options":["Acrylic","Watercolor","Oil"],"required":false}]}],"inventoryCategories":[{"id":"canvas","label":"Canvases","icon":"🖼️"},{"id":"paint","label":"Acrylic Paints","icon":"🎨"},{"id":"brush","label":"Brushes","icon":"🖌️"},{"id":"easel","label":"Easels & Boards","icon":"🪵"},{"id":"apron","label":"Aprons","icon":"👘"},{"id":"palette","label":"Palettes & Trays","icon":"🎭"},{"id":"beverage","label":"Wine & Beverages","icon":"🍷"},{"id":"supplies","label":"Supplies & Finishing","icon":"📦"},{"id":"retail","label":"Retail Products","icon":"🛍️"}],"staffRoles":[{"id":"paint-instructor","label":"Paint Instructor","defaultCapabilities":["checkin","pos","inventory-view","session-log"]},{"id":"studio-host","label":"Studio Host","defaultCapabilities":["checkin","pos"]}],"chatSuggestions":[{"label":"Book a class","message":"I'd like to book a painting class. What options do you have?","emoji":"🎨"},{"label":"Private party info","message":"Tell me about booking a private paint party for my group.","emoji":"🥂"},{"label":"What should I wear?","message":"What should I wear to a paint class? Will I get messy?","emoji":"👘"},{"label":"Gift cards","message":"I'd like to buy a gift card. What are my options?","emoji":"🎁"}],"inventoryLevelDetection":"vision","fees":{"billingModel":"per-transaction","feeMode":"all-channels"}}},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"business-plan","type":"soulcraft","role":"primary","status":"released","name":"Business Plan","description":"Comprehensive business plan for startups, funding applications, or strategic planning","longDescription":"Create a professional business plan with all the sections banks, investors, and accelerators expect. Includes financial projections templates, market analysis frameworks, and AI assistance for strategic thinking. Perfect for SBA loans, startup accelerators, or internal planning.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"📋","tags":["business","strategy","planning","startup","funding","sba","loan"],"variables":[{"key":"projectName","label":"Business Name","description":"The name of your business","type":"string","required":true,"example":"Acme Inc"},{"key":"industry","label":"Industry","description":"Your primary industry","type":"string","required":false,"example":"SaaS / E-commerce / Healthcare"},{"key":"stage","label":"Business Stage","description":"Current stage of the business","type":"string","required":false,"example":"Startup"},{"key":"planPurpose","label":"Plan Purpose","description":"What is this plan for? (funding, bank loan, internal planning)","type":"string","required":false,"example":"Seed funding"}],"shared":{"industry":"business-strategy","category":"business","glossary":{},"aiExpertise":["Business strategy and planning","Financial modeling and projections","Market analysis and research","Competitive analysis","Investor and lender requirements"],"dataModelHints":["document","thing","event","topic"],"dataModel":{"entities":[{"domain":"section","type":"Document","description":"A named section of the business plan document","products":{"workshop":{"view":"tree","icon":"📄"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"competitor","type":"Concept","description":"A competing business in the same market","products":{"workshop":{"view":"gallery","icon":"🏢"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"market-segment","type":"Concept","description":"A defined group of target customers","products":{"workshop":{"view":"graph","icon":"🎯"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"risk","type":"Concept","description":"A potential threat to business success with mitigation","products":{"workshop":{"view":"board","icon":"⚠️"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"milestone","type":"Event","description":"A key business goal or launch event on the timeline","products":{"workshop":{"view":"timeline","icon":"🏁"},"academy":{"mapsTo":"practice-session","assessable":true},"venue":{"mapsTo":"BookingMeta","pos":false}}}],"relationships":[{"from":"section","to":"section","verb":"Precedes","description":"Document section ordering"},{"from":"section","to":"risk","verb":"Analyzes","description":"Section covers this risk or topic"},{"from":"competitor","to":"market-segment","verb":"Targets","description":"Competitor serves this market segment"}]},"suggestions":[{"label":"Write executive summary","prompt":"Help me write the executive summary section"},{"label":"Analyze the market","prompt":"Help me research and write the market analysis section"},{"label":"Build financial projections","prompt":"Help me create financial projections for my business plan"},{"label":"Define value proposition","prompt":"Help me articulate my unique value proposition"},{"label":"Check completeness","prompt":"Check my business plan for completeness and identify missing sections"},{"label":"Review plan structure","prompt":"Show me my business plan structure and what sections need work"}]},"academy":{"skillPath":"entrepreneurship","level":"intermediate","learningObjectives":["Conduct a market sizing analysis using TAM/SAM/SOM methodology with cited sources","Build a three-year financial model with revenue projections, cost structure, and break-even analysis","Write an executive summary that captures the opportunity, solution, and ask in under two pages","Perform a competitive landscape assessment and articulate a defensible value proposition","Structure a funding request with a specific use-of-funds breakdown"],"assessmentTypes":["portfolio","peer-review"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"business-planner"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"advanced","templateTier":4,"aiPersona":{"role":"You are an expert business strategist and financial advisor helping entrepreneurs create professional business plans for investors, banks, and accelerators.","expertise":["Business plan writing and structure","Financial projections and modeling","Market analysis and sizing","Competitive landscape assessment","SBA and investor requirements"],"tone":"mentor"},"workspaceConfig":{"paradigm":"writer","defaultTab":"edit","defaultView":"tree","defaultFile":"sections/01-executive-summary.md","fallbackFiles":["README.md"],"layout":{"leftDock":"files","rightDock":"properties"},"onboarding":{"showGuide":true,"highlightFeatures":["tree","export","ai-chat"],"suggestedActions":["Start with Company Description section","Complete Market Analysis with real research data","Build financial projections for 3-5 years","Write Executive Summary last (it summarizes everything)","Use AI Chat to help refine each section"]}},"graphGuidance":{"conceptCreation":{"triggers":["User defines a new market segment","User identifies a competitor","User creates a financial projection","User defines a risk"],"typeMapping":{"section":"document","competitor":"organization","market-segment":"category","risk":"concept","milestone":"event"}},"relationshipPatterns":[{"from":"document","to":"document","verb":"precedes","description":"Section order"},{"from":"document","to":"concept","verb":"analyzes","description":"Section covers topic"},{"from":"organization","to":"category","verb":"targets","description":"Competitor serves market"}]},"qualityGates":{"fileChecks":[{"path":"sections/01-executive-summary.md","required":["Business Overview","Market Opportunity","Financial Summary","Funding Request"],"optional":["Mission Statement"]},{"path":"sections/03-market-analysis.md","required":["Market Size","Target Market","Competition"],"optional":["SWOT","Industry Trends"]},{"path":"financials/projections.md","required":["Revenue Projections","Cost Structure","P&L"],"optional":["Cash Flow","Break-even"]}],"projectChecks":["All 9 main sections have content","Market size is calculated with sources","Financial projections cover 3 years","Funding request is specific with use of funds","Executive summary is complete (written last)"],"exportReady":["All sections complete","Financial tables formatted","Sources cited","Executive summary finalized"]},"exporters":[{"id":"business-plan-pdf","name":"Business Plan (PDF)","description":"Professional PDF for investors and banks","icon":"📄","format":"pdf","category":"document","handler":"wdoc-pdf","options":{"includeFiles":["sections/*.md","financials/*.md"],"combineFiles":true,"formatting":{"font":"Georgia","fontSize":11,"lineSpacing":1.5}}},{"id":"business-plan-docx","name":"Business Plan (Word)","description":"Editable Word document","icon":"📝","format":"docx","category":"document","handler":"wdoc-docx","options":{"includeFiles":["sections/*.md","financials/*.md"],"combineFiles":true}},{"id":"executive-summary-pdf","name":"Executive Summary Only","description":"Standalone executive summary","icon":"📋","format":"pdf","category":"document","handler":"wdoc-pdf","options":{"includeFiles":["sections/01-executive-summary.md"]}},{"id":"business-plan-bundle","name":"Complete Bundle","description":"All documents including appendix","icon":"📦","format":"zip","category":"archive","handler":"markdown-bundle","options":{"includeFiles":["**/*.md"],"preserveStructure":true}}],"exportStructure":{"combineStrategy":"graph-order","orderRelationship":"precedes","includePatterns":["sections/*.md","financials/*.md"],"excludePatterns":["appendix/*","research/*"]},"exportPreferences":{"defaultExporter":"business-plan-pdf","fileNameTemplate":"{{projectName}}-business-plan-{{date}}","instructions":"Write the Executive Summary last after all other sections are complete."}},"venue":{"bookingNumberPrefix":"BP","subdomainPrefix":"bizplan","features":{"customerAccounts":true,"apps":true,"website":true,"subscriptions":true,"notifications":true,"analytics":true,"cms":false,"blog":false,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.40 0.14 215)","bgBase":"oklch(0.99 0.005 255)","accent":"oklch(0.58 0.16 165)","textPrimary":"oklch(0.20 0.03 255)","displayFont":"Inter","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Start my business plan","message":"I need to write a business plan. Where do I begin?","emoji":"📋"},{"label":"Financial projections","message":"Help me build financial projections for my business plan.","emoji":"💰"},{"label":"Competitor analysis","message":"How do I research and document my competitors?","emoji":"🔍"},{"label":"Manage subscription","message":"I'd like to manage my account and subscription.","emoji":"💳"}]},"previewImageUrl":"kits/business-plan/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"family-tree","type":"soulcraft","role":"primary","status":"released","name":"Family Tree","description":"Visual family tree with person profiles and relationship mapping","longDescription":"Create a beautiful, interactive family tree that automatically visualizes in the graph view. Each person gets their own profile document, and all relationships (parent-child, spouses, siblings) are connected in the knowledge graph. Perfect for genealogy research, family history projects, or understanding complex family dynamics.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"👪","tags":["family","genealogy","relationships","visualization"],"variables":[{"key":"familyName","label":"Family Name","description":"The name of your family","type":"string","required":true,"example":"The Smith Family"},{"key":"location","label":"Primary Location","description":"Where the family is primarily based","type":"string","required":false,"example":"California, USA"}],"shared":{"industry":"personal-productivity","category":"knowledge","glossary":{"generation":"A group of people born and living at around the same time","lineage":"The direct line of descent from an ancestor"},"aiExpertise":["Genealogy research methods","Family history documentation","Relationship mapping","Oral history preservation","Ancestral record analysis"],"dataModelHints":["person","event","thing","topic"],"dataModel":{"entities":[{"domain":"person","type":"Person","description":"A family member with biographical details and dates","products":{"workshop":{"view":"gallery","icon":"🧑"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"family","type":"Concept","description":"A nuclear family unit grouping related members","products":{"workshop":{"view":"graph","icon":"🏡"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}},{"domain":"event","type":"Event","description":"A significant life event such as birth, marriage, or death","products":{"workshop":{"view":"timeline","icon":"📅"},"academy":{"mapsTo":"practice-session","assessable":true},"venue":{"mapsTo":"BookingMeta","pos":false}}},{"domain":"location","type":"Location","description":"A place associated with family history such as birthplace or residence","products":{"workshop":{"view":"graph","icon":"📍"}}}],"relationships":[{"from":"person","to":"person","verb":"ChildOf","description":"Parent-child relationship"},{"from":"person","to":"person","verb":"SpouseOf","description":"Marriage or partnership"},{"from":"person","to":"person","verb":"SiblingOf","description":"Brother or sister relationship"},{"from":"person","to":"family","verb":"MemberOf","description":"Person belongs to this family unit"},{"from":"person","to":"location","verb":"BornIn","description":"Person's birthplace"},{"from":"person","to":"event","verb":"ParticipatedIn","description":"Person took part in this life event"}]},"suggestions":[{"label":"Add a family member","prompt":"Help me add a new family member to the tree"},{"label":"Record a story","prompt":"Help me record a family story or memory"},{"label":"Define relationships","prompt":"Help me map out the relationships between family members"},{"label":"Create a timeline","prompt":"Help me create a timeline of important family events"},{"label":"Find connections","prompt":"Show me how family members are connected across generations"},{"label":"Explore the tree","prompt":"Show me my family tree in the tree view"}]},"academy":{"skillPath":"genealogy","level":"beginner","learningObjectives":["Record biographical profiles for family members with birth, marriage, and death data","Map kinship relationships (parent-child, spouse, sibling) across multiple generations","Identify and document primary sources for key genealogical facts","Construct a multi-generation family tree and interpret lines of descent"],"assessmentTypes":["portfolio"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"genealogist"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"beginner","templateTier":4,"aiPersona":{"role":"You are an expert genealogist and family historian helping people document, research, and visualize their family trees and heritage.","expertise":["Genealogy research and documentation","Family history preservation","Relationship and kinship mapping","Historical records and archives","Oral history collection"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"creative","defaultTab":"explore","defaultView":"tree","defaultFile":"people/self.md","layout":{"leftDock":"concepts","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["tree","graph"],"suggestedActions":["Start with yourself and add immediate family","Add photos and bios to each person","Use Tree view for hierarchical view","Use Graph view to see all relationships"]}},"graphGuidance":{"conceptCreation":{"triggers":["When adding a new family member","When documenting a marriage or partnership","When identifying a new family branch","When recording important events (births, deaths, marriages)"],"typeMapping":{"person":"person","family member":"person","relative":"person","family":"organization","event":"event","location":"location","generation":"category"}},"relationshipPatterns":[{"from":"Person","to":"Person","verb":"childOf","description":"Parent-child relationship"},{"from":"Person","to":"Person","verb":"spouseOf","description":"Marriage or partnership"},{"from":"Person","to":"Person","verb":"siblingOf","description":"Brother or sister"},{"from":"Person","to":"Family","verb":"memberOf","description":"Belongs to family unit"},{"from":"Person","to":"Location","verb":"bornIn","description":"Birthplace"},{"from":"Person","to":"Location","verb":"livedIn","description":"Residence"},{"from":"Person","to":"Event","verb":"participatedIn","description":"Life event"}],"rules":["Every person should have parents documented (even if unknown)","Spouses link bidirectionally","Children link to both parents when known","Family units group nuclear families","Locations should be reused when they refer to the same place"]},"qualityGates":{"fileChecks":[{"path":"members/*.md","required":["Birth Date"],"optional":["Biography","Photos","Notes"]}],"projectChecks":["At least one generation is documented","Person profiles have relationship information","No orphan people (everyone connects to someone)","Key dates are recorded"],"exportReady":["All people have at least birth year","Relationships are documented for all members","Names are complete (not placeholders)","Sources are noted for key facts"]},"sampleData":{"description":"Sample family tree spanning four generations","entities":[{"type":"person","name":"Robert Mitchell Sr.","properties":{"birthDate":"1920-05-12","deathDate":"1998-11-03","birthPlace":"Boston, MA","description":"Family patriarch. Immigrated from Ireland as a child. Worked as a carpenter.","generation":1}},{"type":"person","name":"Eleanor Mitchell","properties":{"birthDate":"1924-08-20","deathDate":"2010-03-15","birthPlace":"Boston, MA","maidenName":"O'Brien","description":"Homemaker and community volunteer. Met Robert at a church social.","generation":1}}],"relationships":[{"from":"Robert Mitchell Sr.","verb":"worksWith","to":"Eleanor Mitchell"}]},"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"512Mi"},"oneClickCommand":"gcloud run deploy"}},"venue":{"bookingNumberPrefix":"FT","subdomainPrefix":"familytree","features":{"customerAccounts":true,"apps":true,"website":true,"subscriptions":true,"notifications":true,"analytics":true,"cms":false,"blog":false,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.42 0.08 40)","bgBase":"oklch(0.99 0.005 255)","accent":"oklch(0.58 0.10 15)","textPrimary":"oklch(0.20 0.03 255)","displayFont":"Merriweather","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Start my family tree","message":"I want to build my family tree. How do I get started?","emoji":"🌳"},{"label":"Add family members","message":"How do I add relatives and their details to my tree?","emoji":"👪"},{"label":"Share with family","message":"How do I share my family tree with relatives?","emoji":"📤"},{"label":"Manage subscription","message":"I'd like to manage my account and subscription.","emoji":"💳"}]},"previewImageUrl":"kits/family-tree/images/preview.webp"},{"id":"axe-house","type":"soulcraft","role":"primary","status":"released","name":"The Axe House","description":"Axe throwing venue. Throw axes, drink beer, hit the bullseye, and forget about your week.","longDescription":"A full-featured platform for axe throwing venues managing lane bookings, coached sessions, league nights, and private events. Handles waivers, POS, leaderboards, and corporate team builds in one system.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🪓","tags":["axe throwing","sport","party","team building","league","experience"],"previewImageUrl":"kits/axe-house/images/preview.webp","variables":[{"key":"businessName","label":"Business Name","description":"The name of your business (e.g. \"The Axe House\")","type":"string","required":true,"example":"The Axe House","default":"The Axe House"},{"key":"tagline","label":"Tagline","description":"A short phrase shown under the logo (e.g. \"throw. score. repeat.\")","type":"string","required":false,"example":"throw. score. repeat.","default":"throw. score. repeat."},{"key":"locationName","label":"Location Name","description":"The display name for this specific location (e.g. \"The Axe House Denver\")","type":"string","required":true,"example":"The Axe House Denver"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this location used in booking links (e.g. \"denver-rino\")","type":"string","required":true,"example":"denver-rino"},{"key":"address","label":"Street Address","description":"Street address of your venue (e.g. \"3400 Walnut St, Unit B\")","type":"address","required":true,"example":"3400 Walnut St, Unit B"},{"key":"city","label":"City","description":"City where your venue is located","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":"80205"},{"key":"timezone","label":"Timezone","description":"IANA timezone for this location (used for scheduling)","type":"timezone","required":true,"example":"America/New_York","default":"America/New_York"},{"key":"phone","label":"Phone Number","type":"phone","required":true,"example":"(720) 555-0192"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"contact@theaxehouse.com"},{"key":"instagram","label":"Instagram Handle","description":"Instagram username without the @","type":"string","required":false,"example":"theaxehouse"},{"key":"facebook","label":"Facebook Page","description":"Facebook page name or URL slug","type":"string","required":false,"example":"theaxehouse"},{"key":"tiktok","label":"TikTok Handle","description":"TikTok username without the @","type":"string","required":false,"example":"theaxehouse"},{"key":"laneCount","label":"Number of Throwing Lanes","description":"Total number of axe throwing lanes at this location","type":"number","required":false,"example":"8","default":"8"},{"key":"leagueNights","label":"League Night(s)","description":"Which night(s) league play runs (e.g., 'Thursday')","type":"string","required":false,"example":"Thursday"}],"shared":{"industry":"axe-throwing","category":"fitness","glossary":{"hatchet":"A small single-bit axe used for standard throwing at shorter distances (12–15 ft)","big axe":"A full-size axe thrown with a two-handed grip at longer distances (18–20 ft)","bullseye":"The center scoring ring on a wooden target, worth the highest point value","lane":"A single throwing station with one or more targets and a throwing line","killing shot":"A blue dot target located outside the main rings, worth 5 points if landed on a specific call"},"aiExpertise":["axe throwing technique and coaching","venue operations and lane management","competitive league formats and scoring","team building event design","beverage service and bar operations"],"dataModelHints":["booking","experience","time_slot","staff","customer","inventory_item"],"dataModel":{"entities":[{"domain":"location","type":"Location","description":"A physical Axe House venue location with throwing lanes, a bar, and its own operational settings.","products":{"workshop":{"view":"graph","icon":"📍"},"venue":{"mapsTo":"LocationMeta","pos":false}}},{"domain":"booking","type":"Event","description":"A lane reservation for an open throw session, league night, private party, or corporate team build.","products":{"workshop":{"view":"board","icon":"📅"},"venue":{"mapsTo":"BookingMeta","pos":true},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"time_slot","type":"Event","description":"An available lane session slot with assigned lanes, capacity, and start time.","products":{"workshop":{"view":"timeline","icon":"🕐"},"venue":{"mapsTo":"TimeSlotMeta","pos":false}}},{"domain":"experience","type":"Product","description":"A bookable experience type such as Open Throw, League Night, Private Party, Corporate Event, or Axe 101 Lesson.","products":{"workshop":{"view":"gallery","icon":"🪓"},"venue":{"mapsTo":"ExperienceMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"customer","type":"Person","description":"A guest thrower or returning customer, potentially a league member with a season history.","products":{"workshop":{"view":"board","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"staff","type":"Person","description":"An Axe Coach who runs throwing sessions and provides safety instruction, or a Bar Host.","products":{"workshop":{"view":"board","icon":"🧑‍🏫"},"venue":{"mapsTo":"StaffMeta","pos":false},"academy":{"mapsTo":"instructor","assessable":false}}},{"domain":"inventory_item","type":"Thing","description":"Equipment and supplies such as hatchets, big axes, targets, chalk, and bar beverages.","products":{"workshop":{"view":"graph","icon":"📦"},"venue":{"mapsTo":"InventoryItemMeta","pos":false},"academy":{"mapsTo":"material","assessable":false}}},{"domain":"waiver","type":"Document","description":"A digitally signed safety waiver required before any guest participates in a throwing session.","products":{"workshop":{"view":"board","icon":"📋"},"venue":{"mapsTo":"WaiverMeta","pos":false},"academy":{"mapsTo":"safety-acknowledgment","assessable":false}}},{"domain":"gift_card","type":"Thing","description":"A digital or physical gift card redeemable for lane sessions, lessons, or merchandise.","products":{"workshop":{"view":"board","icon":"🎁"},"venue":{"mapsTo":"GiftCardMeta","pos":true}}},{"domain":"loyalty_account","type":"Person","description":"A thrower loyalty account tracking visits and points earned, with tiers for regular league players.","products":{"workshop":{"view":"stats","icon":"⭐"},"venue":{"mapsTo":"LoyaltyAccountMeta","pos":false}}},{"domain":"transaction","type":"Measurement","description":"A revenue or refund record for a lane booking or bar purchase, always stored in cents.","products":{"workshop":{"view":"timeline","icon":"💳"},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"content_page","type":"Document","description":"A CMS-managed public page such as Safety Rules, League Info, or Private Events.","products":{"workshop":{"view":"board","icon":"📄"},"venue":{"mapsTo":"ContentPageMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}},{"domain":"blog_post","type":"Document","description":"A published blog post covering league results, technique tips, or venue news.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"customer","to":"booking","verb":"Creates","description":"Guest books a lane session, league night slot, or private event."},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific experience type (Open Throw, League Night, Private Party, etc.)."},{"from":"booking","to":"time_slot","verb":"ParticipatesIn","description":"Booking occupies a specific lane session slot."},{"from":"experience","to":"time_slot","verb":"OccursAt","description":"An experience type is scheduled at available lane slots for guest booking."},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Sessions consume hatchets, targets, and chalk — tracked for maintenance and reorder."},{"from":"staff","to":"time_slot","verb":"ParticipatesIn","description":"An Axe Coach is assigned to a session slot to provide safety coaching and instruction."},{"from":"transaction","to":"booking","verb":"References","description":"Payment or refund record links back to the lane booking it covers."},{"from":"waiver","to":"booking","verb":"References","description":"Signed safety waiver is tied to the booking, required before any throwing begins."}]},"suggestions":[{"label":"Lane utilization","prompt":"Show me lane utilization rates by day and time — where are we underbooked?"},{"label":"League standings","prompt":"Pull up the current league standings and team scores for this season"},{"label":"Revenue by event type","prompt":"Compare revenue across open throw, league night, private party, and corporate events"},{"label":"Staff coaching load","prompt":"Show me how many coaching sessions each axe coach has run this month"}]},"workshop":{"aiPersona":{"role":"You are the AI assistant for The Axe House — an axe throwing venue. You help managers optimize lane utilization, run competitive leagues, and deliver memorable private events. You know axe throwing operations inside and out.","expertise":["axe throwing venue operations and scheduling","competitive league management and scoring","private event and corporate team build logistics","beverage program and bar operations","safety protocol and waiver management"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["booking or lane reservation mentioned","league team or season referenced","axe coach or staff member introduced","throwing style or technique discussed","inventory item or equipment referenced"],"typeMapping":{"booking":"event","lane session":"event","league night":"event","customer":"person","thrower":"person","coach":"person","axe":"thing","hatchet":"thing","target":"thing","experience":"product","transaction":"measurement"}},"relationshipPatterns":[{"from":"customer","to":"booking","verb":"Creates","description":"Customer reserves a lane or event slot"},{"from":"staff","to":"booking","verb":"ParticipatesIn","description":"Axe coach runs the session and provides instruction"},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific experience type (open throw, league, party)"},{"from":"experience","to":"inventory_item","verb":"Consumes","description":"Axes, targets, and chalk consumed per session"},{"from":"customer","to":"customer","verb":"ParticipatesIn","description":"League team members grouped together"}],"rules":["Every booking must be assigned to at least one lane","League bookings should track team name and season","Safety waivers must be signed before any throwing session"]},"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"graph"},"qualityGates":{"projectChecks":["All experience types have a waiver requirement set","Lane count is configured correctly for capacity planning","League night schedule is entered in the system"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Lane Schedule","view":"board","entityTypes":["time_slot","booking"],"description":"View lane assignments and booking status across all sessions"},{"name":"Revenue by Event Type","view":"stats","entityTypes":["transaction","booking"],"description":"Compare revenue across open throw, league, private party, and corporate bookings"},{"name":"Leaderboard","view":"gallery","entityTypes":["customer"],"description":"Top throwers by score, visit frequency, and league standing"},{"name":"Staff Roster","view":"board","entityTypes":["staff"],"description":"Axe coaches and bar hosts with shift assignments"},{"name":"Booking Trends","view":"timeline","entityTypes":["booking"],"description":"Booking volume over time — spot seasonal peaks and slow periods"}]}},"academy":{"skillPath":"axe-throwing","level":"beginner","learningObjectives":["Proper grip technique for hatchet and big axe","Stance, footwork, and body alignment for consistent throws","Release mechanics and rotation timing","Target reading and scoring strategy","Range safety protocols and responsible throwing"],"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":"axe-thrower"},"gamification":{"enabled":true,"achievements":["chain-maker","deep-thinker","bridge-builder"],"streaks":false,"leaderboard":false},"cohort":{"maxSize":3,"durationDays":90,"fixedStart":false}},"venue":{"bookingNumberPrefix":"AX","subdomainPrefix":"axe","features":{"animals":false,"adoption":false,"memories":false,"loyalty":true,"giftCards":true,"waivers":true,"blog":true,"pos":true,"cms":true,"partners":true,"franchise":true,"customerAccounts":true},"theme":{"primary":"oklch(0.45 0.10 55)","bgBase":"oklch(0.15 0.04 45)","accent":"oklch(0.65 0.12 60)","textPrimary":"oklch(0.92 0.01 70)","displayFont":"Oswald","bodyFont":"Inter"},"experienceTypes":[{"slug":"open-throw","name":"Open Throw Session","description":"Reserve a lane, receive 20 minutes of safety coaching and technique instruction, then throw for the remaining time.","priceInCents":2500,"durationMinutes":60,"minGuests":1,"maxGuests":6,"requiresWaiver":true,"isCombo":false,"sortOrder":0,"color":"oklch(0.55 0.12 55)","sessionAttributeDefinitions":[{"key":"laneNumber","label":"Lane Number","type":"text","perGuest":false},{"key":"throwStyle","label":"Throw Style","type":"select","options":["hatchet","big-axe"],"perGuest":true},{"key":"bestScore","label":"Best Score","type":"text","perGuest":true}]},{"slug":"league-night","name":"League Night","description":"Competitive league play with standings, playoffs, and trophies. Season runs 8 weeks.","priceInCents":2000,"durationMinutes":120,"minGuests":4,"maxGuests":8,"requiresWaiver":true,"isCombo":false,"sortOrder":1,"color":"oklch(0.50 0.14 35)","sessionAttributeDefinitions":[{"key":"laneNumber","label":"Lane Number","type":"text","perGuest":false},{"key":"teamName","label":"Team Name","type":"text","perGuest":false},{"key":"leagueSeason","label":"League Season","type":"text","perGuest":false},{"key":"throwStyle","label":"Throw Style","type":"select","options":["hatchet","big-axe"],"perGuest":true}]},{"slug":"private-party","name":"Private Party","description":"Reserve multiple lanes for your group. Competition formats, scoreboards, and a designated host.","priceInCents":3500,"durationMinutes":120,"minGuests":8,"maxGuests":20,"requiresWaiver":true,"isCombo":false,"sortOrder":2,"color":"oklch(0.48 0.13 48)","sessionAttributeDefinitions":[{"key":"laneCount","label":"Lanes Reserved","type":"text","perGuest":false},{"key":"throwStyle","label":"Throw Style","type":"select","options":["hatchet","big-axe"],"perGuest":true},{"key":"competitionFormat","label":"Competition Format","type":"select","options":["freestyle","tournament","team-battle"],"perGuest":false}]},{"slug":"corporate-event","name":"Corporate Event","description":"Full venue buyout or dedicated section. Competition, team scoring, and a performance debrief.","priceInCents":4000,"durationMinutes":150,"minGuests":10,"maxGuests":30,"requiresWaiver":true,"isCombo":false,"sortOrder":3,"color":"oklch(0.42 0.10 52)","sessionAttributeDefinitions":[{"key":"laneCount","label":"Lanes Reserved","type":"text","perGuest":false},{"key":"companyName","label":"Company Name","type":"text","perGuest":false},{"key":"competitionFormat","label":"Competition Format","type":"select","options":["freestyle","tournament","team-battle"],"perGuest":false}]},{"slug":"axe-101","name":"Axe 101 Lesson","description":"Private technique session with an expert coach. Great for first-timers who want to get their form right before a party.","priceInCents":3000,"durationMinutes":45,"minGuests":1,"maxGuests":4,"requiresWaiver":true,"isCombo":false,"sortOrder":4,"color":"oklch(0.58 0.11 62)","sessionAttributeDefinitions":[{"key":"throwStyle","label":"Throw Style","type":"select","options":["hatchet","big-axe"],"perGuest":true},{"key":"coachNotes","label":"Coach Notes","type":"text","perGuest":false}]}],"inventoryCategories":[{"id":"hatchet","label":"Hatchets","icon":"🪓"},{"id":"big-axe","label":"Big Axes","icon":"⚔️"},{"id":"targets","label":"Targets & Boards","icon":"🎯"},{"id":"lane-supplies","label":"Lane Supplies & Chalk","icon":"🖊️"},{"id":"safety","label":"Safety Equipment","icon":"🦺"},{"id":"beverages","label":"Beverages & Bar","icon":"🍺"},{"id":"retail","label":"Merchandise & Retail","icon":"🛍️"},{"id":"maintenance","label":"Maintenance Supplies","icon":"🔧"}],"staffRoles":[{"id":"axe-coach","label":"Axe Coach","defaultCapabilities":["checkin","pos","session-log","inventory-view"]},{"id":"bar-host","label":"Bar Host","defaultCapabilities":["pos"]}],"chatSuggestions":[{"label":"Book a lane","message":"I'd like to book a lane. What are my options?","emoji":"🪓"},{"label":"League night info","message":"Tell me about league night. How does it work?","emoji":"🏆"},{"label":"Private party for my group","message":"I'm planning a private party. How many people can you accommodate?","emoji":"🎉"},{"label":"Gift cards","message":"I'm interested in buying a gift card. What options do you have?","emoji":"🎁"}],"inventoryLevelDetection":"manual","fees":{"billingModel":"per-transaction","feeMode":"all-channels"}}},{"id":"paws-and-pour","type":"soulcraft","role":"primary","status":"released","name":"Paws & Pour","description":"Cat and dog cafe with adoptable animals. Enjoy coffee, tea, and pastries while spending time with rescue animals looking for their forever homes.","longDescription":"A pet cafe platform for animal rescue partnerships, session bookings, and adoption tracking. Manages timed lounge visits, yoga with cats, private paws parties, and adoption meet-and-greets alongside cafe operations and animal welfare records.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🐾","tags":["cat cafe","dog cafe","animals","adoption","coffee","rescue","experience"],"previewImageUrl":"kits/paws-and-pour/images/preview.webp","variables":[{"key":"businessName","label":"Business Name","description":"The name of your business (e.g. \"Paws & Pour\")","type":"string","required":true,"example":"Paws & Pour","default":"Paws & Pour"},{"key":"tagline","label":"Tagline","description":"A short phrase describing your business (shown under the logo)","type":"string","required":false,"example":"sip. snuggle. smile.","default":"sip. snuggle. smile."},{"key":"locationName","label":"Location Name","description":"The display name for this specific location (e.g. \"Paws & Pour Midtown\")","type":"string","required":true,"example":"Paws & Pour Midtown"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this location used in booking links (e.g. \"midtown\")","type":"string","required":true,"example":"midtown"},{"key":"address","label":"Street Address","description":"Street address of your venue (e.g. \"420 N. Main St, Ste 101\")","type":"address","required":true,"example":"420 N. Main St, Ste 101"},{"key":"city","label":"City","description":"City where your venue is located","type":"string","required":true,"example":"Nashville"},{"key":"state","label":"State / Province","description":"Two-letter state or province code","type":"string","required":true,"example":"TN"},{"key":"zip","label":"ZIP / Postal Code","type":"string","required":true,"example":"37219"},{"key":"timezone","label":"Timezone","description":"IANA timezone for this location (used for scheduling)","type":"timezone","required":true,"example":"America/New_York","default":"America/New_York"},{"key":"phone","label":"Phone Number","type":"phone","required":true,"example":"(615) 555-0182"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"hello@pawsandpour.com"},{"key":"instagram","label":"Instagram Handle","description":"Instagram username without the @","type":"string","required":false,"example":"pawsandpour"},{"key":"facebook","label":"Facebook Page","description":"Facebook page name or URL slug","type":"string","required":false,"example":"PawsAndPourCafe"},{"key":"tiktok","label":"TikTok Handle","description":"TikTok username without the @","type":"string","required":false,"example":"pawsandpour"},{"key":"maxCapacity","label":"Cafe Capacity","description":"Maximum number of guests in the cafe at one time","type":"number","required":false,"example":"16","default":"16"},{"key":"animalType","label":"Animal Type(s)","description":"What animals are at this location (e.g., 'cats', 'dogs', 'cats and dogs')","type":"string","required":true,"example":"cats","default":"cats"},{"key":"rescuePartnerName","label":"Rescue Partner Name","description":"Name of the rescue organization providing animals","type":"string","required":false,"example":"Second Chance Animal Rescue"}],"shared":{"industry":"pet-cafe","category":"hospitality","glossary":{"lounge visit":"A timed session where guests interact with rescue animals in a supervised, comfortable space","animal handler":"Staff member responsible for animal welfare, monitoring interactions, and post-session animal care","adoption inquiry":"A formal expression of interest in adopting a specific animal, tracked per visit","meet and greet":"A dedicated one-on-one session between a prospective adopter and a specific animal","enrichment":"Toys, activities, and environmental features designed to keep animals stimulated and socialized"},"aiExpertise":["animal rescue operations and adoption workflows","pet cafe session management and capacity","animal welfare and handler protocols","cafe beverage and pastry operations","adoption conversion and rescue partner coordination"],"dataModelHints":["booking","experience","time_slot","staff","customer","inventory_item"],"dataModel":{"entities":[{"domain":"location","type":"Location","description":"A physical Paws & Pour cafe location with an animal lounge, cafe counter, and rescue partner configuration.","products":{"workshop":{"view":"graph","icon":"📍"},"venue":{"mapsTo":"LocationMeta","pos":false}}},{"domain":"booking","type":"Event","description":"A guest reservation for a cat lounge visit, dog play session, yoga with cats, private paws party, or adoption meet and greet.","products":{"workshop":{"view":"board","icon":"📅"},"venue":{"mapsTo":"BookingMeta","pos":true},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"time_slot","type":"Event","description":"A timed lounge or play session slot with guest capacity, animal handler assignment, and animals present.","products":{"workshop":{"view":"timeline","icon":"🕐"},"venue":{"mapsTo":"TimeSlotMeta","pos":false}}},{"domain":"experience","type":"Product","description":"A session type such as Cat Lounge Visit, Dog Play Session, Yoga with Cats, Private Paws Party, or Adoption Meet & Greet.","products":{"workshop":{"view":"gallery","icon":"🐾"},"venue":{"mapsTo":"ExperienceMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"customer","type":"Person","description":"A cafe guest who visits to interact with animals, potentially a prospective adopter or loyalty member.","products":{"workshop":{"view":"board","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"staff","type":"Person","description":"An Animal Handler who supervises sessions and logs animal welfare notes, or a Cafe Host who manages service.","products":{"workshop":{"view":"board","icon":"🧑‍⚕️"},"venue":{"mapsTo":"StaffMeta","pos":false},"academy":{"mapsTo":"instructor","assessable":false}}},{"domain":"kitten","type":"Organism","description":"A rescue animal (cat, dog, or other) in residence at the cafe, tracked for welfare, session participation, and adoption status.","products":{"workshop":{"view":"gallery","icon":"🐾"},"venue":{"mapsTo":"KittenMeta","pos":false},"academy":{"mapsTo":"learning-subject","assessable":false}}},{"domain":"inventory_item","type":"Thing","description":"A cafe or animal care supply such as beverages, pastries, animal food, toys, bedding, or cleaning supplies.","products":{"workshop":{"view":"graph","icon":"📦"},"venue":{"mapsTo":"InventoryItemMeta","pos":false},"academy":{"mapsTo":"material","assessable":false}}},{"domain":"waiver","type":"Document","description":"A signed liability waiver required before guests enter the animal lounge or play area.","products":{"workshop":{"view":"board","icon":"📋"},"venue":{"mapsTo":"WaiverMeta","pos":false},"academy":{"mapsTo":"safety-acknowledgment","assessable":false}}},{"domain":"gift_card","type":"Thing","description":"A digital or physical gift card redeemable for lounge visits, yoga sessions, or merchandise.","products":{"workshop":{"view":"board","icon":"🎁"},"venue":{"mapsTo":"GiftCardMeta","pos":true}}},{"domain":"loyalty_account","type":"Person","description":"A returning guest's loyalty account tracking visits and points, with benefits for frequent animal lovers.","products":{"workshop":{"view":"stats","icon":"⭐"},"venue":{"mapsTo":"LoyaltyAccountMeta","pos":false}}},{"domain":"transaction","type":"Measurement","description":"A revenue or refund record for a lounge visit or cafe purchase, always stored in cents.","products":{"workshop":{"view":"timeline","icon":"💳"},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"content_page","type":"Document","description":"A CMS-managed page such as Our Animals, Adoption Process, or How Visits Work.","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 adoption success stories, animal spotlights, or cafe news.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"customer","to":"booking","verb":"Creates","description":"Guest books a lounge visit, yoga session, play session, or adoption meet and greet."},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific session type (cat lounge, dog play, yoga, private party, etc.)."},{"from":"booking","to":"time_slot","verb":"ParticipatesIn","description":"Booking occupies guest spots in a specific timed lounge or play session."},{"from":"experience","to":"time_slot","verb":"OccursAt","description":"A session type is scheduled at lounge slots available for guest booking."},{"from":"staff","to":"time_slot","verb":"ParticipatesIn","description":"An Animal Handler is assigned to supervise the lounge session and log animal welfare."},{"from":"kitten","to":"time_slot","verb":"ParticipatesIn","description":"Rescue animals are present in the lounge during a session slot, with interactions logged."},{"from":"transaction","to":"booking","verb":"References","description":"Payment or refund record links back to the lounge visit or session booking."},{"from":"waiver","to":"booking","verb":"References","description":"Signed liability waiver is associated with the booking, required before lounge entry."}]},"suggestions":[{"label":"Animals available for adoption","prompt":"Show me all animals currently at the cafe and their adoption status"},{"label":"Session revenue this month","prompt":"Break down revenue by session type for the current month"},{"label":"Adoption inquiry tracking","prompt":"Which animals have had adoption inquiries this week? Who showed interest?"},{"label":"Cafe capacity overview","prompt":"Show me upcoming session bookings and how full we are for the next 7 days"}]},"workshop":{"aiPersona":{"role":"You are the AI assistant for Paws & Pour — a pet cafe with adoptable animals. You help managers track animal welfare, session bookings, adoption inquiries, and cafe operations. You care deeply about both the guest experience and animal outcomes.","expertise":["animal rescue operations and adoption workflow","pet cafe session scheduling and capacity management","animal welfare, enrichment, and handler protocols","cafe operations and beverage service","guest experience and loyalty programs"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["lounge visit or session booking mentioned","animal name or rescue status referenced","adoption inquiry or interest noted","handler or staff member introduced","cafe beverage or pastry mentioned"],"typeMapping":{"booking":"event","lounge visit":"event","meet and greet":"event","animal handler":"person","customer":"person","guest":"person","cat":"organism","dog":"organism","animal":"organism","experience":"product","transaction":"measurement"}},"relationshipPatterns":[{"from":"customer","to":"booking","verb":"Creates","description":"Guest books a lounge visit or meet-and-greet session"},{"from":"staff","to":"booking","verb":"ParticipatesIn","description":"Animal handler supervises the session and logs animal interactions"},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific session type (cat lounge, dog play, yoga, etc.)"},{"from":"customer","to":"organism","verb":"ParticipatesIn","description":"Guest interacts with or shows adoption interest in a specific animal"}],"rules":["Every session should log which animals were present and guest interactions","Adoption inquiries should be tracked per guest and per animal","Animal welfare checks should be recorded after each session"]},"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"graph"},"qualityGates":{"projectChecks":["All animals in residence have current adoption status and welfare notes","Session capacity limits are set and enforced for each experience type","Rescue partner contact information is configured for adoption coordination"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Session Schedule","view":"board","entityTypes":["time_slot","booking"],"description":"Upcoming lounge sessions with guest counts and capacity"},{"name":"Dog Profiles","view":"gallery","entityTypes":["organism"],"description":"Profiles for all animals in residence with adoption status"},{"name":"Revenue by Session","view":"timeline","entityTypes":["transaction","booking"],"description":"Revenue trends broken down by session type"},{"name":"Staff & Animals","view":"board","entityTypes":["staff"],"description":"Handler assignments and animal care responsibilities"},{"name":"Booking Pipeline","view":"board","entityTypes":["booking","customer"],"description":"Upcoming bookings with guest details and session notes"}]}},"academy":{"skillPath":"animal-handling","level":"beginner","learningObjectives":["Reading animal body language and stress signals","Safe and respectful handling techniques for cats and dogs","Animal enrichment activities and positive interaction methods","Understanding the adoption process and readiness assessment"],"assessmentTypes":["hands-on"],"mode":"training","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"direct","encouragementLevel":"neutral","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":true,"aiCertifierAllowed":false,"lineageEnabled":false,"certificationSlug":"animal-friend"},"gamification":{"enabled":true,"achievements":["completionist","streak"],"streaks":true,"leaderboard":true},"compliance":{"deadlineEnforcement":true,"managerDashboard":true,"completionReport":"pdf","renewalPeriod":"annual"}},"venue":{"bookingNumberPrefix":"PW","subdomainPrefix":"paws","features":{"animals":true,"adoption":true,"memories":true,"loyalty":true,"giftCards":true,"waivers":true,"blog":true,"pos":true,"cms":true,"partners":true,"franchise":true,"customerAccounts":true},"theme":{"primary":"oklch(0.65 0.12 20)","bgBase":"oklch(0.97 0.02 50)","accent":"oklch(0.75 0.10 70)","textPrimary":"oklch(0.25 0.03 30)","displayFont":"Quicksand","bodyFont":"Inter"},"experienceTypes":[{"slug":"cat-lounge-visit","name":"Cat Lounge Visit","description":"50 minutes in the cat lounge with adoptable cats. Order coffee or tea, find a cozy spot, and let the cats come to you.","priceInCents":1500,"durationMinutes":50,"minGuests":1,"maxGuests":6,"requiresWaiver":true,"isCombo":false,"sortOrder":0,"color":"oklch(0.82 0.10 20)","sessionAttributeDefinitions":[{"key":"animalsInteracted","label":"Animals Interacted With","type":"text","perGuest":false,"required":false},{"key":"favoriteAnimal","label":"Favorite Animal","type":"text","perGuest":true,"required":false},{"key":"adoptionInquiry","label":"Adoption Interest","type":"select","perGuest":true,"options":["Yes I'm interested","Maybe someday","Just here to visit"],"required":false}]},{"slug":"dog-play-session","name":"Dog Play Session","description":"45 minutes of play and cuddles with adoptable dogs. Structured play sessions with trained handlers.","priceInCents":1800,"durationMinutes":45,"minGuests":1,"maxGuests":4,"requiresWaiver":true,"isCombo":false,"sortOrder":1,"color":"oklch(0.80 0.10 55)","sessionAttributeDefinitions":[{"key":"animalsInteracted","label":"Animals Interacted With","type":"text","perGuest":false,"required":false},{"key":"favoriteAnimal","label":"Favorite Animal","type":"text","perGuest":true,"required":false},{"key":"adoptionInquiry","label":"Adoption Interest","type":"select","perGuest":true,"options":["Yes I'm interested","Maybe someday","Just here to visit"],"required":false}]},{"slug":"yoga-with-cats","name":"Yoga with Cats","description":"A gentle yoga class in the cat lounge. The cats may or may not participate — that's half the fun.","priceInCents":2500,"durationMinutes":60,"minGuests":1,"maxGuests":12,"requiresWaiver":true,"isCombo":false,"sortOrder":2,"color":"oklch(0.78 0.08 160)","sessionAttributeDefinitions":[{"key":"animalsInteracted","label":"Animals Interacted With","type":"text","perGuest":false,"required":false},{"key":"favoriteAnimal","label":"Favorite Animal","type":"text","perGuest":true,"required":false},{"key":"yogaLevel","label":"Yoga Level","type":"select","perGuest":false,"options":["beginner","gentle","all-levels"],"required":false}]},{"slug":"private-paws-party","name":"Private Paws Party","description":"Full cafe buyout for your group plus a dedicated animal handler. Perfect for birthdays, bachelorettes, and team outings.","priceInCents":2000,"durationMinutes":90,"minGuests":6,"maxGuests":16,"requiresWaiver":true,"isCombo":false,"sortOrder":3,"color":"oklch(0.76 0.09 300)","pricingTiers":[{"minGuests":6,"maxGuests":8,"pricePerPersonInCents":2000},{"minGuests":9,"maxGuests":12,"pricePerPersonInCents":1800},{"minGuests":13,"maxGuests":16,"pricePerPersonInCents":1600}],"sessionAttributeDefinitions":[{"key":"animalsInteracted","label":"Animals Interacted With","type":"text","perGuest":false,"required":false},{"key":"partyTheme","label":"Party Theme","type":"text","perGuest":false,"required":false}]},{"slug":"adoption-meet-greet","name":"Adoption Meet & Greet","description":"Interested in adopting? Schedule a dedicated one-on-one meet and greet with a specific animal. No strings attached.","priceInCents":0,"durationMinutes":30,"minGuests":1,"maxGuests":4,"requiresWaiver":true,"isCombo":false,"sortOrder":4,"color":"oklch(0.82 0.08 70)","sessionAttributeDefinitions":[{"key":"animalsInteracted","label":"Animals Interacted With","type":"text","perGuest":false,"required":false},{"key":"favoriteAnimal","label":"Animal of Interest","type":"text","perGuest":true,"required":false},{"key":"adoptionInquiry","label":"Adoption Interest","type":"select","perGuest":true,"options":["Yes I'm interested","Maybe someday","Just here to visit"],"required":false}]}],"inventoryCategories":[{"id":"pet-food","label":"Animal Food & Treats","icon":"🐾"},{"id":"toys","label":"Animal Toys & Enrichment","icon":"🎾"},{"id":"bedding","label":"Bedding & Comfort","icon":"🛏️"},{"id":"cleaning","label":"Cleaning & Hygiene Supplies","icon":"🧹"},{"id":"cafe-beverages","label":"Cafe Beverages","icon":"☕"},{"id":"cafe-food","label":"Cafe Pastries & Food","icon":"🥐"},{"id":"retail","label":"Retail & Branded Merchandise","icon":"🛍️"}],"staffRoles":[{"id":"animal-handler","label":"Animal Handler","defaultCapabilities":["checkin","pos","session-log","kitten-log"]},{"id":"cafe-host","label":"Cafe Host","defaultCapabilities":["checkin","pos"]}],"chatSuggestions":[{"label":"Book a lounge visit","message":"I'd like to book a lounge visit. What are my options?","emoji":"📅"},{"label":"Tell me about your animals","message":"Tell me about the animals at the cafe.","emoji":"🐾"},{"label":"I'm interested in adopting","message":"I'm interested in adopting one of your animals. How does that work?","emoji":"🏡"},{"label":"Gift cards","message":"I'm interested in buying a gift card. What options do you have?","emoji":"🎁"}],"inventoryLevelDetection":"manual","fees":{"billingModel":"per-transaction","feeMode":"all-channels"}}},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"loyalty-program","type":"soulcraft","role":"extension","status":"released","name":"Loyalty Program","description":"Points-based loyalty program with tiers, rewards, and redemption tracking","longDescription":"A composable loyalty program extension for any Venue kit. Adds points earning on purchases, configurable tier thresholds (Bronze, Silver, Gold, Platinum), a reward catalog, and complete redemption tracking. Fully integrates with the POS and booking flows of the parent kit — every transaction becomes a loyalty event. Brainy tracks the loyalty graph so you can see which rewards are driving repeat visits and which tiers are most valuable to your business.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"⭐","tags":["loyalty","rewards","points","retention","extension","tiers","repeat customers"],"requires":[],"shared":{"industry":"retail-hospitality","category":"business","glossary":{"points":"The currency of the loyalty program — earned on purchases and redeemed against rewards. Always stored as integers.","tier":"A loyalty level (Bronze, Silver, Gold, Platinum) that a member achieves by accumulating a threshold number of points, unlocking enhanced earn rates or exclusive rewards.","earning rule":"A configuration that defines how many points a customer earns per dollar spent, per visit, or per specific action.","redemption":"The act of exchanging accumulated points for a reward — a discount, free item, or experience upgrade.","point expiry":"A policy that voids points that have not been used within a defined time window, creating urgency for repeat visits.","lifetime value uplift":"The measurable increase in average spend or visit frequency attributable to loyalty program membership."},"aiExpertise":["loyalty program design and tier mechanics","customer retention strategy and repeat visit drivers","earning rule configuration and point economics","reward catalog design and redemption psychology","point expiry policies and their retention effects","loyalty program analytics and LTV measurement"],"dataModelHints":["loyalty_account","loyalty_transaction","reward","tier"],"dataModel":{"entities":[{"domain":"loyalty_account","type":"Person","description":"A customer loyalty account storing current point balance, lifetime points earned, current tier, and tier expiry date. Extends the parent kit's customer entity.","products":{"workshop":{"view":"stats","icon":"⭐"},"venue":{"mapsTo":"LoyaltyAccountMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"loyalty_transaction","type":"Measurement","description":"A single loyalty points event — earn, redeem, adjust, or expire. Always linked to both the loyalty account and the triggering booking or purchase transaction.","products":{"workshop":{"view":"timeline","icon":"📊"},"venue":{"mapsTo":"LoyaltyTransactionMeta","pos":false},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"reward","type":"Thing","description":"A redeemable reward in the catalog — a free item, discount, experience upgrade, or exclusive access — with a points cost and eligibility tier.","products":{"workshop":{"view":"gallery","icon":"🎁"},"academy":{"mapsTo":"skill-unit","assessable":false}}},{"domain":"tier","type":"Concept","description":"A loyalty tier definition — name, minimum lifetime points threshold, earn rate multiplier, and the exclusive rewards unlocked at this level.","products":{"workshop":{"view":"board","icon":"🏆"}}}],"relationships":[{"from":"customer","to":"loyalty_transaction","verb":"Creates","description":"Customer earns or redeems points via a loyalty transaction triggered by a purchase or eligible action."},{"from":"loyalty_transaction","to":"loyalty_account","verb":"Credits","description":"Loyalty transaction updates the point balance and lifetime total on the linked account."},{"from":"loyalty_account","to":"reward","verb":"Redeems","description":"Customer uses accumulated points to claim a reward from the catalog."},{"from":"loyalty_account","to":"tier","verb":"References","description":"Account is currently assigned to a tier based on lifetime points earned."},{"from":"reward","to":"tier","verb":"References","description":"Reward specifies the minimum tier required to redeem it."}]},"suggestions":[{"label":"Configure tiers","prompt":"Help me set up Bronze, Silver, Gold, and Platinum tiers with thresholds and earn rate multipliers."},{"label":"Design a reward catalog","prompt":"Help me build a reward catalog with items at different points costs across tier levels."},{"label":"Set earning rules","prompt":"Configure how many points customers earn per dollar spent and per visit."},{"label":"Analyse retention impact","prompt":"Show me loyalty member retention versus non-member repeat visit rates."},{"label":"Review redemption patterns","prompt":"Which rewards are being redeemed most often, and are they driving the repeat visits we want?"}]},"academy":{"skillPath":"customer-retention","level":"intermediate","learningObjectives":["Design a loyalty tier structure with thresholds and earn rate multipliers that incentivise progression","Configure earning rules that balance customer value with program sustainability","Build a reward catalog with items at varied redemption costs that motivate continued engagement","Analyse loyalty transaction data to measure program ROI and repeat visit uplift","Apply point expiry and re-engagement strategies to reduce dormant member churn"],"assessmentTypes":["portfolio","peer-review"],"mode":"training","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"direct","encouragementLevel":"neutral","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":true,"aiCertifierAllowed":false,"lineageEnabled":false,"certificationSlug":"loyalty-designer"},"gamification":{"enabled":true,"achievements":["completionist","streak"],"streaks":true,"leaderboard":true},"compliance":{"deadlineEnforcement":true,"managerDashboard":true,"completionReport":"pdf","renewalPeriod":"annual"}},"workshop":{"aiPersona":{"role":"You are a customer retention specialist helping businesses design loyalty programs that make members feel genuinely valued and keep them coming back. You balance the psychology of rewards with the economics of program sustainability.","expertise":["loyalty program design and tier mechanics","earning rule configuration and point economics","reward catalog design and redemption psychology","customer retention strategy and LTV measurement","point expiry policies and re-engagement tactics","loyalty analytics and cohort analysis"],"tone":"collaborator","avoidances":["Don't design a program where the average customer can never realistically earn a reward — that breeds disengagement","Don't set earn rates so high that the program is loss-making — model the economics before launching","Don't make redemption complicated — every extra step between points and reward reduces follow-through"]},"graphGuidance":{"conceptCreation":{"triggers":["customer earns points on a purchase","loyalty tier threshold mentioned","reward or redemption event recorded","point expiry or adjustment applied","earning rule defined or changed"],"typeMapping":{"loyalty account":"person","points balance":"measurement","loyalty transaction":"measurement","reward":"thing","tier":"concept","earning rule":"concept"}},"relationshipPatterns":[{"from":"customer","to":"loyalty_transaction","verb":"Creates","description":"Customer action triggers a points event"},{"from":"loyalty_transaction","to":"loyalty_account","verb":"Credits","description":"Points event updates account balance"},{"from":"loyalty_account","to":"reward","verb":"Redeems","description":"Member claims a reward from the catalog"}],"rules":["Every loyalty transaction must link to both the account and the triggering purchase","Points are always stored as integers — never use floats","Tier assignments are computed from lifetime points, not current balance","Reward redemptions must check tier eligibility before applying"]},"qualityGates":{"projectChecks":["At least two tiers are configured with distinct thresholds and earn rates","Earning rules are defined for purchase events","At least three rewards exist in the catalog at different points costs","A loyalty transaction correctly updates the account balance","Tier upgrade is triggered when lifetime points cross a threshold"]},"publishConfig":{"contentType":"document","publishable":true},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Member Accounts","view":"stats","entityTypes":["loyalty_account"],"description":"Points balances, tier distribution, and member status across the program"},{"name":"Reward Catalog","view":"gallery","entityTypes":["reward"],"description":"Browse and manage redeemable rewards with points costs and tier requirements"},{"name":"Transaction Log","view":"timeline","entityTypes":["loyalty_transaction"],"description":"Full timeline of earn, redeem, adjust, and expire events"},{"name":"Tier Configuration","view":"board","entityTypes":["tier"],"description":"Configure tier thresholds, earn multipliers, and exclusive rewards"}]}},"venue":{"features":{"loyalty":true},"stations":[{"id":"loyalty","label":"Loyalty Program","route":"/api/manage/loyalty","icon":"⭐","roles":["manager","owner"],"scope":"kit","context":"both"}],"fees":{"billingModel":"hybrid","feeMode":"all-channels"}},"previewImageUrl":"kits/loyalty-program/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"reading-tracker","type":"soulcraft","role":"primary","status":"released","name":"Reading Tracker","description":"Book collection with reading timeline, themes, quotes, and author connections","longDescription":"Track your reading journey with a knowledge-graph powered library. Collect books, save memorable quotes, explore themes across your reading history, and discover author bibliographies. Uses Brainy for document, person, content, and concept entity modeling.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"📚","tags":["books","reading","library","quotes","authors","brainy","sveltekit"],"variables":[{"key":"appName","label":"App Name","description":"The name of your reading tracker app","type":"string","required":true,"example":"my-library"},{"key":"description","label":"Description","description":"A short description of your reading journal","type":"string","required":false,"example":"My reading journal","default":"A personal reading tracker and book journal"}],"shared":{"industry":"personal-productivity","category":"knowledge","aiExpertise":["Book recommendations and discovery","Literary theme analysis","Reading habit tracking","Author bibliography research","Reading goal setting"],"dataModelHints":["document","person","content","concept"],"dataModel":{"entities":[{"domain":"book","type":"Document","description":"A book in the reading collection with status and rating","products":{"workshop":{"view":"gallery","icon":"📚"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"author","type":"Person","description":"The author of one or more books in the collection","products":{"workshop":{"view":"gallery","icon":"✍️"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"quote","type":"Concept","description":"A memorable quote saved from a book","products":{"workshop":{"view":"gallery","icon":"💬"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"theme","type":"Concept","description":"A recurring literary theme appearing across books","products":{"workshop":{"view":"graph","icon":"🧵"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}}],"relationships":[{"from":"book","to":"author","verb":"CreatedBy","description":"Book was written by this author"},{"from":"book","to":"quote","verb":"Contains","description":"Book contains this saved quote"},{"from":"theme","to":"book","verb":"Describes","description":"Theme appears in this book"},{"from":"book","to":"book","verb":"References","description":"Book cites or connects to another book"}]},"suggestions":[{"label":"Add a book","prompt":"Help me add a new book to my reading tracker"},{"label":"Write a review","prompt":"Help me write a review of a book I just finished"},{"label":"Find similar books","prompt":"Recommend books similar to ones I've enjoyed"},{"label":"Set reading goals","prompt":"Help me set and track my reading goals"},{"label":"Analyze reading habits","prompt":"Show me statistics and insights about my reading habits"},{"label":"Browse my library","prompt":"Show me my book collection in the gallery view"}]},"academy":{"skillPath":"literary-analysis","level":"beginner","learningObjectives":["Write a structured book review covering argument, evidence, style, and personal evaluation","Identify recurring themes across multiple books and articulate how they connect","Extract and contextualise quotes that capture an author's key ideas or literary style","Build a reading list that systematically covers a topic or expands into new genres"],"assessmentTypes":["portfolio"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"exploratory","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"book-reviewer"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are a literary companion helping readers track their reading journey, discover connections between books, and build a meaningful personal library.","expertise":["Book recommendations","Literary theme analysis","Reading habit optimization","Author research","Reading goal setting"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"researcher","defaultTab":"explore","defaultView":"graph","defaultFile":"books/current.md","layout":{"leftDock":"concepts","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["graph","timeline","ai-chat"],"suggestedActions":["Add your first book to the collection","Track themes and quotes as you read","Use Graph view to see author and theme connections","Use Timeline view to see your reading journey"]}},"graphGuidance":{"conceptCreation":{"typeMapping":{"book":"document","author":"person","quote":"content","theme":"concept"}},"relationshipPatterns":[{"from":"document","to":"person","verb":"createdBy","description":"Book written by author"},{"from":"document","to":"content","verb":"contains","description":"Book contains quote"},{"from":"concept","to":"document","verb":"describes","description":"Theme appears in book"},{"from":"document","to":"document","verb":"references","description":"Book references another"}],"rules":["Every book should link to its author","Quotes should link to source book","Themes should link to related books"]},"qualityGates":{"fileChecks":[{"path":"package.json","required":["svelte","@sveltejs/kit","@soulcraft/brainy"],"optional":["typescript"]},{"path":"src/lib/types.ts","required":["Book","Author"],"optional":["Quote","Theme"]}],"projectChecks":["App starts with npm run dev","Can add books to library","Can track reading status","Can save quotes","Timeline view shows reading history"],"exportReady":["No TypeScript errors","All routes load correctly","Error handling in place"]},"sampleData":{"entities":[{"type":"document","name":"The Great Gatsby","properties":{"year":1925,"status":"completed","rating":5,"dateRead":"2024-06-15","genre":"Fiction","description":"A tragic story of wealth, love, and the American Dream in 1920s New York."}},{"type":"person","name":"F. Scott Fitzgerald","properties":{"birthYear":1896,"nationality":"American","description":"American novelist of the Jazz Age, known for lyrical prose."}},{"type":"concept","name":"The American Dream","properties":{"description":"The pursuit of prosperity and success in American society."}}],"relationships":[{"from":"The Great Gatsby","verb":"createdBy","to":"F. Scott Fitzgerald"},{"from":"The American Dream","verb":"describes","to":"The Great Gatsby"}]},"templateMetadata":{"runnable":true,"runnableCommand":"npm run dev"},"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"512Mi"},"oneClickCommand":"gcloud run deploy"}},"venue":{"bookingNumberPrefix":"RT","subdomainPrefix":"readingclub","features":{"blog":true,"cms":true,"customerAccounts":true,"subscriptions":true,"website":true,"notifications":true,"analytics":true,"giftCards":true,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.45 0.10 40)","bgBase":"oklch(0.98 0.01 40)","accent":"oklch(0.60 0.12 15)","textPrimary":"oklch(0.22 0.04 40)","displayFont":"Palatino Linotype","bodyFont":"Georgia"},"experienceTypes":[{"slug":"book-club-session","name":"Book Club Session","description":"A moderated 90-minute discussion of a shared book. Includes pre-reading discussion questions, live video session, and a curated follow-up reading list.","priceInCents":1500,"durationMinutes":90,"minGuests":4,"maxGuests":20,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.55 0.10 40)","sessionAttributeDefinitions":[{"key":"bookTitle","label":"Book Title","type":"text","perGuest":false,"required":true},{"key":"genre","label":"Genre","type":"select","perGuest":false,"options":["Literary fiction","Non-fiction","Fantasy/Sci-Fi","Thriller/Mystery","Biography","Historical fiction"],"required":false}]},{"slug":"reading-recommendation-session","name":"Reading Recommendation Session","description":"A 30-minute one-on-one with a resident reader who'll curate a personalised list of 10 books based on your tastes, reading pace, and what you want to explore next.","priceInCents":5000,"durationMinutes":30,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.50 0.08 15)","sessionAttributeDefinitions":[{"key":"favoriteBooks","label":"Favourite Books","type":"text","perGuest":false,"required":false},{"key":"readingGoal","label":"Reading Goal","type":"select","perGuest":false,"options":["Expand my horizons","Read more non-fiction","Get into a specific genre","Keep it light and fun","Deepen my knowledge"],"required":false}]}],"staffRoles":[{"id":"book-curator","label":"Book Curator","defaultCapabilities":["checkin","pos","cms","analytics","notifications"]},{"id":"moderator","label":"Discussion Moderator","defaultCapabilities":["checkin","cms"]}],"chatSuggestions":[{"label":"Join the book club","message":"I'd like to join the book club. How does it work?","emoji":"📚"},{"label":"Recommend me a book","message":"I'm not sure what to read next. Can you recommend something?","emoji":"🔍"},{"label":"Upcoming book club picks","message":"What books are coming up in the book club?","emoji":"📅"},{"label":"Subscribe for reviews","message":"I want to get book reviews and reading content. How do I subscribe?","emoji":"✉️"}]},"previewImageUrl":"kits/reading-tracker/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"personal-wiki","type":"soulcraft","role":"primary","status":"released","name":"Personal Wiki","description":"Second brain with bi-directional links, knowledge graph, and semantic search","longDescription":"Build a Roam/Obsidian-like second brain with knowledge graph visualization. Connect notes with bi-directional links, explore your knowledge graph, and use semantic search to surface related ideas. Powered by Brainy for document, topic, task, and content entity modeling.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"📖","tags":["wiki","notes","knowledge","second-brain","pkm","brainy","sveltekit"],"variables":[{"key":"appName","label":"App Name","description":"The name of your personal wiki app","type":"string","required":true,"example":"my-wiki"},{"key":"description","label":"Description","description":"A short description of your knowledge base","type":"string","required":false,"example":"My personal knowledge base","default":"My personal knowledge base"}],"shared":{"industry":"personal-productivity","category":"knowledge","aiExpertise":["Personal knowledge management","Note-taking and linking strategies","Second brain methodology","Knowledge graph exploration","Zettelkasten and evergreen notes"],"dataModelHints":["document","topic","task","content"],"dataModel":{"entities":[{"domain":"page","type":"Document","description":"A wiki page containing notes and bi-directional links","products":{"workshop":{"view":"tree","icon":"📄"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"topic","type":"Concept","description":"A subject category grouping related wiki pages","products":{"workshop":{"view":"graph","icon":"🏷️"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}},{"domain":"category","type":"Concept","description":"A broad knowledge domain or namespace for pages","products":{"workshop":{"view":"graph","icon":"🗂️"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}},{"domain":"term","type":"Concept","description":"A defined glossary term with a dedicated page","products":{"workshop":{"view":"graph","icon":"📖"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}}],"relationships":[{"from":"page","to":"page","verb":"References","description":"Page links to another page via wikilink"},{"from":"page","to":"topic","verb":"InstanceOf","description":"Page belongs to this topic category"},{"from":"topic","to":"topic","verb":"PartOf","description":"Subcategory relationship"},{"from":"page","to":"term","verb":"Defines","description":"Page defines or explains this term"}]},"suggestions":[{"label":"Add a topic","prompt":"Help me add a new topic to my personal wiki"},{"label":"Write an article","prompt":"Help me write a wiki article on a topic I'm learning about"},{"label":"Link related topics","prompt":"Help me find and create links between related wiki topics"},{"label":"Organize by category","prompt":"Help me organize my wiki topics into categories"},{"label":"Find gaps","prompt":"Analyze my wiki and suggest topics that could use more detail"},{"label":"Explore the wiki","prompt":"Show me my wiki topics and their connections in the mind map"}]},"academy":{"skillPath":"knowledge-management","level":"beginner","learningObjectives":["Write atomic notes that each capture a single idea and stand alone without external context","Create bi-directional links between notes and explain the nature of each connection","Organise a knowledge base into categories without deep nesting that buries content","Perform a weekly review to surface orphan notes and strengthen weak connections"],"assessmentTypes":["portfolio"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"knowledge-curator"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are a personal knowledge management expert helping users build a connected second brain with bi-directional links, atomic notes, and semantic organization.","expertise":["Personal knowledge management","Zettelkasten method","Second brain methodology","Note-taking strategies","Knowledge graph design"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"researcher","defaultTab":"explore","defaultView":"graph","defaultFile":"wiki/index.md","layout":{"leftDock":"concepts","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["graph","ai-chat"],"suggestedActions":["Start by creating your first note","Use [[wikilinks]] to connect notes","Use Graph view to explore connections","Ask AI to suggest related topics"]}},"graphGuidance":{"conceptCreation":{"triggers":["When user creates a new wiki page","When user identifies a topic category","When user creates navigation structure","When user defines a glossary term"],"typeMapping":{"page":"document","topic":"concept","category":"concept","term":"concept"}},"relationshipPatterns":[{"from":"document","to":"document","verb":"references","description":"Page links to page"},{"from":"document","to":"concept","verb":"instanceOf","description":"Page in category"},{"from":"concept","to":"concept","verb":"partOf","description":"Subcategory"},{"from":"document","to":"concept","verb":"defines","description":"Page defines term"}],"rules":["Create document entities for wiki pages","Track links between pages","Organize pages into categories","Note hub pages and their connections"]},"sampleData":{"entities":[{"type":"document","name":"Atomic Habits Summary","properties":{"type":"note","content":"Key insights from James Clear's book...","created":"2024-10-15","description":"A comprehensive summary of the book's core concepts about habit formation.","status":"review"}},{"type":"topic","name":"Productivity","properties":{"color":"#10b981","description":"Notes about getting things done effectively."}}],"relationships":[{"from":"Productivity","verb":"describes","to":"Atomic Habits Summary"}]},"templateMetadata":{"runnable":true,"runnableCommand":"npm run dev"},"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"512Mi"},"oneClickCommand":"gcloud run deploy"}},"venue":{"bookingNumberPrefix":"PW","subdomainPrefix":"wiki","features":{"customerAccounts":true,"apps":true,"website":true,"subscriptions":true,"notifications":true,"analytics":true,"cms":false,"blog":false,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.44 0.10 205)","bgBase":"oklch(0.99 0.005 255)","accent":"oklch(0.62 0.12 165)","textPrimary":"oklch(0.20 0.03 255)","displayFont":"Inter","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Start my wiki","message":"I want to create a personal knowledge base. How do I structure it?","emoji":"🧠"},{"label":"Import my notes","message":"Can I import notes from Notion, Obsidian, or Markdown files?","emoji":"📥"},{"label":"Link my ideas","message":"How do I connect related pages and build a knowledge graph?","emoji":"🕸️"},{"label":"Manage subscription","message":"I'd like to manage my account and subscription.","emoji":"💳"}]},"previewImageUrl":"kits/personal-wiki/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"project-timeline","type":"soulcraft","role":"primary","status":"released","name":"Project Timeline / Roadmap","description":"Visual project timeline with milestones and dependencies","longDescription":"Create an interactive project timeline showing milestones, deadlines, and dependencies. Perfect for project planning, product roadmaps, or event planning. Visualizes as a sequence in timeline layout with dependency tracking and risk documentation.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"📅","tags":["project","timeline","planning","roadmap"],"variables":[{"key":"projectName","label":"Project Name","description":"The name of your project","type":"string","required":true,"example":"Product Launch"},{"key":"startDate","label":"Start Date","description":"Project start date in ISO format","type":"string","required":false,"example":"2025-01-01","default":""},{"key":"endDate","label":"End Date","description":"Project end date in ISO format","type":"string","required":false,"example":"2025-06-01","default":""}],"shared":{"industry":"business-strategy","category":"business","aiExpertise":["Project planning and milestone setting","Dependency analysis and critical path","Risk identification and mitigation","Resource planning","Project status reporting"],"dataModelHints":["event","task","concept","person"],"dataModel":{"entities":[{"domain":"task","type":"Event","description":"A unit of work with status, owner, and dates","products":{"workshop":{"view":"board","icon":"✅"},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"milestone","type":"Event","description":"A key project checkpoint or delivery date","products":{"workshop":{"view":"timeline","icon":"🏁"},"academy":{"mapsTo":"practice-session","assessable":true},"venue":{"mapsTo":"BookingMeta","pos":false}}},{"domain":"phase","type":"Concept","description":"A named project phase grouping related tasks","products":{"workshop":{"view":"timeline","icon":"📅"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}},{"domain":"deliverable","type":"Thing","description":"A tangible output produced by a task or phase","products":{"workshop":{"view":"gallery","icon":"📦"},"academy":{"mapsTo":"resource","assessable":false},"venue":{"mapsTo":"InventoryItemMeta","pos":false}}}],"relationships":[{"from":"task","to":"task","verb":"DependsOn","description":"Task cannot start until this task is complete"},{"from":"task","to":"milestone","verb":"Precedes","description":"Task must be done before this milestone"},{"from":"task","to":"phase","verb":"PartOf","description":"Task belongs to this project phase"}]},"suggestions":[{"label":"Add a milestone","prompt":"Help me add a new milestone to my project timeline"},{"label":"Plan a phase","prompt":"Help me plan the tasks and deliverables for a project phase"},{"label":"Identify risks","prompt":"Help me identify potential risks and create mitigation plans"},{"label":"Track dependencies","prompt":"Help me map out dependencies between project tasks"},{"label":"Status update","prompt":"Help me write a project status update based on current progress"},{"label":"View timeline","prompt":"Show me my project timeline in the timeline view"}]},"academy":{"skillPath":"project-management","level":"beginner","learningObjectives":["Define project scope with a clear start milestone and measurable end criteria","Break work into phases, tasks, and milestones with realistic date estimates","Map task dependencies and identify the critical path through a project","Document project risks with probability, impact, and a concrete mitigation plan"],"assessmentTypes":["portfolio","peer-review"],"mode":"certification","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"neutral","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":true,"certificationSlug":"project-manager"},"gamification":{"enabled":true,"achievements":["deep-thinker","completionist","chain-maker"],"streaks":false,"leaderboard":true}},"workshop":{"difficulty":"beginner","templateTier":4,"aiPersona":{"role":"You are a project manager helping teams plan, track, and deliver projects on time with clear milestones, dependencies, and risk management.","expertise":["Project planning","Milestone setting","Dependency analysis","Risk management","Status reporting"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"planner","defaultTab":"explore","defaultView":"timeline","defaultFile":"milestones/kickoff.md","layout":{"leftDock":"files","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["timeline","board"],"suggestedActions":["Define your key milestones first","Set dependencies between milestones","Use Timeline view to see the schedule","Track progress in Board view"]}},"graphGuidance":{"conceptCreation":{"triggers":["When user creates a task or milestone","When user defines a phase","When user identifies a dependency","When user assigns an owner"],"typeMapping":{"task":"task","milestone":"event","phase":"concept","deliverable":"thing"}},"relationshipPatterns":[{"from":"task","to":"task","verb":"dependsOn","description":"Task dependency"},{"from":"task","to":"event","verb":"precedes","description":"Task before milestone"},{"from":"task","to":"concept","verb":"partOf","description":"Task in phase"},{"from":"task","to":"person","verb":"attributedTo","description":"Task owner"}],"rules":["Create task entities for work items","Track dependencies between tasks","Link tasks to their milestones","Note phase groupings"]},"qualityGates":{"fileChecks":[{"path":"milestones/*.md","required":["Date","Status"],"optional":["Depends On","Deliverable","Owner","Tasks"]}],"projectChecks":["Start and end milestones are defined","All milestones are connected (no orphans)","Critical path is documented","Each milestone has an owner","Status is current for all items"],"exportReady":["All milestones have dates","Dependencies are complete","No blocked items without documented blockers","Status is up to date","Risks are documented with mitigations"]},"sampleData":{"description":"Sample project timeline for a product launch","entities":[{"type":"event","name":"Project Kickoff","properties":{"date":"2025-01-15","status":"done","description":"Initial project kickoff meeting with stakeholders.","milestone_type":"start"}},{"type":"event","name":"Design Complete","properties":{"date":"2025-02-28","status":"in_progress","description":"UI/UX designs finalized and approved.","milestone_type":"milestone"}},{"type":"event","name":"Launch","properties":{"date":"2025-04-30","status":"todo","description":"Product goes live.","milestone_type":"end"}}],"relationships":[{"from":"Project Kickoff","verb":"precedes","to":"Design Complete"},{"from":"Design Complete","verb":"precedes","to":"Launch"}]},"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"512Mi"},"oneClickCommand":"gcloud run deploy"}},"venue":{"bookingNumberPrefix":"PT","subdomainPrefix":"projects","features":{"customerAccounts":true,"apps":true,"website":true,"subscriptions":true,"notifications":true,"analytics":true,"cms":false,"blog":false,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.42 0.18 225)","bgBase":"oklch(0.99 0.005 255)","accent":"oklch(0.60 0.14 175)","textPrimary":"oklch(0.20 0.03 255)","displayFont":"Inter","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Start a new project","message":"I want to start tracking a new project. How do I set it up?","emoji":"🚀"},{"label":"Manage my subscription","message":"I'd like to view or change my subscription plan.","emoji":"💳"},{"label":"Set a milestone","message":"How do I add milestones and deadlines to my project?","emoji":"🏁"},{"label":"Track team progress","message":"How do I assign tasks to team members and track their progress?","emoji":"👥"}]},"previewImageUrl":"kits/project-timeline/images/preview.webp"},{"id":"ecommerce-store","type":"soulcraft","role":"primary","status":"released","name":"E-Commerce Store","description":"Complete product-based e-commerce platform for entrepreneurs launching online retail businesses","longDescription":"Full-featured e-commerce management for product-based businesses — product catalog with pricing and inventory, category organization, order tracking, customer management, content pages, and blog. Supports draft-to-published product workflows, multi-image listings, compare-at pricing for sales, and SKU-based inventory tracking.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🛒","tags":["ecommerce","online-store","products","shopping","retail","entrepreneur"],"previewImageUrl":"kits/ecommerce-store/images/preview.webp","variables":[{"key":"businessName","label":"Store Name","description":"The name of your online store (e.g. \"Nomad Goods\")","type":"string","required":true,"example":"Nomad Goods","default":"Nomad Goods"},{"key":"tagline","label":"Tagline","description":"A short phrase shown under the store name (e.g. \"curated essentials for modern living.\")","type":"string","required":false,"example":"curated essentials for modern living.","default":"curated essentials for modern living."},{"key":"locationName","label":"Location Name","description":"The display name for this store location or warehouse (e.g. \"Nomad Goods HQ\")","type":"string","required":true,"example":"Nomad Goods HQ"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this location (e.g. \"hq\")","type":"string","required":true,"example":"hq"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"hello@nomadgoods.com"},{"key":"timezone","label":"Timezone","description":"IANA timezone for this store (used for order timestamps and analytics)","type":"timezone","required":true,"example":"America/New_York","default":"America/New_York"},{"key":"currency","label":"Currency","description":"ISO 4217 currency code for product pricing (e.g. \"USD\", \"EUR\", \"GBP\")","type":"string","required":true,"example":"USD","default":"USD"}],"shared":{"industry":"retail","category":"ecommerce","glossary":{"SKU":"Stock Keeping Unit — a unique alphanumeric code assigned to each product variant for inventory tracking","compare-at price":"The original or retail price shown alongside the sale price to highlight the discount","inventory":"The count of units available for sale; when zero the product is out of stock","order":"A confirmed customer purchase containing one or more line items, a total, and a fulfillment status","fulfillment":"The process of picking, packing, and shipping an order to the customer","cart":"A temporary collection of products a customer intends to purchase before checkout"},"aiExpertise":["product catalog management and merchandising strategy","pricing, promotions, and compare-at price configuration","inventory tracking and stock-level management","order lifecycle from pending through delivered","customer relationship management and purchase history","content marketing through blog posts and landing pages"],"dataModelHints":["product","category","order","customer","cart_item","content_page","blog_post"],"dataModel":{"entities":[{"domain":"product","type":"Document","description":"A sellable item with pricing in cents, inventory count, images, SKU, and an active/draft/archived lifecycle.","products":{"workshop":{"view":"gallery","icon":"📦"},"venue":{"mapsTo":"ProductMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"category","type":"Concept","description":"A product grouping used for catalog navigation, filtering, and merchandising — e.g. Apparel, Home Goods, Accessories.","products":{"workshop":{"view":"graph","icon":"🏷️"},"venue":{"mapsTo":"CategoryMeta","pos":false}}},{"domain":"order","type":"Event","description":"A customer purchase with line items, total in cents, fulfillment status (pending/confirmed/shipped/delivered/cancelled), and shipping address.","products":{"workshop":{"view":"board","icon":"📋"},"venue":{"mapsTo":"OrderMeta","pos":false}}},{"domain":"customer","type":"Person","description":"A buyer with order history, contact details, and lifetime purchase value.","products":{"workshop":{"view":"board","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"cart_item","type":"Measurement","description":"A line item in a shopping cart linking a product to a quantity and snapshotted price.","products":{"workshop":{"view":"board","icon":"🛒"},"venue":{"mapsTo":"CartItemMeta","pos":false}}},{"domain":"content_page","type":"Document","description":"A CMS-managed page such as About, Shipping Policy, FAQ, or a custom landing page.","products":{"workshop":{"view":"board","icon":"📄"},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"blog_post","type":"Document","description":"A published article for content marketing, product announcements, or brand storytelling.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false}}}],"relationships":[{"from":"customer","to":"order","verb":"Creates","description":"Customer places an order through checkout."},{"from":"order","to":"product","verb":"Contains","description":"Order includes one or more products as line items."},{"from":"product","to":"category","verb":"BelongsTo","description":"Product is organized under a catalog category."},{"from":"cart_item","to":"product","verb":"References","description":"Cart line item references the product being purchased."}]},"suggestions":[{"label":"Add a product","prompt":"Help me add a new product to my store with pricing, description, and inventory details."},{"label":"Create a category","prompt":"Create a new product category and help me organize my catalog structure."},{"label":"View sales analytics","prompt":"Show me sales analytics — total revenue, order count, top-selling products, and customer acquisition trends."},{"label":"Design product catalog","prompt":"Help me design and organize my product catalog with categories, featured items, and seasonal collections."},{"label":"Set up a promotion","prompt":"Help me set up a sale with compare-at pricing on selected products and a promotional blog post."},{"label":"Review pending orders","prompt":"Show me all pending orders that need to be confirmed and fulfilled, sorted by date."}]},"workshop":{"aiPersona":{"role":"You are the AI assistant for an e-commerce store. You help store owners manage their product catalog, track orders, organize categories, handle inventory, and grow their business through content marketing. You understand retail operations — from product merchandising and pricing strategy to order fulfillment and customer engagement.","expertise":["product catalog management and merchandising","pricing strategy with compare-at pricing and promotions","inventory tracking and stock-level alerts","order management and fulfillment workflows","customer relationship management and purchase history","content marketing through blog posts and landing pages"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["product or item mentioned","category or collection discussed","order or purchase referenced","customer or buyer introduced","content page or blog post created"],"typeMapping":{"product":"document","item":"document","listing":"document","category":"concept","collection":"concept","order":"event","purchase":"event","customer":"person","buyer":"person","shopper":"person","cart item":"measurement","line item":"measurement","page":"document","blog post":"document","article":"document"}},"relationshipPatterns":[{"from":"customer","to":"order","verb":"Creates","description":"Customer places an order"},{"from":"order","to":"product","verb":"Contains","description":"Order includes products as line items"},{"from":"product","to":"category","verb":"BelongsTo","description":"Product is organized in a category"},{"from":"cart_item","to":"product","verb":"References","description":"Cart line item references the product"}],"rules":["All prices are stored in cents to avoid floating-point errors","Products must have a name and price before going active","Orders follow the lifecycle: pending -> confirmed -> shipped -> delivered","Inventory counts must be non-negative; zero means out of stock"]},"workspaceConfig":{"paradigm":"builder","defaultTab":"explore","defaultView":"app"},"publishConfig":{"contentType":"app","publishable":true},"qualityGates":{"projectChecks":["All active products have pricing and at least one image","Product categories are organized with clear hierarchy","Order fulfillment workflow is configured and tested"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Product Catalog","view":"gallery","entityTypes":["product"],"description":"All products with images, pricing, inventory levels, and publish status"},{"name":"Order Board","view":"board","entityTypes":["order"],"description":"Orders grouped by fulfillment status: pending, confirmed, shipped, delivered"},{"name":"Customer Directory","view":"board","entityTypes":["customer"],"description":"Customer profiles with order history and lifetime purchase value"},{"name":"Category Map","view":"graph","entityTypes":["category","product"],"description":"Visual catalog structure showing category hierarchy and product assignments"},{"name":"Content Hub","view":"board","entityTypes":["content_page","blog_post"],"description":"CMS pages and blog posts for storefront content and marketing"}]}},"academy":{"skillPath":"ecommerce-fundamentals","level":"intermediate","learningObjectives":["Setting up a product catalog with categories, pricing, and inventory management","Running promotions with compare-at pricing and seasonal collections","Managing the order lifecycle from placement through fulfillment and delivery","Building customer relationships through purchase history analysis","Creating content marketing strategies with blog posts and landing pages"],"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":"ecommerce-fundamentals"},"gamification":{"enabled":true,"achievements":["chain-maker","deep-thinker","bridge-builder"],"streaks":false,"leaderboard":false},"cohort":{"maxSize":8,"durationDays":45,"fixedStart":false}},"venue":{"bookingNumberPrefix":"EC","subdomainPrefix":"store","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":false,"ordering":true,"inventory":true,"subscriptions":true,"support":true,"analytics":true,"website":true,"notifications":true,"apps":true,"documents":true,"hall":{"enabled":false}},"theme":{"primary":"oklch(0.45 0.12 160)","bgBase":"oklch(0.98 0.005 160)","accent":"oklch(0.65 0.15 45)","textPrimary":"oklch(0.15 0.02 160)","displayFont":"Poppins","bodyFont":"Inter"},"experienceTypes":[{"slug":"standard-order","name":"Standard Order","description":"Regular product order with standard shipping and processing.","priceInCents":0,"durationMinutes":5,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.55 0.12 160)","sessionAttributeDefinitions":[{"key":"trackingNumber","label":"Tracking Number","type":"text","perGuest":false,"required":false},{"key":"shippingCarrier","label":"Shipping Carrier","type":"text","perGuest":false,"required":false}]},{"slug":"express-order","name":"Express Order","description":"Priority processing and expedited shipping for time-sensitive purchases.","priceInCents":1500,"durationMinutes":5,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.60 0.14 45)","sessionAttributeDefinitions":[{"key":"trackingNumber","label":"Tracking Number","type":"text","perGuest":false,"required":false},{"key":"shippingCarrier","label":"Shipping Carrier","type":"text","perGuest":false,"required":false},{"key":"estimatedDelivery","label":"Estimated Delivery","type":"text","perGuest":false,"required":false}]}],"inventoryCategories":[{"id":"physical-products","label":"Physical Products","icon":"📦"},{"id":"packaging-supplies","label":"Packaging Supplies","icon":"📫"},{"id":"digital-goods","label":"Digital Goods","icon":"💾"}],"staffRoles":[{"id":"store-owner","label":"Store Owner","defaultCapabilities":["pos","inventory-view","bookings-view","session-log"]},{"id":"store-manager","label":"Store Manager","defaultCapabilities":["pos","inventory-view","bookings-view","session-log"]},{"id":"fulfillment-associate","label":"Fulfillment Associate","defaultCapabilities":["pos","inventory-view","session-log"]},{"id":"customer-support","label":"Customer Support","defaultCapabilities":["pos","bookings-view"]}],"chatSuggestions":[{"label":"Browse products","message":"Show me your product catalog. What categories do you carry?","emoji":"🛍️"},{"label":"Track my order","message":"I'd like to check the status of my recent order. Can you help me track it?","emoji":"📦"},{"label":"Current promotions","message":"Are there any current sales or promotions running? I'm looking for deals.","emoji":"🏷️"},{"label":"Product recommendations","message":"I'm not sure what to get. Can you recommend some popular products?","emoji":"✨"}],"inventoryLevelDetection":"manual","stations":[{"id":"pos","label":"Point of Sale","route":"/api/manage/pos","icon":"💳","roles":["staff","manager","owner"],"scope":"platform","context":"both"},{"id":"orders","label":"Orders","route":"/api/manage/orders","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":"customers","label":"Customers","route":"/api/manage/customers","icon":"👥","roles":["manager","owner"],"scope":"platform","context":"both"},{"id":"content","label":"Content","route":"/api/manage/content","icon":"📝","roles":["manager","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"}],"fees":{"billingModel":"per-transaction","feeMode":"all-channels"}}},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"game-design-doc","type":"soulcraft","role":"primary","status":"released","name":"Game Design Document","description":"Complete game design document with mechanics, story, characters, and art direction","longDescription":"Comprehensive game design document template with knowledge graph integration. Track characters, mechanics, story elements, and their relationships. Perfect for indie developers, students, or game design hobbyists.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🎮","tags":["game-design","creative","mechanics","storytelling"],"variables":[{"key":"gameTitle","label":"Game Title","description":"The title of your game","type":"string","required":true,"example":"Epic Quest"},{"key":"genre","label":"Genre","description":"The game genre (RPG, Puzzle, Action, etc.)","type":"string","required":true,"example":"RPG"},{"key":"designer","label":"Designer","description":"The game designer's name","type":"string","required":false,"example":"Your Name"}],"shared":{"industry":"game-development","category":"creative","glossary":{"core loop":"The primary repeating cycle of actions a player performs","mechanic":"A specific rule or system that governs player interaction","pillar":"A core design principle that guides all decisions"},"aiExpertise":["Game design principles and patterns","Mechanics and systems design","Narrative and character design","Balance and playtesting","Art direction and visual design"],"dataModelHints":["topic","person","thing","event"],"dataModel":{"entities":[{"domain":"mechanic","type":"Concept","description":"A game rule or interactive system governing player behaviour","products":{"workshop":{"view":"graph","icon":"⚙️"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"character","type":"Person","description":"A playable character, NPC, or enemy with abilities","products":{"workshop":{"view":"gallery","icon":"🧑"},"academy":{"mapsTo":"learning-subject","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"level","type":"Location","description":"A game level or area with layout and enemies","products":{"workshop":{"view":"graph","icon":"🗺️"}}},{"domain":"system","type":"Concept","description":"A high-level game system such as combat, economy, or crafting","products":{"workshop":{"view":"graph","icon":"🔬"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"item","type":"Thing","description":"A collectible or equippable item in the game world","products":{"workshop":{"view":"gallery","icon":"🎒"},"academy":{"mapsTo":"resource","assessable":false},"venue":{"mapsTo":"InventoryItemMeta","pos":false}}}],"relationships":[{"from":"mechanic","to":"mechanic","verb":"DependsOn","description":"Mechanic requires another mechanic to function"},{"from":"character","to":"mechanic","verb":"Uses","description":"Character uses this mechanic or ability"},{"from":"level","to":"character","verb":"Contains","description":"Level contains these enemies or NPCs"},{"from":"item","to":"mechanic","verb":"Enables","description":"Item enables or modifies this mechanic"}]},"suggestions":[{"label":"Design a game mechanic","prompt":"Help me design and document a new game mechanic"},{"label":"Create a character class","prompt":"Help me create a new character class or archetype"},{"label":"Write a level design","prompt":"Help me write a level design document"},{"label":"Balance gameplay","prompt":"Help me analyze and balance my game mechanics"},{"label":"Define art direction","prompt":"Help me define the visual art direction for my game"},{"label":"Review design doc","prompt":"Show me my game design document structure and completeness"}]},"academy":{"skillPath":"game-design","level":"intermediate","learningObjectives":["Define a core gameplay loop with action, feedback, progression, and motivation clearly articulated","Document game mechanics with rules, edge cases, and relationships to other systems","Design and balance a character roster with distinct abilities and roles","Write a GDD section that communicates scope and vision clearly to a developer or artist","Conduct a paper-prototype playtest and document balance findings"],"assessmentTypes":["portfolio","playtest"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"game-designer"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are an expert game designer helping creators design, document, and refine games with well-crafted mechanics, compelling characters, and balanced systems.","expertise":["Game design principles","Mechanics and systems balancing","Narrative design and character creation","Level design","Playtesting and iteration"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"creative","defaultTab":"explore","defaultView":"gallery","defaultFile":"overview/concept.md","layout":{"leftDock":"concepts","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["gallery","graph","ai-chat"],"suggestedActions":["Define your core game loop in mechanics/","Create character profiles using templates","Use Graph view to see all elements connected","Ask AI for game design feedback"]}},"graphGuidance":{"conceptCreation":{"triggers":["When user creates a game mechanic","When user describes a character or enemy","When user defines a level or area","When user outlines a system or feature"],"typeMapping":{"mechanic":"concept","character":"person","enemy":"person","level":"location","system":"concept","item":"thing"}},"relationshipPatterns":[{"from":"concept","to":"concept","verb":"dependsOn","description":"Mechanic requires another"},{"from":"person","to":"concept","verb":"uses","description":"Character uses mechanic"},{"from":"location","to":"person","verb":"contains","description":"Level contains enemies"},{"from":"thing","to":"concept","verb":"enables","description":"Item enables mechanic"}],"rules":["Create concept entities for mechanics and systems","Link mechanics to the characters that use them","Track dependencies between systems","Note which features support core pillars"]},"qualityGates":{"fileChecks":[{"path":"mechanics/core-loop.md","required":["Action","Feedback","Progress","Motivation"],"optional":["Primary Mechanics"]},{"path":"characters/protagonist.md","required":["Name","Abilities"],"optional":["Character Arc","Personality"]},{"path":"README.md","required":["Overview","Core Pillars"],"optional":["Genre","Designer"]}],"projectChecks":["Core loop is clearly defined","At least one mechanic is documented","Protagonist has defined abilities","Game has clear core pillars (2-3)"],"exportReady":["All major mechanics documented","Character abilities defined","Story structure outlined","Art direction established"]}},"venue":{"bookingNumberPrefix":"GD","subdomainPrefix":"gamedesign","features":{"customerAccounts":true,"apps":true,"subscriptions":true,"website":true,"analytics":true,"cms":true,"blog":true,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.42 0.20 280)","bgBase":"oklch(0.12 0.04 260)","accent":"oklch(0.68 0.18 55)","textPrimary":"oklch(0.94 0.02 260)","displayFont":"Rubik","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Start my GDD","message":"I'm starting a new game. How do I structure my game design document?","emoji":"🎮"},{"label":"Design mechanics","message":"Help me design core gameplay mechanics for my game.","emoji":"⚙️"},{"label":"Manage subscription","message":"I'd like to manage my account and subscription.","emoji":"💳"},{"label":"Share with my team","message":"How do I share my GDD with co-developers and collaborators?","emoji":"👥"}]},"previewImageUrl":"kits/game-design-doc/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"teacher-lesson-plan","type":"soulcraft","role":"primary","status":"released","name":"Teacher Lesson Plan","description":"Plan and organize lessons, courses, and curriculum with learning objectives, activities, and assessments","longDescription":"Build a lesson planning and curriculum management app for educators. Organize lessons into units and courses, schedule class sessions on a calendar, design assessments with rubrics, and align content to curriculum standards. Uses Brainy for document, project, event, task, and topic entity modeling.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🎓","tags":["education","teaching","curriculum","lesson-planning","brainy","sveltekit"],"variables":[{"key":"appName","label":"App Name","description":"The name of your lesson planning app","type":"string","required":true,"example":"my-lessons"},{"key":"subject","label":"Subject Area","description":"The subject you teach","type":"string","required":false,"example":"Biology, Math, History","default":""},{"key":"gradeLevel","label":"Grade Level","description":"The grade level of your students","type":"string","required":false,"example":"9th Grade, K-5, College","default":""}],"shared":{"industry":"education-learning","category":"business","aiExpertise":["Lesson plan design using Bloom's Taxonomy","Curriculum alignment to standards","Assessment and rubric creation","Differentiated instruction strategies","Unit planning and sequencing"],"dataModelHints":["document","project","event","task","topic"],"dataModel":{"entities":[{"domain":"lesson","type":"Document","description":"A lesson plan with objectives, activities, and materials","products":{"workshop":{"view":"board","icon":"📝"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"course","type":"Concept","description":"A course or unit grouping a sequence of lessons","products":{"workshop":{"view":"tree","icon":"📚"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}},{"domain":"session","type":"Event","description":"A scheduled class session that delivers a lesson","products":{"workshop":{"view":"timeline","icon":"📅"},"academy":{"mapsTo":"practice-session","assessable":true},"venue":{"mapsTo":"BookingMeta","pos":false}}},{"domain":"assessment","type":"Event","description":"A quiz, test, or assignment evaluating lesson objectives","products":{"workshop":{"view":"board","icon":"✅"},"academy":{"mapsTo":"practice-session","assessable":true},"venue":{"mapsTo":"BookingMeta","pos":false}}},{"domain":"subject","type":"Concept","description":"A subject area or curriculum standard lessons align to","products":{"workshop":{"view":"graph","icon":"🎓"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}}],"relationships":[{"from":"lesson","to":"course","verb":"PartOf","description":"Lesson belongs to this unit or course"},{"from":"lesson","to":"lesson","verb":"Precedes","description":"Lesson sequence within the unit"},{"from":"lesson","to":"subject","verb":"Describes","description":"Lesson covers this subject or standard"},{"from":"session","to":"lesson","verb":"Uses","description":"Class session delivers this lesson"},{"from":"assessment","to":"lesson","verb":"Evaluates","description":"Assessment tests the objectives of this lesson"}]},"suggestions":[{"label":"Create a lesson","prompt":"Help me create a new lesson plan with objectives and activities"},{"label":"Design an activity","prompt":"Help me design an engaging classroom activity"},{"label":"Write assessments","prompt":"Help me create assessment questions for a lesson"},{"label":"Align to standards","prompt":"Help me align my lessons to curriculum standards"},{"label":"Plan a unit","prompt":"Help me plan a multi-lesson unit on a topic"},{"label":"View lesson plan","prompt":"Show me my lesson plans organized in the board view"}]},"academy":{"skillPath":"instructional-design","level":"intermediate","learningObjectives":["Write lesson objectives at the appropriate Bloom's Taxonomy level for the target grade","Design classroom activities that develop the objective rather than merely review content","Create assessment rubrics with criteria observable enough for consistent grading","Sequence a unit so each lesson scaffolds the skills needed for the next","Differentiate a lesson plan with at least two strategies for varied learning needs"],"assessmentTypes":["portfolio","peer-review"],"mode":"training","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"direct","encouragementLevel":"neutral","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":true,"aiCertifierAllowed":false,"lineageEnabled":false,"certificationSlug":"lesson-designer"},"gamification":{"enabled":true,"achievements":["completionist","streak"],"streaks":true,"leaderboard":true},"compliance":{"deadlineEnforcement":true,"managerDashboard":true,"completionReport":"pdf","renewalPeriod":"annual"}},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are an instructional design expert helping educators create engaging, standards-aligned lesson plans and curriculum that promote deep student learning.","expertise":["Lesson plan design","Bloom's Taxonomy application","Assessment creation","Differentiated instruction","Curriculum standards alignment"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"planner","defaultTab":"explore","defaultView":"calendar","defaultFile":"lessons/lesson-01.md","layout":{"leftDock":"files","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["calendar","board","ai-chat"],"suggestedActions":["Plan your lessons using the calendar view","Create lesson plans using the template","Track learning objectives across lessons","Ask AI for activity and assessment ideas"]}},"graphGuidance":{"conceptCreation":{"triggers":["User creates a lesson","User creates a course or unit","User schedules a class session","User creates an assessment"],"typeMapping":{"lesson":"document","course":"project","unit":"project","session":"event","assessment":"task","subject":"topic","standard":"concept"}},"relationshipPatterns":[{"from":"document","to":"project","verb":"partOf","description":"Lesson belongs to unit/course"},{"from":"document","to":"document","verb":"precedes","description":"Lesson sequence"},{"from":"document","to":"document","verb":"requires","description":"Prerequisite lesson"},{"from":"document","to":"topic","verb":"describes","description":"Lesson covers topic"},{"from":"event","to":"document","verb":"uses","description":"Session teaches lesson"},{"from":"task","to":"document","verb":"evaluates","description":"Assessment evaluates lesson"}],"rules":["Every lesson should have learning objectives","Link lessons to their unit/course","Track lesson prerequisites","Schedule lessons as events"]},"qualityGates":{"fileChecks":[{"path":"package.json","required":["svelte","@sveltejs/kit","@soulcraft/brainy"],"optional":["typescript"]},{"path":"src/lib/types.ts","required":["Lesson","Course"],"optional":["Assessment","Session"]}],"projectChecks":["App starts with npm run dev","Can create lessons","Can organize into units/courses","Can schedule class sessions","Calendar view shows schedule"],"exportReady":["No TypeScript errors","All routes load correctly","Error handling in place"]},"sampleData":{"description":"Sample lessons for a 9th grade biology unit on cells","entities":[{"name":"Introduction to Biology","type":"project","properties":{"subject":"Biology","grade_level":"9th Grade","term":"Fall 2024","description":"Introduction to biological concepts for high school freshmen"}},{"name":"Lesson 1.1: Introduction to Cells","type":"document","properties":{"lesson_type":"introduction","duration_minutes":"50","status":"ready","objective":"Students will identify the basic components of cells and explain why cells are the fundamental unit of life."}}],"relationships":[{"from":"Lesson 1.1: Introduction to Cells","verb":"partOf","to":"Introduction to Biology"}]},"templateMetadata":{"runnable":true,"runnableCommand":"npm run dev"},"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"512Mi"},"oneClickCommand":"gcloud run deploy"}},"venue":{"bookingNumberPrefix":"TL","subdomainPrefix":"lessons","features":{"blog":true,"cms":true,"customerAccounts":true,"website":true,"notifications":true,"analytics":true,"subscriptions":true,"giftCards":true,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"per-transaction","feeMode":"online-only"},"theme":{"primary":"oklch(0.42 0.16 175)","bgBase":"oklch(0.98 0.01 175)","accent":"oklch(0.62 0.14 55)","textPrimary":"oklch(0.20 0.03 175)","displayFont":"Nunito","bodyFont":"Inter"},"experienceTypes":[{"slug":"private-tutoring","name":"Private Tutoring Session","description":"A one-on-one tutoring session tailored to the student's current curriculum, learning pace, and areas of difficulty. Available in person or online.","priceInCents":7500,"durationMinutes":60,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.55 0.14 175)","sessionAttributeDefinitions":[{"key":"subject","label":"Subject","type":"text","perGuest":false,"required":true},{"key":"gradeLevel","label":"Grade Level","type":"select","perGuest":false,"required":true,"options":["Elementary (K–5)","Middle School (6–8)","High School (9–12)","University / Adult"]},{"key":"sessionFormat","label":"Session Format","type":"select","perGuest":false,"required":true,"options":["In-person","Online / video"]}]},{"slug":"group-workshop","name":"Group Workshop","description":"A structured 2-hour workshop for up to 10 students covering a focused topic. Includes lesson materials, activities, and a follow-up resource pack.","priceInCents":3500,"durationMinutes":120,"minGuests":3,"maxGuests":10,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.58 0.12 55)","sessionAttributeDefinitions":[{"key":"topic","label":"Workshop Topic","type":"text","perGuest":false,"required":true},{"key":"ageGroup","label":"Age Group","type":"select","perGuest":false,"required":true,"options":["Ages 8–11","Ages 12–14","Ages 15–18","Adults"]}]},{"slug":"curriculum-consultation","name":"Curriculum Consultation","description":"A 45-minute session for parents or school co-ordinators to design a personalised learning curriculum or review a student's progress and set term goals.","priceInCents":8000,"durationMinutes":45,"minGuests":1,"maxGuests":2,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.48 0.14 175)","sessionAttributeDefinitions":[{"key":"studentNeeds","label":"Student Needs","type":"text","perGuest":false,"required":false}]}],"staffRoles":[{"id":"teacher","label":"Teacher","defaultCapabilities":["checkin","pos","cms","analytics","notifications"]},{"id":"substitute","label":"Substitute Teacher","defaultCapabilities":["checkin","pos"]},{"id":"administrator","label":"Administrator","defaultCapabilities":["checkin","pos","analytics","notifications"]}],"chatSuggestions":[{"label":"Book a tutoring session","message":"I'd like to book a private tutoring session. What subjects are available?","emoji":"📚"},{"label":"Group workshop","message":"I'm interested in a group workshop for a small class. What's available?","emoji":"👨‍🏫"},{"label":"Curriculum planning","message":"I'd like to plan a curriculum for my child or student. Can I book a consultation?","emoji":"📋"},{"label":"Online or in-person?","message":"Do you offer online sessions as well as in-person? What's the difference?","emoji":"💻"}]},"previewImageUrl":"kits/teacher-lesson-plan/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"online-course","type":"soulcraft","role":"primary","status":"released","name":"Online Course","description":"Launch and manage an online course business with curriculum design, student enrollment, and progress tracking","longDescription":"A full-featured online course platform for entrepreneurs and educators building a teaching business. Design multi-lesson courses with structured curricula, track student enrollments and completion progress, publish course landing pages and blog content, and manage your student community. Because it runs as a full Svelte app backed by Brainy, you can extend it with AI-powered lesson generation, adaptive learning paths, discussion forums, or certificate issuance — all wired directly into your knowledge graph.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🎓","tags":["education","courses","learning","e-learning","teaching","content-creator","online-business","curriculum"],"variables":[{"key":"businessName","label":"Business Name","description":"The name of your online course business, displayed in the header and meta tags","type":"string","required":true,"example":"Bright Path Academy"},{"key":"tagline","label":"Tagline","description":"A one-line description of your teaching mission, shown below the business name","type":"string","required":false,"example":"Master new skills with expert-led online courses","default":"Learn at your own pace"},{"key":"locationName","label":"Location Name","description":"The display name for your primary location or virtual campus","type":"string","required":false,"example":"Online Campus","default":"Online"},{"key":"locationSlug","label":"Location Slug","description":"URL-friendly identifier for your location, used in routing","type":"string","required":false,"example":"online-campus","default":"online"},{"key":"email","label":"Contact Email","description":"Support email address displayed in the footer and used for student enquiries","type":"email","required":true,"example":"hello@brightpathacademy.com"},{"key":"timezone","label":"Timezone","description":"IANA timezone identifier for scheduling live sessions and displaying dates","type":"string","required":false,"example":"America/New_York","default":"UTC"}],"shared":{"industry":"online-education","category":"education","glossary":{"curriculum":"The structured sequence of lessons within a course, ordered to build knowledge progressively from foundational concepts to advanced applications.","enrollment":"A student's registration in a specific course, tracking their start date, progress percentage, and completion status.","learning objective":"A specific, measurable outcome a student should achieve after completing a lesson or course — written in terms of what the learner can do.","drip content":"A delivery model where lessons are released on a schedule rather than all at once, maintaining student engagement over weeks.","completion rate":"The percentage of enrolled students who finish all lessons in a course — a key metric for course quality and student engagement.","course launch":"The coordinated release of a new course including landing page, email sequences, and promotional content."},"aiExpertise":["online course design and curriculum planning","lesson structure and learning objective writing","student engagement and retention strategies","course landing page copywriting","pricing strategy for digital education products","student progress analytics and completion optimisation","content marketing and blog writing for course creators"],"dataModelHints":["course","lesson","enrollment","student","progress","content_page","blog_post"],"dataModel":{"entities":[{"domain":"course","type":"Document","description":"A complete online course with title, description, learning objectives, difficulty level, and publication status. Contains an ordered collection of lessons.","products":{"workshop":{"view":"board","icon":"📚"},"academy":{"mapsTo":"knowledge-unit","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"lesson","type":"Document","description":"A single lesson within a course containing instructional content, estimated duration, and ordering position. Linked to its parent course.","products":{"workshop":{"view":"board","icon":"📖"},"academy":{"mapsTo":"knowledge-unit","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"enrollment","type":"Event","description":"A record of a student enrolling in a course, tracking enrollment date, progress percentage, and completion timestamp.","products":{"workshop":{"view":"board","icon":"🎫"},"venue":{"mapsTo":"BookingMeta","pos":false}}},{"domain":"student","type":"Person","description":"A learner who has enrolled in one or more courses. Tracks name, email, and join date.","products":{"workshop":{"view":"graph","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"progress","type":"Measurement","description":"A progress record tracking a student's completion of a specific lesson — whether they finished it, time spent, and any score achieved.","products":{"workshop":{"view":"stats","icon":"📊"}}},{"domain":"content_page","type":"Document","description":"A static content page for the course platform — About, FAQ, Terms, or custom landing pages.","products":{"workshop":{"view":"board","icon":"📄"},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"blog_post","type":"Document","description":"A blog article used for content marketing, SEO, and establishing authority in the teaching domain.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"ContentPageMeta","pos":false}}}],"relationships":[{"from":"student","to":"enrollment","verb":"Creates","description":"Student creates an enrollment when they register for a course."},{"from":"enrollment","to":"course","verb":"References","description":"Enrollment links to the specific course the student registered for."},{"from":"course","to":"lesson","verb":"Contains","description":"Course contains an ordered sequence of lessons that make up its curriculum."},{"from":"progress","to":"lesson","verb":"References","description":"Progress record tracks completion of a specific lesson."},{"from":"progress","to":"student","verb":"References","description":"Progress record belongs to a specific student."}]},"suggestions":[{"label":"Create a course","prompt":"Help me design a new online course. Ask me about the topic, target audience, and learning objectives, then create the course with a structured curriculum."},{"label":"Add lessons","prompt":"Help me add lessons to my course. For each lesson, I want a title, content outline, estimated duration, and clear learning objectives."},{"label":"View student progress","prompt":"Show me an overview of student enrollments and progress across all my courses. Highlight any students who might need attention."},{"label":"Design curriculum","prompt":"Review my course structure and suggest improvements to the lesson order, pacing, and learning objective coverage."},{"label":"Write a blog post","prompt":"Help me write a blog post that establishes authority in my teaching domain and drives traffic to my courses."},{"label":"Browse courses","prompt":"Show me all my courses with their status, lesson count, and enrollment numbers so I can see the full picture of my course business."}]},"academy":{"skillPath":"online-education","level":"intermediate","learningObjectives":["Design a structured online course with clear learning objectives and progressive lesson ordering","Write compelling course descriptions and landing page copy that converts visitors into students","Track and analyse student enrollment and completion metrics to improve course quality","Create a content marketing strategy with blog posts that drive organic traffic to courses","Structure pricing and enrollment models for a sustainable online education business"],"assessmentTypes":["portfolio","peer-review"],"mode":"certification","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"neutral","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":true,"certificationSlug":"course-creator"},"gamification":{"enabled":true,"achievements":["completionist","streak","chain-maker"],"streaks":true,"leaderboard":true}},"workshop":{"difficulty":"intermediate","templateTier":3,"aiPersona":{"role":"You are an online education strategist helping course creators build, launch, and grow profitable online course businesses. You combine instructional design expertise with digital marketing savvy — a great course that nobody finds is just a personal notebook.","expertise":["online course design and curriculum architecture","learning objective writing and assessment design","student engagement and completion rate optimisation","course pricing and business model strategy","landing page copywriting and conversion optimisation","content marketing and SEO for course creators","student community building and retention"],"tone":"collaborator","avoidances":["Don't create courses without clear, measurable learning objectives — 'understand X' is too vague, use 'demonstrate', 'build', 'analyse'","Don't recommend launching without at least 5 complete lessons — incomplete courses destroy credibility and refund rates","Don't ignore the marketing side — building a great course without a distribution plan is the most common failure mode"]},"workspaceConfig":{"paradigm":"builder","defaultTab":"app","defaultView":"app"},"graphGuidance":{"conceptCreation":{"triggers":["new course topic or curriculum outlined","lesson content created or structured","student enrolled or progress recorded","blog post or content page drafted","course launch or marketing campaign planned"],"typeMapping":{"course":"document","curriculum":"document","lesson":"document","module":"document","enrollment":"event","registration":"event","student":"person","learner":"person","progress":"measurement","completion":"measurement","content page":"document","blog post":"document","article":"document"}},"relationshipPatterns":[{"from":"student","to":"enrollment","verb":"Creates","description":"Student creates enrollment when registering"},{"from":"enrollment","to":"course","verb":"References","description":"Enrollment links to a specific course"},{"from":"course","to":"lesson","verb":"Contains","description":"Course contains its lessons in order"},{"from":"progress","to":"lesson","verb":"References","description":"Progress tracks a specific lesson completion"},{"from":"progress","to":"student","verb":"References","description":"Progress belongs to a specific student"}],"rules":["Every course must have at least one learning objective before any lessons are added","Lessons must specify their order position within the course for consistent sequencing","Enrollments are events, not documents — they record a point-in-time registration","Progress records link to both the student and the specific lesson for precise tracking","Blog posts should reference the courses they promote for graph connectivity"]},"qualityGates":{"projectChecks":["At least one course exists with title, description, and learning objectives","Course has at least three lessons with content and duration estimates","Course listing page loads and displays courses in a card grid","Individual course detail page shows lessons in order","App is responsive on mobile viewport widths"],"exportReady":["All courses have descriptions and at least one learning objective","Meta title and description are set","Navigation works across all pages","Empty states are handled gracefully"]},"templateMetadata":{"identifyByStructure":true,"runnable":true,"runnableCommand":"npx serve ."},"publishConfig":{"contentType":"app","publishable":true,"appEntry":"src/App.svelte"},"sampleData":{"description":"Sample courses and lessons to demonstrate the online course platform","entities":[{"type":"document","name":"Web Development Fundamentals","properties":{"entityType":"course","description":"A hands-on course covering HTML, CSS, and JavaScript from zero to building your first interactive web page.","objectives":["Build a responsive web page from scratch","Write CSS layouts using Flexbox and Grid","Add interactivity with vanilla JavaScript"],"level":"beginner","status":"published"}},{"type":"document","name":"Introduction to HTML","properties":{"entityType":"lesson","content":"Learn the building blocks of every web page — tags, attributes, and document structure.","duration":30,"order":1}},{"type":"document","name":"Styling with CSS","properties":{"entityType":"lesson","content":"Master selectors, the box model, and modern layout techniques with Flexbox.","duration":45,"order":2}},{"type":"document","name":"JavaScript Basics","properties":{"entityType":"lesson","content":"Variables, functions, and DOM manipulation — make your pages interactive.","duration":60,"order":3}}],"relationships":[{"from":"Web Development Fundamentals","verb":"Contains","to":"Introduction to HTML"},{"from":"Web Development Fundamentals","verb":"Contains","to":"Styling with CSS"},{"from":"Web Development Fundamentals","verb":"Contains","to":"JavaScript Basics"}]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Course Catalog","view":"board","entityTypes":["course"],"description":"All courses with their status, lesson count, and enrollment metrics"},{"name":"Curriculum Editor","view":"board","entityTypes":["lesson"],"description":"Manage and reorder lessons across courses"},{"name":"Student Progress","view":"stats","entityTypes":["enrollment","progress"],"description":"Enrollment and completion analytics across all courses"},{"name":"Knowledge Graph","view":"graph","entityTypes":["course","lesson","student","enrollment"],"description":"Relationship map of courses, lessons, students, and enrollments"}]}},"venue":{"bookingNumberPrefix":"OC","subdomainPrefix":"courses","features":{"subscriptions":true,"customerAccounts":true,"cms":true,"blog":true,"website":true,"analytics":true,"notifications":true,"apps":true,"documents":true,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.45 0.12 250)","bgBase":"oklch(0.99 0.005 250)","accent":"oklch(0.55 0.16 160)","textPrimary":"oklch(0.18 0.03 250)","displayFont":"DM Sans","bodyFont":"Inter"},"experienceTypes":[{"slug":"free-preview","name":"Free Course Preview","description":"Access the first lesson of any course for free to see if it's right for you.","priceInCents":0,"durationMinutes":30,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.55 0.12 250)"},{"slug":"single-course","name":"Single Course Access","description":"Full lifetime access to one course with all lessons, resources, and future updates.","priceInCents":4900,"durationMinutes":5,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.45 0.14 160)","sessionAttributeDefinitions":[{"key":"courseId","label":"Course","type":"text","perGuest":false,"required":true}]},{"slug":"all-access-pass","name":"All-Access Pass","description":"Unlimited access to every course in the catalog, including new courses as they launch.","priceInCents":9900,"durationMinutes":5,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.40 0.16 250)"}],"staffRoles":[{"id":"instructor","label":"Instructor","defaultCapabilities":["checkin","analytics","notifications"]},{"id":"teaching-assistant","label":"Teaching Assistant","defaultCapabilities":["checkin","notifications"]}],"chatSuggestions":[{"label":"Browse courses","message":"What courses do you offer? I'd like to see what's available.","emoji":"📚"},{"label":"Course recommendation","message":"Can you recommend a course for a beginner? I'm not sure where to start.","emoji":"🎯"},{"label":"Pricing info","message":"How much do courses cost? Do you have a subscription option?","emoji":"💰"},{"label":"Get support","message":"I'm enrolled in a course and need help with a lesson. Can you assist?","emoji":"🤝"}]},"previewImageUrl":"kits/online-course/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"social-media-manager","type":"soulcraft","role":"primary","status":"released","name":"Social Media Manager","description":"Plan, draft, and schedule social media content across platforms","longDescription":"A social media content management system powered by Brainy's knowledge graph. Plan campaigns, draft posts with AI assistance, organise a content calendar, track hashtag performance, and repurpose content across Instagram, LinkedIn, X, and TikTok. Every post, campaign, and hashtag is a first-class node in the graph — so you can see relationships, find gaps, and build a consistent brand voice at scale.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"📱","tags":["social media","content","marketing","instagram","scheduling","calendar","copywriting"],"variables":[{"key":"brandName","label":"Brand Name","description":"The name of the brand or account being managed","type":"string","required":true,"example":"Olive & Oak Bakery"},{"key":"brandVoice","label":"Brand Voice","description":"A short description of your brand's personality and tone of voice","type":"string","required":false,"example":"Warm, approachable, and a little bit playful — like a friend who happens to bake"},{"key":"primaryPlatform","label":"Primary Platform","description":"The social network where you focus most of your content energy","type":"string","required":false,"example":"Instagram","default":"Instagram"},{"key":"targetAudience","label":"Target Audience","description":"A brief description of the people you are trying to reach with your content","type":"string","required":false,"example":"Home bakers aged 25–45 who love sourdough and weekend treats"},{"key":"contentPillars","label":"Content Pillars","description":"Comma-separated list of 3–5 core themes your content revolves around","type":"string","required":false,"example":"Behind the scenes, Recipes, Customer stories, Tips & tricks, Seasonal specials"}],"shared":{"industry":"content-marketing","category":"business","glossary":{"content pillar":"A core theme or topic category that all your social content is organised around — typically 3–5 pillars ensure variety while maintaining focus.","evergreen content":"Posts that remain relevant and valuable regardless of when they are seen — tutorials, how-tos, and timeless tips — as opposed to time-sensitive news or trends.","social proof":"Content that demonstrates credibility through the words or actions of others — customer testimonials, user-generated content, media mentions, and review highlights.","engagement rate":"A metric calculated as total interactions (likes, comments, shares, saves) divided by reach, expressed as a percentage.","reach":"The number of unique accounts that saw a piece of content during a given period.","impressions":"The total number of times a piece of content was displayed, including multiple views by the same account.","CTR":"Click-through rate — the percentage of people who saw a post and clicked the link or call-to-action."},"aiExpertise":["platform-specific content strategy (Instagram, LinkedIn, X, TikTok)","hashtag research and optimisation","content calendar planning and cadence","copywriting for social platforms","engagement analytics and performance interpretation","brand voice development and consistency","content repurposing across formats and platforms"],"dataModelHints":["post","campaign","hashtag","platform","analytics","content_pillar"],"dataModel":{"entities":[{"domain":"post","type":"Document","description":"A single piece of social content — caption, media references, hashtags, platform target, scheduled date, and publish status.","products":{"workshop":{"view":"board","icon":"📝"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"campaign","type":"Concept","description":"A themed content campaign grouping related posts under a shared goal, time window, and target outcome.","products":{"workshop":{"view":"gallery","icon":"🎯"},"academy":{"mapsTo":"knowledge-unit","assessable":true}}},{"domain":"hashtag","type":"Thing","description":"A social media hashtag with usage frequency, platform affinity, and performance tracking metadata.","products":{"workshop":{"view":"stats","icon":"#️⃣"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}},{"domain":"platform","type":"Concept","description":"A social media platform (Instagram, LinkedIn, X, TikTok) with its own format constraints and audience characteristics.","products":{"workshop":{"view":"graph","icon":"📱"}}},{"domain":"analytics","type":"Measurement","description":"Engagement metrics for a post — reach, impressions, likes, comments, shares, saves, and CTR — recorded after publishing.","products":{"workshop":{"view":"stats","icon":"📊"},"academy":{"mapsTo":"practice-session","assessable":true},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"content_pillar","type":"Concept","description":"One of the brand's core content themes that all posts are categorised under to ensure balanced variety.","products":{"workshop":{"view":"graph","icon":"🏛️"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}}],"relationships":[{"from":"campaign","to":"post","verb":"Contains","description":"Campaign groups the posts that belong to its themed initiative."},{"from":"post","to":"hashtag","verb":"Uses","description":"Post includes one or more hashtags in its caption or first comment."},{"from":"post","to":"platform","verb":"PublishedTo","description":"Post is scheduled or published to a specific social platform."},{"from":"platform","to":"analytics","verb":"Tracks","description":"Platform records engagement analytics for posts published to it."},{"from":"post","to":"content_pillar","verb":"References","description":"Post is categorised under a content pillar to ensure thematic balance across the calendar."},{"from":"campaign","to":"content_pillar","verb":"References","description":"Campaign is anchored to one or more content pillars that define its focus."}]},"suggestions":[{"label":"Draft a post","prompt":"Help me write a post for my primary platform that fits my brand voice and content pillars."},{"label":"Plan a campaign","prompt":"Help me plan a themed content campaign with a goal, posting schedule, and post ideas."},{"label":"Build a content calendar","prompt":"Create a two-week content calendar with a balanced mix across my content pillars."},{"label":"Research hashtags","prompt":"Suggest a hashtag strategy for my brand — mixing broad, niche, and branded tags."},{"label":"Repurpose content","prompt":"Help me adapt this post for Instagram, LinkedIn, and TikTok."},{"label":"Analyse engagement","prompt":"Review my recent post analytics and identify which content types are performing best."}]},"academy":{"skillPath":"content-marketing","level":"beginner","learningObjectives":["Develop a set of clearly defined content pillars that give the brand consistent focus and variety","Write platform-native copy tailored to the tone, format, and audience of each social network","Build a realistic content calendar with a publishing cadence matched to available capacity","Research and apply hashtag strategies that combine branded, niche, and high-volume tags","Measure engagement rate, reach, and impressions, and use data to adjust content strategy"],"assessmentTypes":["portfolio","peer-review"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"social-media-manager"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"beginner","templateTier":2,"aiPersona":{"role":"You are a social media strategist helping brands create compelling, platform-optimised content that drives engagement and grows their audience. You understand the nuances of each major platform and can write in any brand voice.","expertise":["platform-specific content strategy","hashtag research and optimisation","content calendar planning and scheduling","copywriting for Instagram, LinkedIn, X, and TikTok","engagement analytics and performance measurement","brand voice development and consistency","campaign planning and content repurposing"],"tone":"collaborator","avoidances":["Don't make engagement guarantees — performance depends on audience, timing, and the algorithm","Don't copy competitor content — always generate original ideas tailored to the brand","Don't recommend paid promotion without understanding the budget context first"]},"workspaceConfig":{"paradigm":"planner","defaultTab":"explore","defaultView":"calendar"},"graphGuidance":{"conceptCreation":{"triggers":["post, caption, or social content drafted","campaign or promotion theme discussed","hashtag mentioned or researched","platform (Instagram, LinkedIn, X, TikTok) referenced","content pillar or theme identified","analytics or engagement data recorded"],"typeMapping":{"post":"document","caption":"document","campaign":"concept","hashtag":"thing","platform":"concept","content pillar":"concept","analytics":"measurement","engagement metric":"measurement"}},"relationshipPatterns":[{"from":"campaign","to":"post","verb":"Contains","description":"Campaign owns its constituent posts"},{"from":"post","to":"hashtag","verb":"Uses","description":"Post uses hashtag in caption"},{"from":"post","to":"platform","verb":"PublishedTo","description":"Post is targeted at a specific platform"}],"rules":["Every post should link to a content pillar for balance tracking","Campaign posts should share a hashtag for discoverability","Platform nodes should be reused — one node per network, not one per post","Analytics entities link back to the post they measure"]},"qualityGates":{"projectChecks":["At least three content pillars are defined with descriptions","A content calendar covers at least two weeks of posts","Each post is linked to a content pillar and a platform","At least one campaign exists with a defined goal and post count","Hashtag groups are defined for each content pillar"],"exportReady":["All draft posts have captions written","Posting schedule dates are assigned","Hashtag sets are attached to each post"]},"templateMetadata":{"identifyByStructure":true,"runnable":false},"publishConfig":{"contentType":"document","publishable":true},"sampleData":{"description":"Sample content pillars, a campaign, and posts to demonstrate the social media manager","entities":[{"type":"concept","name":"Behind the Scenes","properties":{"description":"Authentic glimpses into the kitchen, baking process, and the team that makes it happen.","color":"#F97316","postFrequency":"3x per week"}},{"type":"concept","name":"Valentine's Week Campaign","properties":{"goal":"Drive bookings for Valentine's Day custom cake orders","startDate":"2026-02-08","endDate":"2026-02-14","targetPlatform":"Instagram","status":"draft"}},{"type":"document","name":"Nothing says love like a custom cake 🍰","properties":{"caption":"Nothing says love like a custom cake 🍰 Order your Valentine's design by Feb 10 — link in bio.","platform":"Instagram","scheduledDate":"2026-02-07","status":"scheduled","pillar":"Behind the Scenes"}},{"type":"thing","name":"#valentinescake","properties":{"platform":"Instagram","type":"campaign","estimatedReach":"medium"}}],"relationships":[{"from":"Valentine's Week Campaign","verb":"Contains","to":"Nothing says love like a custom cake 🍰"},{"from":"Nothing says love like a custom cake 🍰","verb":"Uses","to":"#valentinescake"},{"from":"Nothing says love like a custom cake 🍰","verb":"References","to":"Behind the Scenes"}]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Content Calendar","view":"calendar","entityTypes":["post"],"description":"Monthly view of scheduled and published posts across all platforms"},{"name":"Campaign Board","view":"board","entityTypes":["campaign","post"],"description":"Track campaigns from ideation through drafting to published"},{"name":"Hashtag Library","view":"gallery","entityTypes":["hashtag"],"description":"Browse and organise hashtag groups by pillar and platform"},{"name":"Engagement Stats","view":"stats","entityTypes":["analytics"],"description":"Reach, impressions, and engagement rate across published posts"},{"name":"Content Graph","view":"graph","entityTypes":["post","campaign","hashtag","content_pillar"],"description":"Graph of how posts relate to campaigns, hashtags, and pillars"}]}},"venue":{"bookingNumberPrefix":"SM","subdomainPrefix":"socialmgr","features":{"blog":true,"cms":true,"customerAccounts":true,"subscriptions":true,"website":true,"notifications":true,"analytics":true,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.48 0.20 220)","bgBase":"oklch(0.99 0.005 220)","accent":"oklch(0.65 0.18 295)","textPrimary":"oklch(0.20 0.03 220)","displayFont":"Inter","bodyFont":"Inter"},"experienceTypes":[{"slug":"strategy-session","name":"Social Media Strategy Session","description":"A 90-minute deep-dive to audit your current presence, define your brand voice, and build a platform-specific content strategy with a 30-day action plan.","priceInCents":25000,"durationMinutes":90,"minGuests":1,"maxGuests":3,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.55 0.18 220)","sessionAttributeDefinitions":[{"key":"businessType","label":"Business Type","type":"text","perGuest":false,"required":true},{"key":"platforms","label":"Platforms","type":"select","perGuest":false,"options":["Instagram","TikTok","LinkedIn","X / Twitter","Facebook","YouTube Shorts","Multiple"],"required":false}]},{"slug":"content-review-call","name":"Content Review Call","description":"A 45-minute call to review your scheduled content calendar, refine copy and visuals, and ensure everything is on-brand and optimised for each platform's algorithm.","priceInCents":12000,"durationMinutes":45,"minGuests":1,"maxGuests":2,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.60 0.16 295)","sessionAttributeDefinitions":[{"key":"contentPeriod","label":"Content Period","type":"select","perGuest":false,"options":["This week","Next 2 weeks","This month"],"required":false}]}],"staffRoles":[{"id":"strategist","label":"Social Strategist","defaultCapabilities":["checkin","pos","cms","analytics","notifications"]},{"id":"copywriter","label":"Copywriter","defaultCapabilities":["cms"]},{"id":"designer","label":"Designer","defaultCapabilities":["cms"]},{"id":"account-manager","label":"Account Manager","defaultCapabilities":["checkin","pos","analytics","notifications"]}],"chatSuggestions":[{"label":"Book a strategy session","message":"I'd like to book a social media strategy session. What does it cover?","emoji":"📱"},{"label":"Content review","message":"I need someone to review my upcoming content calendar. Can I book a call?","emoji":"✅"},{"label":"Manage my accounts","message":"I'm interested in full social media management services. What packages do you offer?","emoji":"💼"},{"label":"Grow my following","message":"My accounts aren't growing. What's the best strategy for my niche?","emoji":"📈"}]},"previewImageUrl":"kits/social-media-manager/images/preview.webp"},{"id":"coworking-space","type":"soulcraft","role":"primary","status":"released","name":"Coworking Space","description":"Membership and booking platform for coworking spaces with hot desks, offices, and meeting rooms","longDescription":"Modern coworking management covering hot desk day passes, dedicated desk memberships, private office leases, and hourly meeting room bookings. Tracks member check-ins, amenity usage, and community events.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"💼","tags":["coworking","workspace","desk","office","meeting room","membership"],"previewImageUrl":"kits/coworking-space/images/preview.webp","variables":[{"key":"businessName","label":"Business Name","description":"The name of your coworking space (e.g. \"The Workshop Collective\")","type":"string","required":true,"example":"The Workshop Collective","default":"The Workshop Collective"},{"key":"tagline","label":"Tagline","description":"A short phrase shown under the logo (e.g. \"work better. together.\")","type":"string","required":false,"example":"work better. together.","default":"work better. together."},{"key":"locationName","label":"Location Name","description":"The display name for this specific location (e.g. \"The Workshop Collective Midtown\")","type":"string","required":true,"example":"The Workshop Collective Midtown"},{"key":"locationSlug","label":"Location URL Slug","description":"URL-safe identifier for this location used in booking links (e.g. \"midtown\")","type":"string","required":true,"example":"midtown"},{"key":"address","label":"Street Address","description":"Street address of your coworking space (e.g. \"800 Innovation Blvd, Floor 3\")","type":"address","required":true,"example":"800 Innovation Blvd, Floor 3"},{"key":"city","label":"City","description":"City where your coworking space is located","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":"80203"},{"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":"(720) 555-0198"},{"key":"email","label":"Contact Email","type":"email","required":true,"example":"hello@workshopcollective.co"},{"key":"instagram","label":"Instagram Handle","description":"Instagram username without the @","type":"string","required":false,"example":"workshopcollective"},{"key":"maxCapacity","label":"Total Member Capacity","description":"Maximum number of concurrent members the space can accommodate across all desk types","type":"number","required":false,"example":"80","default":"80"}],"shared":{"industry":"real-estate-workspace","category":"hospitality","glossary":{"hot desk":"An unassigned desk used on a first-come, first-served basis — not reserved for a specific member","dedicated desk":"A permanently assigned desk that a member can leave their belongings at between visits","private office":"A fully enclosed, lockable office space reserved for one company or individual","day pass":"A single-day membership granting access to hot desk seating and shared amenities","amenity":"A shared facility such as a printer, phone booth, coffee bar, or lounge available to all members","community event":"A scheduled gathering — workshop, networking night, or lunch-and-learn — open to all members","flex member":"A member who uses the space irregularly and typically purchases day passes rather than a fixed membership"},"aiExpertise":["coworking space operations and desk management","membership tier design and recurring billing","meeting room scheduling and utilization","community programming and member engagement","amenity and facility operations"],"dataModelHints":["booking","experience","time_slot","staff","customer","inventory_item","gift_card","loyalty_account","transaction"],"dataModel":{"entities":[{"domain":"location","type":"Location","description":"A physical coworking location with hot desks, dedicated desks, private offices, and meeting rooms — each with its own capacity and access hours.","products":{"workshop":{"view":"graph","icon":"📍"},"venue":{"mapsTo":"LocationMeta","pos":false}}},{"domain":"booking","type":"Event","description":"A workspace reservation — hot desk day pass, meeting room slot, or community event registration.","products":{"workshop":{"view":"board","icon":"📅"},"venue":{"mapsTo":"BookingMeta","pos":true},"academy":{"mapsTo":"practice-session","assessable":true}}},{"domain":"time_slot","type":"Event","description":"An available desk or room slot with date, time, workspace type, and capacity.","products":{"workshop":{"view":"timeline","icon":"🕐"},"venue":{"mapsTo":"TimeSlotMeta","pos":false}}},{"domain":"experience","type":"Product","description":"A workspace product — Hot Desk Day Pass, Meeting Room (hourly), Dedicated Desk (daily), Private Office (daily), or Community Event.","products":{"workshop":{"view":"gallery","icon":"💼"},"venue":{"mapsTo":"ExperienceMeta","pos":true},"academy":{"mapsTo":"skill-unit","assessable":true}}},{"domain":"customer","type":"Person","description":"A coworking member — freelancer, remote worker, or small business — with access history and membership tier.","products":{"workshop":{"view":"board","icon":"👤"},"venue":{"mapsTo":"CustomerMeta","pos":false},"academy":{"mapsTo":"learner","assessable":false}}},{"domain":"staff","type":"Person","description":"A space employee — community manager, front desk attendant, facilities manager, or events coordinator.","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 day pass, meeting room booking, or membership payment, always in cents.","products":{"workshop":{"view":"timeline","icon":"💳"},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"inventory_item","type":"Thing","description":"An office supply, coffee and beverage item, printing credit, tech accessory, or cleaning supply tracked in stock.","products":{"workshop":{"view":"graph","icon":"📦"},"venue":{"mapsTo":"InventoryItemMeta","pos":false},"academy":{"mapsTo":"material","assessable":false}}},{"domain":"gift_card","type":"Thing","description":"A digital or physical gift card redeemable for day passes, meeting room hours, or membership credits.","products":{"workshop":{"view":"board","icon":"🎁"},"venue":{"mapsTo":"GiftCardMeta","pos":true}}},{"domain":"loyalty_account","type":"Person","description":"A member loyalty account tracking day pass usage and rewarding long-term members with desk upgrade credits.","products":{"workshop":{"view":"stats","icon":"⭐"},"venue":{"mapsTo":"LoyaltyAccountMeta","pos":false}}},{"domain":"content_page","type":"Document","description":"A CMS-managed page such as Membership Plans, Amenities, Virtual Tour, or Community Guidelines.","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 member spotlights, productivity tips, or community event recaps.","products":{"workshop":{"view":"board","icon":"✍️"},"venue":{"mapsTo":"BlogPostMeta","pos":false},"academy":{"mapsTo":"learning-resource","assessable":false}}}],"relationships":[{"from":"customer","to":"booking","verb":"Creates","description":"Member books a hot desk, meeting room slot, or community event registration."},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific workspace product (hot desk, meeting room, private office, etc.)."},{"from":"booking","to":"time_slot","verb":"ParticipatesIn","description":"Booking occupies a specific desk or room slot with defined date, time, and duration."},{"from":"experience","to":"time_slot","verb":"OccursAt","description":"A workspace type is available at scheduled slots with defined capacity and availability windows."},{"from":"staff","to":"time_slot","verb":"ParticipatesIn","description":"A community manager or events coordinator hosts a community event time slot."},{"from":"transaction","to":"booking","verb":"References","description":"Payment or refund record links back to the workspace or meeting room booking."}]},"suggestions":[{"label":"Space utilization by desk type","prompt":"Show me occupancy rates for hot desks, dedicated desks, private offices, and meeting rooms this week"},{"label":"Active member roster","prompt":"Give me a list of all active members with their membership type and last check-in date"},{"label":"Revenue by workspace type","prompt":"Compare revenue across hot desk passes, meeting room hours, dedicated desks, and private offices for this month"},{"label":"Upcoming community events","prompt":"What community events are scheduled in the next 30 days? How many RSVPs do we have for each?"}]},"workshop":{"aiPersona":{"role":"You are the AI assistant for a coworking space. You help community managers track desk availability, member check-ins, meeting room utilization, and revenue by workspace type. You understand the coworking business — from day passes to dedicated office leases.","expertise":["coworking space operations and desk management","membership program design and recurring billing","meeting room scheduling and capacity optimization","community event planning and member engagement","facilities management and amenity operations"],"tone":"collaborator"},"graphGuidance":{"conceptCreation":{"triggers":["desk booking or meeting room reservation mentioned","member or company introduced","workspace type referenced (hot desk, dedicated, office)","community event or workshop scheduled","office supply or beverage inventory mentioned"],"typeMapping":{"booking":"event","desk reservation":"event","meeting room":"event","community event":"event","time slot":"event","member":"person","customer":"person","community manager":"person","front desk":"person","supply":"thing","coffee":"thing","equipment":"thing","experience":"product","membership":"product","desk pass":"product","transaction":"measurement"}},"relationshipPatterns":[{"from":"customer","to":"booking","verb":"Creates","description":"Member books a hot desk, meeting room, or community event"},{"from":"staff","to":"booking","verb":"ParticipatesIn","description":"Community manager hosts a community event session"},{"from":"booking","to":"experience","verb":"Contains","description":"Booking is for a specific workspace type (hot desk, meeting room, private office)"}],"rules":["Meeting room bookings should prevent double-booking of the same room at the same time","Day pass check-ins should log arrival and departure for accurate occupancy reporting","Community events should have a registered capacity cap to manage space safely"]},"workspaceConfig":{"paradigm":"analyst","defaultTab":"explore","defaultView":"board"},"qualityGates":{"projectChecks":["All workspace types have accurate capacity limits configured","Meeting room availability windows are set correctly for business hours","Member onboarding experience type has correct duration and pricing"]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Space Availability","view":"board","entityTypes":["time_slot","booking"],"description":"Real-time desk and room availability across all workspace types"},{"name":"Member Directory","view":"gallery","entityTypes":["customer"],"description":"Active members with company, membership tier, and last check-in date"},{"name":"Revenue by Space Type","view":"stats","entityTypes":["transaction"],"description":"Revenue breakdown across hot desks, dedicated desks, private offices, and meeting rooms"},{"name":"Community Events","view":"timeline","entityTypes":["time_slot"],"description":"Upcoming workshops, networking nights, and community events with RSVP counts"},{"name":"Desk & Room Inventory","view":"tree","entityTypes":["inventory_item"],"description":"Office supplies, beverages, and equipment organized by category with stock levels"}]}},"academy":{"skillPath":"professional-productivity","level":"beginner","learningObjectives":["Designing a focused work environment and managing distractions in a shared space","Time-blocking and deep work strategies for remote and freelance professionals","Coworking etiquette — noise levels, shared amenities, and community norms","Networking in a coworking environment and building professional relationships","Using collaboration tools and shared infrastructure effectively"],"assessmentTypes":["hands-on"],"mode":"training","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"direct","encouragementLevel":"neutral","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":true,"aiCertifierAllowed":false,"lineageEnabled":false,"certificationSlug":"remote-worker"},"gamification":{"enabled":true,"achievements":["completionist","streak"],"streaks":true,"leaderboard":true},"compliance":{"deadlineEnforcement":true,"managerDashboard":true,"completionReport":"pdf","renewalPeriod":"annual"}},"venue":{"bookingNumberPrefix":"CW","subdomainPrefix":"cowork","features":{"animals":false,"adoption":false,"memories":false,"loyalty":true,"giftCards":true,"waivers":false,"blog":true,"pos":true,"cms":true,"partners":false,"franchise":true,"customerAccounts":true,"booking":true,"inventory":true},"theme":{"primary":"oklch(0.45 0.10 240)","bgBase":"oklch(0.97 0.01 240)","accent":"oklch(0.60 0.15 200)","textPrimary":"oklch(0.20 0.03 240)","displayFont":"DM Sans","bodyFont":"Inter"},"experienceTypes":[{"slug":"hot-desk-day-pass","name":"Hot Desk Day Pass","description":"Full-day access to any available hot desk seat, shared amenities, high-speed Wi-Fi, and the coffee bar. No reservation needed — first-come, first-served.","priceInCents":3500,"durationMinutes":480,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.58 0.10 240)","sessionAttributeDefinitions":[{"key":"workspaceType","label":"Workspace Type","type":"select","options":["hot-desk","dedicated","office","meeting-room"],"perGuest":true,"required":false},{"key":"companyName","label":"Company / Freelance Name","type":"text","perGuest":true,"required":false},{"key":"membershipType","label":"Membership Type","type":"select","options":["day-pass","flex","dedicated","private-office","none"],"perGuest":true,"required":false}]},{"slug":"meeting-room-hourly","name":"Meeting Room (hourly)","description":"Private meeting room seating up to 12, bookable in 1-hour increments. Includes display screen, whiteboard, and video conferencing setup.","priceInCents":1500,"durationMinutes":60,"minGuests":1,"maxGuests":12,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.52 0.12 200)","sessionAttributeDefinitions":[{"key":"workspaceType","label":"Workspace Type","type":"select","options":["hot-desk","dedicated","office","meeting-room"],"perGuest":false,"required":false},{"key":"companyName","label":"Company / Team Name","type":"text","perGuest":false,"required":false},{"key":"membershipType","label":"Booking Member Type","type":"select","options":["day-pass","flex","dedicated","private-office","none"],"perGuest":false,"required":false}]},{"slug":"dedicated-desk-daily","name":"Dedicated Desk (daily)","description":"Your own permanently assigned desk that you can leave your setup on between visits. Includes locker access and priority check-in.","priceInCents":2500,"durationMinutes":480,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":2,"color":"oklch(0.48 0.10 220)","sessionAttributeDefinitions":[{"key":"workspaceType","label":"Workspace Type","type":"select","options":["hot-desk","dedicated","office","meeting-room"],"perGuest":true,"required":false},{"key":"companyName","label":"Company / Freelance Name","type":"text","perGuest":true,"required":false},{"key":"membershipType","label":"Membership Type","type":"select","options":["day-pass","flex","dedicated","private-office","none"],"perGuest":true,"required":false}]},{"slug":"private-office-daily","name":"Private Office (daily)","description":"A fully enclosed, lockable private office seating up to 6. Includes dedicated Wi-Fi VLAN, filing cabinet, and 24/7 building access.","priceInCents":8500,"durationMinutes":480,"minGuests":1,"maxGuests":6,"requiresWaiver":false,"isCombo":false,"sortOrder":3,"color":"oklch(0.42 0.10 230)","sessionAttributeDefinitions":[{"key":"workspaceType","label":"Workspace Type","type":"select","options":["hot-desk","dedicated","office","meeting-room"],"perGuest":false,"required":false},{"key":"companyName","label":"Company Name","type":"text","perGuest":false,"required":false},{"key":"membershipType","label":"Membership Type","type":"select","options":["day-pass","flex","dedicated","private-office","none"],"perGuest":false,"required":false}]},{"slug":"community-event","name":"Community Event","description":"Member workshop, networking night, lunch-and-learn, or speaker series. Open to all members and day pass holders. Free or ticketed depending on the event.","priceInCents":0,"durationMinutes":120,"minGuests":1,"maxGuests":50,"requiresWaiver":false,"isCombo":false,"sortOrder":4,"color":"oklch(0.62 0.08 160)","sessionAttributeDefinitions":[{"key":"workspaceType","label":"Event Space","type":"select","options":["hot-desk","dedicated","office","meeting-room"],"perGuest":false,"required":false},{"key":"companyName","label":"Hosting Organization","type":"text","perGuest":false,"required":false},{"key":"membershipType","label":"Attendee Type","type":"select","options":["day-pass","flex","dedicated","private-office","none"],"perGuest":true,"required":false}]}],"inventoryCategories":[{"id":"office-supplies","label":"Office Supplies","icon":"📎"},{"id":"coffee-beverages","label":"Coffee & Beverages","icon":"☕"},{"id":"printing-copying","label":"Printing & Copying","icon":"🖨️"},{"id":"tech-equipment","label":"Tech Equipment","icon":"💻"},{"id":"cleaning-supplies","label":"Cleaning Supplies","icon":"🧹"}],"staffRoles":[{"id":"community-manager","label":"Community Manager","defaultCapabilities":["checkin","pos","session-log","inventory-view","bookings-view"]},{"id":"front-desk","label":"Front Desk","defaultCapabilities":["checkin","pos","bookings-view"]},{"id":"facilities-manager","label":"Facilities Manager","defaultCapabilities":["inventory-view","session-log"]},{"id":"events-coordinator","label":"Events Coordinator","defaultCapabilities":["checkin","session-log","bookings-view"]}],"chatSuggestions":[{"label":"Day pass availability","message":"I'd like to drop in and work for a day. Do you have availability?","emoji":"💼"},{"label":"Membership options","message":"What membership plans do you offer and what's included in each?","emoji":"🏆"},{"label":"Book a meeting room","message":"I need a meeting room for a team call tomorrow. How do I book one?","emoji":"📅"},{"label":"Gift cards","message":"I'd like to buy a gift card or day pass credit for a colleague. What do you have?","emoji":"🎁"}],"inventoryLevelDetection":"manual","stations":[{"id":"pos","label":"Point of Sale","route":"/api/manage/pos","icon":"💳","roles":["staff","manager","owner"],"scope":"platform","context":"physical"},{"id":"checkin","label":"Check-in","route":"/api/manage/checkin","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":"space-map","label":"Space Map","route":"/api/manage/space-map","icon":"🗺️","roles":["staff","manager","owner"],"scope":"kit","context":"physical"}],"fees":{"billingModel":"hybrid","feeMode":"all-channels"}}},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"recipe-manager","type":"soulcraft","role":"primary","status":"released","name":"Recipe Manager","description":"Recipe collection with meal planning, ingredient tracking, and shopping lists","longDescription":"Build a recipe collection and meal planning app with beautiful gallery views. Link recipes to ingredients, plan weekly meals on a calendar, auto-generate shopping lists, and filter by dietary tags. Uses Brainy for document, thing, event, and topic entity modeling.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🍳","tags":["recipes","cooking","meal-planning","ingredients","brainy","sveltekit"],"variables":[{"key":"appName","label":"App Name","description":"The name of your recipe manager app","type":"string","required":true,"example":"my-recipes"},{"key":"description","label":"Description","description":"A short description of your recipe collection","type":"string","required":false,"example":"My recipe collection","default":"A beautiful recipe manager and meal planner"}],"shared":{"industry":"food-cooking","category":"creative","aiExpertise":["Recipe creation and scaling","Ingredient substitutions","Meal planning and nutrition","Cuisine exploration","Shopping list optimization"],"dataModelHints":["document","thing","event","topic"],"dataModel":{"entities":[{"domain":"recipe","type":"Document","description":"A recipe with ingredients, instructions, and metadata","products":{"workshop":{"view":"gallery","icon":"🍳"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"ingredient","type":"Thing","description":"A food ingredient used in one or more recipes","products":{"workshop":{"view":"gallery","icon":"🥕"},"academy":{"mapsTo":"resource","assessable":false},"venue":{"mapsTo":"InventoryItemMeta","pos":true}}},{"domain":"meal","type":"Event","description":"A planned meal on the calendar using one or more recipes","products":{"workshop":{"view":"timeline","icon":"🍽️"},"academy":{"mapsTo":"practice-session","assessable":true},"venue":{"mapsTo":"BookingMeta","pos":false}}},{"domain":"tag","type":"Concept","description":"A dietary or cuisine tag such as Vegan or Italian","products":{"workshop":{"view":"graph","icon":"🏷️"},"academy":{"mapsTo":"knowledge-unit","assessable":false}}}],"relationships":[{"from":"recipe","to":"ingredient","verb":"Contains","description":"Recipe requires this ingredient"},{"from":"ingredient","to":"ingredient","verb":"Transforms","description":"Ingredient can substitute for another"},{"from":"meal","to":"recipe","verb":"Uses","description":"Meal is prepared using this recipe"},{"from":"tag","to":"recipe","verb":"Categorizes","description":"Tag applied to this recipe"}]},"suggestions":[{"label":"Add a recipe","prompt":"Help me add a new recipe to my collection"},{"label":"Plan a meal","prompt":"Help me plan meals for this week using recipes in my collection"},{"label":"Find by ingredient","prompt":"What recipes can I make with ingredients I have on hand?"},{"label":"Scale a recipe","prompt":"Help me scale a recipe for a different number of servings"},{"label":"Organize by cuisine","prompt":"Help me organize my recipes by cuisine type"},{"label":"Browse recipes","prompt":"Show me my recipe collection in the gallery view"}]},"academy":{"skillPath":"culinary-arts","level":"beginner","learningObjectives":["Write a recipe with ingredient quantities, preparation steps, and timing accurate enough to reproduce","Identify viable ingredient substitutions and explain how they affect flavour and texture","Plan a weekly meal calendar that minimises food waste through shared ingredients","Scale a recipe up or down and recalculate seasoning ratios correctly"],"assessmentTypes":["portfolio","demo"],"mode":"self-paced","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"exploratory","encouragementLevel":"warm","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":false,"certificationSlug":"recipe-developer"},"gamification":{"enabled":true,"achievements":["connector","deep-thinker","streak","completionist"],"streaks":true,"leaderboard":false}},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are a culinary assistant helping home cooks build a beautiful recipe collection, plan meals, and discover new culinary ideas.","expertise":["Recipe creation and adaptation","Ingredient substitutions","Meal planning","Cooking techniques","Dietary accommodations"],"tone":"collaborator"},"workspaceConfig":{"paradigm":"creative","defaultTab":"explore","defaultView":"gallery","defaultFile":"recipes/first-recipe.md","layout":{"leftDock":"files","rightDock":"views"},"onboarding":{"showGuide":true,"highlightFeatures":["gallery","calendar","ai-chat"],"suggestedActions":["Add your favorite recipes","Use Gallery view to browse recipe photos","Plan meals in Calendar view","Ask AI for recipe variations"]}},"graphGuidance":{"conceptCreation":{"triggers":["User adds a recipe","User adds an ingredient","User plans a meal","User creates a dietary tag"],"typeMapping":{"recipe":"document","ingredient":"thing","meal":"event","tag":"topic"}},"relationshipPatterns":[{"from":"document","to":"thing","verb":"contains","description":"Recipe contains ingredient"},{"from":"thing","to":"thing","verb":"transforms","description":"Ingredient substitutes for another"},{"from":"event","to":"document","verb":"uses","description":"Meal uses recipe"},{"from":"topic","to":"document","verb":"categorizes","description":"Tag applied to recipe"}],"rules":["Every recipe should have ingredients linked","Track dietary tags for filtering","Link substitutions between ingredients"]},"qualityGates":{"fileChecks":[{"path":"package.json","required":["svelte","@sveltejs/kit","@soulcraft/brainy"],"optional":["typescript"]},{"path":"src/lib/types.ts","required":["Recipe","Ingredient"],"optional":["Meal","Tag"]}],"projectChecks":["App starts with npm run dev","Can create new recipes","Can add ingredients","Can plan meals","Search returns matching recipes"],"exportReady":["No TypeScript errors","All routes load correctly","Error handling in place"]},"sampleData":{"description":"Sample recipes demonstrating the app features","entities":[{"type":"document","name":"Classic Pasta Carbonara","properties":{"servings":4,"prepTime":15,"cookTime":20,"description":"Traditional Roman pasta with crispy guanciale and creamy egg sauce.","status":"tested","rating":5}},{"type":"thing","name":"Spaghetti","properties":{"category":"pasta","unit":"grams","description":"Long thin pasta, essential for carbonara."}},{"type":"topic","name":"Italian","properties":{"color":"#E91E63","description":"Traditional Italian cuisine."}}],"relationships":[{"from":"Classic Pasta Carbonara","verb":"contains","to":"Spaghetti"},{"from":"Italian","verb":"categorizes","to":"Classic Pasta Carbonara"}]},"templateMetadata":{"runnable":true,"runnableCommand":"npm run dev"},"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"512Mi"},"oneClickCommand":"gcloud run deploy"}},"venue":{"bookingNumberPrefix":"RM","subdomainPrefix":"recipes","features":{"blog":true,"cms":true,"customerAccounts":true,"website":true,"subscriptions":true,"notifications":true,"analytics":true,"giftCards":true,"pos":false,"documents":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"per-transaction","feeMode":"online-only"},"theme":{"primary":"oklch(0.42 0.16 30)","bgBase":"oklch(0.98 0.01 40)","accent":"oklch(0.62 0.14 120)","textPrimary":"oklch(0.22 0.04 30)","displayFont":"Playfair Display","bodyFont":"Lato"},"experienceTypes":[{"slug":"cooking-class","name":"Cooking Class","description":"A hands-on or virtual cooking class focused on a seasonal ingredient, technique, or cuisine. Learn the recipes, understand the why behind each step, and cook alongside a chef.","priceInCents":6500,"durationMinutes":120,"minGuests":2,"maxGuests":12,"requiresWaiver":false,"isCombo":false,"sortOrder":0,"color":"oklch(0.55 0.14 30)","sessionAttributeDefinitions":[{"key":"cuisineType","label":"Cuisine / Theme","type":"text","perGuest":false,"required":true},{"key":"format","label":"Format","type":"select","perGuest":false,"required":true,"options":["In-person","Virtual / live stream"]}]},{"slug":"meal-plan-consultation","name":"Meal Plan Consultation","description":"A 45-minute one-on-one session to design a personalised meal plan around your dietary needs, schedule, and cooking skill level. Includes a 4-week recipe schedule.","priceInCents":9500,"durationMinutes":45,"minGuests":1,"maxGuests":1,"requiresWaiver":false,"isCombo":false,"sortOrder":1,"color":"oklch(0.55 0.12 120)","sessionAttributeDefinitions":[{"key":"dietaryNeeds","label":"Dietary Requirements","type":"text","perGuest":false,"required":false},{"key":"cookingLevel","label":"Cooking Level","type":"select","perGuest":false,"required":false,"options":["Beginner","Intermediate","Confident cook"]}]}],"staffRoles":[{"id":"chef-instructor","label":"Chef Instructor","defaultCapabilities":["checkin","pos","cms","analytics"]},{"id":"nutritionist","label":"Nutritionist","defaultCapabilities":["checkin","pos"]}],"chatSuggestions":[{"label":"Browse recipes","message":"What recipes do you have? I'm looking for something quick and healthy.","emoji":"🥗"},{"label":"Book a cooking class","message":"I'd like to join a cooking class. What's coming up?","emoji":"👨‍🍳"},{"label":"Meal plan consultation","message":"I need help with a weekly meal plan. Can I book a consultation?","emoji":"📋"},{"label":"Subscribe for recipes","message":"How do I subscribe to get new recipes and cooking tips?","emoji":"📬"}]},"previewImageUrl":"kits/recipe-manager/images/preview.webp"},{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"invoice-generator","type":"soulcraft","role":"primary","status":"released","name":"Invoice Generator","description":"Create professional invoices, track payments, and manage client billing","longDescription":"A full-featured invoicing app built on SvelteKit and Brainy. Manage clients and projects, build detailed invoices with line items and tax, track payment status, and generate PDF-ready output. Brainy powers the client and invoice knowledge graph, linking every payment back to its source invoice and client so you always know who owes what.","version":"1.0.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"icon":"🧾","tags":["invoicing","billing","clients","payments","freelance","finance"],"variables":[{"key":"businessName","label":"Business Name","description":"Your business or freelance trading name shown on all invoices","type":"string","required":true,"example":"Apex Creative Studio"},{"key":"businessEmail","label":"Business Email","description":"Contact email printed on invoice footers and quote headers","type":"email","required":true,"example":"hello@apexcreative.studio"},{"key":"businessAddress","label":"Business Address","description":"Full mailing address shown on invoices for legal and tax purposes","type":"string","required":false,"example":"42 Harbour Street, Suite 7, Sydney NSW 2000"},{"key":"taxRate","label":"Default Tax Rate (%)","description":"Percentage applied to taxable line items (e.g. 10 for 10% GST or VAT). Enter 0 to disable tax.","type":"number","required":false,"example":"10","default":"0"},{"key":"currencySymbol","label":"Currency Symbol","description":"Symbol displayed next to monetary amounts on invoices and quotes","type":"string","required":false,"example":"$","default":"$"},{"key":"invoicePrefix","label":"Invoice Number Prefix","description":"Short prefix prepended to auto-incrementing invoice numbers (e.g. INV-0001)","type":"string","required":false,"example":"INV","default":"INV"},{"key":"paymentTerms","label":"Default Payment Terms","description":"Standard payment terms printed on invoices unless overridden per client","type":"string","required":false,"example":"Net 30","default":"Net 30"}],"shared":{"industry":"business-finance","category":"business","glossary":{"invoice":"A formal request for payment sent to a client after work is completed, listing services rendered and the total amount due.","line item":"A single charge on an invoice representing one unit of work, product, or expense with a quantity, rate, and subtotal.","net 30":"Payment terms requiring the client to pay within 30 calendar days of the invoice date.","deposit":"An upfront partial payment — typically 25–50% — collected before work begins to secure the engagement.","retainer":"A recurring pre-payment arrangement where a client pays a fixed amount each month for a guaranteed block of hours or services.","billable hours":"Time spent on client work that is eligible to be charged back to the client at an agreed hourly rate."},"aiExpertise":["invoice structure and professional billing practices","tax calculation and jurisdiction-specific rules","payment terms, deposits, and retainer agreements","cash flow management and accounts receivable","client relationship and billing communication","quote-to-invoice conversion workflows","late payment handling and collection strategies"],"dataModelHints":["client","invoice","line_item","payment","quote"],"dataModel":{"entities":[{"domain":"client","type":"Person","description":"A business or individual who commissions work and receives invoices. Stores contact details, billing address, payment terms override, and outstanding balance.","products":{"workshop":{"view":"board","icon":"👤"},"academy":{"mapsTo":"learner","assessable":false},"venue":{"mapsTo":"CustomerMeta","pos":false}}},{"domain":"invoice","type":"Document","description":"A formal payment request issued to a client. Records issue date, due date, payment terms, line items, tax, and payment status.","products":{"workshop":{"view":"gallery","icon":"🧾"},"academy":{"mapsTo":"learning-artifact","assessable":true},"venue":{"mapsTo":"ContentPageMeta","pos":false}}},{"domain":"line_item","type":"Thing","description":"A single billable row on an invoice or quote. Contains description, quantity, unit rate, and taxable flag.","products":{"workshop":{"view":"board","icon":"📋"}}},{"domain":"payment","type":"Event","description":"A recorded payment against an invoice — partial or full. Stores amount in cents, payment method, and received date.","products":{"workshop":{"view":"timeline","icon":"💳"},"academy":{"mapsTo":"practice-session","assessable":true},"venue":{"mapsTo":"TransactionMeta","pos":false}}},{"domain":"quote","type":"Document","description":"A pre-invoice estimate sent to a prospective client for approval before work begins. Can be converted to an invoice once accepted.","products":{"workshop":{"view":"board","icon":"📝"},"academy":{"mapsTo":"learning-artifact","assessable":false}}}],"relationships":[{"from":"client","to":"invoice","verb":"Creates","description":"Client is billed via one or more invoices over the course of the engagement."},{"from":"client","to":"quote","verb":"Creates","description":"Client receives a quote before work is approved and invoicing begins."},{"from":"invoice","to":"line_item","verb":"Contains","description":"Invoice breaks down the total charge into individual service or product line items."},{"from":"quote","to":"line_item","verb":"Contains","description":"Quote lists estimated line items that become invoice line items upon acceptance."},{"from":"payment","to":"invoice","verb":"References","description":"Payment records the amount received against a specific invoice, updating its balance due."},{"from":"invoice","to":"quote","verb":"References","description":"Invoice references the accepted quote it was converted from, preserving the approval trail."}]},"suggestions":[{"label":"Create an invoice","prompt":"Help me create a new invoice for a client with line items, tax, and payment terms."},{"label":"Track a payment","prompt":"Record a payment received for an outstanding invoice and update its balance."},{"label":"Draft a quote","prompt":"Help me put together a project quote to send to a new client for approval."},{"label":"Review outstanding invoices","prompt":"Show me all unpaid invoices and flag any that are past their due date."},{"label":"Add a new client","prompt":"Add a new client with their billing address, email, and default payment terms."},{"label":"Analyse revenue","prompt":"Summarise my invoiced revenue by client and month for the past quarter."}]},"academy":{"skillPath":"business-finance","level":"beginner","learningObjectives":["Create professional client invoices with correctly structured line items, subtotals, tax, and due dates","Track payment status across outstanding, partially paid, and fully settled invoices","Manage a client roster with per-client billing preferences and payment history","Calculate and apply tax rates correctly to taxable line items","Organise billing history and generate summary views of revenue earned per client or period"],"assessmentTypes":["portfolio","peer-review"],"mode":"certification","tutorPersona":{"inheritsFrom":"workshop.aiPersona","method":"socratic","encouragementLevel":"neutral","flashcardsEnabled":true},"certification":{"requiresHumanCertifier":false,"aiCertifierAllowed":true,"lineageEnabled":true,"certificationSlug":"invoice-creator"},"gamification":{"enabled":true,"achievements":["deep-thinker","completionist","chain-maker"],"streaks":false,"leaderboard":true}},"workshop":{"difficulty":"intermediate","templateTier":4,"aiPersona":{"role":"You are a financial assistant helping freelancers and small business owners create professional invoices and track client payments. You know billing conventions, tax rules, and cash flow best practices inside out.","expertise":["client billing and accounts receivable","tax calculation and jurisdiction rules","payment terms, deposits, and retainer structures","cash flow management and late payment handling","quote-to-invoice conversion workflows","professional invoice design and legal requirements"],"tone":"collaborator","avoidances":["Don't give specific tax or legal advice — recommend consulting a local accountant for jurisdiction-specific questions","Don't assume a currency unless the user has set one in their variables","Don't invent client details — always ask the user to supply real contact information"]},"workspaceConfig":{"paradigm":"analyst","defaultTab":"app","defaultView":"app"},"graphGuidance":{"conceptCreation":{"triggers":["client name or company mentioned","invoice number or billing event referenced","payment received or recorded","quote or estimate requested","line item, service, or product described"],"typeMapping":{"client":"person","company":"person","invoice":"document","quote":"document","estimate":"document","payment":"event","line item":"thing","service":"thing","expense":"thing"}},"relationshipPatterns":[{"from":"client","to":"invoice","verb":"Creates","description":"Client receives the invoice"},{"from":"invoice","to":"line_item","verb":"Contains","description":"Invoice holds the billable breakdown"},{"from":"payment","to":"invoice","verb":"References","description":"Payment settles or partially covers the invoice"}],"rules":["Every invoice must link to a client","Every payment must reference the invoice it settles","Line items must belong to an invoice or quote — never free-floating","Amounts are always stored in cents; display formatting is a UI concern"]},"qualityGates":{"projectChecks":["App starts and the invoice list loads without errors","A new invoice can be created with at least one line item","Tax is calculated correctly when a non-zero tax rate is set","Payment status updates when a payment is recorded against an invoice","PDF-ready layout renders cleanly for a completed invoice"],"exportReady":["No TypeScript errors","Invoice PDF output is correctly formatted","All routes load without runtime errors"]},"templateMetadata":{"identifyByStructure":true,"runnable":true,"runnableCommand":"npm run dev"},"deploy":{"provider":"cloud-run","buildCommand":"npm run build","outputDir":"build","config":{"port":3000,"memory":"512Mi"},"oneClickCommand":"gcloud run deploy"},"publishConfig":{"contentType":"app","publishable":true},"sampleData":{"description":"Sample clients and a realistic invoice with line items to demonstrate the app","entities":[{"type":"person","name":"Meridian Digital","properties":{"contactName":"Jessica Park","email":"jessica@meridiandigital.co","phone":"+1-555-0182","address":"1200 Market St, San Francisco CA 94102","paymentTerms":"Net 30","status":"active"}},{"type":"person","name":"Lumen Ventures","properties":{"contactName":"Carlos Rivera","email":"c.rivera@lumenventures.io","phone":"+1-555-0247","address":"88 Pine Ave, Austin TX 78701","paymentTerms":"Net 14","status":"active"}},{"type":"document","name":"INV-0001","properties":{"client":"Meridian Digital","issueDate":"2026-01-15","dueDate":"2026-02-14","status":"unpaid","subtotal":420000,"taxAmount":42000,"total":462000,"notes":"Thank you for choosing Apex Creative Studio."}}],"relationships":[{"from":"Meridian Digital","verb":"Creates","to":"INV-0001"}]},"remoteWorkspace":{"connectedWorkbenches":[{"name":"Invoice Pipeline","view":"board","entityTypes":["invoice"],"description":"Drag invoices across Draft, Sent, Partially Paid, and Paid columns"},{"name":"Client Roster","view":"gallery","entityTypes":["client"],"description":"Browse clients, their outstanding balances, and payment history"},{"name":"Revenue Timeline","view":"timeline","entityTypes":["payment","invoice"],"description":"Visualise cash received versus invoices issued over time"},{"name":"Billing Graph","view":"graph","entityTypes":["client","invoice","payment"],"description":"Graph connecting clients to their invoices and recorded payments"}]}},"venue":{"bookingNumberPrefix":"IG","subdomainPrefix":"invoices","features":{"customerAccounts":true,"apps":true,"website":true,"subscriptions":true,"notifications":true,"analytics":true,"cms":false,"blog":false,"giftCards":false,"pos":false,"loyalty":false,"waivers":false,"animals":false,"adoption":false,"memories":false,"partners":false,"franchise":false},"fees":{"billingModel":"subscription","feeMode":"online-only"},"theme":{"primary":"oklch(0.38 0.14 155)","bgBase":"oklch(0.99 0.005 155)","accent":"oklch(0.56 0.16 195)","textPrimary":"oklch(0.18 0.03 155)","displayFont":"Inter","bodyFont":"Inter"},"experienceTypes":[],"chatSuggestions":[{"label":"Send an invoice","message":"I need to send an invoice to a client. How do I create one quickly?","emoji":"📄"},{"label":"Track payments","message":"How do I see which invoices are paid, overdue, or pending?","emoji":"💰"},{"label":"Manage subscription","message":"I'd like to manage my account and subscription.","emoji":"💳"},{"label":"Set up recurring invoices","message":"How do I set up automatic recurring invoices for retainer clients?","emoji":"🔄"}]},"previewImageUrl":"kits/invoice-generator/images/preview.webp"}],"count":62}