Overall Score
AppEritivi Milano is a beautifully designed aperitivo bar discovery platform for Milan that's functionally impressive but technically collapsing under its own weight—it's like a perfectly plated dish served on a burning plate. The site suffers from catastrophic performance issues (35/100 PageSpeed), zero accessibility support, and mysteriously empty content rendering, making this a case study in 'looks good, works terribly.'
The Roast
This website is the Italian equivalent of a stunning aperitivo that tastes like regret. It has gorgeous UI design, a smart filtering system, and an interactive map that would make any bartender jealous—but then it loads at the speed of a drunk uncle ordering his third Negroni. A 24-second LCP, 239ms TBT, and a 0.933 CLS score? That's not a website; that's a performance horror show masquerading as a digital experience. The real kicker? The crawler found ZERO words, ZERO images, and ZERO links, which means your beautiful interface is basically shouting into the void with no actual content. It's all fashion, no substance.
🎯 Start Here
Google PageSpeed Insights
(Real metrics from Google)These scores come directly from Google's PageSpeed API. The AI scores above evaluate broader aspects like copy, trust signals, and conversion.
Core Web Vitals
Accessibility
Performance
SEO
Mobile
Conversion
Trust Signals
Copy & Messaging
Design & UX
Accessibility
Zero ARIA attributes, no skip link, and cards with images but no alt text means this site is completely inaccessible to screen reader users. It's not just bad accessibility; it's digital exclusion.
Issues Found
- 0 ARIA labels/descriptions detected—interactive elements (filters, map, cards) have no accessible names or roles
- Missing skip-to-content link—keyboard users must tab through entire navigation before reaching main content
- Card images have no alt text; even if they loaded, they'd be invisible to assistive tech
Recommendations
-
Add comprehensive ARIA labels to all interactive elements high
Label filter buttons, map controls, card buttons, and modal triggers with aria-label or aria-labelledby attributes.
-
Implement skip navigation link high
Add a visible-on-focus skip link at the top of the page to jump directly to bar listings and bypass header/nav.
-
Add alt text to all card images and icons high
Describe what's in each bar image and use aria-label for icon-only buttons (filters, map controls, favorites).
Performance
This is a disaster on wheels. A 35/100 PageSpeed score with 24-second LCP (target: <2.5s), 239ms TBT, and 0.933 CLS is 'user experience hostile.' The site is likely bloated with unused CSS/JS and images that never optimize.
Issues Found
- Lighthouse reports 'Reduce unused CSS' and 'Reduce unused JavaScript'—likely bundling entire frameworks for simple functionality
- LCP of 24.4 seconds means the main content takes 10x longer to load than acceptable; images or fonts are probably render-blocking
- CLS of 0.933 indicates severe layout shift—content jumping around as resources load, especially problematic for mobile users
Recommendations
-
Code-split and tree-shake bundled JavaScript high
Remove unused code, split bundle by route, and defer non-critical scripts (analytics, ads) to reduce main thread work.
-
Optimize and defer images with next-gen formats high
Convert images to WebP with JPEG fallback, implement lazy loading, and use responsive image sets (srcset) for different viewports.
-
Implement critical CSS inlining high
Inline critical above-the-fold CSS and defer non-critical styles to unblock rendering and improve LCP.
SEO
The crawl detected ZERO words, links, and images—this is either a rendering crisis or the entire content is hidden behind JavaScript that Google can't index. Meta tags look solid on paper, but they're meaningless if the actual content is invisible.
Issues Found
- Critical: Crawler found 0 words of indexable content—likely JavaScript rendering issue preventing content delivery to search engines
- Zero internal/external links detected, meaning no link equity flow and poor crawlability across the site
- Missing structured data (Schema.org LocalBusiness, AggregateOffer) for bar listings—losing rich snippet opportunities
Recommendations
-
Fix server-side rendering or dynamic content issues high
Ensure content renders on the server side or use dynamic rendering to serve pre-rendered HTML to crawlers.
-
Add LocalBusiness schema markup high
Implement schema.org markup for each bar listing including name, address, phone, hours, ratings, and menu to enable rich snippets.
-
Create internal linking strategy medium
Link zone pages to each other, add breadcrumbs, and create contextual links between related bars to improve crawlability.
Mobile
Mobile layout attempts responsive design but fails due to performance collapse and layout shift (0.933 CLS). The mobile screenshot shows a stacked layout that's structurally sound, but it's DOA on actual devices due to load time.
Issues Found
- Massive vertical scroll required to access filters and map—users must scroll past hero, search, map, and cookie banner before seeing bars
- Touch targets for filter tags and map controls appear cramped; no visible hover states to indicate interactivity
- CLS of 0.933 on mobile is catastrophic—content jumping around during load makes interaction impossible
Recommendations
-
Optimize above-the-fold content for mobile high
Move 'Zona 1 / Duomo-Brera' header and search bar above fold; defer map to secondary tab or collapse it initially.
-
Increase touch target sizes for filters and buttons medium
Ensure all interactive elements meet 44x44px minimum (or 48x48px) tap target size, with visible focus states.
-
Reserve fixed space for layout-shifting elements high
Use aspect ratio boxes for images and set fixed heights for cards to prevent layout shift during load.
Conversion
The site has smart filtering and an interactive map that *should* drive discovery, but the lack of clear CTAs, missing 'reserve' or 'call' buttons on cards, and performance collapse kill conversion dead. Users abandon before they can even book.
Issues Found
- No primary CTA on individual bar cards—unclear whether users should click the card, use a button, or navigate elsewhere to reserve/call
- Missing 'distance from me' sorting or 'reserve now' integration; users must manually search external sources to actually visit
- Map lacks click-through functionality or preview info—interactive but not actionable
Recommendations
-
Add prominent 'View Details' or 'Reserve' button to each card high
Include a clear CTA button that leads to detailed bar page with reservation links, full menu, photos, and reviews.
-
Enable 'distance from current location' filtering medium
Allow users to sort by proximity and show walking/transit time; add 'Get Directions' button to increase visit intent.
-
Add map popup/preview on click medium
Clicking a map marker should show a popup with bar name, rating, and 'View Details' CTA rather than just highlighting the marker.
Trust Signals
Star ratings and opening hours are visible on cards, suggesting real user reviews and business data, but there's no explicit verification badges, testimonials, or security indicators. It looks legitimate but feels unverified.
Issues Found
- No verification badges or 'verified by' markers—how do users know these are real bars with real reviews?
- Missing user review counts alongside star ratings—a 4.8 rating means nothing if it's based on 2 reviews
- No 'About Us' or credibility page explaining who curates this data or how bars are verified
Recommendations
-
Display review counts with ratings medium
Show '4.8★ (247 reviews)' instead of just '4.8★' to add credibility and show volume of feedback.
-
Add verification badges for featured or verified bars medium
Mark bars that have been verified by the platform team or have direct integrations with 'Verified Spot' badge.
-
Create a credibility/about page low
Explain how bars are curated, how ratings work, and how often data is updated to build trust with new visitors.
Copy & Messaging
Headlines are clear and benefit-focused ('Scopri i migliori bar per aperitivo'), but the actual value proposition gets buried under technical jargon (filtering options, timestamps, price tiers). The copy assumes users already know what they want rather than educating them.
Issues Found
- No compelling micro-copy explaining how to use filters or navigate the map—users must intuit everything
- Card descriptions are minimal (just address, hours, tags); missing the 'why should I care' narrative
- Cookie consent messaging is overly cautious and legal-heavy, detracting from the experience
Recommendations
-
Add onboarding tooltips for first-time users high
Guide users through key features: 'Filter by vibe,' 'See live availability,' 'Check distance from you' with one-time tooltips.
-
Enhance card copy with 'why visit' hooks medium
Add one sentence under each bar name explaining its unique appeal: 'Best sunset views,' 'Hidden gem for cocktail lovers,' etc.
-
Simplify cookie consent messaging low
Replace legal walls with casual, friendly language: 'We use cookies to remember your favorites and show personalized recommendations.'
Design & UX
The visual design is genuinely excellent—clean card layouts, smart two-column grid, beautiful hero image with Milan's Duomo, and intuitive filter sidebar that actually makes sense. The problem? All that aesthetic polish means nothing when users abandon ship during load time.
Issues Found
- Massive cognitive load from dense filter options (rating, price, bar type, hours, special features) without progressive disclosure
- Card images appear as solid orange placeholders, suggesting broken image loading or missing alt text across all 43+ listings
- No visual hierarchy between primary actions; 'Accetta tutti' cookie button competes with legitimate navigation
Recommendations
-
Implement lazy loading for card images high
Load images only as users scroll into view and use low-quality image placeholders (LQIP) to reduce perceived load time.
-
Collapse advanced filters by default medium
Show only top-level filters (rating, price range, bar type) with 'More filters' toggle to reduce initial cognitive load.
-
Add loading skeletons for card content medium
Display animated skeleton screens while images and card data load to improve perceived performance.
Think you can beat 41/100?
Get your site brutally analyzed by the same AI. 8 scores, a punch list of fixes, 60 seconds.