A ticket with twenty back-and-forth emails reaches the technician's desk already tired: before solving anything, they have to read it all and still craft a clear reply. The NexTool AI Assist module puts artificial intelligence right inside the GLPI ticket - it summarizes the thread, suggests the reply and flags the user's mood, without pulling the technician away from the ticket screen.
The problem
In high-volume support environments, the technician has to read the whole ticket thread before acting: the user's description, colleagues' follow-ups, automatic replies, logged tasks. In a typical case a ticket piles up 15 or 20 entries before it reaches whoever will resolve it - and much of that content is noise.
Reading is not the only cost. Crafting a clear, professional, unambiguous reply also drains cognitive energy, and that is exactly where the junior technician stumbles: an incomplete answer triggers another round of questions, which stretches the cycle and eats into the SLA. Multiply that across dozens of tickets a day and the bottleneck is no longer technical skill - it becomes reading and writing.
How it works
Once enabled, the module adds an AI Assist tab to every GLPI ticket. From there the technician gets four features, all one click away:
- Automatic summary - condenses the whole thread into an objective digest: the reported problem, what has already been tried and the current state. Instead of scrolling twenty messages, the technician reads five lines.
- Reply suggestion - generates a professional draft in the ticket's language, ready for review. The technician tweaks whatever they want and pastes it into the follow-up: the AI handles the form, the human guarantees the content.
- Sentiment and urgency analysis - a visual badge shows the ticket's tone (positive, neutral, negative) and the perceived urgency, helping you prioritize before an annoyed user escalates.
- Consumption dashboard - a panel with call logs, quotas and rate limit, so the manager can track API usage without surprises on the invoice.
The integration talks directly to the AI provider's API - OpenAI (GPT models) or Google Gemini -, configured in the module panel. Calls go through secure AJAX endpoints in the GLPI backend: the API key stays on the server and is never exposed in the browser or in query strings.
How to enable it
- Install the NexTool plugin in GLPI and go to Setup > NexTool > Modules.
- Enable the AI Assist module in the module list.
- Choose the provider (OpenAI or Gemini) and enter the matching API key in the configuration panel.
- Use the test connection button to confirm the key is valid before opening it to technicians.
- Set the quotas and rate limit according to your environment's volume - this is where you control cost.
An example of the limits we usually set on day one, in key-value format:
# AI Assist module limits (configuration panel in GLPI)
provider = openai # or "gemini"
model = gpt-4o-mini
max_tokens_per_ticket = 1200
daily_quota_per_agent = 50 # calls per day per technician
rate_limit_per_minute = 10 # guards against burst clicks
summarize_before_reply = true # summarize long threads before drafting
Without AI vs. with AI Assist
The comparison below shows what changes in each day-to-day task between native GLPI and the same ticket with the module active:
| Task | Without AI (native GLPI) | With AI Assist |
|---|---|---|
| Read the ticket history | Manually scroll 15-20 follow-ups, tasks and emails | A few-line summary generated in one click |
| Draft the reply | Technician writes from scratch; the junior tends to produce ambiguous text | Professional draft in the ticket's language, ready to review |
| Prioritize by sentiment | Depends on each agent's reading and sensitivity | Sentiment and urgency badge suggested automatically |
| Control API cost | Not applicable (no native AI) | Per-technician quotas, rate limit and logs in the dashboard |
In the backend, each click becomes a call like this - conceptually, the key never leaves the server:
# Conceptual call the backend makes when you click "Summarize".
# The GLPI AJAX talks to the backend; the backend talks to the provider
# using the key stored on the server. The key never reaches the browser.
curl https://api.openai.com/v1/chat/completions \
-H "Authorization: Bearer ${OPENAI_API_KEY}" \
-H "Content-Type: application/json" \
-d '{ "model": "gpt-4o-mini", "messages": [ {"role":"system","content":"Summarize the GLPI ticket in 5 lines."}, {"role":"user","content":"...ticket history..."} ] }'
Who it fits (and when NOT to use it)
AI Assist pays off most where the pain of volume and consistency is felt:
- High-volume internal helpdesk, where saving two minutes per ticket turns into hours by the end of the day.
- Teams with junior technicians still developing their written communication.
- A managed service provider (MSP) with a tight SLA that cannot waste time on triage.
- Multilingual support, where suggesting the reply in the user's language removes a barrier.
And when not to use it? If ticket volume is low, the gain does not pay for the API cost or the extra complexity - the technician reads the whole thread in seconds anyway. And, more importantly, if there is a strict restriction on sending ticket content to an external provider, stop before enabling it: the ticket text leaves your infrastructure and goes to OpenAI or Google. In an environment with sensitive or regulated data, this is a privacy and data-protection decision that must go through whoever owns the data, not just any technical setting.
What we learned in practice
Sustaining client service desks, three things only surface after the module is running. The first is the invoice: every click on "Summarize" or "Suggest" is a paid API call, billed per token, and an enthusiastic technician clicking on every ticket becomes an unexpected line at the end of the month - which is why the daily per-technician quota is not red tape, it is cost control. The second is the context limit: that giant 60-follow-up ticket nobody closed blows past the number of tokens the model accepts at once, and the call comes back with an error. Our fix is to summarize before suggesting - the summary condenses the thread and becomes the input for the suggestion, instead of sending the raw history. The third is privacy: before switching the module on, we agree with the client which queues may or may not have their content sent to the provider - and sometimes the conscious decision is to leave AI Assist off on specific queues.
Compatibility
- GLPI: 10.0+ and 11.0+
- Module: free (you only pay for AI API consumption)
- Plugin: NexTool 3.x+
- PHP: 8.0+
AI Assist is part of NexTool, the modular plugin for GLPI. To see the module in action or discuss the privacy assessment before enabling it, talk to the team.
This content was produced with the assistance of artificial intelligence and reviewed by the Nextool Solutions team.