Static demo

Pullmint

AI-assisted pull request analysis shown with canned data, so the public demo costs nothing to run.

lokeshkaki/pullmint #42

Add webhook ingestion and queued analysis

34

Medium risk

Pullmint identifies a mostly safe workflow change with two review risks around webhook validation and retry behavior.

Author
demo-user
Files
18
Additions
+642
Deletions
-121

Analysis timeline

  1. 1

    Webhook received

    GitHub sends a pull_request event. Pullmint verifies the signature before accepting work.

  2. 2

    Analysis queued

    The API records the run and queues a background job so ingestion stays fast.

  3. 3

    Context packed

    Relevant diff, file metadata, and prior findings are compressed into a bounded prompt.

  4. 4

    Findings synthesized

    The worker groups observations into actionable review comments and risk signals.

  5. 5

    Review ready

    The dashboard shows the risk score, findings, and next action without exposing secrets.

Sample findings

Highapps/api/src/routes/webhooks.ts

Webhook signature failure path returns a generic 500

Invalid signatures should produce a clear 401 response and avoid queueing analysis work.

Recommendation: Return 401 before parsing the payload into the job contract, and add a regression test for invalid signatures.

Mediumapps/workers/src/analyze-pr.ts

Retry policy can duplicate review comments

A worker retry after a GitHub API timeout may post duplicate comments if the first request succeeded remotely.

Recommendation: Use a deterministic finding fingerprint and upsert comments instead of blindly creating new ones.

Lowapps/dashboard/src/pages/RunDetail.tsx

Dashboard loading state hides queued progress

The UI waits for completed findings before showing useful status, which makes long analyses look stalled.

Recommendation: Render queued, analyzing, and publishing states from the run timeline.

Architecture

API

Fastify receives webhooks, verifies HMAC signatures, persists runs, and enqueues analysis jobs.

Workers

BullMQ workers run bounded LLM analysis, retry recoverable failures, and write structured findings.

Storage

Postgres stores runs and findings, Redis backs queues, and MinIO stores larger analysis artifacts.

Dashboard

React/Vite presents run status, findings, risk scores, and review history.

Why this demo is static

  • - The public demo is static because a live LLM-backed GitHub App would require secrets, rate limits, and monthly hosting cost.
  • - Fixtures preserve the product story while avoiding fake production claims.
  • - The real architecture remains explainable: API ingestion, queue-backed workers, persistent state, and a dashboard.