61.9% of answered tickets closed by AI alone

What this meansOf every ticket answered on Easol, how many the AI closed on its own. Both numbers behind it are in the charts below. Rounding can shift the last decimal. Checked 2026-08-03T16:10:59Z.

AI closes most of what gets answered

61.9% of answered tickets

Of every ticket answered on Easol, AI closed 61.9% on its own.

The mix

3,836 AI alone, 1,329 AI helped and 1,032 staff only, plus 572 from before Easol and 2,874 with no reply yet.

The whole inbox is bigger

9,643 tickets in total.

Worth knowing
  • 61.9% is a share of the 6,197 tickets answered on Easol, not of all 9,643. Tickets from before Easol and tickets with no reply yet are out.
  • This is who did the work, not how well it went. Routing decides which tickets AI can take.
Before Easol On Easol
Tickets answered on Easol 6,197 count
All tickets 9,643 count

Tickets by who handled them

Before Easol 572 Staff only 1,032 AI helped 1,329 AI alone 3,836 No reply yet 2,874

Where the numbers come from

One entry per figure: what it means, the SQL that made it, and when it was last re-checked.

Share of answered tickets closed by AI alone full_ai_share_of_handled_pct

Of every ticket answered on Easol, how many the AI closed on its own

WITH b AS (
  SELECT
    CASE
      WHEN imported THEN 'pre_easol'
      WHEN ai_resolved THEN 'full_ai'
      WHEN (ai_draft_sent_count > 0 OR booking_action_performed_by_ai_count > 0) THEN 'partial_ai'
      WHEN sent_message_count > 0 THEN 'no_ai'
      ELSE 'no_reply'
    END AS bucket
  FROM reporting.inbox_tickets
  WHERE company_id = $1 AND created_at < $2
)
SELECT ROUND(100.0 * COUNT(*) FILTER (WHERE bucket = 'full_ai') / COUNT(*), 1) AS value
FROM b WHERE bucket IN ('no_ai', 'partial_ai', 'full_ai')

Source: app/models/reporting/inbox/ticket.rb:178-186,205-207 (Reporting::Inbox::Ticket::AttributesBuilder#imported, #ai_resolved, #ai_draft_sent_count, #booking_action_performed_by_ai_count)

Verified: 2026-08-03T16:10:59Z

Tickets answered on Easol handled_tickets_total

Every Easol ticket that got at least one reply, whoever sent it. This is what the AI share is a share of

SELECT COUNT(*) AS value
FROM reporting.inbox_tickets t
WHERE t.company_id = $1 AND t.created_at < $2
  AND NOT t.imported
  AND (t.ai_resolved OR t.ai_draft_sent_count > 0 OR t.booking_action_performed_by_ai_count > 0 OR t.sent_message_count > 0)

Source: app/models/reporting/inbox/ticket.rb

Verified: 2026-08-03T16:10:59Z

All tickets tickets_total

Every ticket in the inbox up to the cut-off date

SELECT COUNT(*) AS value
FROM reporting.inbox_tickets
WHERE company_id = $1 AND created_at < $2

Source: app/models/reporting/inbox/ticket.rb:6-18 (Reporting::Inbox::Ticket, table_name reporting.inbox_tickets, default_date_filter :created_at)

Verified: 2026-08-03T16:10:59Z

Tickets by who handled them tickets_by_bucket

Every ticket split five ways: before Easol, AI alone, AI helped, staff only, and no reply yet

SELECT
  CASE
    WHEN imported THEN 'pre_easol'
    WHEN ai_resolved THEN 'full_ai'
    WHEN (ai_draft_sent_count > 0 OR booking_action_performed_by_ai_count > 0) THEN 'partial_ai'
    WHEN sent_message_count > 0 THEN 'no_ai'
    ELSE 'no_reply'
  END AS label,
  COUNT(*) AS value
FROM reporting.inbox_tickets
WHERE company_id = $1 AND created_at < $2
GROUP BY 1 ORDER BY 1

Source: app/models/reporting/inbox/ticket.rb:178-186,205-207 (Reporting::Inbox::Ticket::AttributesBuilder#imported, #ai_resolved, #ai_draft_sent_count, #booking_action_performed_by_ai_count; delegates to Inbox::Ticket#imported? and Inbox::AiResolution via ticket.ai_resolution)

Verified: 2026-08-03T16:10:59Z