Sourcing cheap SaaS acquisitions isn't complicated. It's time-consuming. There's a difference. The methodology is repeatable and learnable — what makes it hard is doing it consistently, systematically, across hundreds of candidates to find the few that pass every filter.

Here are the six steps, in order. Skip any of them and you're guessing.

1

GitHub Search Operators: The Entry Point

GitHub's search is the most underutilized acquisition sourcing tool in the indie hacker ecosystem. The search operators let you filter by language, star count, last push date, and topic — combining these gives you a highly targeted set of candidates.

The base query for finding dormant-but-popular projects:

pushed:<2025-01-01 stars:>100 language:JavaScript topic:saas

Breaking this down:

Additional operators worth knowing:

pushed:<2025-01-01 stars:50..500 archived:false license:mit

The archived:false filter removes repos the founder explicitly archived (often a signal they consider it truly dead). The license:mit or license:apache-2.0 filters ensure you're not looking at proprietary code you'd have licensing issues with post-acquisition.

Run 5–8 variations of this query across different languages and topics. You're generating a candidate list — 200 to 500 repos — that you'll filter aggressively in subsequent steps.

2

Commit History: Validating Real Abandonment

Not every repo with a 12-month gap since the last push is abandoned. Some are intentionally feature-complete. Some are in private development. Some have active users but a lazy maintainer. You need to distinguish real abandonment from intentional dormancy.

Real abandonment looks like this in the commit history:

Intentional feature-complete dormancy looks like:

GitHub's API makes the commit history trivial to pull:

GET /repos/{owner}/{repo}/commits?per_page=10

Look at the last 10 commits. If the last feature commit was 14 months ago and the only recent activity is dependabot PRs being ignored, that's real abandonment.

3

Monetization Validation: Separating Revenue from Stars

This is the critical filter. Stars are vanity. Revenue is signal. A 300-star repo with zero monetization is a hobby project. A 90-star repo with $2K MRR is an acquisition.

The monetization signals to check, in priority order:

Stripe in the codebase. Search the repo for stripe — in package.json, in the code itself, in any .env.example files. A Stripe integration means a working payment flow was built. This doesn't guarantee the payment flow is still running, but it means the founder built for revenue.

Gumroad links. Gumroad is the default monetization layer for indie SaaS products. If the README has a Gumroad link, click it. The product page often shows a purchase count in the social proof ("47 people have bought this"). That's real revenue signal. Check the date of the most recent review too — if reviews stopped 18 months ago, revenue probably did too.

GitHub Sponsors button. Check the repo for a FUNDING.yml or Sponsors button. If it's been active 12+ months, some fraction of the community is paying. Floor signal: Sponsors revenue rarely exceeds $500/month. But it proves the audience has a paying segment.

Pricing section in README. Many indie SaaS founders documented their pricing in the README: "This tool offers a hosted version at $X/month." This is a direct revenue indicator — the product was designed to charge. Search the README for words like "plan," "tier," "subscription," "license," "buy," "purchase."

Issue references to paid tiers. Scroll through the last 50 issues. Users of paid tiers tend to file bugs that reference their payment context: "I'm on the Pro plan and I'm seeing..." This is anecdotal but confirms the paid tier existed and had users.

Important: Stars + monetization signals together are enough to justify outreach. They are NOT enough to justify a purchase. You need to verify actual revenue with the founder directly — Stripe dashboard screenshots, Gumroad sales history — before you agree to any price.

4

Fork-to-Star Ratio: Community Health Check

A single viral post can generate 500 stars in 24 hours. Forks are much harder to manufacture — they represent actual intent to use or build on the code. The fork-to-star ratio is your community health metric.

Pull it from the GitHub API:

GET /repos/{owner}/{repo} # Returns stargazers_count and forks_count # Ratio = forks_count / stargazers_count

Interpretation:

The ratio isn't a hard filter — it's a calibration tool. A 0.08 ratio repo with verified $3K MRR is still worth pursuing. A 0.18 ratio repo with zero monetization signals is not.

5

Founder Reachability: Before You Do Any Analysis

This is the step most buyers skip, and it's the step that wastes the most time. Find the founder and confirm reachability before spending 3 hours on deal analysis.

Where to find them:

The outreach message that works:

Subject: [repo name] — interested in acquiring Hi [name], I came across [repo name] on GitHub — I've been exploring tools in the [space] category and yours stood out for [specific reason: the Stripe integration, the fork count, the unique approach to X]. I noticed development has slowed down. I'm interested in potentially acquiring [repo name] to continue development and grow the user base. Would you be open to a brief conversation? No pressure either way — happy to answer questions about my background if that's helpful.

Key principles: specific, brief, no price in the first message, positions you as a steward not a liquidator. Response rates on this template run 35–50% for genuinely abandoned projects. Founders who have moved on are often relieved someone wants to take care of their creation.

6

Pricing Anchors: Arrive Knowing the Market

Most founders who've abandoned their projects don't know what their product is worth on the open market. Some dramatically overestimate (sentimental value). Most underestimate (they just want it off their plate). Arriving anchored to market comps gives you a basis for negotiation that isn't "whatever feels right."

The anchoring sources:

Acquire.com public listings — browse the marketplace for products in the same category and revenue range. This is your ceiling. Products on Acquire.com are listed by motivated sellers with broker support, which means multiples skew high (3–6x ARR). Use these as the upside reference, not the norm.

Microns.io — focused specifically on sub-$50K acquisitions. Closer to your target range. The multiples here tend to run 2–4x ARR, which is a more realistic comp for the GitHub-sourced deals you're pursuing.

MicroAcquire sold listings — historical closed deals are the best comp data. Filter for similar revenue range and product category. Actual transaction prices are more useful than asking prices.

The market rate for sub-$10K SaaS:

Arrive at the first conversation with a number in mind. Don't lead with it — but if the founder asks "how much are you thinking?", you should have a range ready anchored to verifiable comps, not an arbitrary number.

Practical note on verification: The standard for "verified" in this price range is Stripe dashboard screenshot (showing monthly charge volume) or Gumroad sales history export. Any founder asking you to trust them without showing data is a no. Not a "maybe negotiate harder" — a full no. The revenue verification step is non-negotiable at any acquisition price.

The Full Pre-Purchase Checklist

Due Diligence Checklist

  • GitHub: Last push >12 months ago, not archived, stars >50
  • Commit history: Hard stop pattern (feature work → silence), unanswered issues
  • Monetization: At least one signal (Stripe, Gumroad, Sponsors, explicit pricing)
  • Fork-to-star ratio: Calculated and assessed against thresholds
  • Founder: Located and outreach sent before deeper analysis
  • Revenue: Verified via Stripe/Gumroad screenshots directly from founder
  • Codebase: 30-minute review for infrastructure debt and rebuild estimate
  • Customer transferability: Confirmed paying users can be migrated
  • Price: Anchored to Microns.io/Acquire.com comps at 2–3x ARR
  • Domain: Confirmed transferable; SEO profile checked (Ahrefs/Semrush)

The Time Problem

If you do this manually — run the GitHub queries, check commit history, validate monetization signals, calculate fork ratios, find founders, send outreach — you're looking at 4–6 hours per week to evaluate 5–10 candidates. And most of those candidates will fail at step 3 (no monetization) or step 5 (founder unreachable).

The math: to find 1 viable acquisition candidate per week, you need to evaluate 15–20 repos. At 20–30 minutes each through steps 1–4, that's 5–10 hours of sourcing work before you've even sent an email.

This is why ReviveHQ exists. The AI runs this methodology continuously — GitHub's full event stream, Gumroad marketplace data, ProductHunt trends, verified acquisition listings — and delivers pre-filtered, pre-scored candidates. A repo that passes all six filters gets a 0–100 revival score plus a structured analysis: tech stack, estimated rebuild effort, revenue potential, acquisition price range, reason for abandonment.

You still do the founder outreach and revenue verification yourself. That part requires a human. But the sourcing funnel — finding the 15 candidates worth evaluating — happens automatically.

Skip the Manual Sourcing

ReviveHQ delivers 10–15 pre-scored, pre-filtered deals per week from GitHub, Gumroad, and acquisition marketplaces. Free email preview — no credit card required.

See the Weekly Deal Flow →

One Final Note on Timing

The supply of genuinely cheap, monetized, abandoned SaaS is a function of when products were built and abandoned. The cohort we're working with now — 2021–2024 products abandoned during the post-COVID normalization, the AI transition, and the no-code/low-code wave — is the richest sourcing environment I expect we'll see for this category.

In two years, many of these products will have been acquired, relaunched, or genuinely lost (founders unavailable, infrastructure gone, domain expired). The manual methodology in this guide works today. The question is whether you're running it systematically or sporadically.

Systematic wins. It always does.

← Deal Economics Under $10K All Posts →