DEV Community

Rostyslav
Rostyslav

Posted on

MergeMeter: the ghosts of closed PRs predict which open ones will merge

Hacktoberfest Open-Source AI Challenge: Ghost in the Machine Submission 👻🌼

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine

What I Built

MergeMeter answers one anxious Hacktoberfest question: will this PR get merged?

You paste a public owner/repo. It pulls that repo's last 300 closed pull requests (the ones that lived, and the ghosts that were closed without merging) and hands them to TabPFN, an open-weight tabular foundation model. TabPFN reads that history in context (no training loop) and scores every open PR, or a draft you have not opened yet, with a merge probability and the factors that decide a PR's fate in that repo.

Open PRs show up as 🌼 alive (≥ 70 %), 🕯️ limbo, or 👻 ghost (< 40 %). A second tab ranks which features matter most for that repo. A third lets you describe a draft PR and get its fortune before you open it.

Every Hacktoberfest, thousands of PRs end up as ghosts: closed, unmerged, haunting someone's profile. Most contributors never find out why. Each repo has its own unwritten rules. MergeMeter reads those rules back from history.

Demo

Watch the 75-second demo (MP4).

MergeMeter scoring encode/httpx open PRs

Permutation importance: what decides a PR's fate

Draft PR what-if

There is no live hosted Space. Hugging Face now requires PRO for Gradio/Docker Spaces on free CPU, and this entry stays at budget $0. The app runs locally with python app.py; the repo is also a ready-to-push Hugging Face Docker Space if you have PRO.

Code

GitHub logo RostyslavDzhohola / mergemeter

Will my PR get merged? The ghosts of closed PRs predict open ones, with local open-weight TabPFN. #hf26challenge

title MergeMeter
emoji 👻
colorFrom purple
colorTo yellow
sdk docker
app_port 7860
pinned false
license mit
short_description Ghosts of closed PRs predict which open PRs will merge

👻 MergeMeter: will my PR get merged?

The ghosts of PRs past predict the fate of PRs present.

Give MergeMeter a public GitHub repo. It summons that repo's last 300 closed pull requests (the ones that lived, merged, and the ghosts, closed without merging) and hands them to TabPFN, an open-weight tabular foundation model, as context. TabPFN reads the history in context (no training loop) and scores every open PR, or a draft you haven't opened yet with a merge probability and the factors that decide a PR's fate in that repo.

MergeMeter scoring encode/httpx

  • Run it locally: python app.py (see Run it); the repo is also a ready-to-push Hugging Face Docker Space
  • Video (75 s): docs/mergemeter-demo.mp4
  • Evaluation: EVAL.md: TabPFN vs logistic regression…

Source, EVAL.md, and setup. MIT licensed. The project started and finished on October 26, 2026, inside this challenge's build window.

git clone https://github.com/RostyslavDzhohola/mergemeter.git
cd mergemeter
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python app.py
Enter fullscreen mode Exit fullscreen mode

How I Built It

The open piece is TabPFN v2 running locally on CPU. Features are 18 open-time signals per PR (size, files, tests/docs, maintainer/bot, author history rebuilt inside each split, linked issue, title/body, topic labels). Comments, reviews, and time-to-close are never features. Verdict labels that leak the outcome are dropped.

On 8 real repos (5-fold CV), TabPFN beats logistic regression on 7 of 8: mean ROC-AUC 0.853 vs 0.824. Full table and time-split caveats are in EVAL.md.

Why TabPFN for this shape: 300 rows is too few for gradient boosting to shine and far too few to train a neural net. TabPFN was pre-trained on millions of synthetic tables, so it does Bayesian-style inference on a small table in one forward pass, handles missing values natively, and needs no hyperparameter search per repo.

I used AI coding agents (T3 Code / Claude and Codex) to implement the app, run the eval, and prepare this entry. I directed the idea, reviewed the leakage guards, and own the publish.

Why Does Open Innovation Matter?

The ghost here is literal: a model whose weights you can hold. TabPFN runs inside the process on a CPU. The PR feature table never leaves the machine running MergeMeter (only the GitHub API is called). There is no per-score API bill, and the model is inspectable and swappable.

A closed tabular API would mean shipping contributor history off-box and depending on a service that might disappear or change pricing. Local open weights keep the "séance" private: your draft PR description stays on your laptop until you choose to open the PR.

TabPFN v2 is the open checkpoint the app ships with. Newer TabPFN 2.5+ checkpoints are licence-gated and non-commercial; the README says that plainly.

My Agent Session

Built by AI coding agents orchestrated in T3 Code for me, Ros. Session logs can be shared on request after a privacy review. The public artifacts are the repo, EVAL.md numbers, screenshots, and the demo video.

Prize Categories

Best Use of TabPFN.

Top comments (0)