This guide teaches you how to use the Ability Engine — Z360’s visual workflow builder — to design exactly how your AI agent handles customer conversations. By the end, you’ll be creating abilities that feel natural, collect the right information, and take action automatically.
No technical background required. If you can describe how you’d train a new employee to handle a phone call, you can build an ability.
What Is the Ability Engine?
The Ability Engine is a visual tool where you create step-by-step instructions that tell your AI agent how to handle specific types of customer conversations. Think of it like training a new employee. When you hire someone, you don’t hand them a word-for-word script — you give them guidance. “When a customer calls about scheduling, ask them these questions, collect this information, then create an appointment.” The Ability Engine works the same way. You’re teaching your AI agent how to think through a conversation, not writing an exact script for it to read. Each set of instructions you create is called an ability. Your AI agent can have many abilities — one for each type of conversation it needs to handle. When a customer reaches out, the agent recognizes what kind of help they need and automatically selects the right ability to follow. Here’s the big picture of how it works:- A customer reaches out with a request (via chat, email, phone, or SMS)
- Your AI agent recognizes what kind of help they need
- The agent selects the appropriate ability you’ve created
- The agent follows your step-by-step instructions
- The customer gets a helpful, natural conversation experience
- When a customer wants to schedule an appointment → collect their information and create a booking
- When a lead asks about pricing → qualify their needs and create a ticket for follow-up
- When someone calls after hours → collect their message and assure them someone will call back
Key Concepts
The Four Parts of Every Ability
Every ability you create has four parts:Name
Name
A clear title for this ability (e.g., “Appointment Scheduler”, “New Patient Intake”, “After-Hours Message Collector”). Avoid vague names like “Ability 1” or “Phone Calls.”
Description
Description
What this ability accomplishes. Write it like you’re explaining the ability to a colleague: “Helps customers schedule service appointments by collecting their preferred time, contact details, and the type of service they need.”
Triggers
Triggers
How the AI knows when to use this ability. Describe the customer’s intent in natural language. Good triggers describe what the customer is trying to do, not specific keywords. For example: “When a customer reports a service issue, needs a repair, has a problem with their system, or requests service assistance.” The AI understands context and meaning, so you don’t need to list every possible phrase.
Flow
Flow
The step-by-step conversation logic. This is the visual workflow you build using nodes.
Nodes: Your Building Blocks
Nodes are the individual steps in your flow. There are six types:Start node
Start node
Where the conversation begins. Think of it as the entry door. Every ability has exactly one, it’s created automatically, and you can’t delete it. No configuration needed.Every ability begins with a Start node. It’s created automatically when you create a new ability, you can’t delete it, and it doesn’t need any configuration. Just connect it to whatever node comes next in your flow.
Ask node
Ask node
Collects information from the customer. Think of it as a question to ask. You write a prompt telling the AI what information to gather, and a variable name to save the answer.The Ask node is how your AI collects information from the customer. It has two fields:Prompt — Instructions for what to ask. This is guidance for the AI, not an exact script. The AI will phrase the question naturally based on your instructions.Save As — The variable name where the customer’s answer gets stored so you can use it later.Example:
- Prompt: “Find out what issue the customer is experiencing. Ask them to describe what’s happening with their system. If they’re vague, ask follow-up questions to get specifics. Show empathy.”
- Save As:
issue_description
Speak node
Speak node
Says something to the customer. Think of it as a statement to make. Use it for acknowledgments, confirmations, instructions, next steps, or closing messages.The Speak node communicates something to the customer without collecting information. Use it for:
- Acknowledging what the customer said (“Thanks for sharing that, I understand the situation”)
- Confirming information back to them (“Let me make sure I have this right…”)
- Providing instructions or next steps (“Here’s what will happen next…”)
- Delivering a closing message (“A technician will call you within the hour”)
Act node
Act node
Performs an action like creating a ticket, submitting an inquiry, or calling an external tool. Think of it as an action to take.The Act node performs an action or calls a tool. This is where your ability actually does something beyond just talking. It has three fields:Action — Which action to perform (e.g., “Create Ticket”, “Submit Inquiry”, “Move Stage”).Inputs — The parameters the action needs, which can reference variables you’ve collected. For example, a Create Ticket action might use
{customer_name}, {issue_description}, and {urgency_level} as inputs.Save As — A variable to store the action’s result (optional), so you can reference the outcome later in the flow.Z360 comes with these built-in actions:- Create Ticket — Creates a support ticket for follow-up. Key inputs: subject, description, priority.
- Submit Inquiry — Submits or updates an inquiry in a pipeline. Inputs depend on the pipeline fields.
- Move Stage — Moves an inquiry to a different stage within its pipeline. Key input: target stage.
- Get Inquiry Fields — Retrieves information about an existing inquiry. Key inputs: pipeline name, identifier.
Condition node
Condition node
Makes a decision based on information and branches the conversation in different directions. Think of it as a fork in the road.The Condition node evaluates information and branches the conversation into different paths. It has three fields:Variable — What to check (e.g.,
urgency_level).Operator — How to compare. Options include:equals/==— is exactlynot equals/!=— is notcontains— includes the text>/<— greater than / less than
- IF — the primary condition is true
- ELIF — an alternative condition is true (you can have multiple)
- ELSE — none of the above conditions were met
urgency_level equals “emergency” as an exact string, describe the condition in a way that captures the meaning. The AI evaluates conditions based on understanding, not rigid text matching.End node
End node
The End node concludes the ability and returns control to the main agent. A few guidelines:
- Always precede an End node with a Speak node — don’t let the conversation end abruptly
- Be specific about the reason for ending (this helps with tracking and analytics)
- You can have multiple End nodes for different outcomes (e.g., one for “ticket created successfully”, another for “customer decided not to proceed”)
Variables: How the AI Remembers Information
Variables: How the AI Remembers Information
When your AI collects information from a customer, it saves that information in variables so it can use it later. For example:
- Customer says their name is “Maria” → saved as
customer_name - Customer wants a “Tuesday appointment” → saved as
preferred_day - Customer’s issue is “AC not cooling” → saved as
issue_description
{customer_name}. For example, a Speak node could say: “Thanks, customer_name! Let me help you with that.”Your First Ability: Step-by-Step Tutorial
Let’s build a real ability from scratch. We’ll use the example of an HVAC company that wants its AI agent to handle incoming service requests.Step 1: Plan Before You Build
Step 1: Plan Before You Build
Before opening the Ability Engine, answer these questions:What’s the goal? Collect service request details from the customer and create a ticket for the service team.What information do we need?
- What’s the issue? →
issue_description - Customer’s name →
customer_name - Customer’s phone number →
customer_phone - How urgent is it? →
urgency_level
Step 2: Create the Ability in Z360
Step 2: Create the Ability in Z360
Go to AI Studio → Abilities and create a new ability.Name: Service Request CollectorDescription: Handles incoming service requests by understanding the customer’s issue, collecting their contact information, determining urgency, and creating a ticket for the service team to follow up.Triggers: When a customer reports a service issue, needs a repair, has a problem with their system, or requests service assistance.
Step 3: Build the Flow
Step 3: Build the Flow
Connect the following nodes in order:Start → connects to your first Ask node.Ask: Get Issue Description
- Prompt: “Find out what issue the customer is experiencing. Ask them to describe what’s happening with their system. If they’re vague, ask follow-up questions to get specifics. Show empathy — they’re dealing with a problem.”
- Save As:
issue_description
- Prompt: “Ask the customer for their full name.”
- Save As:
customer_name
- Prompt: “Ask for the best phone number to reach them for scheduling the service visit.”
- Save As:
customer_phone
- Prompt: “Assess how urgent the issue is. Ask if the system is completely non-functional, if there’s a safety concern (like a gas smell or water flooding), or if it’s something that can wait a day or two. Categorize as emergency, urgent, or routine.”
- Save As:
urgency_level
- Action: Create Ticket
- Subject: “Service Request - issue_description”
- Description: Use the collected variables to populate the ticket details
- Priority: “If urgency indicates immediate need, set to ‘high’. Otherwise, ‘normal’.”
- Prompt: “Thank the customer by name. Confirm that their service request has been submitted. Tell them a team member will reach out within [timeframe based on urgency]. Ask if there’s anything else they need.”
Real-World Examples
Example 1: Dental Office — New Patient Intake
Example 1: Dental Office — New Patient Intake
Name: New Patient IntakeDescription: Qualifies new patient inquiries by collecting required information and scheduling consultations. Handles both insured and cash-pay patients.Flow:
- Start → Ask what brings them in → Condition: are they interested in booking?
- IF interested → Ask about insurance → Condition: payment type
- IF insurance → Ask for insurance details → Act: Create ticket for insurance verification → Speak: confirmation → End
- ELSE cash pay → Ask for basic contact info → Act: Create ticket for cash consultation → Speak: confirmation → End
- ELSE not ready → Act: Create nurture ticket → Speak: “No problem, we’re here when you’re ready” → End
- IF interested → Ask about insurance → Condition: payment type
Example 2: Plumbing Company — Emergency Triage
Example 2: Plumbing Company — Emergency Triage
Name: Emergency Triage HandlerDescription: Evaluates plumbing requests to determine if they’re emergencies or routine issues, and routes them accordingly.Flow:
- Start → Ask to describe the issue → Ask to assess urgency → Condition: emergency or routine?
- IF emergency → Ask for location/address → Act: Create URGENT priority ticket → Speak: “A plumber will call you within 15 minutes” → End
- ELSE routine → Ask for contact information → Act: Create standard priority ticket → Speak: “We’ll get back to you within 24 hours” → End
Example 3: Medical Office — Appointment Rescheduling
Example 3: Medical Office — Appointment Rescheduling
Name: Appointment Reschedule HandlerDescription: Handles patient requests to cancel or reschedule appointments. Applies cancellation policy when the request is within 24 hours.Flow:
- Start → Ask to verify patient identity → Ask: cancel or reschedule? → Speak: explain cancellation policy → Ask: is this within 24 hours of the appointment? → Condition: within 24 hours?
- IF yes → Ask: do they want to proceed with the cancellation fee? → Condition: proceed?
- IF yes → Act: Create ticket with fee noted → Speak: confirmation → End
- ELSE no → Speak: “No problem, we’ll keep your original appointment” → End
- ELSE no (more than 24 hours away) → Ask for preferred new time → Act: Create reschedule ticket (no fee) → Speak: confirmation → End
- IF yes → Ask: do they want to proceed with the cancellation fee? → Condition: proceed?
Best Practices
Think Like You’re Training an Employee
The most important mindset for building abilities: you’re teaching, not scripting. You don’t write exact lines for the AI to say — you give it guidance on how to handle the situation, what information to collect, and what actions to take. The AI handles the natural conversation part on its own.Do's
Do's
Start and end with Speak nodes. Open with a warm acknowledgment and close with clear next steps. Don’t let conversations begin or end abruptly.Give context in your prompts. Instead of “Ask for name”, write “Ask the customer for their full name so we can create their service record.” The more context you give, the more naturally the AI communicates.Use natural acknowledgments between steps. After a customer shares information, the AI should acknowledge it before moving to the next question. You can guide this in your prompts: “After they describe the issue, acknowledge their situation with empathy before asking for their contact details.”Write descriptive variable names. Use
customer_phone_number instead of phone or var1. Clear names make your flows easier to maintain and debug.Always have an ELSE branch on conditions. Every Condition node should have an ELSE path that handles unexpected responses. This prevents the conversation from getting stuck.Don'ts
Don'ts
Don’t create separate nodes for every tiny piece of information. If you need a name and email, one Ask node can collect both. The AI is smart enough to gather multiple related pieces of information naturally.Don’t overcomplicate with unnecessary conditions. Only add Condition nodes where the conversation flow genuinely differs. If both branches do roughly the same thing, you probably don’t need the condition.Don’t forget the ELSE branch. This is worth repeating — an uncovered scenario means the conversation breaks.Don’t leave Save As empty when you need the information later. If another node references a variable, make sure an earlier Ask node is saving to that exact variable name.Don’t write exact scripts. The AI works best when you give it intent and context. Writing word-for-word scripts makes the conversation sound robotic and removes the AI’s ability to adapt naturally.
Natural Conversation Checklist
Before you publish an ability, run through this checklist:- Does the opening feel warm and welcoming?
- Are acknowledgments included after the customer shares information?
- Does the flow avoid asking for the same information twice?
- Are transitions between topics smooth?
- Does the closing set clear expectations about what happens next?
- Would this feel like talking to a helpful human?
Designing Abilities: The Blueprint Process
Before you start building in the Ability Engine, take a few minutes to answer these five questions on paper or in your head:- What is the goal? What should be accomplished when this ability runs successfully?
- What information do you need? List every piece of data you need to collect from the customer.
- What are the decision points? Where might the conversation branch depending on what the customer says?
- What actions need to happen? Tickets to create? Emails to send? Calendar events to check?
- What should the customer know at the end? What are their clear next steps?
Troubleshooting
The AI isn't following my flow.
The AI isn't following my flow.
- Are your nodes connected properly? Check that every node connects to the next one in the intended order.
- Are your prompts clear? Vague instructions lead to unpredictable behavior.
- Are you saving variables that you reference later? If an Act node uses
{customer_name}, make sure an earlier Ask node saves tocustomer_name.
The AI keeps asking for information the customer already gave.
The AI keeps asking for information the customer already gave.
- Is the Save As field filled in on your Ask node? If you don’t save the answer, the AI doesn’t remember it.
- Is the variable name consistent?
customer_nameandcustomerNameare treated as different variables. Pick one spelling and use it everywhere.
The Condition node isn't working right.
The Condition node isn't working right.
- Is the variable name exactly the same as what you used in the Save As field? Even a small typo breaks the connection.
- Are you writing conditions for intent, not exact words? The AI evaluates meaning, so “emergency” as a condition should match responses like “this is urgent” or “we need help right away.”
An action failed.
An action failed.
- Are all required inputs provided? Check that every required field in the Act node has a value or variable reference.
- Are the instructions clear? If you’re using variables as inputs, make sure they’re being saved correctly by earlier nodes.
- Is the external service connected? If the action uses a third-party integration (like Google Calendar), verify it’s still connected in AI Studio → Actions.
Quick Reference
Node Summary
| Node | Purpose | What to Configure |
|---|---|---|
| Start | Entry point of the flow | Nothing — it’s automatic |
| Ask | Collect information from the customer | Prompt (what to ask), Save As (variable name) |
| Speak | Say something to the customer | Message content/guidance |
| Act | Perform an action | Action type, Inputs, Save As (optional) |
| Condition | Branch based on information | Variable, Operator, Value |
| End | Conclude the conversation | Reason for ending |
Condition Operators
| Operator | Meaning |
|---|---|
| equals / == | Is exactly |
| not equals / != | Is not |
| contains | Includes the text |
| > | Greater than |
| < | Less than |
Built-in Actions
| Action | Purpose | Key Inputs |
|---|---|---|
| Create Ticket | Create a support ticket for follow-up | Subject, description, priority |
| Submit Inquiry | Submit or update an inquiry in a pipeline | Pipeline-specific fields |
| Move Stage | Move an inquiry to a different pipeline stage | Target stage |
| Get Inquiry Fields | Retrieve information about an existing inquiry | Pipeline name, identifier |
