Multi-signal probe to estimate whether a SaaS has gone quiet.
Find a file
2026-05-05 03:03:22 -04:00
src/quietcheck Initial MVP commit 2026-05-05 03:03:22 -04:00
.gitignore Initial MVP commit 2026-05-05 03:03:22 -04:00
LICENSE Initial MVP commit 2026-05-05 03:03:22 -04:00
pyproject.toml Initial MVP commit 2026-05-05 03:03:22 -04:00
README.md Initial MVP commit 2026-05-05 03:03:22 -04:00
targets.example.txt Initial MVP commit 2026-05-05 03:03:22 -04:00

quietcheck

Multi-signal "is this SaaS dead?" probe. Public data only — no logins, no scraping gated marketplaces.

quietcheck takes a SaaS domain and runs a battery of public probes to estimate whether the company has gone quiet. It returns a per-signal table plus an overall quietness score (0100, higher = quieter).

Signals checked:

Signal Probe
Homepage reachable HTTP GET, follow redirects
SSL expiry ssl.getpeercert() on :443
Last blog post RSS/Atom autodiscovery (<link rel="alternate">) + feed parse
Wayback last snapshot archive.org/wayback/available
Status page activity StatusPage.io / Atlassian patterns + last incident timestamp
WHOIS expiry / updated python-whois (optional — graceful skip)
Crawl-meta freshness <meta property="article:modified_time"> etc.

Each signal contributes 0N points to the quietness score, with severity caps. Output is rendered as a Rich table or JSON.

Why this project

On May 4, 2026 Luis worked through a "dead SaaS rebuild without buying the Acquire listing" strategy (session: Dead SaaS Product Discovery Methods). Concrete signal list from that thread:

domain whois/parking, last blog/changelog, X/LinkedIn inactivity, GitHub commits, abandoned status pages, expired SSL, vanished job postings

quietcheck operationalises that exact list as a CLI you can run against any domain or a targets.txt batch — pairs with oppmine (May 4 cron) which scored pitches; this one triages targets.

Hardware-funding angle: a fast public-data triage tool is concrete consulting leverage — agency clients constantly need to know whether a competitor / acquisition target / partner is still active. Drop-in deliverable for diligence work.

Install

Requires Python 3.10+.

cd ~/Code/daily-mvps/quietcheck-2026-05-05
pip install -e .

Usage

# Single domain — full table
quietcheck rizzle.com

# JSON for piping
quietcheck rizzle.com --json

# Batch from file (one domain per line, # comments ok)
quietcheck --batch targets.txt --json > results.json

# Tune timeouts / parallelism
quietcheck rizzle.com --timeout 8 --concurrency 4

Sample table output:

quietcheck — rizzle.com  [QUIETNESS 72/100]

  Signal              Status     Detail
 ────────────────────────────────────────────────────────────────
  homepage            ALIVE      200 in 412 ms
  ssl                 EXPIRING   12 days remaining
  blog_rss            QUIET      last post 287 days ago
  wayback             FRESH      snapshot 6 days ago
  statuspage          NOT_FOUND  no statuspage.io subdomain
  whois               WARN       expires in 41 days
  meta_modified       QUIET      modified 312 days ago

Score interpretation

Score Reading
025 Active
2650 Slowing
5175 Quiet — investigate
76100 Effectively dead

Limitations

  • Doesn't probe X/LinkedIn (no public API without auth) — TODO: add a separate quietcheck-social companion that takes a handle + cookies.
  • WHOIS is best-effort; many TLDs (.io, .ai) rate-limit hard. Run with --no-whois in batch mode if you hit walls.
  • Status-page detection only covers StatusPage.io patterns (status.<domain>, <domain>.statuspage.io).

License

MIT — see LICENSE.