BountyPilot
Checks the liveness of GitHub issue and PR links via the GitHub REST API — whether an issue/PR is closed, who is assigned, linked open pull requests, and comment load — to determine if a bounty is still available. Supports an optional GITHUB_TOKEN to raise API rate limits.
Uses NVIDIA Nemotron (nvidia/nemotron-3-super-120b-a12b on Nebius Token Factory) for listing extraction and page-verdict reads: it extracts reward, deadline, eligibility gates and submission path from a listing, with every field required to carry a verbatim quote that is then verified before it can influence a GO / REVIEW / SKIP verdict.
Stores remembered bounties and their statuses (open / closed / claimed / skipped) in Redis so the triage queue survives across sessions, falling back to a local JSON file when Redis is not configured.
Persists the opportunity queue durably across sessions via Upstash Redis REST (UPSTASH_REDIS_REST_URL / _TOKEN), with a configurable key prefix and a local JSON file fallback when no Upstash credentials are supplied.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@BountyPilotTriage this bounty and check if it's still open: https://github.com/expensify/App/issues/12345"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
BountyPilot
Is this bounty worth building, and is it still open? Answers you can check, quote by quote.
BountyPilot is an opportunity triage agent for solo developers who hunt bounties and hackathons. Paste a listing and it tells you GO, REVIEW or SKIP, and if the listing has a link it checks the source to see whether the opportunity already closed or someone else took it. Your queue is remembered across sessions.
Built for the Nebius × NVIDIA Global AI Hackathon — Best Apps and Agents track.
Why
Most of the time spent on bounties is not building, it is triage: is it still open, does it need a live interview, do I have to be hired first, is someone already working on it. Summaries and aggregators go stale — the AnySearch bounty list still reads as open while its linked claim sheet shows every project taken, and a $1,500 GitHub bounty looked free until the API showed it was assigned. BountyPilot checks the canonical source and shows its evidence.
Related MCP server: bounty-mcp
How it uses Nebius Token Factory and NVIDIA Nemotron
Listing extraction. Each listing is sent to
nvidia/nemotron-3-super-120b-a12bon Nebius Token Factory (OpenAI-compatible/v1/chat/completions,response_format: json_schema). Nemotron returns reward, deadline, live-interview gate, pre-hire gate, unpaid wording, submission path and eligibility — and each field must carry a quote copied from the listing.Every quote is verified.
src/extractor.jschecks that each quote appears verbatim in the listing (case and whitespace normalized). Fields whose quote is not found are discarded and reported in the card ("2 unquoted fields discarded"). Nemotron cannot invent a fact into a verdict.The rules stay the guardrail. A rule engine (
src/analyzer.js) runs on every listing. A verified Nemotron field may add a blocker or fill a missing reward/deadline, but it can never clear a blocker the rules found. Example: the rules do not know that "Finalists present their project on a video call with the judges" is a live gate; Nemotron finds and quotes it, and the verdict becomes SKIP with that sentence in the reply.Page verdicts. When a listing page has neither "closed" nor "open" wording the rules can match, Nemotron reads the page and must again quote it; an unquoted answer is ignored and the status stays UNKNOWN.
Measured on the live API (2026-10-05): one triage is a single Token Factory call of ~300 prompt and ~1.4k completion tokens (most of them reasoning), about 7 seconds end to end.
How it uses Tavily
check_liveness answers "is it still open?" from the canonical source:
Link | Check |
GitHub issue / PR | GitHub REST API: closed, assignees (ignored on Help Wanted issues, where repos like Expensify assign their own staff), linked open pull requests, comment load |
Any other page | Tavily Extract reads the page; rules look for closed / claimed / open wording and quote the sentence; Nemotron is the quoted fallback. Tavily Search looks for related work by title |
Statuses: OPEN, CLOSED, CLAIMED, CONTESTED, UNKNOWN. A page that merely lacks "closed"
wording is UNKNOWN, not OPEN. During triage, a listing whose link is CLOSED or CLAIMED is
filed as skipped automatically.
Architecture
browser (public/) ──/api/converse──▶ conversation.js ──MCP client (in-memory)──▶ MCP server (src/mcp.js)
external MCP clients ──────────── Streamable HTTP /mcp ─────────────────────────▶ 9 tools
│
┌─────────────────────────────┬──────────────────────────────┬───────────────┴──────┐
▼ ▼ ▼ ▼
extractor.js → Token Factory liveness.js → GitHub API, Tavily analyzer.js (rules) store.js → Redis / file
(Nemotron, JSON schema) (+ Nemotron quoted fallback)The web page is an ordinary MCP client: every answer comes from MCP tool calls, which each turn lists.
MCP tools
analyze_opportunity, save_opportunity, check_liveness, get_opportunity_queue,
compare_opportunities, build_submission_plan, set_opportunity_status, daily_briefing,
next_best_action.
Run locally
Requires Node.js 22+.
npm install
cp .env.example .env # add NEBIUS_API_KEY and TAVILY_API_KEY
npm start # http://127.0.0.1:4310, MCP at /mcpEvery key is optional. Without NEBIUS_API_KEY the app uses the rule engine and the header shows
"Nemotron · off"; without TAVILY_API_KEY only GitHub links are checked.
npm test # 35 tests, no network or keys needed (providers are faked)
npm run smoke # with the server running: real MCP handshake, all 9 tools presentConfiguration
Variable | Default | Purpose |
| — | Nebius Token Factory key |
|
| any Token Factory model id |
| — | Tavily key |
| — | raises the GitHub API rate limit |
| — | durable queue (otherwise a local JSON file) |
|
| Redis key prefix |
| 300 / 150 | per-instance daily budget; past it the app falls back to rules |
| 40 | requests per IP per 10 minutes on |
Honest limits
Liveness can only see what the linked page says. If claim status lives elsewhere (a Google Sheet, a Discord), the answer is
UNKNOWNand says so.Nemotron's answers vary between runs; the quote check means a run can return fewer fields, never invented ones.
Intent routing in the conversation is rule-based on purpose, so every step is explainable.
Origin
BountyPilot started on 2026-09-29 as a rule-based MCP server for the Amazon Alexa+ hackathon
(ShenJun93/bountypilot-amazon-2026). Everything model- and Tavily-related here — Nemotron
extraction with quote verification, check_liveness, the evidence UI, budgets — was built during
this hackathon's submission period. Built with AI coding agents; every change was reviewed and tested.
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Autonomous venture engine for AI agents: discover, build, quote, and track capabilities.
Plan startup directory submissions and verify the links went live, with your own AI agent.
Connect AI assistants to TaskBounty for JavaScript and TypeScript coverage checks, GitHub bug-fix bounties, and agent collaboration. Check repository coverage, discover agents, request quotes, coordinate missions, fund work, submit PRs or deliverables, and track review status. Public discovery tools are available without an API key; account actions require a TaskBounty API key.
Discover verified deep-tech engineering bounties from any AI agent.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables AI agents to interact with GitHub (search repos, read files, issues, PRs), analyze code for quality and issues, and manage tasks with priority sorting.7MIT
- AlicenseAqualityDmaintenanceEnables AI agents to find and query real-time GitHub coding bounties with built-in scam filtering, supporting listing, matching, and detailed bounty retrieval.448 npmApache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables coding agents to scout, rank, and preflight software work before implementation, returning evidence-backed ACT, VERIFY, or SKIP decisions for issues and pull requests.98 npm2MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to evaluate real OSS contribution opportunities by scoring issues on availability, competing PRs, staleness, and maintainer sentiment, including live feasibility checks for any repository.MIT