This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
What I Built
DocScout finds open-source projects whose API docs have gaps you can fix.
As a technical writer, finding a good project to contribute docs to can be exhausting and time-consuming. You open repo after repo and ask the same questions. Does it have an API? Is anyone still maintaining it? Is it worth contributing to? Will they merge a pull request from a stranger? Has someone already started? Phew ๐ฎโ๐จ
I faced this after taking a technical writing course. When it came time to find an open-source project to practice on and add to my portfolio, I searched GitHub for hours. Project after project, search after search, asking myself questions like these, and I still didn't find one. I eventually settled for a closed-source project.
It shouldn't be this hard. And with DocScout, it no longer is.
Every day, DocScout checks new repos for you, asks those questions, and lists the projects that pass. Every pick serves a REST API, is actively maintained, has docs gaps you can fix, and welcomes outside contributions. Each one comes with:
- what needs doing, counted and linked: "19/19 endpoints have no response example";
- why the docs matter and up to three first steps, written by Gemma;
- a warning if someone is already working on it;
- anything that could get your PR rejected: a CLA, a DCO sign-off, an AI-contribution policy.
Who pays, and for what: technical writers building a portfolio, and people moving into docs or DevRel. They pay for time: a day of searching becomes a two-minute read. The top 3 picks are free, and $2 a month unlocks every pick from the last 7 days, refreshed daily.
You can use DocScout three ways:
- the website: nothing to install;
- the command-line tool: free and open source, it runs every day on your own laptop with Gemma running locally;
- a skill for your own AI agent, such as Claude Code.
Demo
Live site: docscout-web.onrender.com
To see the paid side, click See every pick and pay with Stripe's test card 4242 4242 4242 4242, any future date and any CVC. Stripe is in test mode, so nothing is charged.
Code
DocScout
Struggling to find open-source API docs to contribute to? Digging through dozens of GitHub repos for the one project that fits?
DocScout finds projects that serve a REST API, are actively maintained, have documentation gaps you can fix, and are likely to accept your pull request. It checks new projects every day and gives you a short, ranked list, with each gap counted and linked.
Use it on the website, run it yourself once or every day by itself on Linux, or give the skill to your own AI agent.
How it works: code searches GitHub, checks each project's health and measures its docs gaps. Then an open-weight model, Gemma 4, reviews every project that passes. It decides whether the project really has an API worth documenting, checks whether someone is already working on the gap, explains why the docs matter, and suggests where to startโฆ
How I Built It
DocScout splits the work between code and Gemma 4. Code does everything that can be counted or checked. Gemma makes the judgment calls.
| Code | Gemma 4 |
|---|---|
| Searches GitHub: the awesome-selfhosted list, repo searches, and docs issues labeled "help wanted" | Decides whether each candidate is really an app with its own API, not a tool, library or look-alike |
| Checks health: recent pushes, active committers, pull requests merged from outsiders | Writes why the docs matter and the first steps |
| Parses OpenAPI specs and Markdown docs, and counts what each endpoint lacks | Reads open pull requests and issue comments, and decides whether someone is already working on the gap |
| Ranks the picks | Drafts a first message to the maintainers (in the command-line tool) |
Gemma decides what gets listed. Code alone lets through anything that mentions an API: code generators, SDKs, frameworks. On 58 repos I labeled by hand, code alone was right about which ones serve an API 76% of the time. With Gemma 4 31B reviewing every candidate, that rose to 85%, and recall stayed at 90%. Only projects Gemma has reviewed are ever listed. The small e2b that runs on a laptop helps less: 81% precision, and it turns away some real API apps (81% recall). That's one reason the website runs the 31B.
Gemma decides whether a pick is claimed. I started with keyword matching on pull request titles. On real picks, it flagged an offer to fix a licence badge, a change to how a docs site deploys, and an install-guide PR open for 11 months, as if each one meant someone was already on the job. None of them touched the gaps. Gemma reads the descriptions and changed files next to the gap, got all of these right, and explains its call on the card.
Where Gemma runs:
-
Locally: the command-line tool uses
gemma4:e2bthrough Ollama, on my 7.8 GB laptop. Reviews wait until enough memory is free, so the daily run doesn't bog the laptop down. - Hosted: the website uses Gemma 4 31B through Google AI Studio's OpenAI-compatible API. When the 31B is busy, DocScout retries, then switches to Gemma 4 26B.
Guardrails. READMEs and pull requests are written by strangers, so code limits how far Gemma's answers can move anything:
- Gemma only sees projects that already passed the health checks;
- it can raise a project's confidence to 0.8 at most, so a README written to fool it can't push a project to the top;
- untrusted text reaches it fenced off and marked as data;
- when Gemma says someone is already working on a project, it has to name one of the pull requests or comments it was shown; any other answer is ignored;
- everything it writes is escaped before it's shown.
The hosted version:
- Render: a daily cron job runs DocScout and Gemma's reviews, and a web service (Starlette and Jinja2, no JavaScript) serves the site.
- MongoDB Atlas: DocScout's memory. Render's cron jobs start on an empty machine each day, so everything DocScout remembers lives in Atlas collections: every repo it has checked, every gap it found, its runs and where each search left off. Finding the latest result for each repo is an aggregation pipeline, so the queries run in Atlas. Atlas also holds the published picks and the subscriptions.
- Stripe Checkout for the $2 subscription. The paywall is enforced on the server, so the page only ever contains the picks you've paid for.
Measuring it. I compared DocScout three times with an AI agent (Claude Code) given a skill that holds everything DocScout knows. I graded the picks blind, and a separate agent fact-checked every claim. In the latest round, the agent found more projects I'd act on (4 against 1), and more of its statements about the gaps were true (95% against 83%). But it took about 80 minutes and 361,000 tokens for one search, while DocScout took about 20 minutes on Gemma's free tier and runs every day on its own. Each round fed fixes back into DocScout, and the skill is published in the repo for anyone who'd rather use their own agent.
Why Does Open Innovation Matter?
- The free version stays free. Anyone can run DocScout on their own laptop with Gemma, at no cost, and nothing leaves their machine except requests to GitHub. A closed API would need a key and a bill before the first run.
- The paid version stays cheap. Gemma reviews every candidate and checks every pick for claims every day. Because the weights are open, I can run that wherever it's cheapest: Google's free tier today, another provider or my own machine tomorrow. The $2 price doesn't depend on one vendor's pricing.
- It's built on open work, and it gives back. The best source of candidates is awesome-selfhosted's hand-curated list. Every pick is an open-source project, and every contribution DocScout leads to improves open-source docs. The code, the skill and the comparison data are open too.
Prize Categories
-
Best Use of Gemma: Gemma 4 decides which projects are listed and whether someone is already working on them, and writes the advice on each pick. The command-line tool runs
gemma4:e2blocally; the website runs Gemma 4 31B, with 26B as its fallback. - Best Use of Render: Render is DocScout's AI runtime, with a daily cron job running Gemma's reviews, and it hosts the website. I loved that one Blueprint file set up both.
- Best Use of MongoDB Atlas: Atlas is the hosted version's data layer. DocScout's memory (repos, findings, runs and its search position) lives in Atlas collections, queried with aggregation pipelines, so each day's run picks up where the last one stopped. Atlas also holds the published picks and the subscriptions.

Top comments (0)