bootsinthepark · everything up to 2026-08-03 · every figure double-checked
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
Of every ticket answered on Easol, AI closed 61.9% on its own.
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.
9,643 tickets in total.
One entry per figure: what it means, the SQL that made it, and when it was last re-checked.
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
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
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
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