DEV Community

Twisted-Code'r
Twisted-Code'r

Posted on

I built a GitHub App that auto-writes PR descriptions — here's what happened in 8 days

I hate writing PR descriptions.

Not because I'm lazy — I know what I changed. Articulating it clearly, in a format that helps reviewers, takes 10 extra minutes of context switching. Every. Single. Time.

So I built PRDraft — a GitHub App that reads your diff when you open a PR and posts a structured description automatically. 2-click install, zero config, no CLI.

Here's what 8 days of building looks like from scratch, solo, from Kerala, India.


Day 1–2: Does anyone actually care?

Before writing a single line of code I posted in GitHub Discussions and dropped a question on Dev.to:

"Who actually writes good PR descriptions consistently?"

Got real responses. Two that stuck:

  • "Yes, real pain point especially on fast-moving teams"
  • "I'd trust it if it accurately reflects the diff and I can edit before submitting"

That was enough. Building justified.


Day 3–5: Building the thing

Tech stack I landed on:

  • Next.js (App Router) + Tailwind
  • Supabase (PostgreSQL) for installs and PR event tracking
  • Groq API (llama-3.3-70b-versatile) for AI generation — genuinely free, 14,400 requests/day, works in India
  • Octokit for GitHub App integration
  • Vercel for hosting

Why Groq instead of Claude or Gemini:

  • Anthropic API costs money, no free tier
  • Google Gemini free tier has limit:0 quota for India region — confirmed bug
  • Groq is genuinely free and fast

Total infra cost: $0/month

The core flow:

User opens PR → GitHub sends webhook → verify signature → 
fetch diff → send to Groq → post structured description back to PR
Enter fullscreen mode Exit fullscreen mode

The generated description looks like this:

## What changed
- Added webhook signature verification using Octokit
- Introduced free tier cap logic (5 PRs/month) checked before incrementing

## Why
Prevents unauthorized webhook calls and limits free usage before billing is set up.

## How to test
- Open a PR on a repo where PRDraft is installed
- Check that the description is auto-populated within seconds

## Notes
Free tier cap is checked BEFORE incrementing pr_count to avoid off-by-one errors
Enter fullscreen mode Exit fullscreen mode

Day 5: First external user

roshhellwett installed it, opened a PR, got a description within seconds.

Their feedback: "Works as expected — the structure is solid and actually saves time. Groq is noticeably fast. For complex PRs with scattered changes it can feel a bit generic — but as a starting point to edit from? Definitely useful."

That was the moment this stopped being a side project and started being a product.


Day 6–7: Bug fixes and distribution

Bugs I fixed:

  • Free tier cap was incrementing BEFORE the check — off-by-one error meant users got 6 PRs, not 5
  • account_login was being overwritten as 'unknown' on every PR event — upsert was hitting the wrong fields
  • GitHub retries webhooks every 15s on timeout — PR #15 fired 38 times. Fixed with a unique constraint on (installation_id, pr_number)

Distribution channels I tried:

  • Dev.to — fully open, post live ✅
  • Indie Hackers — post live, daily updates ✅
  • GitHub Marketplace — submitted for review ✅
  • Reddit — karma 3, blocked until Day 9
  • Hacker News — karma -8, commenting daily to recover

Painful lesson: Every platform blocks new accounts. Don't assume channels are open.


Day 7: Dashboard

Built a full dashboard at /dashboard:

  • Plan badge (Free / Pro)
  • PRs used vs cap with a colour-coded progress bar
  • Recent PR activity — repo, PR number, timestamp
  • Upgrade CTA
  • Installation info

GitHub automatically redirects users to the dashboard after install via the Setup URL — no OAuth needed.


Day 8: More dashboard improvements

Shipped today:

  • Recent activity now shows PR titles alongside repo and PR number
  • Every generated PR description now has a dashboard link in the footer — so anyone on the team can check usage without hunting for the URL
  • Free tier cap now posts a comment directly on the PR when the limit is hit, instead of silently doing nothing

The payment provider saga

This is the part nobody talks about.

Building the product took days. Setting up payments is taking longer.

  • Stripe — invite-only in India since 2024
  • Lemon Squeezy — international payments blocked for individuals in India
  • Gumroad — payout setup issues for Indian bank accounts
  • Paddle — working on it

The product is ready to charge. The money pipe is the blocker.


Current numbers (Day 8)

Metric Value
Installs 2
Paid users 0
MRR $0
PRs described 13
Infra cost $0/month

What's next

  • Get payment provider working (Paddle)
  • Invite more beta users
  • Reddit posts unlock ~Day 9
  • HN karma grind back to positive
  • Month 2: first paid conversion push

Try it

2-click install, no config, free for 5 PRs/month:

github.com/apps/prdraft

Landing page: prdraft.carrd.co


Building in public from Kerala, India. Following along on Indie Hackers → search PRDraft.

Top comments (0)