Ticket System — Introduction
The Rhino Group Ticket System is a heavily customized osTicket installation that serves as the central help desk and project management platform for all Rhino Group client communications. It is deployed at tickets.rhinogroup.com and provides ticket creation, AI-powered triage, time tracking, budget management, and multi-channel alerting.
Technology Stack
| Component | Details |
|---|---|
| Base Platform | osTicket (open-source help desk) — heavily customized |
| PHP Version | PHP 8.4+ (Laravel Herd on dev, production server) |
| Database | MySQL (managerhinogroup database, ost_ table prefix) |
| Web Server | Apache (.htaccess) with IIS fallback support (web.config) |
| Frontend Build | Vite 5.4 + Gulp (dual build system in custom/) |
| CSS | SCSS compiled via Gulp/Sass, Bootstrap 4.6 |
| JavaScript | ES6 modules, Algolia InstantSearch, TinyMCE 6, mmenu-js |
| Search | Algolia (rhinotickets_index_dev) |
| AI | Google Gemini API — direct REST (urgency analysis + knowledge assistant + note optimization), modular Suma\AI namespace with php-chatbot architecture |
| Vector DB | Pinecone (ticket embeddings for AI retrieval, multi-source semantic search) |
| Time Tracking | Harvest API integration (per-staff OAuth2, native timers, direct time entry) |
| SMS | Twilio (critical alerts) |
| Microsoft 365 OAuth (Graph API) | |
| Project Management | Asana API integration |
| Analytics | KoolReport Pro |
| Version | SUMA_SCRIPT_VERSION = '1.0.1136' |
Key Customizations Over Stock osTicket
The system extends osTicket with the following major custom features:
- AI-Powered Triage — Gemini analyzes tickets for urgency (LOW → CRITICAL), estimated hours, and suggested titles via direct API with model fallback chains and staff reply urgency cap
- AI Knowledge Assistant ("the Rhino") — Modular chatbot (php-chatbot architecture,
Suma\AInamespace) using Pinecone vectors + Gemini streaming for staff knowledge retrieval across tickets, client sites, wiki, docs, and GSM properties — with ticket/agent context awareness and organization-level issue analysis - AI Analysis Snapshots — Historical tracking of how AI urgency evolves over a ticket's lifetime, with searchable staff history page
- Budget Management — Harvest time tracking integration with tiered over-budget locking and PM unlock workflow
- Direct Harvest Time Entry — Staff log time from the ticket page via per-staff OAuth2, with native timers and AI note optimization
- Per-Ticket Watch — Watch individual tickets for client reply notifications, with auto-watch on escalation
- Client Escalation — Emergency (immediate email + SMS) and normal (daily digest) escalation paths
- Algolia Search — Replaces osTicket's built-in search with faceted, real-time search
- Browser Notifications — Desktop and in-app notification system with per-event subscriptions
- Documentation-Before-Close — Per-organization flag requiring documentation before ticket closure
- Multi-Channel Alerts — Email, SMS (Twilio), and browser notifications for critical events
- Custom Form Fields — AI urgency, estimated hours, timeline, suggested title, budget hours, escalation level
- Modern Frontend — Vite/SCSS build system with Shadow DOM isolation for the AI widget
- Ticket Number URLs — User-visible URLs use
?number=(display number) instead of?id=(internal DB key) - Gemini Queue Logging — Dedicated file-based logger with daily rotation, queue state snapshots, and per-ticket processing diagnostics
- Admin Toolkit — Staff ID 1 quick-action tools (run AI analysis, temp unlock, test alerts, Algolia reindex)
- Staff Changelog — In-app changelog page accessible from the Links dropdown
User Roles
| Role | Access Level | Description |
|---|---|---|
| Admin | Full system access | System configuration, staff management, all settings |
| Project Manager (PM) | Budget unlock, documentation ack | Budget unlock authority, documentation review, all tickets |
| Staff/Agent | Assigned tickets, department-based | Daily ticket handling, responses, notes, time tracking |
| Client | Own + organization tickets | Ticket creation, replies, escalation, knowledge base |
Documentation Sections
| Section | Audience | Description |
|---|---|---|
| Developer | Developers | Architecture, database, AI system, plugins, APIs, integrations, dev setup |
| Admin Guide | System Admins | System settings, staff management, departments, email, AI config, analytics |
| Agent Guide | Staff/Agents | Daily ticket handling, responses, escalation, AI assistant, notifications |
| Client Portal | Clients | Creating tickets, managing tickets, responding, escalation, knowledge base |
Production URL
The ticket system is accessible at:
- Staff Panel:
https://tickets.rhinogroup.com/scp/ - Client Portal:
https://tickets.rhinogroup.com/ - API:
https://tickets.rhinogroup.com/api/
Source Repository
The source code lives at Z:\Repos\ticket-manager and is version-controlled in Git. See the Development Setup guide for local environment configuration.