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

# MVP

> The smallest useful autonomous ticket triage system before broader escalation, reporting, and feedback loops

Start with an autonomous triage loop. Duckie should receive a ticket, attach customer context, classify intent and urgency, apply allowed tags or attributes, route high-confidence tickets, and send only required exceptions to an internal handoff channel.

This proves the system without starting with every escalation, reporting, and improvement loop at once.

<Info>
  The MVP is one intake record, one context bundle, one classifier output, one deterministic routing workflow, and one exception path for cases that should not be handled automatically.
</Info>

## MVP Goal

By the end of the MVP, Duckie should reliably answer:

* What did the customer ask for?
* Which customer, account, product, and prior-ticket context matters?
* What intent, product area, urgency, sentiment, and route should be applied?
* Is the classification confident enough for autonomous routing?
* Which tags, attributes, queue, priority, or owner should be written?
* Which cases require a human handoff because policy, risk, or confidence requires it?

## Minimal Flow

```mermaid theme={null}
flowchart TD
  Event["New ticket or message"]
  Event --> Intake["Ticket triage deployment"]
  Intake --> Normalize["Normalize ticket"]
  Normalize --> Context["Fetch customer context"]
  Context --> Classifier["Classify intent, tags, urgency, and route"]
  Classifier --> Gate{"Autonomous path allowed?"}

  Gate -->|Yes| Validate["Validate allowed values"]
  Validate --> Priority["Calculate priority and SLA"]
  Priority --> Writeback["Write tags, attributes, queue, or owner"]
  Writeback --> Runs["Runs and analytics"]

  Gate -->|No| Handoff["Send required exception handoff"]
  Handoff --> Runs
```

## Build First

| Piece              | What to build                                                                                            | Done when                                                                                  |
| ------------------ | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| Intake deployment  | Trigger from helpdesk, inbox, chat, email, or webhook.                                                   | Duckie receives new tickets and stores the source ticket link.                             |
| Context enrichment | Fetch CRM, subscription, product, order, incident, and prior-ticket context.                             | Classifications use internal context instead of asking the customer for known information. |
| Triage classifier  | Return intent, product area, urgency, sentiment, missing information, recommended route, and confidence. | The classifier produces structured output that the routing workflow can validate.          |
| Routing workflow   | Apply deterministic tag, priority, SLA, queue, and owner rules.                                          | High-confidence tickets follow predictable support rules.                                  |
| Helpdesk writeback | Write allowed tags, attributes, internal notes, queue, priority, or assignee.                            | Writebacks use only allowed values and link to the Duckie run.                             |
| Exception handoff  | Route only required exceptions to an internal channel or specialist queue.                               | Low-confidence, sensitive, or high-risk tickets leave the autonomous path cleanly.         |

## Defer Until the MVP Works

Add these after the first autonomous loop is trusted:

* Broad or highly granular taxonomies
* Multi-step specialist handoff automation
* Automatic sensitive category routing
* Assignment and SLA changes for low-confidence tickets
* Daily reporting and feedback agents
* Automated customer responses beyond simple missing-information requests
* Expansion to every support queue at once

## Required Human Handoffs

Keep humans in the loop only when the workflow cannot safely continue autonomously:

| Condition                                    | Handoff                                                                             |
| -------------------------------------------- | ----------------------------------------------------------------------------------- |
| Low classification confidence                | Send the ticket, context, recommendation, and reason to an internal triage channel. |
| Sensitive or policy-bound category           | Route to the team that owns the policy decision.                                    |
| Expensive downstream action                  | Ask for confirmation before triggering the downstream workflow.                     |
| Missing account match or conflicting context | Route to support operations or the owning queue.                                    |
| Tool failure blocks routing                  | Create an internal note and route to the fallback queue.                            |

<Tip>
  The first live win is not a perfect taxonomy. It is consistent autonomous routing for known paths, with narrow exception handling for cases that actually need a person.
</Tip>

## When to Expand

Move beyond the MVP when:

* High-confidence routes are consistently correct
* Helpdesk writebacks use the expected tags, queues, priorities, and owners
* Exception handoffs are rare, specific, and answerable
* Support teams can explain the remaining reroutes and corrections
* The taxonomy has enough run data to justify splitting broad categories
* The main remaining delays are downstream handoffs that automation can remove

## Next Pages

After the MVP:

1. Read the [system map](/examples/ticket-triage/system-map) to see the full architecture.
2. Build [intake and customer context](/examples/ticket-triage/intake-and-customer-context).
3. Add [intent, tagging, and routing](/examples/ticket-triage/intent-tagging-and-routing).
4. Use the [rollout plan](/examples/ticket-triage/rollout-plan) before expanding live routing.
