I built Pulse to sit in the incident flow, not just as another dashboard that shows alerts.
The way it works is pretty simple. A new alert comes in from something like PagerDuty, Sentry, or Datadog. The Express server takes the webhook, pushes the incident into the React dashboard over SSE, and then immediately checks old resolved incidents for similar cases. If it finds something close enough, it surfaces the likely cause, the fix that worked before, the old incident it matched, and a confidence score.
The memory part is what makes it useful. I did not want it storing live incident chatter because that is usually full of wrong guesses. So memory only gets written after an incident is resolved. That means the stored record has the root cause and the resolution.
React/Vite for the frontend, Express on the backend, Firebase for auth and sync, and Hindsight for memory.