AI PR ReviewerAI PR Reviewer
How it worksContactSign in
Open sourceGitHub App

AI PR Reviewer

Reviews that show up on the pull request, not in another inbox.

AI PR Reviewer watches GitHub, drafts inline comments on added lines, writes a conversation summary, and runs a second-model check before anything is posted. Built by Sudan Khanal — it assists review, it does not replace it.

Sign in with GitHubOpen sample on GitHub

Code on GitHub · LinkedIn. Sample output below — no account required.

  • GitHub App

    OAuth sign-in, installation, webhooks, inline + summary comments.

  • Inngest

    Durable review and sync jobs, retries, and timeouts off the request path.

  • OpenRouter + judge

    One model writes the review; another can reject weak comments before they post.

  • Pinecone

    Optional embeddings so reviews can point at related code in the repo.

How it works

Three steps. The review lands on GitHub.

Step 1

Connect the GitHub App

Install it on the repositories you want reviewed. Webhooks start the job — you do not paste diffs into a chat.

Step 2

Optional: index the repo

Sync embeds nearby files so comments can cite context outside the hunk, not only the changed lines.

Step 3

Open a pull request

A background job drafts inline notes, a second model judges them, then the review posts on GitHub.

Sample output

Same shape as a real GitHub review.

Files shows inline notes on added lines. Conversation is the summary comment. Sign in only when you want this on your own repositories.

dbcalls

246Sudankhanal/Sample-Repo

Posted on GitHub

Inline notes only on added (+) lines — same rule as production.

+import { PrismaClient } from '@prisma/client';
+
+const prisma = new PrismaClient();
+
+// TODO: Optimize this before launching to production
+export async function processUserOrders(userIds: number[]) {
+ const results = [];
+
+ // Flaw 1: N+1 Query Problem (Looping and querying inside async loop)
+ for (const id of userIds) {
+ const user = await prisma.user.findUnique({
+ where: { id: id },
+ });
+

processOrders.ts

Consider initializing PrismaClient outside the function if this will be called frequently to improve performance.

processOrders.ts

This for loop results in N+1 query issue; try to fetch all users in one query before processing their orders.

processOrders.ts

Implement error handling here to ensure that any issues with the external calls are managed properly.

  • Inline comments are filtered to added lines so GitHub does not reject the review.
  • Diff is capped at 100k characters (not tokens). Lockfiles are skipped.
  • A second model judges the review. If the judge is down, the original still posts.

Same review on GitHub: same thread on GitHub.

AI PR Reviewer

Open-source GitHub PR reviewer by Sudan Khanal. Operator of aiprreviewer.com.

Support: sudankhanal246@gmail.com

  • Contact
  • Privacy
  • Terms
  • Source
  • GitHub
  • LinkedIn