How the score works
No algorithm mystique. Here is the whole thing.
The question
Everyone who reports answers one question: would you tell a mate to come here right now? The number is the percentage who said yes. It is a share of people, not how full the room is, and not an average of star ratings. A club can be packed and score 30.
People, not reports
The number counts distinct contributors. If the same device reports a venue twice, the newer update replaces the older one rather than counting twice, so nobody can lift a place by reporting it over and over. The older reports are still stored, they just do not get a second vote.
Different facts go stale at different speeds
Whether a room is worth being in holds up for a while: a report's influence halves every 90 minutes and drops out entirely after 6 hours. How busy it is does not hold up nearly as long, so a crowd reading counts as current only for 60 minutes. A door queue goes stale faster still and expires after 30 minutes. Past those windows the reading is not shown as current; it either shows its age or disappears.
These windows are starting choices we are testing during the Ottawa pilot, not scientific thresholds. If they turn out to be wrong we will change them and say so.
When we do not trust our own number
Under 4 people the number is marked low signal. One recent honest update is still useful and we show it, labelled as one person rather than dressed up as a consensus. When people disagree, the card says they disagree instead of averaging it into a single confident-looking figure.
No reports is not a score. A place nobody has reported shows no number at all. It does not mean the room is empty, and we will not imply that it does.
Ranking
The feed is not sorted by the raw percentage. A 100% from two people should not beat an 84% from fifteen, so each score is pulled toward the middle in proportion to how little evidence is behind it, then nudged up if the reports are recent. A tiny unanimous sample is treated as closer to "we do not know yet" than to "best place in the city". There is no machine learning in it. The whole calculation is four lines and we will explain it to any venue that thinks it was treated unfairly.
Nights, not calendar days
A night runs from 5am to 5am, in Ottawa time. A set that starts at half past midnight belongs to the night before, which is what anyone standing in the room would call it. The actual date is always printed next to words like "tonight", so a relative word can never hide which day an event is on.
Events
An event is listed only when someone has checked it against a page that supports that specific event, and every card names that page and the date it was checked. A venue's homepage is not evidence that a particular night runs at a particular time for a particular price. Where we have not checked a price, the card says the price was not checked rather than guessing one.
Gaming it
One device can report a given venue once every 20 minutes and no more than 12 times an hour across the city. Both limits are enforced by the database, not just the app, because the app runs on the attacker's machine.
Reports from venue staff or from us are labelled as such and are kept out of the public percentage entirely. Venues cannot pay to change a score. If promotion ever arrives it will be labelled and it will sit outside the ranking.
What we do not claim
We do not verify that anyone was physically inside a venue. There is no location check and no proof of presence, and a report is one anonymous browser saying something. The cooldowns make casual manipulation tedious; they do not make it impossible.
Confirming and disputing other people's reports is not built yet. The storage for it exists and the score engine knows how to use it, but there is no interface, so at the moment nothing is being confirmed or disputed by anyone.
Your privacy
Reporting needs no account and no email address. Your device holds a random id used only to enforce the cooldown; it is not linked to a name, a phone number or a location history, and we never ask for location permission. Saved places and group votes live in your browser under separate ids that are never joined to your reports.
Reports are deleted after 30 days by a scheduled job in the database. That schedule is part of the migration in the repository, and it is an operator's responsibility to confirm it is running on any given deployment.
Something wrong?
Listing errors go to a form that actually receives them. Send a correction. Crowd updates themselves cannot be edited or deleted by anyone, including us. They age out on their own.