Inspiration

We had lots of incidents every day @ cashrewards. I began to notice a pattern to the incidents. But in the heat of a serv1 there is no time to look back through incidents to figure out what caused the issue and how we fixed it. Also this meant only people involved in the incident had the history. Once we started a roster, the person on call had no idea about what could be causing an incident, and how to fix it. I started playing with chatgpt, and was learning about embedding. Wow, vector search could change everything, and prompt engineering could make a stressful situation just a little fun.

What it does

When an issue is marked as an incident, the summary, description, comments, people involved, components involved are all indexed by chatgpt using embedding. When a new incident is created, all previous incidents are searched to see if there are any common problems and what the resolution could be. The previous resolution is shown as a field in the current issue to help quickly zero in on the problem and what was done previously to resolve it. The incident UI will help capture the time taken before being resolved which will feed an SLA dashboard, so that we can get an SLA number for each severity type. The incident UI also ensures we capture the right details such as incident resolution (quick fix) + long term fix

How we built it

I built this app as a standalone lambda function previously. So I applied for this competition to rebuild it as a plugin. I applied for this comp while on holidays, and only once I got back from holidays was able to start work on it. The forge platform was so easy to work with I moved the app logic over in 1 weekend. Including building all the Atlassian custom changes needed to integrate it into jira.

Challenges we ran into

There was a little getting used to the forge command and idiosyncrasies. But overall it was a pretty smooth process with good documentation. Storing data was a bit of a challenge as I really need a vectordb to do this properly, but for now jira is used to store the vectors and the vector search is being done in memory which is not that scalable, and will hit some limitations. There were quite a few "bugs" with the platform, or maybe just a bit of complexity around how to store custom fields, or entity properties to be able to store the required data.

Accomplishments that we're proud of

Incident management is not a nice thing to do. As we build more complex systems, with more moving parts, it becomes increasingly harder to reason about our systems. I am proud of the way this tool encapsulates the incident process in jira and the help it can bring any organisation in the same boat.

What we learned

How easy it is to build a forge app. I have been thinking about building this incident tool for a while, but didn't know where to start. This competition has given me the impetus to start, and to see just how easy it is to build something in the marketplace.

What's next for Incidentify

Build out a vector db I can call externally. So that the query can be more efficient. Automatically triage the incident and auto assign the severity level. Adding in the UI to capture key incident details, so that the quick fix and resolution would be able to be captured properly. I also wanted to add some more functionality around a weekly slack message which summarises all the incidents and calls out people who have made the biggest contributions. I would like to extend this beyond just incidents to all jira tickets, most moved to done, most incidents resolved. Etc. ChatGPT has a great way of being able to come up with unique stories that can really showcase what people have done in a funny light-hearted way. Then it can also be used to drive change in the delivery process. So same concept of weekly message, but maybe even a daily message which nags people to move tickets to done. But in a funny light hearted way.

Built With

Share this project:

Updates

posted an update

UI improvements

I tried to build the UI context panel in Forge UI kit and found there some very retractive limitations. The controls have no support for client side events. So I am stuck with the user always needing to click submit to change the form. I have moved to Incidentify 2.0 that uses Forge UI kit 2 and it still has a lots of limitations to work through, however much closer to useful UI components.

Self reflections

I left this project to the last minute. no doubt about it, building this over a weekend is less that ideal. However, what I learnt is how important it is keep a helicopter view of what you are trying to achieve. As I thought through this solution, many ideas came into my head, and instead of building the core feature first and then following up with things like this UI, I wasted lots of precious time on unimportant things. Or things that could be left until v2. Funny how you get dragged into the weeds and how easy it is to lose sight of the bigger picture. Something to remember in my day-to-day work.

Log in or sign up for Devpost to join the conversation.

posted an update

Some improvements to Vector search

V1 of Incidentify has some limitation in it must bring down all Incidents to do the vector search in memory before using this data with ChatGPT to produce a result. It currently limits the query to the last 30 days, but in reality we might want to query all incidents as this particular incident could only happen once per year (for example). In order to resolve this issue, I needed a way to store the vector as a string so that I could create a JQL query to retrieve a subset of data, which I can then load in memory and do the vector similarity search. This is proving to be a little more difficult that first anticipated. I am trying to use chatGPT and claude.io to help build the algorithms... But them make stuff up. not body has tested this code they given, and inevitably it doesn't work. Claude is definitely making up more stuff, and further from the truth.

Log in or sign up for Devpost to join the conversation.