{"product_id":"github-pr-reviewer-assignment-by-file-ownership-supabase-slack","title":"GitHub PR Reviewer Assignment by File Ownership (Supabase + Slack)","description":"\u003ch3\u003eAutomatically assign GitHub PR reviewers by file ownership—then notify them in Slack\u003c\/h3\u003e\n\u003cp\u003eThis n8n workflow listens to GitHub pull request webhooks, figures out which files changed, selects the best-fit reviewers from your Supabase roster by file path ownership (and fairness via last-assigned time), requests review in GitHub, and sends a direct message to each reviewer in Slack.\u003c\/p\u003e\n\n\u003ch3\u003eWhat this workflow does\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eReceives GitHub PR webhooks\u003c\/strong\u003e and extracts PR details.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eProcesses only relevant PRs\u003c\/strong\u003e: newly opened, \u003cem\u003enon-draft\u003c\/em\u003e pull requests, and skips PRs created by bot accounts.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eReads changed files\u003c\/strong\u003e via the GitHub API.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eLoads your reviewer roster from Supabase\u003c\/strong\u003e and matches reviewer owned paths against the PR’s changed file paths.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eFilters and prioritizes\u003c\/strong\u003e: excludes the PR author, then selects up to a configured maximum number of reviewers, prioritizing those with the \u003cem\u003eleast recently assigned\u003c\/em\u003e timestamp.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eRequests reviews in GitHub\u003c\/strong\u003e for the selected reviewers.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eNotifies reviewers in Slack\u003c\/strong\u003e with the PR title, author, and link—then updates each reviewer’s last-assigned timestamp in Supabase.\u003c\/li\u003e\n  \u003cli\u003eIf \u003cstrong\u003eno matching reviewers\u003c\/strong\u003e are found, the workflow stops its assignment process and records the “no reviewers” branch internally.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eUse cases\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eRoute reviews to domain experts automatically (e.g., frontend vs. backend folders) using file ownership rules.\u003c\/li\u003e\n  \u003cli\u003eReduce review bottlenecks by spreading assignments fairly based on last-assigned time.\u003c\/li\u003e\n  \u003cli\u003eKeep teams aligned: reviewers get an immediate \u003cstrong\u003eSlack\u003c\/strong\u003e DM when they’re requested on a \u003cstrong\u003eGitHub\u003c\/strong\u003e PR.\u003c\/li\u003e\n  \u003cli\u003eSupport SaaS and internal engineering orgs that need consistent PR triage without manual assignment.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTechnical details\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eGitHub\u003c\/strong\u003e: webhook ingestion (POST to \u003ccode\u003e\/github-pr-webhook\u003c\/code\u003e), GitHub API for PR files and requesting reviewers\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eSupabase\u003c\/strong\u003e: reviewer roster + last-assigned timestamp tracking\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eSlack\u003c\/strong\u003e: direct Slack messages to selected reviewers\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003en8n nodes\/logic mentioned\u003c\/strong\u003e: if, set, code, no op, merge, slack\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eSet your GitHub token (read PR files + request reviewers), repository owner\/name, and connect Supabase and Slack—then let file ownership drive who gets the review.\u003c\/p\u003e","brand":"N8N Commerce","offers":[{"title":"Default Title","offer_id":46244533797043,"sku":"N8N-21154","price":14.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0749\/6279\/6723\/files\/bUR9ODHjpfgC8XIQoL-Jq_3aaHQREd.png?v=1792401115","url":"https:\/\/buyflowscripts.com\/products\/github-pr-reviewer-assignment-by-file-ownership-supabase-slack","provider":"N8N Commerce","version":"1.0","type":"link"}