{
  "_id": "6aad54f2bef5e1976f5c918e",
  "pk": "learnmu4qn1ha|ai_assistant",
  "sk": "6aad54f2bef5e1976f5c918e",
  "name": "tutorial-front-desk",
  "datatype": "ai_assistant",
  "data": {
    "name": "tutorial-front-desk",
    "title": "Tutorial Front Desk",
    "description": "Find training customer details for the front desk. Do not send messages or change bookings.",
    "personality": "Professional and concise. Use the enabled customer search to find the exact training customer. State only facts returned by the tool.",
    "voice": "ballad",
    "voiceProvider": "",
    "behaviorRules": [
      "Never send messages, create leads, or change reservations.",
      "If the tools cannot retrieve a booking, say so and ask staff to check the reservation reference.",
      "Do not claim a task succeeded without a matching tool result."
    ],
    "capabilities": [],
    "tools": [
      {
        "key": "reply_to_conversation",
        "description": "Reply to the customer on the channel they contacted you on. This is the tool to use for any normal back-and-forth reply — it automatically answers by email, SMS, web chat, Facebook or Instagram DM, WhatsApp, or as a public comment reply, matching however the customer reached you. You do NOT need to know or choose the channel, and you do NOT need the customer's address, phone number or handle. Prefer this over send_email/send_sms/send_chat_message, which are for starting a NEW conversation on a specific channel (for example emailing a receipt after a phone call).",
        "enabled": false
      },
      {
        "key": "send_sms",
        "description": "Send SMS text messages to customers' mobile phones via Twilio. Use this to send order confirmations, appointment reminders, shipping updates, promotional offers, or important alerts that need immediate attention. Perfect for time-sensitive communications, OTP codes, delivery notifications, or when customer prefers SMS over email. Requires valid phone number in E.164 format (+1234567890). Messages are tracked in conversation history.",
        "enabled": false
      },
      {
        "key": "take_message",
        "description": "Take a message for the team when you can't connect the caller, no one is available, or the caller would rather leave word. Capture who is calling, a callback number if they give one, and what they need. Read it back to confirm before you finish. It is sent to the team straight away — you do not choose who receives it.",
        "enabled": false
      },
      {
        "key": "send_email",
        "description": "Send email messages to customers. Use this to send order confirmations, shipping updates, appointment reminders, receipts, password resets, promotional offers, or important notifications. Perfect for detailed communications, receipts, confirmations, or when customer prefers email. Emails can include HTML formatting. Messages are tracked in conversation history.",
        "enabled": false
      },
      {
        "key": "send_chat_message",
        "description": "Send a real-time chat message to a specific user in a chat conversation. Use this to communicate with users through the chat system, send updates, answer questions, or proactively reach out. Messages are delivered instantly via WebSocket. Requires chat ID and recipient user email/ID. Example use cases: \"Send a message to john@example.com\", \"Let the customer know their order shipped\", \"Notify them about the update in chat\"",
        "enabled": false
      },
      {
        "key": "search_customers",
        "description": "Search and find customer records in the CRM database by email, name, phone number, or username. Use this when you need to look up customer information, verify customer identity, find contact details, or before creating leads/tickets. Returns customer ID, name, email, and phone number. Example use cases: \"Find customer john@example.com\", \"Look up customer by phone\", \"Is there a customer named John Smith?\"",
        "enabled": true
      },
      {
        "key": "create_lead",
        "description": "Create a new sales lead in the CRM with automatic scoring, temperature calculation (hot/warm/cold), and routing to sales team. Use this when someone expresses interest in products/services, requests information, or shows buying intent. Captures contact info, company details, budget, timeline, and requirements. The system automatically calculates lead score based on BANT framework (Budget, Authority, Need, Timeline) and assigns to appropriate sales rep. Returns lead number, score, and temperature for follow-up prioritization.",
        "enabled": false
      },
      {
        "key": "update_lead_status",
        "description": "Change lead status and perform lead lifecycle operations: qualify (mark as sales-ready), disqualify (not a good fit), or convert (became a customer). Use this to move leads through the sales pipeline based on conversations and qualification criteria. \"Qualify\" when lead meets BANT criteria and is ready for sales, \"Disqualify\" when not a fit (wrong budget, no authority, no timeline), \"Convert\" when they become a paying customer. Updates lead score and temperature automatically.",
        "enabled": false
      },
      {
        "key": "check_availability",
        "description": "Check real-time availability and generate appointment/reservation time slots for services. Use this when customers ask \"When are you available?\", \"What times do you have open?\", \"Can I book for tomorrow?\". Returns available date/time slots based on service duration, staff availability, and existing bookings. Specify service type, desired date, and party size. Perfect first step before creating a reservation.",
        "enabled": false
      },
      {
        "key": "get_reservation_types",
        "description": "Get list of all available reservation/appointment types, services offered, and their details (duration, pricing, capacity). Use this when customers ask \"What services do you offer?\", \"What can I book?\", \"How long does X take?\", or before checking availability. Returns service names, descriptions, durations, prices, categories, and capacity limits. Call this first to understand what services are bookable.",
        "enabled": false
      },
      {
        "key": "create_reservation",
        "description": "Create and book a new reservation/appointment with automatic calendar invite (ICS file) and confirmation email. Use this after checking availability and customer confirms desired time slot. Captures customer details, service type, date/time, party size, and special requests. System generates unique confirmation number, sends email with calendar invite, logs activity, and blocks the time slot. Returns confirmation number for customer reference.",
        "enabled": false
      },
      {
        "key": "confirm_reservation",
        "description": "Confirm and finalize a pending reservation/appointment. Use this when customer verifies they want to keep their reservation, confirms attendance, or accepts a tentative booking. Changes status from \"pending\" to \"confirmed\", updates confirmation timestamp, and sends confirmation email. Requires confirmation number and customer email for verification. Returns updated reservation details.",
        "enabled": false
      },
      {
        "key": "cancel_reservation",
        "description": "Cancel an existing reservation/appointment and free up the time slot. Use this when customer requests cancellation, can't make it, or needs to cancel. Automatically sends cancellation confirmation email, removes calendar block, updates availability, and logs the cancellation. Requires confirmation number and customer email for security. Returns cancellation confirmation with freed-up time slot.",
        "enabled": false
      },
      {
        "key": "modify_reservation",
        "description": "Reschedule or modify existing reservation details: change date/time, service type, party size, or add notes. Use this when customer wants to move their appointment, change service, update party size, or add special requests. Automatically sends updated confirmation email with new calendar invite (ICS), updates booking system, and logs modifications. Requires confirmation number and email. Returns updated reservation details with changes tracked.",
        "enabled": false
      },
      {
        "key": "create_ticket",
        "description": "Create a support ticket or reminder. Use this for: (1) Customer issues, bugs, technical problems, or support requests (2) Setting up notifications/reminders (e.g., \"notify me when order ships\", \"remind me about my reservation\") (3) Follow-up tasks that need tracking. Automatically generates ticket number, sends confirmation email, routes to support team, and tracks in system. Perfect for any request that needs follow-up action or notification.",
        "enabled": false
      },
      {
        "key": "get_ticket",
        "description": "Retrieve complete details and current status of an existing support ticket. Use this when customer asks \"What's the status of my ticket?\", \"Is my issue resolved?\", \"Can you check ticket #123?\". Returns ticket number, title, description, current status (new/in_progress/pending/resolved/closed), priority, assigned agent, creation date, last update, and resolution notes. Requires ticket number and customer email for security.",
        "enabled": false
      },
      {
        "key": "update_ticket",
        "description": "Add comments, update status, or change priority of existing support ticket. Use this to provide updates (\"We're working on it\"), add new information from customer, change priority based on urgency, or update status (mark as resolved/closed). Comments are timestamped and tracked in ticket history. Status changes: new → in_progress (working on it), pending (waiting for customer), resolved (fixed), closed (completed). Updates customer via email notification.",
        "enabled": false
      },
      {
        "key": "query_knowledge",
        "description": "Search and retrieve information from internal knowledge base, documentation, FAQs, policies, and data sources. Use this when you need to look up company information, product details, policies, procedures, technical documentation, or answers to common questions that aren't in your training data. Specify which data source to search (documents, products, policies, etc.) and your search query. Returns relevant information with sources for accurate, up-to-date answers.",
        "enabled": false
      },
      {
        "key": "get_chat_history",
        "description": "Retrieve the complete message history of a chat conversation between users. Use this when the customer asks about previous chat messages, wants to review what was discussed in a chat, or needs to reference earlier conversation context. This tool provides chronological chat messages with sender, recipient, content, and timestamps. Example use cases: \"What did we discuss yesterday in chat?\", \"Can you show me the chat history?\", \"What messages were sent in this conversation?\"",
        "enabled": false
      },
      {
        "key": "get_conversation_history",
        "description": "Retrieve complete SMS and text message communication history with a customer by phone number. Use this when customers ask \"What messages did we exchange?\", \"Show me our SMS history\", or you need context from previous text conversations. Returns chronological SMS messages with sender, recipient, message body, timestamp, and direction (inbound/outbound). Different from chat history - this is specifically for SMS/text messages.",
        "enabled": false
      },
      {
        "key": "confirm_order_status",
        "description": "REQUIRED TOOL for checking order status. Call this when the user asks \"where is my order\", \"order status\", \"tracking\", \"has it shipped\", \"when will it arrive\". Returns: order status (pending/processing/shipped/delivered), tracking number, estimated delivery, items, total price. You MUST have BOTH the order number AND the email address on the order — ask the customer for whichever one you are missing before calling. Either one alone is not enough to identify them.",
        "enabled": false
      },
      {
        "key": "check_product_availability",
        "description": "Check real-time inventory levels and stock availability for specific products. Use this when customers ask \"Is this product in stock?\", \"Do you have X available?\", \"How many are available?\", or before suggesting products. Returns in-stock status, available quantity, warehouse location, restock dates if out of stock, and pricing. Can search by product ID, SKU, or product name.",
        "enabled": false
      },
      {
        "key": "find_similar_product",
        "description": "Find alternative or similar products based on category, features, or price. Use this when a product is out of stock and you need alternatives, when customers ask \"Do you have anything similar?\", \"What else is like this?\", or want product recommendations. Filters by category, max price, and features. Returns similar products with availability, pricing, and why they're recommended. Perfect for upselling or helping customers find alternatives.",
        "enabled": false
      },
      {
        "key": "search_products",
        "description": "Search the product catalog by keyword (and optional filters) — the same full-text search the online store uses. Use this when a customer asks what you sell or describes what they want without a specific SKU: \"do you have gold chains?\", \"show me necklaces under $500\", \"what bracelets do you carry?\". Returns matching products with name, SKU, price, stock, category, and brand. For a specific known SKU/ID use check_product_availability instead; for alternatives to a known product use find_similar_product.",
        "enabled": false
      },
      {
        "key": "make_call",
        "description": "Make an outbound phone call to a customer. The AI will be connected to the call and can speak with the person. Use this for follow-ups, appointment reminders, or proactive outreach.",
        "enabled": false
      },
      {
        "key": "transfer_chat_to_agent",
        "description": "Hand the conversation over to a human, on whatever channel the customer is using. Use this when: (1) the customer explicitly asks for a human, (2) the issue is too complex for you to resolve, (3) the customer is frustrated or angry, (4) you cannot find a relevant answer to their question, (5) the customer wants to make a purchase decision and needs human guidance, (6) it involves sensitive matters like refunds, cancellations, or complaints. On live web chat this puts them in the agent queue and returns the queue position and wait time, so tell them where they are in line. On email, SMS and social there is no live queue — it raises a support ticket for a human to pick up, so tell the customer someone will follow up rather than promising an immediate response.",
        "enabled": false
      },
      {
        "key": "check_transfer_target",
        "description": "MANDATORY before you say anything about transferring, connecting, or putting a caller through to a person, team, or department. You do NOT know who works here — this returns the only people who can actually be reached from this call. Decide yourself whether who the caller asked for is one of them, allowing for nicknames and mishearings. If nobody in the list is plausibly who they meant, or the list is empty, then that person cannot be reached: say so plainly and offer to take a message. NEVER name, promise, or imply a transfer to anyone who is not in this list.",
        "enabled": false
      }
    ],
    "channels": [],
    "accounts": [],
    "triggers": [],
    "interactionRules": [],
    "knowledgeSources": [],
    "memory": {
      "enabled": true,
      "retentionDays": 30,
      "scope": "conversation"
    },
    "permissions": [],
    "safety": {},
    "handoff": {},
    "limits": {
      "retryCount": 0,
      "timeoutSeconds": 30
    },
    "config": {},
    "visibility": "owner",
    "status": "inactive",
    "onboardingPrompt": "",
    "collaborators": []
  },
  "version": 0,
  "created_by": "system",
  "state": "draft",
  "createdate": "2026-09-18T15:12:50.039Z",
  "modifydate": "2026-09-18T15:12:50.039Z",
  "id": "6aad54f2bef5e1976f5c918e"
}
