Skip to content

GitHub Appreviewer routing · private beta

The right reviewers, for every pull request.

Diff Dispatch reads each pull request, finds the teammates who wrote and reviewed that code, and requests their review in GitHub. A Slack nudge, if you want one, stops the moment they approve.

github.com/acme/platform/pull/482

Release inventory after a failed payment #482

Openmaria wants to merge 3 commits into main from fix/refund-release

maria commented 2 minutes ago

Releases reserved stock when a refund follows a failed payment.

diffdispatch bot requested review from alexmorgan and priyashah

alexmorgan approved these changes

  1. Requested
  2. Told why
  3. Approved
Diff DispatchDirect message

Diff DispatchAPP

You were selected to review platform #482: Release inventory after a failed payment.

Why you: You wrote the refund flow this changes.

Approved in GitHub · reminders stopped

Illustrative example · sample data

How it works

From diff to reviewer, in three moves.

Open a pull request as you always have. Diff Dispatch requests the reviewers in GitHub, reminds them in Slack, and tells everyone it asks why it asked them.

  1. Step 1: Reads the change.

    The moment a pull request opens: which files, which lines, what the description says. Nothing to tag, nothing to configure first.

    checkout/refunds.ts+2 −1
    1. 40 export async function cancel(id) {
    2. − await refund(id);
    3. 41+ const r = await refund(id);
    4. 42+ if (r.failed) release(items);
    5. 43 return markRefunded(id);
    inventory/release.ts+1 −0
  2. Step 2: Finds who knows it.

    Who wrote those lines and who reviewed them before, who has room right now, and the rules you set. Code checks every pick before anyone is asked.

    checkout/refunds.ts
    1. alexmorganexport async function cancel(id) {
    2. await refund(id);
    3. return markRefunded(id);

    priyashah approved #402, which added inventory/release.ts

  3. Step 3: Asks, then goes quiet.

    Requested in GitHub, told why in Slack. Reminders arrive in working hours and stop the moment the review lands.

    Diff DispatchDirect message

    Diff DispatchAPP

    You were selected to review #482. Why you: You wrote the refund flow this changes.

    Tomorrow

    Diff DispatchAPP

    #482 is still waiting on your review.

    Approved in GitHub · reminders stopped

Versus CODEOWNERS

A file can’t read a diff.

CODEOWNERS maps folders to teams. It was the best GitHub had in 2017, and with auto-assignment, round-robin or load balance, it still pings whoever is next on the rota, whatever changed.

.github/CODEOWNERS3 rules
  1. *@acme/platform

    Everyone owns everything, so nobody reads it.

  2. /checkout/@acme/payments

    Fourteen people. A rota picks whoever is next.

  3. /inventory/@sam

    Sam left in March. The file didn’t notice.

  1. A typo and a rewrite look the same to it.

    Any edit under /checkout/ asks the same team, whether it fixes a comment or reworks the refund flow. Diff Dispatch reads the lines that changed, and who wrote and reviewed them.

  2. Asking a team is asking nobody.

    A team request is a request for someone, eventually. Round-robin hands it to whoever’s turn it is. Diff Dispatch asks the person who knows the code, and tells them why.

  3. It rots.

    People change teams, take leave, leave the company, and the file keeps paging them. Diff Dispatch works from the repository’s history and who is reviewing right now, so there is nothing to keep up to date.

  4. It can stay.

    Branch protection can keep asking for an owner’s approval. Diff Dispatch picks the person who should actually read the change, and the file goes on guarding the merge button.

What it weighs

Every pick comes with a reason.

A model reads the pull request and picks from evidence that code gathers about the changed lines. Code checks every pick before anyone is asked, and each reviewer hears why in Slack.

  1. Wrote it

    Who wrote the changed lines

    Read from a mirror of the repository's history, line by line, not from a file's last committer.

  2. Reviewed it

    Who reviewed that code before

    The pull requests that brought the changed lines in, and who approved or requested changes on them.

  3. Has room

    Who has room right now

    Each eligible reviewer's load, judged against their own pace and the repository's other recent reviewers.

  4. Your rules

    What you've decided

    People excluded from reviews, the fallback reviewers you name for a repository, and how many reviewers to ask for.

Pricing

One price. No tiers.

You pay for the people who opened a pull request Diff Dispatch routed that month, and every feature comes with each of them.

Every feature

$12per active author,
per month

  • Every repository
  • Every pull request
  • Slack reminders
  • Shadow mode
  • Your rules and fallback reviewers

A team of 14 where 11 people opened pull requests in October pays $132 for October.

Request access

No billing during the private beta.

  1. Who counts

    Anyone who opened a pull request that Diff Dispatch routed that month. Teammates who only review, people on leave and anyone with a quiet month cost nothing.

  2. Nothing to upgrade to

    Every team gets every feature. There’s no plan to outgrow: a bigger team pays for more authors, not for more of the product.

  3. Try it first

    30 days free, starting in shadow mode, so you see whom it would have asked before it asks anyone.

  4. Yearly, and open source

    Pay for a year and get two months free. Open source projects can use it free; write to us.

Questions

Before you connect.

Another question? Write to us

What is Diff Dispatch?
Diff Dispatch is a GitHub App that assigns code reviewers to pull requests automatically, from who wrote and reviewed the changed lines and who has room, and sends Slack reminders that stop when the review lands. Your teammates review, as they always have; Diff Dispatch only chooses whom to ask, and tells them why.
Who reviews the code, and why are they selected?
Your teammates review in GitHub. Diff Dispatch chooses who to ask, with a model that reads the change and weighs who wrote and reviewed the changed lines, current load, and your organization’s rules. Code checks every pick before anyone is asked.
How do we control who gets asked?
Exclude people from reviews and name fallback reviewers for each repository. Set how many reviewers to request; existing GitHub reviewer requests count toward that target. Start a repository in shadow mode, where routing records its picks but requests nobody, to check them first.
Does it replace CODEOWNERS and GitHub’s auto-assignment?
It can, or it can run beside them. CODEOWNERS maps folders to teams, and GitHub’s auto-assignment hands a team’s request to whoever is next round-robin or has the fewest open reviews. Diff Dispatch picks from the lines that changed, so you can turn auto-assignment off and keep CODEOWNERS, if you like, only to guard the merge button. Reviewers already requested count toward its target.
What connects, and what data is read?
Selected GitHub repositories are required; Slack reminders are optional. Diff Dispatch reads repository contents, commits, pull requests, and reviews, and keeps a mirror of each enabled repository’s history. The diff, who wrote and reviewed the changed code, and reviewers’ activity are sent to our model provider (currently OpenAI). Data policy
Which AI model reads our code, and is it used for training?
Routing is decided by an OpenAI model. Requests are sent with store: false, and OpenAI does not train on API requests; it may keep inputs for up to 30 days for abuse monitoring. Repository content is treated as untrusted input: the model has no tools, its answer must fit a strict schema, and code checks it before anyone is requested. Model processing
Does it work with GitHub Enterprise Server, GitLab or Bitbucket?
Not yet. Diff Dispatch is a GitHub App for GitHub.com organizations, and Slack is the only chat it reminds in. If you need GitHub Enterprise Server, GitLab, Bitbucket or Microsoft Teams, write to us and say so; it helps us decide what comes next.
How does the private beta work?
There’s no billing during the private beta. We’re onboarding engineering teams of 10–100 with a guided setup, and we check routing’s first picks on your repositories with you before it requests anyone.

Private beta

Less chasing. More shipping.

For engineering teams of 10–100. A guided setup, shadow mode to check the first picks with us, and no billing during the beta.