How ranking works
Nobody can buy a rank. Three signals become one score. Ratings update immediately. Clicks, impressions, and freshness are recomputed once a day — hourly cron is not available on the current host plan.
score = 0.50 × rating + 0.35 × ctr + 0.15 × freshness
Sort is score descending. Equal scores put verified listings first, then oldest first. Verification never changes the score number.
Ratings — Bayesian average
We never sort by a raw mean. A 5.0 from three people would outrank a 4.6 from three hundred. The prior is 3.5 with the weight of ten votes, then scaled to 0–1. The stars you see are this Bayesian value, not the raw mean. Below ten ratings the stars are muted and there is no bold number — the label says there are not enough ratings yet.
Click-through — Wilson lower bound
One click on two views is not 50%. A 95% Wilson lower bound shrinks small samples, then we cap at a 30% CTR.
Freshness
A linear fade over fourteen days. After that, only people move the row.
Abuse
One tap, reversible. localStorage, an httpOnly cookie, and a daily hash of IP, user-agent, and language. Ten ratings per IP per hour. Twenty ratings on one listing in an hour flags it for review.
Comments do not affect rank
Written comments are content, not a ranking input. Helpful votes do not change rank either. Score still uses only rating, click-through, and freshness.
What verified means
Verified means ownership is confirmed by a code sent to an email on that domain. It proves ownership only. It says nothing about quality, does not change rank, and is free. A moderator tick is not the same thing.