Accountability
Every inbound thread gets a deadline. Missed deadlines get escalated.
When an inbound email is classified, the routing engine assigns an SLA deadline based on intent. A background monitor checks every two minutes. Breached threads auto-escalate to human review and fire a stream event your agent can react to.
Deadlines are set by intent, not by you
The routing engine classifies every inbound message and assigns an SLA window automatically. An "interested" prospect gets 5 minutes. A support request gets 30. Billing and legal get an hour. Security flags get 15 minutes.
| Intent | SLA | Routing |
|---|---|---|
| interested | 5 min | Notify owner |
| support | 30 min | Notify owner |
| billing | 60 min | Require approval |
| legal | 30 min | Require approval |
| security | 15 min | Require approval |
| unclassified | 60 min | Notify owner |
Intents that auto-archive (not_now, objection, out_of_office) have no SLA deadline — there's nothing to respond to. Low-confidence classifications (below 0.6) automatically escalate to require approval with tighter SLA windows. Flagged messages (conflicting intents, adversarial signals) get 15-minute deadlines regardless of intent.
What happens when a deadline passes
A background worker scans for breached threads every two minutes. When it finds one (open or waiting, deadline passed, not already flagged), three things happen in a single transaction: the thread's status moves to escalated, a thread.sla_breached event publishes to the stream, and the breach timestamp is recorded.
Breach detection processes up to 500 threads per run. It never blocks message processing. If your agent is subscribed to the event stream, it knows about the breach within seconds and can take action (reassign, auto-reply, notify a human). Escalated threads also surface in the portal's override queue for operators to pick up manually.
React to breaches in real-time
Subscribe to thread.sla_breached on the event stream. The payload includes the thread, contact, original deadline, and when the breach was detected.
$ curl -N -H "Authorization: Bearer mm_live_..." \
"https://api.molted.email/v1/agent/events/stream?eventTypes=thread.sla_breached"
event: thread.sla_breached
data: {
"threadId": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"contactEmail": "alice@bigcorp.com",
"subject": "Re: Contract renewal",
"slaDeadline": "2026-03-22T10:30:00Z",
"breachedAt": "2026-03-22T10:32:14Z"
}Breach alerts
The alerts system tracks SLA breaches over a rolling 24-hour window. Zero breaches is OK. One or more triggers a warning. Five or more is critical. Your agent can poll this or an operator can check the dashboard.
$ molted overrides alerts
{
"sla_breaches_24h": {
"level": "warning",
"count": 3,
"description": "Threads that breached their SLA deadline in the last 24h"
}
}Auto-escalation
Breached threads automatically move to escalated status. Operators see them in the override queue. The agent stops touching the thread unless instructed otherwise.
Confidence-based tightening
Low classification confidence or adversarial flags override the default SLA. A support message classified at 0.5 confidence gets a shorter deadline and requires approval instead of just notifying the owner.
Deadlines your agent can't ignore
SLA tracking runs in the background. Every inbound thread gets a deadline. Every missed deadline gets escalated. Your agent either responds in time or a human picks it up.
Related features