How It Works
Decision Flow
Every time a ticket message is created, the extension checks whether the AI should reply:
New ticket message created
│
▼
Was it sent by the bot user? → YES → Stop (anti-loop)
│ NO
▼
Was it sent by a staff member? → YES → Stop
│ NO
▼
Has any human staff already replied → YES → Stop (human hand-off)
to this ticket before?
│ NO
▼
Is the department in the allowed list? → NO → Stop
│ YES
▼
Call AI API with conversation history
│
├── API error / timeout → Discord notification (if set)
├── AI replies [[ESCALATE]] → Discord notification (if set)
└── AI returns an answer → Post reply as bot user
Human Hand-off
Once any human staff member writes a reply in a ticket, the AI permanently stops responding to that ticket — even if the customer replies again afterwards.
This prevents situations where a staff member is handling a ticket but the AI keeps jumping in.
Escalation
If the AI cannot answer a question, it is instructed to respond with the internal marker [[ESCALATE]]. The extension detects this and:
- Does not post any reply to the ticket
- Sends a Discord notification (if a webhook is configured)
The ticket stays open and marked for human follow-up.
Context Sent to the AI
For every ticket, the extension sends:
- Your System Prompt + Hosting / Company Information as a system message
- The ticket subject so the AI knows the topic
- Up to the last 10 messages of the ticket conversation as context
Messages from the bot user are sent as assistant role; all other messages are sent as user role.
Ticket Status
The extension does not change ticket status manually — Paymenter handles this automatically:
- Customer sends message → ticket status becomes
open - Bot (or any staff) replies → ticket status becomes
replied - If AI escalates and no reply is sent → status stays
open