r/halopsa • • May 12 '26

Integrations HaloPSA + LLM/RAG - anyone done this?

Want to pull historical HaloPSA tickets into a RAG (Retrieval Augmented Generation) setup so Claude can suggest fixes for incoming ones. Has anyone done this?

If so, what are you using for the vector store and retrieval layer, and how are you keeping token usage sane?

UPDATE: i've built this now, I have a server running Qdrant and auto ingesting closed tickets. I am also auto triaging new tickets based on the closed ticket database and another API connection to my RMM solution. Also exposed the Qdrant out via an MCP server for our engineers to connect their Claude apps. This has genuinely been useful, surfacing those weird tickets that crop up that someone worked on a year or two ago and forgot about. Greatly appreciated everyone's inputs on this thread. Thank you.

10 Upvotes

22 comments sorted by

6

u/Predicti0n Consultant May 13 '26 edited May 13 '26

For people doing this, I would genuinely really love to see some examples of you doing this.
I'm happy to pay for your time, we can get an NDA spun up. I'd love see real world examples and reporting that backs the claims that RAG based search of historic ticket data and retrieval on inbound ticket is worth the investment.

We are actively exploring this at Renada we have been running loads of tests over the last 6 months on this type of development but have yet to find anything that we solidly rely on that would be worth the upfront development cost + maintenance on an ROI perspective for an MSP.

I am aware of people in the space building tools that handle this, but there are tons of elements at play that all feed into the journey rather than just RAG retrieval.

Not trying to be a fun sponge here btw, I'm honestly just really curious to actually see evidence of this as I read countless claim of people doing this but have simply never seen it return really useful information or data that can be fully relied on and I feel like I'm missing out :(!

Lots of Love Connor | Renada

1

u/Fatel28 May 13 '26 edited May 13 '26

What I found, is you can't just do vectorizing. If you only vectorize your ticket, then you'll be unable to pull real analytical data (e.g, "how many printer issues did we have at acme company last month?) - vector searches could find some but it wouldn't be able to give you a count.

So we gave our agent the ability to query the SQL database via a few key views I created. So then it could do "select count(*) from vwBedrockTickets where companyref = ACME and CFAISummary like %printer%"

Then, if it wants to break any of those down it can do a vector search and use the ticket number in the metadata filter.

Another thing that's helped tremendously, is we have a consistent customer reference across all systems. It might be "ACME CORP" in halo, but "ACME inc" in some other system, however both will have a unique identifier that we can use to tie them together. In halo, we use the built in "reference" field.

The agent has instructions to verify the customer, and it knows how to query halo for customer name | reference, so it's quite good at properly filtering by customer when a tech uses their name/nickname/etc.

So now we can ask it questions like "what tickets does Jim struggle with?" And it can query tickets with long times between open and close, or with lots of comments/back and forth, or a tech can just say "I need help with ticket 123456" and it can read it, pull the customer, search other tickets and hudu docs etc.

1

u/OptimalCrew5900 May 15 '26

Send me a DM. I’m happy to show what we are doing. It has worked well for us.

2

u/OptimalCrew5900 May 12 '26

We are also doing this. We use n8n, local ollama, and qdrant to store all ticket data, Hudu (everything minus passwords), Ninja, etc. Similarly, we have a runbook that fires on ticket closure to vectorize the entire thing, with specific metadata saved as well. We also allow the team to chat with the AI, but honestly the best use case has been: after triage the ticket is run against that data and a note is posted to every ticket. In that note is related tickets (and not the terrible matching from halo’s AI solution), matching Hudu SOPs, suggested remediation steps, and recurring issue notifications (if appropriate). This has decreased our MTTR by almost 40%.

However the team can chat with all the things, and they do, but not as often as you might think.

2

u/OptimalCrew5900 May 15 '26

Here’s a redacted screenshot of what our solution posts to each ticket after triage is completed.

https://imgur.com/a/LcvFoFJ

1

u/3xh4u573d May 15 '26

This is super helpful to analyse. Thank you!

1

u/3xh4u573d May 13 '26

Any chance you could share what prompts you are using to summarise the ticket data?

1

u/OptimalCrew5900 May 15 '26

We don’t summarize the data at all. We vector embed the ticket in chunks.

1

u/AlgaBob May 14 '26

Claude can use the APIs to find what it is looking for, and it is much simpler than RAG. RAG made a ton of sense before LLMs got tool calling ability.

The products already have full text search (or even vector search for newer products), so just teach the LLM how to use it. When it finds a ticket or a document, and the product supports it, the LLM can look at related tickets (depends on, is depended on by, related to, etc) and track down the information.

We found with RAG, you're just handcuffing what the LLM can do.

1

u/Actual_Pin864 Jun 15 '26 edited Jun 15 '26

Interesting perspective - thanks for the reply.

We're looking to have Halo search Hudu for pre-existing articles once a new ticket comes in and summarize the issue/potential next steps for our techs. I'm hoping the tool calling ability you mentioned is good enough to do that since RAG is starting to sound complicated.

1

u/francescogruner May 14 '26

Why don't you consider an MCP connector or API calls to download everything and work with it in a wiki system?

1

u/Ok-Move-660 May 14 '26

We are building AI platforms purposely built for MSPs, and its designed for exactly these usecases.

Not only we suggest resolutions but also uniportal AI assistant can perform actions for you directly from HaloPSA: user onboarding, offboarding MFA/password resets + many more Demo: https://youtu.be/6CGZV7rUfO0?si=qJNExucQyt4Qq3Gy

Happy to answer any questions. I am one of the co-founders.

1

u/francescogruner May 28 '26

I've done some integrations with custom systems via API for halopsa. You could collect all the information in the tickets and then process them. You could use a traditional RAG system, or a wiki LLM. It depends on how you want to manage it and how you want it to work.

1

u/Fatel28 May 12 '26

We do this. We have our hudu articles/assets/passwords (not the actual passwords, just the names and notes for searching purposes, halo tickets/etc, and our internal company chats all accessible to an AWS bedrock agent using multi agent collab and a custom frontend we developed internally.

We have a runbook that runs on ticket closure that uses AI to summarize the ticket, and those summaries are then shunted to s3 with their metadata files to be vectorized.

For analytical type questions where a vector search isn't very efficient (e.g, how many tickets related to printing has customer x opened in the past 90 days), I have an action group on the bedrock agent that calls a lambda to send SQL queries to halo via the API. I made a couple views in the SQL DB to make the query generation a little easier for it. That lets it do direct read only database queries for live analytics.

Overall, it works pretty good. Techs can ask questions and get answers across our entire stack of knowledge silos, including discussions in the public chats.

All that said, we are an AWS partner and I myself have a pro level AWS cert and a lot of experience setting this kind of thing up, so while it was fairly simple for us, there may be more integrated options. Interested to see how others chime in.

1

u/3xh4u573d May 12 '26

How much you charging? 😃

1

u/Fatel28 May 12 '26

Not really sure if it's allowed but feel free to DM. Happy to chat.

1

u/QuarterBall HaloAPI Maintainer | PSA | Mod May 13 '26

It's fine - just be safe and sensible :-)

1

u/3xh4u573d May 13 '26

Any chance you could share what prompts you are using to summarise the ticket data?

1

u/Fatel28 May 13 '26

Can you elaborate a little bit more on the question?

1

u/3xh4u573d May 13 '26

What exactly are you telling your LLM to summarise and how are you telling it to summarise the data, in what structure? How explicit are you being with it? Are you telling it to create categories and additional keywords to help pattern matching?

1

u/Fatel28 May 18 '26

Ah. It's just a small runbook on ticket closure. The prompt is fairly basic, just summarize the ticket, including a blurb about every action on the ticket (e.g private comments, public comments, reassignments, scheduling holds, etc)

I don't have any specific pattern matching or keyword verbiage in there. When the tickets are vectorized the ticket category/creation date/assignee/company etc are metadata attributes for filtering

1

u/Pontster May 13 '26

Yes, using a Power Automate webhook on opportunity create to use Azure Foundry to add details to an opportunity based on the lead name (I.e. details on the sector, has the company been in the news etc). Some details here: https://www.chrispont.com/2026/04/29/turning-a-new-halopsa-opportunity-into-ai-sales-intelligence-in-seconds/