bootsinthepark · everything up to 2026-08-03 · every figure double-checked
What this meansTickets where AI closed it, sent a reply, or changed a booking. Both numbers behind it are in the charts below. Rounding can shift the last decimal. Checked 2026-08-03T16:10:59Z.
AI has worked thousands of tickets; booking changes are barely started
AI closed or helped on 5,165 tickets: 3,836 on its own and 1,329 alongside staff.
AI made 23 booking changes and 9 went live. Staff made 1,024 and applied 983.
One entry per figure: what it means, the SQL that made it, and when it was last re-checked.
Tickets where AI closed it, sent a reply, or changed a booking
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 COUNT(*) AS value FROM b WHERE bucket IN ('full_ai', 'partial_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
Booking changes made in an AI session
SELECT COUNT(*) AS value FROM booking_edits be JOIN finance_bookings fb ON fb.id = be.finance_booking_id WHERE fb.company_id = $1 AND be.created_at < $2 AND be.copilot_session_id IS NOT NULL
Source: app/models/booking_edit.rb:32 (belongs_to :copilot_session)
Verified: 2026-08-03T16:10:59Z
AI booking changes that were actually applied
SELECT COUNT(*) AS value FROM booking_edits be JOIN finance_bookings fb ON fb.id = be.finance_booking_id WHERE fb.company_id = $1 AND be.created_at < $2 AND be.copilot_session_id IS NOT NULL AND be.applied_at IS NOT NULL
Source: app/models/booking_edit.rb:84 (BookingEdit#apply!, touch(:applied_at))
Verified: 2026-08-03T16:10:59Z
Booking changes made without AI
SELECT COUNT(*) AS value FROM booking_edits be JOIN finance_bookings fb ON fb.id = be.finance_booking_id WHERE fb.company_id = $1 AND be.created_at < $2 AND be.copilot_session_id IS NULL
Source: app/models/booking_edit.rb:32 (belongs_to :copilot_session)
Verified: 2026-08-03T16:10:59Z
Staff booking changes that were actually applied
SELECT COUNT(*) AS value FROM booking_edits be JOIN finance_bookings fb ON fb.id = be.finance_booking_id WHERE fb.company_id = $1 AND be.created_at < $2 AND be.copilot_session_id IS NULL AND be.applied_at IS NOT NULL
Source: app/models/booking_edit.rb:84 (BookingEdit#apply!, touch(:applied_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