Command Palette

Search for a command to run...

Transparency

How Scoring Works

Every score on Launch Sentinel is derived from a documented, reproducible algorithm. This page describes the model exactly as it runs — weights, thresholds, and all known limitations included.

1. Two-Index Model

Each product receives two independent scores that are blended into a composite.

Profile Maturity (0–100)
Static completeness score — how much we know about a product. Derived from launch recency (up to 25 pts), profile richness (up to 20 pts — website, GitHub, Twitter, description), category heat (up to 15 pts), and data confidence (up to 10 pts). Always present; never NULL.
Market Signal (0–100, or NULL)
A weighted basket of independent market-evidence signals. NULL when fewer than 2 signals are present — products with too little data get no market score rather than a misleading number.
Composite (signal_score_v2)
When Market Signal is available: 0.3 × Maturity + 0.7× Market. When Market Signal is NULL (insufficient data), the composite falls back to Profile Maturity only — the product's completeness is its score until enough market evidence accumulates.

The legacy signal_score column (the live-displayed score) uses an older single-index formula. The two-index model runs in shadow mode until a backtest confirms it outperforms the legacy score; then we flip.

2. Normalize Over Present Signals

An absent signal — one where we have no data at all — is excluded from the denominator entirely. It does not contribute a zero that would drag down the average. A "measured zero" is different: if GitHub tracking is active and star growth is flat, that isa real zero and it counts. The distinction prevents a product from being penalized simply because a data source doesn't cover it yet, while still counting genuine evidence of stagnation.

3. Signal Weights

Signals are ordered by how difficult they are to fake. Higher weight = harder to manufacture. The "full credit" threshold is the raw count at which a signal earns its maximum normalized value (1.0); above it, the score is capped.

SignalWeightWhy
funding1.5SEC EDGAR-verified or click-testable source URL required — hardest signal to fabricate
adoption1.4G2 / Capterra review counts + rating from real-user platforms
github1.37-day star delta; requires ≥ 2 snapshots — measured flat is a real zero
externalRank1.2Consensus percentile across multiple third-party ranking lists
hiring1.1Net new job postings in 7 days from ATS snapshots
ship1.0Changelog / release posts in the last 30 days
press0.9Unique press-mention URLs in the last 30 days, domain-matched
hn0.7Hacker News mentions, domain-matched (not name-matched), last 30 days
bluesky0.4Bluesky mentions, domain-matched — weighted between HN and Reddit
reddit0.3Reddit mentions, domain-matched — demoted; easily gamed by founders

4. Sufficiency Gating

A Market Signal score is only computed when at least 2signals are present. Products below this threshold show "not enough info" on the market dimension — never a fabricated number from thin evidence. This is intentional: a score built on one low-weight signal (e.g. one Reddit mention) would be noise, not signal.

minPresentSignals = 2
Market Signal score is NULL when present signal count < 2. Composite falls back to Profile Maturity (always non-null).

5. Sources & Cadence

All mentions are matched by product domain, not name. Name-matching is trivially gamed by founders; domain-matching requires the mention to link to or name the actual product URL.

SourceCadenceNotes
Product HuntDailyLaunch scores, upvotes, maker activity
Hacker NewsDailyMentions domain-matched to product URL
BlueskyDailyMentions domain-matched; anti-gaming same as HN
RedditDailyMentions domain-matched; weight demoted (gameable)
PressDailyTech news crawl — unique URLs per product
GitHubDaily7-day star delta; requires ≥ 2 snapshots in window
SEC EDGAR fundingOn ingestVerified by CIK or click-testable source URL
G2 / Capterra reviewsWeeklyTop-4,000 cohort; review count + rating
Liveness probesDailyHTTP status + DNS check; domain-matched

6. Known Limits

  • Coverage varies by signal. GitHub tracking requires a known repo URL; G2/Capterra only covers the top-4,000 cohort; social mentions depend on domain availability (~12% of products have a verified website URL today).
  • The two-index model (signal_score_v2) runs in shadow mode. The live-displayed score is the legacy single-index formula. We will flip when a backtest validates the two-index model outperforms it.
  • Category heat is editorial (values range 2–15 across 15 categories, e.g. ai-tools = 15, hardware = 2). It affects the legacy signal_score (via the assembleSignalScore formula), the legacy velocity_score, and the v2 Profile Maturity score. It does NOT feed the Market Signal basket — market evidence is independent of category.
  • Funding scores require provenance. Rounds without a SEC CIK or click-testable source URL are excluded from the market signal — this means some real rounds are conservatively excluded until provenance is established.
  • Scores are algorithmic estimates from public data. They are not financial advice and do not reflect private revenue, internal roadmaps, or non-public funding.