03Take-home assessment2026
GitHub Automation Console
A rule-based bot that triages issues and pull requests with AI
- My part
- Solo
- Status
- Built
- Stack
- Node.js, Express, BullMQ, Redis, Supabase, React, OpenRouter
- Code
- GitHub ↗
Fig. — How data moves through itRead left to right
- 01GitHub eventHMAC-signed webhook
- 02Verify + enqueuereturns 202
- 03BullMQRedis
- 04Idempotency checkunique delivery ID
- 05AI triagecategory + priority(model call)
- 06Rules enginelabels · comments · Slack
01Problem
Repository owners want issues and pull requests labelled, commented on and announced in Slack automatically, without the webhook handler timing out while a model thinks.
02Approach
The webhook handler only verifies the signature, queues the event and returns 202. A background worker does the slow work: AI triage, rule matching, GitHub and Slack calls, and an audit log of every action.
03What I built
- 01Set the scope and architecture, then built it with an AI coding agent and wrote down which parts the AI wrote and which decisions were mine.
- 02Rejected the AI’s first draft, which did everything inside the webhook handler, and moved the work onto a BullMQ queue. A unique delivery ID in Postgres makes GitHub’s retries harmless.
- 03Chose to keep the GitHub token inside a signed JWT so authenticated requests need no database read, and wrote down the trade-off: a revoked token stays valid until it expires.
- 04Tracked down why push events silently failed. GitHub’s delivery history showed 401s, and the cause was a placeholder secret that an earlier AI-written script had registered on the webhook.