DEV Community

Aditya Raj
Aditya Raj

Posted on Edited on

I built a tool that finds unclaimed "good first issues" on GitHub, and helps you finish one

Making your first open-source contribution has two hard parts.

The first is finding an issue. GitHub has a good first issue label, but it's spread across millions of repositories, and a lot of those issues are already taken, stale, or in projects that stopped replying months ago.

The second part is what comes after: you've found an issue, opened the repo, and now you're staring at a codebase you've never seen.

So Deepti Nanda and I built OpenSource Radar to help with both.

A short demo: searching beginner issues across GitHub, saving one without signing in, the step-by-step help page, choosing your own AI provider, and sharing a merged pull request

Finding an issue nobody has taken

Right now there are over 320,000 open good first issue issues on GitHub with nobody assigned. Radar searches all of them at once, and lets you narrow them down:

  • by programming language, and by the spoken language the issue is written in
  • to popular, active projects, so you don't land in an abandoned repo
  • by hiding issues that already have someone assigned or a pull request linked

Each card shows the issue number, who opened it and when, the project's stars, and a link to its contributing guide, so you can judge it before clicking through.

You can save issues without signing in. They stay in your browser, and if you sign in with GitHub later, they sync across your devices.

A help page for every issue

Click Get help with this issue and you get a page just for that issue: its details, labels and project info, then six steps:

  1. Understand: is anyone already working on it, and what is it actually asking for?
  2. Plan: try it yourself first, and ask for a hint when you're stuck
  3. Change: make the change yourself on GitHub
  4. Check: get notes on your change before anyone else sees it
  5. Submit: draft the pull request text, then open GitHub's page to send it
  6. After: understand failed checks and review comments, then find your next issue

Hints, not answers

The help page has an optional AI helper, and we made a few deliberate choices about it.

It's read-only. It reads public GitHub data, and never writes code, pushes branches or opens pull requests for you. You make every change yourself. That's better for learning, and better for maintainers, who get pull requests a person actually wrote.

It gives hints, in levels. The first hint is a nudge. You have to ask again for more detail. "Explain this issue" gives a plain-language summary, a difficulty level, and the files worth reading first, but it doesn't write the fix.

It respects project rules. If a repo says it doesn't accept AI-written contributions, the helper won't draft text for it.

Running AI on free plans

Running this for free was an interesting problem. Free AI plans are small. One of ours allows 8,000 tokens a minute, shared by everyone using the site. A few things helped:

  • Smaller requests. We trimmed what each explanation sends. The worst case went from about 7,100 tokens to about 4,400, so more of them fit in a minute.
  • Routing between providers. The server reads each provider's rate-limit headers and skips ones that are about to run out, instead of waiting for them to fail. Cooldowns are shared between servers through Redis.
  • A smaller model for small jobs. Hints and pull request text go to a smaller model first. It has its own rate limit, so the main model's allowance stays free for explanations.
  • Caching. An explanation for an issue is saved and shared, so the second person to ask gets it instantly, at no cost.
  • Retrying once. If everything is busy, the page counts down 20 seconds and tries again by itself (with a "Don't wait" button).
  • Bring your own key. If you have a key for Groq, Gemini, Cerebras, Mistral, OpenRouter or OpenAI, you can use it and skip the shared limits. It stays in your browser and isn't stored on the server.

When your PR is merged

Under My contributions you can see your pull requests, which ones were made with Radar, and turn a merged one into a share card to post.

The stack

React and Vite, deployed on Vercel, with serverless functions for sign-in, saved issues and the helper, and Upstash Redis for storage, caching and rate limits. There are about 650 automated tests, and the code is MIT-licensed.

Try it, and help build it

If you're looking for your first contribution, I'd love to know what's confusing. And if you maintain a project: please tag your beginner-friendly issues good first issue. That's how people find them.


Built by Deepti Nanda and Aditya Raj.

Top comments (0)