> ## Documentation Index
> Fetch the complete documentation index at: https://docs.neoagent.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Workflows vs Agents

> When to build a workflow (smart actions) versus an agent — start with workflows for the jobs Neo has optimized smart actions for, use agents for everything else.

Both [workflows](/core/workflows) and [agents](/core/agents) run automatically when a ticket arrives (or on a schedule). The choice is *which one fires*: a fixed sequence of [smart actions](/core/actions) or an agent that picks tools at runtime.

<Note>
  There's a third kind: [chat agents](/chat-agents/overview), which don't fire on events at all — a person messages them. This page compares the two automatic kinds; if a human initiates the work, you want a chat agent.
</Note>

## The rule of thumb

**Default to a workflow when Neo ships a smart action for the job.** Smart actions like [Ticket Triage](/building-automations/actions/ai/ticket-triage), [Dispatch Ticket](/building-automations/actions/ai/ticket-dispatch-suggest-technician), [Suggest Resolution](/building-automations/actions/ai/suggest-resolution), [Escalate Ticket](/building-automations/actions/ai/ticket-escalation), and [Find Ticket to Merge With](/building-automations/actions/ai/find-ticket-to-merge-with) carry prompting and guardrails Neo has tuned across many MSPs. An agent built to do the same job inherits none of that — you'd be teaching it the same task from scratch through custom instructions, and quality typically drops.

**Use an agent for everything else** — jobs where no smart action exists, or where runtime tool-picking is the actual value (open-ended L1 troubleshooting, multi-step Microsoft 365 ops, documentation, QA audits, scheduled cross-system reports).

## Decision table

| Job                                                                                               | Default                                                                                                           | When to switch                                                                                                                                                 |
| ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Triage** — classify type / subtype / priority / queue                                           | Workflow — [Ticket Triage](/building-automations/actions/ai/ticket-triage)                                        | Switch to an agent only if the routing logic becomes too complex for the smart action's settings to express                                                    |
| **Dispatch** — pick the right technician                                                          | Workflow — [Dispatch Ticket](/building-automations/actions/ai/ticket-dispatch-suggest-technician)                 | Switch to an agent only if the routing logic becomes too complex for the smart action's settings to express                                                    |
| **Resolution suggestion** — one-shot: search KB + similar tickets, write an internal note         | Workflow — [Suggest Resolution](/building-automations/actions/ai/suggest-resolution)                              | Switch to an agent if you want **end-user communication, RMM script invocation, or follow-up loops** (anything beyond writing a single note to the technician) |
| **Escalation** — route urgent / SLA-breach tickets                                                | Workflow — [Escalate Ticket](/building-automations/actions/ai/ticket-escalation)                                  | Switch to an agent only if the routing logic becomes too complex for the smart action's settings to express                                                    |
| **Merge duplicates** — detect dupes, merge into parent                                            | Workflow — [Find Ticket to Merge With](/building-automations/actions/ai/find-ticket-to-merge-with) + Merge Ticket | Switch to an agent only if the routing logic becomes too complex for the smart action's settings to express                                                    |
| **Everything else** — L1 troubleshooting, M365 ops, documentation, QA / audits, scheduled reports | Agent                                                                                                             | n/a — no smart action exists; the agent's runtime flexibility is the point                                                                                     |

## Why workflows win for the first five

Neo's smart actions are tuned **across every MSP using Neo** — every prompt improvement Neo ships to Ticket Triage benefits every MSP running Ticket Triage. They're also:

* **Cheaper** — a single deterministic call per ticket, not an LLM choosing between tools.
* **More predictable** — same input, same output structure, every time.
* **Easier to debug** — a linear trace, not a branching agent transcript.

An agent built to do the same job has to be re-taught the rules through `custom_instructions`, runs without Neo's guardrails, and tends to either over-explain or under-decide.

## Why agents win for everything else

For open-ended jobs, the agent's value *is* picking tools at runtime:

* **L1 troubleshooting** — read the ticket, check RMM device state, search past tickets, optionally run a script, reply to the user.
* **Microsoft 365 operations** — user offboarding, license reconciliation, mailbox permission audits, environment documentation.
* **Documentation** — write SOPs into IT Glue or Hudu, audit existing records for staleness.
* **QA and audits** — review past tickets or time entries against a policy.
* **Scheduled reports** — pull data across PSA, M365, and RMM, summarize for the team.

For these, no workflow path exists — there's no smart action for "offboard a Microsoft 365 user" or "write an SOP". The agent picks the tools it needs and chains them.
