Resolutions & escalations
Core Concepts

Resolutions & escalations

What counts as a resolution, when the bot escalates, and how the agent decides which path to take — no confidence threshold to tune.

What "resolution" means

A resolution is a conversation the agent closed without a human ever stepping in. Two signals can mark a thread resolved:

  • User signal: the user reacts with a thumbs-up, says "thanks, that worked," or closes the chat without coming back for 24 hours.
  • Agent signal: the bot answered with citations from your docs / past tickets and the user didn't reply with frustration markers ("not what I asked," "still broken," "can I talk to a human").

Resolutions are tracked for analytics. Billing is metered on the underlying token spend converted to credits — see Pricing & credits.

When the agent escalates

The agent picks escalate (instead of replying) when its reasoning concludes one of:

  • The fix requires a write action the agent can't autonomously run (refund, env change, code change).
  • The user explicitly asks for a human.
  • The question falls into your "always escalate" categories (e.g. billing disputes, security reports).
  • The agent detects frustration markers, or it can't find precedent in past tickets / docs to answer confidently.

On escalation, the agent surfaces a full diagnostic packet — hypothesis, tool calls it already ran, the past tickets it pulled, and a proposed plan. Your team starts the conversation halfway in, not from scratch.

The diagnostic packet

An escalation card carries:

  • The user's actual question, in plain language.
  • What page they were on when they asked.
  • Any user identity you passed via identify().
  • The agent's plain-English hypothesis and the tool calls it ran.
  • The top-10 past tickets it pulled from knowledge_base_chunks.
  • A proposed action — canned reply, write action, or code dispatch — for you to approve, edit, or reject.
No threshold to tune
Old versions of DuggAI exposed a confidence threshold slider. That's gone. The agent now reasons explicitly and picks one of four actions per ticket (reply, ask, escalate, spawn_cursor) — and your approvals/edits/rejects in the review queue continuously retrain the next response.

Always-escalate categories

Some categories should always go to a human:

  • Billing disputes and refund requests.
  • Security reports.
  • Account deletion / data export requests.
  • Anything legal-adjacent (DMCA, GDPR data subject requests).

These are baked into the diagnostic agent's reasoning by default. To customize them, edit your operating manual under Knowledge → Operating Manual.