- End-user chat — your branded end-user bot recognises the request in conversation, asks the intake questions, and files the ticket.
- Triggered agents — a ticket-triggered agent recognises the request on an inbound ticket (typically an email), checks what the ticket already answers, and asks the end user only for what’s missing.
How it works in chat
When an employee’s request matches one of the intents offered to their company, the bot:- Recognises it from the short menu of intents set up for that employee’s company.
- Pulls up the intake questions for that intent on demand — so the bot’s instructions stay small no matter how many intents you add.
- Asks only what it doesn’t already know from the conversation, one dependent question at a time, exactly like a good technician taking the request.
- Files the ticket to the agent’s configured Create Ticket destination, with everything collected in the body.
How it works on a triggered agent
Most requests don’t arrive in a chat — they arrive as an email that becomes a ticket. Give an intent the Triggered agents surface and assign it to a ticket-triggered agent (for example the agent watching your service-request board), and that agent gains the same structured intake:- Recognises that the new ticket matches one of your intents — most tickets won’t, and the agent is explicitly told never to force a match.
- Loads the intake questions for that intent.
- Compares them against what the ticket already contains — the original email and any replies.
- Asks the end user only for what’s missing, in one client-facing note, then waits. The requester’s reply re-triggers the agent, which continues with the complete picture — the same ask-and-wait loop your triggered agents already use for clarifying questions.
What an intent contains
| Part | What it’s for |
|---|---|
| Name | The short label Neo matches a request against — e.g. “New Starter”, “New Hardware”, “Mailbox Access”. |
| Description | A sentence that helps Neo tell this intent apart from the others. |
| Questions to ask | The details to gather for this request, in plain language (e.g. “Full name, start date, which existing user to copy access from, and the 2FA mobile number”). Neo skips anything it already knows and asks dependent questions in order. |
| Applies to — surfaces | Where this intent runs: End-user chat, Triggered agents, or both. |
| Applies to — agents | Which of your agents offer this intent — leave empty to apply it to every agent of the selected surface(s) (see Scoping). |
| Applies to — companies | Which of your client companies this intent is offered to — leave empty for all (see Scoping). |
Writing good questions
The Questions to ask field is free text read by the agent, so write it the way you’d brief a junior technician:- List every detail your team needs to action the request without a follow-up — names, dates, devices, approvals.
- Note conditional questions inline: “If they need RDS access, ask which existing user to mirror.” Neo asks dependent questions one at a time.
- Don’t include details Neo can infer (the requester’s own name or company) — Neo already knows the conversation and the ticket, and only asks for what’s genuinely missing.
Scoping
Intents are tenant-level and cross-agent — you author one library of intents and assign each one to the surfaces, agents, and companies it should apply to. Agent and company scope work the same way, and leaving either empty means “all”:- Agents — assign an intent to specific agents (e.g. only your “VIP Support” bot, or only the service-request board’s agent), or leave it empty to offer it on every agent of the selected surfaces. Authoring a common request like “New Starter” once and applying it everywhere beats duplicating it per agent.
- Companies — offer a different set to different clients: one client’s “New Starter” intent collects a 2FA number and an RDS-access answer, another’s doesn’t; a client on a phone system gets a “Ring Group Change” intent that others never see.
At most 15 intents can apply to any single agent. Every applicable intent is offered to the agent, so keeping the list focused keeps recognition sharp and the intake menu clear. If enabling or assigning an intent would push an agent past 15, Neo blocks the save and names the agent — disable or reassign one of that agent’s intents first. Remember a broad intent (empty Applies to — agents) counts toward every agent of its surface. Disabling an intent is always allowed and frees up a slot.
Example: a new-starter intent in chat
Employee: Can you set up a new starter for me?The same intent with the Triggered agents surface handles the email version: a half-complete onboarding email becomes a ticket, the agent replies asking only for the missing 2FA number and start date, and the requester’s answer re-triggers the agent to finish intake.
Bot: Happy to help. Please share the new joiner’s full name, their start date, an existing user to copy access from, and whether they need RDS access.
Employee: Jamie Rivera, starting 14 July, copy access from Alex Morgan, and yes to RDS.
Bot: Thanks — what’s the 2FA mobile number for Jamie?
Employee: 07700 900123
Bot: All set — I’ve raised ticket #4821 for Jamie Rivera’s onboarding and your IT team will take it from here.
Setting up intents
Your intents live in one place — add as many as you need, and edit or disable them any time.Open Intents
Go to Intents under Data in the left navigation.
Add an intent
Select New intent, then give it a name and a short description — this is what Neo uses to recognise a matching request.
Write the questions to ask
List the details to collect, in plain language — Neo asks only for what it doesn’t already know, and works through dependent questions in order.
Choose where it applies
Pick the surfaces — end-user chat, triggered agents, or both — then which agents offer this intent and which client companies it applies to (leave agents/companies empty to apply to all).
Managing intents with the API
Intents are also fully manageable over Neo’s public API — list, read, create, update, and delete them under/public-api/intents — so you can author your intent library from your own scripts or provision it per client. See the API reference.
Related
Teaching Neo
Where intents fit next to instructions, skills, and memory — and how the four compose.
How end-user bots work
The trust boundary and the bot-ticket-agent split behind every end-user conversation.
Triggered workflows
How ticket events trigger an agent — and how a customer reply re-triggers it to continue intake.
End-user tools
Every tool a branded bot uses — find docs, check tickets, file, resolve, attach files.
Built-in tools
Load Intent and the other always-on tools a triggered agent gets automatically.
