oss/match

01  ·  match

Find the issuethat fits you.Then ship it.

OSS Match scores real GitHub issues on six signals against your languages and level, then walks you through the pull request one copy-pasteable command at a time.

See the scoring
5.4k
issues indexed
6
scoring signals
8
guided steps
0
GitHub calls per view

Read-only OAuth. We never ask for write access to your repos.

  • TypeScript
  • JavaScript
  • Python
  • Go
  • Rust
  • OpenJDK
  • C++
  • Ruby
  • PHP
  • Swift
  • Kotlin
  • Dart
  • Elixir
  • Scala
  • Haskell
  • Lua
  • Solidity
  • TypeScript
  • JavaScript
  • Python
  • Go
  • Rust
  • OpenJDK
  • C++
  • Ruby
  • PHP
  • Swift
  • Kotlin
  • Dart
  • Elixir
  • Scala
  • Haskell
  • Lua
  • Solidity
  • React
  • Next.js
  • Vue.js
  • Svelte
  • Angular
  • Node.js
  • Deno
  • Bun
  • Django
  • Flask
  • FastAPI
  • PyTorch
  • TensorFlow
  • Docker
  • Kubernetes
  • Terraform
  • PostgreSQL
  • MongoDB
  • Tailwind CSS
  • Vite
  • React
  • Next.js
  • Vue.js
  • Svelte
  • Angular
  • Node.js
  • Deno
  • Bun
  • Django
  • Flask
  • FastAPI
  • PyTorch
  • TensorFlow
  • Docker
  • Kubernetes
  • Terraform
  • PostgreSQL
  • MongoDB
  • Tailwind CSS
  • Vite

scoring

Six signals. One number you can argue with.

Every factor is normalised to 0–1 and combined with a fixed weight. The weights sum to one, so a card's score reads directly as a percentage, and the breakdown is shown on every card. Nothing is filtered out silently.
26
18
18
15
13
10
  1. Language

    ×0.26

    Exact match to what you write. Adjacent languages get partial credit.

  2. Difficulty

    ×0.18

    Labels mapped to your level. Never a filter, only a reorder.

  3. Repo health

    ×0.18

    A push in the last 30 days beats a dead repo with 40k stars.

  4. Unclaimed

    ×0.15

    Quiet threads rank first. Twenty comments is a queue.

  5. Freshness

    ×0.13

    Opened this week is ideal. Two years old is stale, not hidden.

  6. Welcoming

    ×0.10

    CONTRIBUTING.md and a code of conduct mean they expect you.

what you get

Built for the first pull request, not the fiftieth.

The parts that trip people up are not the code. They are the forty minutes of setup and etiquette around it. Those are handled.
language100
repo health92
freshness100
unclaimed80
difficulty100
welcoming100

Scored, not scraped

Every card carries its six-factor breakdown. If an issue ranks above another, you can see exactly why.

$ git clone$ git checkout -b$ git commit$ git push -u

Copy-paste ready

Clone, branch, commit and PR commands filled in with the repo and issue you picked.

Reads only

The OAuth app asks for read:user and user:email. Nothing that can touch your repos.

Fresh every hour

A background job refreshes the index on a schedule. Your feed never waits on GitHub.

Hacktoberfest aware

Flip one flag and hacktoberfest-labelled issues get indexed faster and badged in the feed.

TypeScriptadvanced · from 41 commits, 3 PRs
Pythonintermediate · from 41 commits, 3 PRs
Gobeginner · from 41 commits, 3 PRs

A skill graph from your real commits

Not what you tick in a form. Your public repos, commit history and merged PRs, read and rated per language, so the ranking reflects what you have actually shipped.

tm

ask @tentoumushii

22 comments in 60 days, active today, welcomes first-timers

ranked from real activity · not the repo owner

The best person to ask, per issue

Who is answering on that repo right now, from the last 60 days of comments and reviews. Often not the owner. Named on the card, so you never post into a void.

A Deep Dive into the repo before you clone it

The whole codebase as an isometric map, a 3D architecture graph stacked from entry points down to data, and a drawn path from the issue to the files it touches. Every block clickable, every step explained in plain words.

guide

Then it teaches you the rest.

Finding an issue is not what stops first-timers. It is the eight steps after. Save one and you get this checklist filled in with that repo's clone URL, that issue's number, and a branch name you can paste straight into your terminal.
~/excalidraw — first contribution
$
  1. 01

    Fork the repo

    Make your own copy on GitHub.

    Press Fork on github.com/excalidraw/excalidraw
  2. 02

    Clone it locally

    Pull your fork down to your machine.

    $git clone https://github.com/you/excalidraw.git
  3. 03

    Read CONTRIBUTING.md

    Every project has house rules. Skim them first.

    Setup, tests and commit style, pulled from CONTRIBUTING.md
  4. 04

    Create a branch

    Never work on main. Branch per issue.

    $git checkout -b fix/8412-announce-duplicate
  5. 05

    Make your change

    The actual work. Small and focused wins.

    Small diff. Run the tests before you push.
  6. 06

    Commit with a good message

    Explain the why, not just the what.

    $git commit -m "fix: announce duplicate to screen readers"
  7. 07

    Push and open a PR

    Send it, with a description reviewers can act on.

    $git push -u origin fix/8412-announce-duplicate
  8. 08

    Respond to review

    Feedback is normal. Here is how to handle it.

    Push follow-ups to the same branch. Reply to every comment.

05  ·  start

Your first pull request
is already picked out.

what is a pull request?