[
  {
    "id": "01-assistant-list",
    "at": "2026-09-18T15:10:29.453Z",
    "build": "http://localhost:3102",
    "path": "/app/ai-assistant",
    "caption": "AI Assistant list before creating a training front-desk assistant.",
    "callouts": [],
    "visibleText": "Select an option\nPhone\nChat\nAI Agent\nWhat's this?\nSupport\nReport a Bug\n1\n\n1 waiting on you\n\nOpen Approvals\nAI Assistant\n\nIntelligent AI agents for your business\n\nDashboard\nTemplates\nAssistants\nAvailable Tools\nPhone & Voice\nActivity Logs\nNew Assistant\n\nTotal Assistants\n\n0\n\nActive\n\n0\n\nInactive\n\n0\n\nConversations\n\n0\n\nWhat is AI Assistant?\n\nCreate intelligent AI agents that can interact with your customers through chat, voice, email, and more. Each assistant can be customized with unique personality, capabilities, and access to your data.\n\nNatural language conversations\nMulti-channel support (Chat, Voice, Email)\nAccess to your database and tools\nCustomizable personality and behavior\nGetting Started\n\nGet started quickly with our pre-built templates or create a custom assistant from scratch.\n\nBrowse Templates\n\nPopular templates:\n\nCustomer Support\nLead Qualifier\nAppointment Scheduler"
  },
  {
    "id": "02-new-assistant-form",
    "at": "2026-09-18T15:11:13.483Z",
    "build": "http://localhost:3102",
    "path": "/app/ai-assistant",
    "caption": "New Assistant form before selecting any tool.",
    "callouts": [],
    "visibleText": "Select an option\nPhone\nChat\nAI Agent\nWhat's this?\nSupport\nReport a Bug\n1\n\n1 waiting on you\n\nOpen Approvals\nAI Assistant\n\nIntelligent AI agents for your business\n\nDashboard\nTemplates\nAssistants\nCreate Assistant\nAvailable Tools\nPhone & Voice\nActivity Logs\nNew Assistant\nBasic Info\nPersonality\nTools\nKnowledge\nAdvanced\nReview\nGenerate with AI\nBasic Information\n\nSet up the basic details for your AI assistant\n\nAssistant Name (Identifier) *\n\nUnique identifier (letters, numbers, hyphens, underscores only)\n\nDisplay Title *\n\nUser-friendly name shown in the UI\n\nDescription\nStatus\nActive\nInactive\nArchived\nCancel\nSave Draft\nNext"
  },
  {
    "id": "03-basic-details",
    "at": "2026-09-18T15:11:44.497Z",
    "build": "http://localhost:3102",
    "path": "/app/ai-assistant",
    "caption": "Training assistant identity with status Inactive during configuration.",
    "callouts": [],
    "visibleText": "Select an option\nPhone\nChat\nAI Agent\nWhat's this?\nSupport\nReport a Bug\n1\n\n1 waiting on you\n\nOpen Approvals\nAI Assistant\n\nIntelligent AI agents for your business\n\nDashboard\nTemplates\nAssistants\nCreate Assistant\nAvailable Tools\nPhone & Voice\nActivity Logs\nNew Assistant\nBasic Info\nPersonality\nTools\nKnowledge\nAdvanced\nReview\nGenerate with AI\nBasic Information\n\nSet up the basic details for your AI assistant\n\nAssistant Name (Identifier) *\n\nUnique identifier (letters, numbers, hyphens, underscores only)\n\nDisplay Title *\n\nUser-friendly name shown in the UI\n\nDescription\nStatus\nActive\nInactive\nArchived\nCancel\nSave Draft\nNext"
  },
  {
    "id": "04-personality",
    "at": "2026-09-18T15:11:44.622Z",
    "build": "http://localhost:3102",
    "path": "/app/ai-assistant",
    "caption": "Personality and system instructions controls.",
    "callouts": [],
    "visibleText": "Select an option\nPhone\nChat\nAI Agent\nWhat's this?\nSupport\nReport a Bug\n1\n\n1 waiting on you\n\nOpen Approvals\nAI Assistant\n\nIntelligent AI agents for your business\n\nDashboard\nTemplates\nAssistants\nCreate Assistant\nAvailable Tools\nPhone & Voice\nActivity Logs\nNew Assistant\nBasic Info\nPersonality\nTools\nKnowledge\nAdvanced\nReview\nGenerate with AI\nPersonality & Behavior\n\nDefine how your AI assistant communicates and behaves\n\nPersonality\n\nThis defines the assistant's communication style and tone\n\nVoice engine\nInherit / default\nAI Voice\nInherit / default\nLoading voices…\nballad\n\nEngine + voice this assistant speaks with. Phone and IVR configs can override per number.\n\nBehavior Rules\nAdd\n\nNo behavior rules added yet\n\nPrevious\nCancel\nSave Draft\nNext"
  },
  {
    "id": "05-personality-rules",
    "at": "2026-09-18T15:12:07.629Z",
    "build": "http://localhost:3102",
    "path": "/app/ai-assistant",
    "caption": "Specific instructions and three boundaries entered for the training assistant.",
    "callouts": [],
    "visibleText": "Select an option\nPhone\nChat\nAI Agent\nWhat's this?\nSupport\nReport a Bug\n1\n\n1 waiting on you\n\nOpen Approvals\nAI Assistant\n\nIntelligent AI agents for your business\n\nDashboard\nTemplates\nAssistants\nCreate Assistant\nAvailable Tools\nPhone & Voice\nActivity Logs\nNew Assistant\nBasic Info\nPersonality\nTools\nKnowledge\nAdvanced\nReview\nGenerate with AI\nPersonality & Behavior\n\nDefine how your AI assistant communicates and behaves\n\nPersonality\n\nThis defines the assistant's communication style and tone\n\nVoice engine\nInherit / default\nOpenAI Realtime\nElevenLabs\nAI Voice\nInherit / default\nNeutral, balanced — OpenAI Realtime\nClear, direct — OpenAI Realtime\nWarm, low, unhurried — OpenAI Realtime\nBright, friendly — OpenAI Realtime\nLaid-back, resonant — OpenAI Realtime\nCalm, professional — OpenAI Realtime\nLight, energetic — OpenAI Realtime\nMature, measured — OpenAI Realtime\nReassuring, confident — OpenAI Realtime\nDeep, comforting — OpenAI Realtime\nRoger - Laid-Back, Casual, Resonant — ElevenLabs\nSarah - Mature, Reassuring, Confident — ElevenLabs\nLaura - Enthusiast, Quirky Attitude — ElevenLabs\nCharlie - Deep, Confident, Energetic — ElevenLabs\nGeorge - Warm, Captivating Storyteller — ElevenLabs\nCallum - Husky Trickster — ElevenLabs\nRiver - Relaxed, Neutral, Informative — ElevenLabs\nHarry - Fierce Warrior — ElevenLabs\nLiam - Energetic, Social Media Creator — ElevenLabs\nAlice - Clear, Engaging Educator — ElevenLabs\nMatilda - Knowledgable, Professional — ElevenLabs\nWill - Relaxed Optimist — ElevenLabs\nJessica - Playful, Bright, Warm — ElevenLabs\nEric - Smooth, Trustworthy — ElevenLabs\nBella - Professional, Bright, Warm — ElevenLabs\nChris - Charming, Down-to-Earth — ElevenLabs\nBrian - Deep, Resonant and Comforting — ElevenLabs\nDaniel - Steady Broadcaster — ElevenLabs\nLily - Velvety Actress — ElevenLabs\nAdam - Dominant, Firm — ElevenLabs\nBill - Wise, Mature, Balanced — ElevenLabs\nAdeline — ElevenLabs\nBelle B - Premium Ad Narrator — ElevenLabs\nCherie — ElevenLabs\nAmy - Natural and sweet — ElevenLabs\nJM - Husky & Engaging (2025-01-25_1100) — ElevenLabs\nCassidy — ElevenLabs\nDerek - Fun & Energetic Capture Attention — ElevenLabs\nEzra - Confident & Engaging Conversationalist — ElevenLabs\nHope - corporate training — ElevenLabs\nBrian Nguyen - Balanced, Wise and Calm — ElevenLabs\nIvanna - Seductive & Intimate — ElevenLabs\nJesse - Southern, E Learning, Corporate — ElevenLabs\nJohn - Balanced & Serious Narration — ElevenLabs\nCurt - Midwestern Storyteller — ElevenLabs\nJessa - Authentic, friendly and grounded - perfect for explainers and social media — ElevenLabs\nJohn - Energetic, Unstoppable and Upbeat — ElevenLabs\nMark - Natural Conversations — ElevenLabs\nJohn - Cool, Calm and Collected — ElevenLabs\nKai — Clean, Modern, Precise, Global — ElevenLabs\nJohnny - Seductive & Intimate — ElevenLabs\nEvan — ElevenLabs\nVeda Sky — ElevenLabs\nSawyer - Calm, Measured and Serious — ElevenLabs\nJames - Sarcastic, Casual and Skeptical — ElevenLabs\nMarlena — ElevenLabs\nRuss – Deep, Smooth and Articulate — ElevenLabs\nThe Pharaoh - Wisdom Bearer — ElevenLabs\nLINA — ElevenLabs\n\nEngine + voice this assistant speaks with. Phone and IVR configs can override per number.\n\nBehavior Rules\nAdd\n1.\nNever send messages, create leads, or change reservations.\n2.\nIf the tools cannot retrieve a booking, say so and ask staff to check the reservation reference.\n3.\nDo not claim a task succeeded without a matching tool result.\nPrevious\nCancel\nSave Draft\nNext"
  },
  {
    "id": "06-tools",
    "at": "2026-09-18T15:12:07.767Z",
    "build": "http://localhost:3102",
    "path": "/app/ai-assistant",
    "caption": "Tools step before choosing the customer search capability.",
    "callouts": [],
    "visibleText": "Select an option\nPhone\nChat\nAI Agent\nWhat's this?\nSupport\nReport a Bug\n1\n\n1 waiting on you\n\nOpen Approvals\nAI Assistant\n\nIntelligent AI agents for your business\n\nDashboard\nTemplates\nAssistants\nCreate Assistant\nAvailable Tools\nPhone & Voice\nActivity Logs\nNew Assistant\nBasic Info\nPersonality\nTools\nKnowledge\nAdvanced\nReview\nGenerate with AI\nTools\n\nConfigure capabilities (instruction playbooks) and tools (server actions) for this assistant.\n\nTools (27/27)\nAll\nNone\nreply to conversationCommunication\nsend smsCommunication\ntake messageCommunication\nsend emailCommunication\nsend chat messageCommunication\nsearch customersCRM Data\ncreate leadCRM Data\nupdate lead statusCRM Data\ncheck availabilityScheduling\nget reservation typesScheduling\ncreate reservationScheduling\nconfirm reservationScheduling\ncancel reservationScheduling\nmodify reservationScheduling\ncreate ticketSupport\nget ticketSupport\nupdate ticketSupport\nquery knowledgeKnowledge\nget chat historyHistory\nget conversation historyHistory\nconfirm order statusOrder Management\ncheck product availabilityProduct Management\nfind similar productProduct Management\nsearch productsProduct Management\nmake callCommunication\ntransfer chat to agentHandoff\ncheck transfer targetHandoff\nCapabilities (0)\n\nInstruction playbooks that guide the assistant's behavior\n\nAdd\nPrevious\nCancel\nSave Draft\nNext"
  },
  {
    "id": "07-one-tool",
    "at": "2026-09-18T15:12:27.407Z",
    "build": "http://localhost:3102",
    "path": "/app/ai-assistant",
    "caption": "All tools cleared, then only search customers enabled: 1/27.",
    "callouts": [],
    "visibleText": "Select an option\nPhone\nChat\nAI Agent\nWhat's this?\nSupport\nReport a Bug\n1\n\n1 waiting on you\n\nOpen Approvals\nAI Assistant\n\nIntelligent AI agents for your business\n\nDashboard\nTemplates\nAssistants\nCreate Assistant\nAvailable Tools\nPhone & Voice\nActivity Logs\nNew Assistant\nBasic Info\nPersonality\nTools\nKnowledge\nAdvanced\nReview\nGenerate with AI\nTools\n\nConfigure capabilities (instruction playbooks) and tools (server actions) for this assistant.\n\nTools (1/27)\nAll\nNone\nreply to conversationCommunication\nsend smsCommunication\ntake messageCommunication\nsend emailCommunication\nsend chat messageCommunication\nsearch customersCRM Data\ncreate leadCRM Data\nupdate lead statusCRM Data\ncheck availabilityScheduling\nget reservation typesScheduling\ncreate reservationScheduling\nconfirm reservationScheduling\ncancel reservationScheduling\nmodify reservationScheduling\ncreate ticketSupport\nget ticketSupport\nupdate ticketSupport\nquery knowledgeKnowledge\nget chat historyHistory\nget conversation historyHistory\nconfirm order statusOrder Management\ncheck product availabilityProduct Management\nfind similar productProduct Management\nsearch productsProduct Management\nmake callCommunication\ntransfer chat to agentHandoff\ncheck transfer targetHandoff\nCapabilities (0)\n\nInstruction playbooks that guide the assistant's behavior\n\nAdd\nPrevious\nCancel\nSave Draft\nNext"
  },
  {
    "id": "08-knowledge",
    "at": "2026-09-18T15:12:27.585Z",
    "build": "http://localhost:3102",
    "path": "/app/ai-assistant",
    "caption": "Knowledge sources step, left empty for a factual customer lookup.",
    "callouts": [],
    "visibleText": "Select an option\nPhone\nChat\nAI Agent\nWhat's this?\nSupport\nReport a Bug\n1\n\n1 waiting on you\n\nOpen Approvals\nAI Assistant\n\nIntelligent AI agents for your business\n\nDashboard\nTemplates\nAssistants\nCreate Assistant\nAvailable Tools\nPhone & Voice\nActivity Logs\nNew Assistant\nBasic Info\nPersonality\nTools\nKnowledge\nAdvanced\nReview\nGenerate with AI\nKnowledge Sources\n\nConfigure where the assistant gets its knowledge from\n\nSelect Knowledge Source Type\nDocuments/Files\nCollection\nExternal URL\nDirect Text\nSelect Document(s)\n\nDrag and drop files here, or\n\nSelect from computer\nSelect Documents\nPublic\n(applies to new uploads only)\n\nNo knowledge sources added yet\n\nPrevious\nCancel\nSave Draft\nNext"
  },
  {
    "id": "09-advanced",
    "at": "2026-09-18T15:12:27.751Z",
    "build": "http://localhost:3102",
    "path": "/app/ai-assistant",
    "caption": "Advanced settings before attaching any live trigger.",
    "callouts": [],
    "visibleText": "Select an option\nPhone\nChat\nAI Agent\nWhat's this?\nSupport\nReport a Bug\n1\n\n1 waiting on you\n\nOpen Approvals\nAI Assistant\n\nIntelligent AI agents for your business\n\nDashboard\nTemplates\nAssistants\nCreate Assistant\nAvailable Tools\nPhone & Voice\nActivity Logs\nNew Assistant\nBasic Info\nPersonality\nTools\nKnowledge\nAdvanced\nReview\nGenerate with AI\nAdvanced Settings\n\nOptional: Restrict tools and configure advanced interactions\n\nAdvanced: These settings are optional and for power users only. Skip if unsure.\n\nTool Permissions\n\nManual mode: Choose which tools to enable/disable\n\nSwitch to Auto\nreply_to_conversation\nReply 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).\nsend_sms\nSend 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.\ntake_message\nTake 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.\nsend_email\nSend 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.\nsend_chat_message\nSend 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\"\nsearch_customers\nSearch 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?\"\ncreate_lead\nCreate 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.\nupdate_lead_status\nChange 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.\ncheck_availability\nCheck 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.\nget_reservation_types\nGet 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.\ncreate_reservation\nCreate 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.\nconfirm_reservation\nConfirm 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.\ncancel_reservation\nCancel 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.\nmodify_reservation\nReschedule 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.\ncreate_ticket\nCreate 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.\nget_ticket\nRetrieve 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.\nupdate_ticket\nAdd 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.\nquery_knowledge\nSearch 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.\nget_chat_history\nRetrieve 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?\"\nget_conversation_history\nRetrieve 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.\nconfirm_order_status\nREQUIRED 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.\ncheck_product_availability\nCheck 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.\nfind_similar_product\nFind 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.\nsearch_products\nSearch 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.\nmake_call\nMake 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.\ntransfer_chat_to_agent\nHand 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.\ncheck_transfer_target\nMANDATORY 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.\nChannels it handles\nClear all\n\nWhen active, this assistant handles the channels below. Leave them all on and it takes care of everything — or pick a few to dedicate it (e.g. one assistant for email, another for chat).\n\nEmail\nWeb Chat\nFacebook\nInstagram\nWhatsApp\nSMS\nPhone calls\nInteraction Rules\n\nDefine conditional behaviors (IF-THEN logic)\n\nAdd Rule\n\nNo interaction rules configured\n\nPrevious\nCancel\nSave Draft\nNext"
  },
  {
    "id": "10-saved-assistant",
    "at": "2026-09-18T15:12:50.094Z",
    "build": "http://localhost:3102",
    "path": "/app/ai-assistant",
    "caption": "Next from Advanced immediately created the inactive assistant; the separate Review screen was not shown.",
    "callouts": [],
    "visibleText": "Select an option\nPhone\nChat\nAI Agent\nWhat's this?\nSupport\nReport a Bug\n1\n✓\nAI Assistant created successfully\n\n1 waiting on you\n\nOpen Approvals\nAI Assistant\n\nIntelligent AI agents for your business\n\nDashboard\nTemplates\nAssistants\nAvailable Tools\nPhone & Voice\nActivity Logs\nNew Assistant\nTutorial Front Desk\n\ntutorial-front-desk\n\ninactive\n\nFind training customer details for the front desk. Do not send messages or change bookings.\n\nTools:\n1 enabled\nCreated:\n9/18/2026\nUpdated:\n9/18/2026\nView"
  },
  {
    "id": "11-assistant-reloaded",
    "at": "2026-09-18T15:14:01.331Z",
    "build": "http://localhost:3102",
    "path": "/app/ai-assistant",
    "caption": "Inactive one-tool assistant persists after reloading and opening Assistants.",
    "callouts": [],
    "visibleText": "Select an option\nPhone\nChat\nAI Agent\nWhat's this?\nSupport\nReport a Bug\n1\n\n1 waiting on you\n\nOpen Approvals\nAI Assistant\n\nIntelligent AI agents for your business\n\nDashboard\nTemplates\nAssistants\nAvailable Tools\nPhone & Voice\nActivity Logs\nNew Assistant\nTutorial Front Desk\n\ntutorial-front-desk\n\ninactive\n\nFind training customer details for the front desk. Do not send messages or change bookings.\n\nTools:\n1 enabled\nCreated:\n9/18/2026\nUpdated:\n9/18/2026\nView"
  },
  {
    "id": "12-assistant-detail",
    "at": "2026-09-18T15:14:01.470Z",
    "build": "http://localhost:3102",
    "path": "/app/ai-assistant",
    "caption": "Saved assistant detail and testing controls.",
    "callouts": [],
    "visibleText": "Select an option\nPhone\nChat\nAI Agent\nWhat's this?\nSupport\nReport a Bug\n1\n\n1 waiting on you\n\nOpen Approvals\nAI Assistant\n\nIntelligent AI agents for your business\n\nDashboard\nTemplates\nAssistants\nEdit Assistant\nAvailable Tools\nPhone & Voice\nActivity Logs\nNew Assistant\nBasic Info\nPersonality\nTools\nKnowledge\nAdvanced\nReview\nGenerate with AI\nBasic Information\n\nSet up the basic details for your AI assistant\n\nAssistant Name (Identifier) *\n\nUnique identifier (letters, numbers, hyphens, underscores only)\n\nDisplay Title *\n\nUser-friendly name shown in the UI\n\nDescription\nStatus\nActive\nInactive\nArchived\nCancel\nSave Draft\nNext"
  },
  {
    "id": "13-activity-errors",
    "at": "2026-09-18T15:16:01.911Z",
    "build": "http://localhost:3102",
    "path": "/app/ai-assistant",
    "caption": "Actual Activity Logs after the controlled tests returned a provider/model mismatch.",
    "callouts": [],
    "visibleText": "Select an option\nPhone\nChat\nAI Agent\nWhat's this?\nSupport\nReport a Bug\n1\n\n1 waiting on you\n\nOpen Approvals\nAI Assistant\n\nIntelligent AI agents for your business\n\nDashboard\nTemplates\nAssistants\nAvailable Tools\nPhone & Voice\nActivity Logs\nNew Assistant\nActivity Logs\nRefresh\nNo Activity Logs\n\nAI assistant activities will appear here"
  },
  {
    "id": "14-mcp-lookup",
    "at": "2026-09-18T15:18:11.341Z",
    "build": "null",
    "path": "/Users/imzee/projects/docs/tutorials-plan/course-content/assets/appengine-assistant/14-mcp-lookup.txt",
    "caption": "Sanitized transcript of actual API results; not a product screen.",
    "callouts": [],
    "visibleText": "MCP returned the saved booking\nActual local responses — 18 September 2026\nCredentials omitted.\n\n{\n  \"httpStatus\": 200,\n  \"isError\": false,\n  \"service\": \"RepositoryCrudService\",\n  \"method\": \"findOneAnyId\",\n  \"reference\": \"Q508LI8A\",\n  \"customer\": \"Lina Tutorial\",\n  \"serviceBooked\": \"Design consultation\",\n  \"startTime\": \"2026-10-05T10:00:00-05:00\",\n  \"status\": \"new\"\n}\n"
  },
  {
    "id": "15-provider-error",
    "at": "2026-09-18T15:18:11.485Z",
    "build": "null",
    "path": "/Users/imzee/projects/docs/tutorials-plan/course-content/assets/appengine-assistant/15-provider-error.txt",
    "caption": "Sanitized transcript of actual API results; not a product screen.",
    "callouts": [],
    "visibleText": "Assistant execution stopped at the provider\nActual local responses — 18 September 2026\nCredentials omitted.\n\n{\n  \"lookup\": {\n    \"status\": 500,\n    \"body\": {\n      \"statusCode\": 500,\n      \"error\": \"The supported API model names are deepseek-flash, deepseek-v4-pro, but you passed gpt-5.4.\",\n      \"path\": \"/crm/ai-assistant/6aad54f2bef5e1976f5c918e/test\",\n      \"method\": \"POST\",\n      \"timeStamp\": \"2026-09-18T15:14:51.793Z\"\n    }\n  },\n  \"afterTesting\": {\n    \"status\": 200,\n    \"id\": \"6aad54f2bef5e1976f5c918e\",\n    \"state\": \"inactive\"\n  }\n}\n"
  },
  {
    "id": "16-mcp-errors",
    "at": "2026-09-18T15:18:11.571Z",
    "build": "null",
    "path": "/Users/imzee/projects/docs/tutorials-plan/course-content/assets/appengine-assistant/16-mcp-errors.txt",
    "caption": "Sanitized transcript of actual API results; not a product screen.",
    "callouts": [],
    "visibleText": "MCP reports tool failures inside HTTP 200\nActual local responses — 18 September 2026\nCredentials omitted.\n\n{\n  \"anonymous\": {\n    \"status\": 200,\n    \"body\": {\n      \"jsonrpc\": \"2.0\",\n      \"id\": 11,\n      \"result\": {\n        \"content\": [\n          {\n            \"type\": \"text\",\n            \"text\": \"Authentication required: send an Authorization: Bearer <token> header to call a service. list_services and describe_service work without one.\"\n          }\n        ],\n        \"isError\": true\n      }\n    }\n  },\n  \"no-org\": {\n    \"status\": 200,\n    \"body\": {\n      \"jsonrpc\": \"2.0\",\n      \"id\": 11,\n      \"result\": {\n        \"content\": [\n          {\n            \"type\": \"text\",\n            \"text\": \"Authentication required: send an Authorization: Bearer <token> header to call a service. list_services and describe_service work without one.\"\n          }\n        ],\n        \"isError\": true\n      }\n    }\n  },\n  \"unexposed\": {\n    \"status\": 200,\n    \"body\": {\n      \"jsonrpc\": \"2.0\",\n      \"id\": 11,\n      \"result\": {\n        \"content\": [\n          {\n            \"type\": \"text\",\n            \"text\": \"Method tutorialNotExposed on RepositoryCrudService is not @AiCallable (or does not exist)\"\n          }\n        ],\n        \"isError\": true\n      }\n    }\n  }\n}\n"
  },
  {
    "id": "17-saved-configuration",
    "at": "2026-09-18T15:18:11.678Z",
    "build": "null",
    "path": "/Users/imzee/projects/docs/tutorials-plan/course-content/assets/appengine-assistant/17-saved-configuration.txt",
    "caption": "Sanitized transcript of actual API results; not a product screen.",
    "callouts": [],
    "visibleText": "Saved assistant: one enabled tool\nActual local responses — 18 September 2026\nCredentials omitted.\n\n{\n  \"name\": \"tutorial-front-desk\",\n  \"status\": \"inactive\",\n  \"enabledTools\": [\n    \"search_customers\"\n  ],\n  \"triggers\": [],\n  \"behaviorRules\": [\n    \"Never send messages, create leads, or change reservations.\",\n    \"If the tools cannot retrieve a booking, say so and ask staff to check the reservation reference.\",\n    \"Do not claim a task succeeded without a matching tool result.\"\n  ]\n}\n"
  }
]
