The problem
The alcohol-free category has grown fast, but reviews for AF drinks are usually just borrowed from the wine and beer playbook: five stars, one average, done. That works fine when everyone rating a product wants the same thing from it. It doesn't work here.
Someone who's sober, someone who's pregnant, someone who's driving home, and someone who's just curious are all rating the same bottle — but they're not judging it against the same bar. A flat average quietly averages away the exact information that makes a review useful.
The approach
Every review on HonestAF is tagged with the reviewer's context: sober, cutting down, pregnant, driver, or curious. Instead of collapsing all of that into one score, ratings are broken down and shown by context — so a drink can be a 4.6 for people who are sober and a 3.2 for people cutting down, and both numbers stay visible.
This context-aware breakdown is the flagship feature of the product — the whole platform is built around surfacing it clearly, on every drink page.
Alongside ratings, each review also answers a second, more direct question: does it taste like the real thing? — a yes / close / no signal that sits independently of the star rating, since "tastes real" and "worth drinking" aren't always the same answer.
Under the hood
A few decisions that shaped how the platform is built:
- Context-aware ratings
- Ratings are aggregated per reviewer context rather than into one number, so the breakdown that makes HonestAF useful is structural, not a UI trick on top of a flat average.
- Denormalised counters
- Average ratings and review counts are stored, not computed on every page load, and kept in sync by model observers whenever a review or vote is created, edited, or removed.
- Swappable search
- Search sits behind an interface rather than being wired directly into the catalogue, so today's straightforward search can be swapped for something like Meilisearch later without touching the rest of the app.
- Admin-curated catalogue
- Anyone can submit a product, but it only becomes searchable once it's been reviewed and approved — keeping the catalogue clean without blocking community contributions.
- SEO built in
- Every drink page ships structured data for products and aggregate ratings, so review scores are eligible to show up directly in search results.
- Consistent image pipeline
- Every image upload — drink photos, avatars, ad creative — is resized and re-encoded to WebP through a single service, so formats and sizes stay consistent across the site.
Getting people to a real answer
New users sign in with Google, but can't post a review, vote, or tip until they've picked a username and a reviewer context. That short onboarding step is what makes the whole rating system work — without it, there'd be nothing to break the ratings down by.
Stack
Laravel 11 · PHP 8.3 · Blade + Alpine.js · Tailwind CSS · MySQL · S3-compatible storage · Google OAuth
Where it's headed
HonestAF is live and growing at honestaf.co. This is the space for the next chapter — traffic, catalogue size, or user milestones — once there are numbers worth putting on the page.