So I ended up building a small project with a friend to solve that problem for ourselves — a unified activity layer that takes raw Git events and turns them into something consistent and actually useful.
The worst part: webhook chaos If you’ve ever tried to support multiple VCS providers, you already know:
GitHub payloads are clean but deeply nested
GitLab payloads are verbose and inconsistent
Bitbucket payloads… have their own personality
Half the work is just mapping fields, renaming stuff, and dealing with missing attributes.
We built an internal event schema + mappers for each provider, and store everything in MongoDB because the document model handles slight structural differences without complaining.
That one decision saved us months.
Once the data was normalized, cool things became possible We could layer features on top of the unified events:
AI agent trained on repo activity
Automated weekly/monthly summaries (Slack/email)
Real-time commit + PR tracking
Contribution leaderboard
Auto-generated changelogs
A lightweight PR-linked Kanban board
None of this was possible before cleaning the webhook mess.
Why we made it
We were tired of manual reporting, digging through 20 PR tabs, and trying to summarize dev activity by hand every week. So we built something to make that process less painful.
slmslm•21h ago