An overview of the data flow, ranking engine, moderation rules and tech stack that power the cheapest map in Australia.
User submits
No login needed
Validated
Schema + image compress < 500KB
Mod review
Approve / reject
Pinned to map
PostGIS index updated
Ranked & surfaced
Popularity + price score
Every listing has a verifiedAt date. After 90 days the pin shows a yellow 'Verify needed' badge until a user re-confirms or updates the price.
If a listing receives 3+ flags within 30 days, status is bumped back to pending and the pin is hidden from the public map until a moderator reviews it.
Score = (upvotes − downvotes) × log(daysActive) + recency boost. Recomputed nightly into a materialised view per suburb.
Time-bounded promos with a server-side endsAt. Auto-expire job sweeps every 5 minutes; cards switch to a muted state and drop from the feed.
Popularity score (per suburb)
score = (upvotes - downvotes) * log10(max(daysActive, 2))
+ recencyBoost(verifiedAt)
+ (featured ? 5 : 0)
- (flags * 3)
- (price > 12 ? 2 : 0)| Capability | Guest | Member | Moderator | Admin |
|---|---|---|---|---|
| Browse map & vote | ✓ | ✓ | ✓ | ✓ |
| Bookmark spots | ✓ | ✓ | ✓ | ✓ |
| Submit listings | ✓ | ✓ | ✓ | ✓ |
| Comment & post | — | ✓ | ✓ | ✓ |
| Approve / reject | — | — | ✓ | ✓ |
| Feature listings | — | — | — | ✓ |
| CSV bulk import | — | — | — | ✓ |