Browse Guides

AI Ticket Clustering
Reading mode
Copy Link
Link Copied!
Print
Feedback
This guide has multiple versions available:
<style>p { margin: 0; }span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left:0; padding-left:5px;}blockquote blockquote{ border-color: #00bcd4; color: #00bcd4;}blockquote blockquote blockquote{ border-color: #43a047; color: #43a047;} table.grid{ border-collapse: collapse;} table.grid td, table.grid th { border: 1px solid #ddd;} .fr-fic.fr-dib{ display: block; margin: 5px auto;}.fr-fic.fr-dib.fr-fir{ text-align: right; margin: 5px 0 5px auto;}.fr-fic.fr-dib.fr-fil{ text-align: left; margin: 5px auto 5px 0;}.fr-fic.fr-dii{ float: none; margin: 5px auto;}.fr-fic.fr-dii.fr-fil{ float: left; margin: 5px auto;}.fr-fic.fr-dii.fr-fir{ float: right; margin: 5px auto;}img.fr-dib.fr-fir { margin-right: 0; text-align: right;}img.fr-dib.fr-fil { margin-left: 0; text-align: left;}img.fr-dib { margin: 5px auto; display: block; float: none;}img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC;}img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc;}img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;}</style><p><span style="font-size: 11pt;"><strong>In this guide we will cover:</strong></span></p><p><span style="font-size: 11pt;"><strong>- What is AI Ticket Clustering?</strong></span></p><p><span style="font-size: 11pt;"><strong>- Clustering Runs</strong></span></p><p><span style="font-size: 11pt;"><strong>- Viewing &amp; Using Ticket Clusters</strong></span></p><p><span style="font-size: 11pt;"><strong>- New Clustering Runs &amp; Archiving</strong></span></p><p><span style="font-size: 11pt;"><strong>-&nbsp;</strong></span><strong>Reporting on Clusters</strong></p><p><br></p><p><br></p><p><span style="font-size: 11pt;"><strong>Related Guides:</strong></span></p><p><span style="font-size: 11pt;"><strong>-&nbsp;</strong><a href="https://usehalo.com/haloitsm/guides/2699/" target="_blank" rel="noopener noreferrer"><strong>Contents of AI Guides</strong></a></span></p><p><span style="font-size: 11pt;"><strong>-&nbsp;</strong><a href="https://usehalo.com/haloitsm/guides/2137/" target="_blank" rel="noopener noreferrer"><strong>Leveraging AI in Halo</strong></a></span></p><p><span style="font-size: 11pt;"><strong>-&nbsp;</strong><a href="https://usehalo.com/haloitsm/guides/2387/" target="_blank" rel="noopener noreferrer"><strong>AI Insights</strong></a></span></p><p><span style="font-size: 11pt;"><strong>-&nbsp;</strong><a href="https://usehalo.com/haloitsm/guides/2673/" target="_blank" rel="noopener noreferrer"><strong>Vector Search Databases</strong></a></span></p><p><br></p><p><span style="font-size: 11pt;"><strong>Configuration Settings Guide:</strong></span></p><p><span style="font-size: 11pt;"><strong>-&nbsp;</strong><a href="https://usehalo.com/haloitsm/guides/2328/" target="_blank" rel="noopener noreferrer"><strong>AI</strong></a><br></span></p><p><br></p><p><br></p><p><span style="font-size: 11pt;">Ticket Clustering is now a part of Halo&#39;s AI functionality. It can only be used if you have indexed Tickets in the system, &nbsp;it can work with the default Halo connection but it is advisable to have Azure AI Search as your <a href="https://usehalo.com/haloitsm/guides/2673/" target="_blank" rel="noopener noreferrer" style="font-size: 11pt;">vector storage</a> method.&nbsp;</span></p><p><br></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 14pt;"><strong>What is AI Ticket Clustering?</strong></span></p><p><span style="font-size: 11pt;">Halo&#39;s AI Ticket Clustering feature automatically groups your indexed Tickets into Clusters based on their embedding scores, using a KMeans algorithm.</span></p><p><span style="font-size: 11pt;"><br></span></p><p style="margin-left: 20px;"><span style="font-size: 11pt;"><strong>&quot;KMeans&quot;</strong> works by sorting Tickets into a set number of groups (K), where Tickets within the same group are as similar to each other as possible. You define how many Clusters you want, for example 5, and the algorithm uses each Ticket&#39;s vector scores to determine which Tickets belong together.&nbsp;</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">Each Cluster is assigned an AI-generated description and suggested resolution, derived from the most similar tickets within that Cluster. This gives Agents immediate context on what the Cluster represents, any trend it reflects, and how similar issues have been resolved historically.</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">The algorithm runs server side within Halo&#39;s backend services against the embeddings stored in your configured vector database, meaning no data leaves your environment during the Clustering process beyond what is already indexed.</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">This Clustering helps teams to auto-route Tickets, spot trends, and resolve Tickets faster without having to manually sort through or report on similar matched Tickets found by the AI - the Clusters will already be present on the Ticket, allowing for swift action to be taken as soon as the Ticket comes in.</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 14pt;"><strong>Cluster Runs</strong></span></p><p><span style="font-size: 11pt;">To create your Clusters in Halo, you must set up a &quot;Clustering Run&quot; which will determine certain parameters of your Clusters.&nbsp;</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">Before creating your first Cluster, you must first ensure that you have a working AI connection in your Halo environment, and that you have Indexed your Tickets - having embeddings for Tickets is a requirement for a successful Clustering Run on those Tickets.&nbsp;</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">For guidance on setting up AI in Halo and Indexing Tickets, please refer to relevant documentation that can be found through this guide: <a href="https://usehalo.com/haloitsm/guides/2699/" target="_blank" rel="noopener noreferrer" style="font-size: 11pt;">AI Guides</a>.</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">To create a new Cluster Run, navigate to Configuration &gt; AI and scroll to the &quot;AI Ticket Matching&quot; section. Towards the end of this section you will see an option to &quot;Enable Ticket Clustering&quot;.&nbsp;</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjU0Y2VhMzNmLWI4ZTQtNDg5OS1iYTU2LTRiODlhYjJjY2ZkNCJ9.bJIAitOiu82dj6-Z49L3zckQ6TyKK8BP6HP9pA99-zQ" class="fr-fic fr-fil fr-dib" width="1022" style="width: 1024px; height: 512px;" height="512"></span><span style="font-size: 10pt;"><strong>Fig 1. Enabling Ticket Clustering and creating a new Cluster Run</strong></span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">Once Clustering is enabled, you can select the &quot;New Clustering Run&quot; button to create a new set of Clusters.&nbsp;</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImE4M2Q5N2I4LTRkZDktNDIyMi1hZTBlLThmY2YzM2I1ZjBmZCJ9.4QGwSZNlLjUWxAYlE3o1X4M5pWOc2zGqYhHN-AC-uso" class="fr-fic fr-fil fr-dib" width="709" style="width: 711px; height: 484.834px;" height="485"></span></p><p><span style="font-size: 10pt;"><strong>Fig 2. Setting up a new Clustering Run</strong></span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">When setting up a new Clustering Run, you will need to set the &quot;Ticket Types&quot; that will be included in the run - for example, if I set the &quot;Incident&quot; Ticket Type, then only Tickets of the Incident Ticket Type will be in the Clusters created from the run. If I selected Incidents, Problems and Alerts, then a Cluster created from that run could contain Tickets of all three Types.</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">The &quot;Start date&quot; and &quot;End date&quot; fields determine the date parameters for which Tickets will be included in the run, and they are based on when the Tickets were logged in the system.&nbsp;</span></p><p><span style="font-size: 11pt;"><br></span></p><p data-pasted="true"><span style="font-size: 11pt;">The &quot;Number of Clusters&quot; defines how many groups your Tickets will be sorted into. The right number depends on what you are trying to achieve, so it is worthwhile thinking about your use case before deciding this number. For example, if you are clustering Service Requests or Change Requests, where Tickets tend to follow a predictable, structured pattern, then a good starting point is to match the number of Clusters to the number of distinct processes you have. This way each Cluster is likely to represent one process. On the other hand, if you are Clustering Tickets such as Incidents, where there is less of a structured workflow, then the number of Clusters you set here is more open. It is, however, good to keep in mind that the greater the number of Clusters, the smaller those clusters will be, which in theory leads to less broad and more accurate Clustering.&nbsp;</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">In a similar fashion to Indexing, once you select the &quot;Save&quot; button, Clustering will be queued as an automated task to run out of working hours.&nbsp;</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImY1M2MxNjJmLTVmNTUtNGQ5OS05MTNiLWUwZTQzNDA0ODAyNyJ9.4KSAzYKeFmujEo8aHmGUcn6_q21PVLn5BrOVfCAOr7Y" class="fr-fic fr-fil fr-dib" width="986" style="width: 988px; height: 354.122px;" height="354"></span></p><p><span style="font-size: 10pt;"><strong>Fig 3. A Clustering Run queuing to run after the working day</strong></span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">If you do not want to wait for this task and wish for the run to take place immediately, you can manually trigger it. To do this navigate to Configuration &gt; Advanced Settings &gt; Backend Service Monitoring and then navigate to the &quot;Automation Log&quot; tab and change the first drop down filter from &quot;Past&quot; to &quot;Upcoming&quot;. The &quot;Cluster Tickets&quot; action should appear, on which you can right/secondary click and select &quot;Retry&quot; to manually trigger the task.</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYwZWI0NjZlLWY3OGMtNDdlNy1hMWI2LTQ2NjNkYWY4M2Y2NyJ9.YkcaP97XAg0Xn09YnXSUk4WQvMqPomEiY3sEbzjujNc" class="fr-fic fr-fil fr-dib" width="1025" style="width: 1027px; height: 348.492px;" height="348"></span></p><p><span style="font-size: 10pt;"><strong>Fig 4. Manually triggering the Cluster Run to run immediately</strong></span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">After the initial Cluster Run, there will now be Clusters of similar Tickets in the database to which any newly logged Tickets will be assigned as they are indexed, based on which Cluster they are nearest to in similarity. This means that you do not have to keep creating new Cluster Runs to ensure Cluster membership is kept up to date.&nbsp;</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;"><strong><em>Note: It is recommended to do new Cluster Runs fairly frequently - depending on the number of Tickets your company ingests and the Ticket Type(s) the Cluster Run is for, it could be advisable to do a new Run every six months to a year to ensure older Tickets are not influencing any Cluster&#39;s central vector score. Having older, or no longer relevant, Tickets in a Cluster could impact the accuracy of determining recent patterns, trends, and potential Problems.</em></strong></span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 14pt;"><strong>Viewing &amp; Using Ticket Clusters</strong></span></p><p><span style="font-size: 11pt;">Once the Clusters are in your system, you are able to view any matched Clusters for new Tickets logged on the Ticket itself.</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">To be able to see the individual Tickets within the matched Cluster, ensure you have enabled the tab by navigating to Configuration &gt; AI and scroll to the &quot;AI Ticket Matching&quot; section. The final setting of this section enables the &quot;Cluster Matched Tickets&quot; tab.</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImQzMmUzNTA3LWFmZGQtNGY2Ny1hMzEwLWU2NjI4ODIxOTY4MCJ9.Ke1NHqnJSpZt15-We_6aHuSVr5GVtKLxrHkgSK_iUIA" class="fr-fic fr-fil fr-dib" width="1001" style="width: 1003px; height: 606.829px;" height="607"></span></p><p><span style="font-size: 10pt;"><strong>Fig 5. Enabling the &quot;Cluster Matched Tickets&quot; tab in Configuration &gt; AI</strong></span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">As illustrated in Figure 6, with the tab enabled it will be clearly visible on newly logged Tickets and will display all Tickets within the matched Cluster.&nbsp;</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjczZDJjN2Y4LTBiNDEtNDlmZi1hNzRlLWQyYmI1M2RjYzAwYiJ9.Q_BNkGDmDsy8h2cuHw4PCF4fnQUZvb3xq4EdXF0eYQU" class="fr-fic fr-fil fr-dib" width="879" style="width: 881px; height: 419.012px;" height="419"></span></p><p><span style="font-size: 10pt;"><strong>Fig 6. The &quot;Cluster Matched Tickets&quot; tab on new Tickets</strong></span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">Within the AI Insights tab you will also be able to see the name of the Cluster, the &quot;Cluster Description&quot; and the &quot;Cluster Resolution&quot; for the Ticket&#39;s matched Cluster.&nbsp;</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImQwOGFkNTUxLTA2NDAtNDRhYi04YjU2LWNmMWFlNjkwOTk0MiJ9.CQUkUOxXipdJAM9sbX7etu0P3KyH27oUOE64L4RQaRc" class="fr-fic fr-fil fr-dib" width="884" style="width: 886px; height: 677.049px;" height="677"></span></p><p><span style="font-size: 10pt;"><strong>Fig 7. Matched Cluster information provided in the AI Insights tab</strong></span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;"><strong><em>Note: These fields will only show in the AI Insights tab if Ticket Clustering has been enabled.</em></strong></span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">As you can see, these two tabs provide immediate visibility of any patterns and potential issues on the Ticket itself, instead of having to do further analysis or compare all AI matched Tickets and verify the similarity.&nbsp;</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 14pt;"><strong>New Cluster Runs &amp; Archiving&nbsp;</strong></span></p><p><span style="font-size: 11pt;">An important feature of Clustering to understand is that one Ticket can only ever exist within one <strong>active&nbsp;</strong>Cluster. This, therefore, begs the question of what happens if a Ticket is included in another Cluster Run?&nbsp;</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">In the scenario outlined in Figure 2, I created a Cluster Run for Incidents logged from January 1st to April 1st 2026.&nbsp;</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">In Figure 8, I create a new Cluster Run for Incidents logged from February 1st to April 1st 2026.</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6Ijk1MGU4NzkzLTY0ODYtNDk4My05OTZmLWVmZmRiODg4MGE4YiJ9.fTbkbxfoQzWrkNL2PFoQ6VSS2EmCvUSen9_Hi0mPj6g" class="fr-fic fr-fil fr-dib" width="739" style="width: 741px; height: 496.85px;" height="497"></span></p><p><span style="font-size: 10pt;"><strong>Fig 8. Creating a new Clustering Run</strong></span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">In this situation, I have taken the same Ticket Type as the first run and the time parameters will overlap with those of the first Run. This means that there will be Tickets that were in Clusters created from the initial Clustering Run that will now qualify for the Clusters created from the new Clustering Run.&nbsp;</span></p><p><br></p><p><span style="font-size: 11pt;">Instead of excluding these Tickets from being included in the new Clusters, we &#39;archive&#39; the initial Clusters. This means that we hold them in the database in the FaultClusterArchive table where they can be referenced with the reporting suite, but they are not used as active Clusters for matching to new Tickets and will not appear in the Cluster Matched Tickets tab on Tickets.</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;"><strong><em>Note: If you run a new Clustering Run where there would be no overlap with a previous run, then archiving will not take place. For example, if my second run was on Change Requests then there would be no overlap with the first Clustering Run in Figure 2 and so none of the Clusters created from the first run would be archived.</em></strong></span></p><p><br></p><p><strong><span style="font-size: 14pt;">Reporting on Clusters</span></strong></p><p>Once a cluster run is complete you can use the <a href="https://usehalo.com/haloitsm/guides/887" target="_blank" rel="noopener noreferrer">reporting suite</a> to report on the clusters generated. This can be useful when first establishing your clusters, as this provides you with an overview of all the clusters created. Helping you evaluate if the clusters created are representative of your ticket sample and if a higher/lower number of clusters is needed.&nbsp;</p><p><br></p><p>The following table contains cluster run data:</p><ul><li>Cluster</li></ul><p><br></p><p>The Figure 9 example shows a report generated using data from the Cluster table.&nbsp;</p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjlmYTYzZjUyLThmNzMtNDFiZi05NmM1LTg1YmMwN2ZkNzYzOSJ9.fTccwmGQaV8vZxipo6CD8fK2i7Wnibeq2RRNblDPWCg" class="fr-fic fr-fil fr-dib" width="1840" style="width: 1842px; height: 1058.1px;" height="1058"></p><p><strong><span style="font-size: 10pt;">Fig 9. Report to show Clusters created</span></strong></p><p><br></p><p>The report shown in Figure 9 was generated using the following sql:</p><p data-pasted="true" style="margin-left: 20px;"><em>select&nbsp;</em></p><p style="margin-left: 20px;"><em>CLUrunid as [Run ID],</em></p><p style="margin-left: 20px;"><em>CLUid as [Cluster ID],</em></p><p style="margin-left: 20px;"><em>CLUname as [Cluster Name],</em></p><p style="margin-left: 20px;"><em>CLUdescription as [Cluster Description],</em></p><p style="margin-left: 20px;"><em>CLUresolution as [Cluster Resolution],</em></p><p style="margin-left: 20px;"><em>CLUsampleids as [Tickets in this Cluster],</em></p><p style="margin-left: 20px;"><em>CLUarchived as [Archived?]</em></p><p style="margin-left: 20px;"><em>&nbsp;from cluster</em></p><p><br></p><p>The columns returned contain the following information:</p><p><strong>CLUrunid&nbsp;</strong>- Contains the ID of the run that generated this cluster. ID 1 will be the first cluster run, 2 the second etc.&nbsp;</p><p><strong>CLUid</strong> - The unique ID of the cluster generated.</p><p><strong>CLUname&nbsp;</strong>- The name of the cluster generated. Agents will be able to see this against each ticket that belongs to a cluster.</p><p><strong>CLUdescription</strong> - The description of the cluster generated. Agents will be able to see this against each ticket that belongs to this cluster.&nbsp;</p><p><strong>CLUresolution</strong> - The AI generated resolution for tickets in this cluster. Agents will be able to see this against each ticket that belongs to this cluster.&nbsp;</p><p><strong>CLUsampleids</strong> - The IDs of the tickets that are assigned to this cluster.&nbsp;</p><p><strong>CLUarchived</strong> - Indicates whether the cluster is active or archived.&nbsp;</p>
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.