Bitlify home

AI Operations Dashboard

Switchboard AI operations dashboard

Switchboard pulls together Slack, Sentry, GitLab, Graylog, and internal wiki data so teams can stop switching between tools and see how errors, code changes, decisions, logs, and action items connect.

LaravelSvelteAIClaude CodeSlackGitlabSentryGraylog

Challenge

My team's work was spread across Slack, Sentry, GitLab, Graylog, and our internal wiki. Answering basic questions like which code change caused an error or what we decided about a bug meant switching between tools for ten minutes.

Approach

I built one app that pulls all of it together and uses Claude to summarize Slack activity, suggest the code changes most likely connected to a Sentry issue, and make the wiki, GitLab work, roadmap, and logs searchable from one place.

Result

The data was always there. Switchboard adds the missing connections, so a Sentry error can lead to its release, likely code change, Slack discussion, and related log message without a manual search across every tool.

I built Switchboard because my team's work was spread across five different tools: Slack, Sentry, GitLab, Graylog, and our internal wiki. Answering even basic questions ("which code change caused this error?", "what did we decide about that bug last Tuesday?") meant switching between tools for ten minutes. So I built the thing I wanted: one app that pulls all of it together and uses Claude to turn the noise into something you can actually read.

The Slack side mirrors the channels we care about and, every morning, Claude reads through yesterday's traffic and writes a digest. It picks out the decisions we made, the action items someone agreed to take on, and any SQL snippets that got shared in passing. Each item links back to the original thread, so you get the gist in 30 seconds and can dive in if you need to.

Sentry is where it gets fun. The app pulls in unresolved issues per release and tries to figure out which code change introduced them. It looks at the error details, the files involved, and the recent merge requests, then asks Claude to score the most likely causes. You confirm or dismiss the suggestion with one click. On top of that, it maps application log messages back to the exact place in the code that created them, so instead of manually searching through a large codebase, you click straight to the relevant spot.

The rest of the app keeps the same theme: a board for GitLab issues and merge requests, a roadmap layered over it, a global search at /go that takes you to anything by name, and a wiki mirror that is searchable instead of being trapped behind GitLab's UI. The whole point is that the data was always there. What was missing was the connections between it. A Sentry error already knows which release shipped it, which code change likely caused it, which Slack thread debated it, and which log message came from it. You stop hunting and start understanding.

Built with Laravel 13, Inertia, and Svelte 5 on the frontend. MySQL and Meilisearch for storage and search. Claude does the summarization and ranking. GitLab, Slack, Sentry, and Graylog APIs provide the data. Tests are written in Pest 4.

Screenshots

Highlights

Claude-written Slack digests with decisions, action items, and SQL snippets

Sentry issue matching against releases, error details, source files, and recent merge requests

Global search across GitLab work, wiki content, users, SQL, and operational context