the rules, in public

Nobody pays to be on this list.

No sponsors, no boosted spots, no favours. Here's exactly how an app gets found, checked and scored — and how yours gets in.

01 Every morning, an agent goes looking for grudges

An agent trawls the last 48 hours of everywhere people announce what they built — Show HN, eight subreddits, brand-new GitHub repos, and once a day a wider pass over Reddit, X, YouTube and the open web. It reads each catch properly: the post, the comments under it, the README, the app's own site. Most of them go back in the water.

02 Two gates. Fail either, you're out

  1. Gate 1
    A grudge, in their own words.Quoted verbatim, linked to where they said it.
  2. Gate 2
    Free, with no strings.No trial, no seat cap, no pricing page hiding anywhere.

03 The spite score

SignalWhat it meansPoints
Grudge is explicit and quotableA verbatim sentence from the builder, with a link+3
Open sourcedThere's a public GitHub repo. That's the whole test — no licence check+2
Vibe codedThe builder said AI helped write it+2
Victim namedThe builder names the tool they refused to pay for+2
Price verifiedThat tool's price was read off a real pricing page+1
Maximum · sorts the list, doesn't rate the app10

A script recomputes it from the fields on each card, so it can't drift or be nudged by hand. The rules are in criteria.md, the maths is thirty lines in score.py, and every card with its sources is in data/apps.json.

Did we
miss you?

The agent only finds people who posted about it. If you built something out of spite and told nobody, this is the part where you tell somebody.

Submit your spiteware →

wrong price or misquoted on a card that's already up? say so, it gets fixed

  1. The linkTo the app, and the repo if there is one.
  2. What it replacesThe tool you refused to pay, and what it wanted per month.
  3. One sentence on whyIn your own words. We quote it verbatim — that's gate one.