You asked me to take a look at HourHound, so I dug in. First thing: you built it right. Static pages, real schema, a sitemap already live. Most people launch with a pile of JavaScript and nothing for Google to read, so you're ahead before we start. Good news, this is the fun kind of review, not a teardown. It's me getting you up to speed on the search side, because you're one small fix and a couple of fun afternoons away from this punching way above its weight.
You're new to this, so let me hand you the whole vocabulary in one shot. There are three games. You're already accidentally good at parts of all three, which is why this is fun and not a slog.
Getting Google's normal blue-link results to show your pages when someone searches. Google reads your raw HTML, the stuff that's there before any JavaScript runs. So anything that only appears after the page's scripts execute is basically invisible to it. Hold that thought, it's the whole ballgame for you.
The new game. Getting quoted by AI answers: ChatGPT, Perplexity, Gemini, Google's AI Overviews. They cite pages that state clean, checkable facts and look freshly updated. That's it. It's less about keywords and more about being the tidiest source of a specific fact.
The map pins with the little info panel (hours, photos, reviews). Honest part: GBP is for a business with a real location. A directory like yours doesn't get a pin, each bar does. So this is the least relevant of the three for HourHound. Don't spend time here yet.
This is live search-demand data I pulled today. The headline number is the "near me" query your site is basically built for: dense local coverage with live open-now status.
Read this number the right way: that's every person on US Google who types "happy hour near me," across all 50 states, not just your four metros. It's the ceiling of the whole category, not the slice you can capture today. The city figures below are the part that's actually addressable now.
Source: DataForSEO, Google Ads search-volume API, US, pulled 10 July 2026. On top of these head terms, every one of your ~2,747 venue pages and each neighborhood page (like "arvada happy hours") captures its own long-tail query. That accumulated long tail is usually bigger than the head terms combined.
Here's the payoff of that 673k number. This ranks explicit "happy hour [city]" demand across the whole US, the clearest signal of which city hub to build next. Your current metros are muted; every gold bar is a market you don't cover yet, and the ones up top dwarf anything you run today.
Florida already has your data pipeline. Orlando, Miami and Fort Lauderdale each out-search your current Tampa hub (2,900 vs 2,400), and Naples adds another 2,400. That's four Florida metros you can stand up with sourcing you already built.
Chicago and New York pull 6,600 each, more than double Denver. Houston, Atlanta and DC sit at 5,400; Austin and Dallas at 4,400; Las Vegas and Nashville, both destination happy-hour towns, at 3,600. Bigger builds and more competition, but that's where the category concentrates.
Ranked on national "happy hour [city]" search volume, DataForSEO, pulled 10 July 2026. Want the literal origin map? I can pull the geographic breakdown of the generic "happy hour near me" searches metro by metro too.
This is the part that should make you optimistic. Page one for "happy hour denver" isn't Google and Yelp locking everyone out. It's small local directories and blog lists. The same species as HourHound, just older.
Why this matters: when a search rewards a well-built directory, whoever has the deepest, freshest, best-structured one wins. You already have the depth (2,747 verified spots) and the freshness (live open-now status). What you're missing is structure on your most valuable pages, which is fix #1 below. That's a good problem: it's the cheap kind.
You live in Claude Code, so I wrote every fix as something you can basically paste and adapt. None of these need a single visitor to be worth doing, and they're all cheap right now: fixing a page template before Google indexes 2,962 pages is a five-minute change, fixing it after is a months-long slog.
/denver/ and view source: it ships a 438KB JavaScript map but only about 70 characters of actual text, no H1, no schema. Remember the "Google reads raw HTML" thing? That page targets "happy hour denver" (2,900/mo), your single most valuable query per city, and to Google it looks nearly blank. Fix it by rendering real content around the map at build time.
"My Astro city pages (e.g. src/pages/[city].astro) render a client-side map and almost no server HTML. Add server-rendered content above the map: an H1 like 'Denver Happy Hours', a two-sentence intro, and a static list of the top ~25 venues (name + link) plus all neighborhood links. Keep the map below it."
FoodEstablishment markup, but city and neighborhood pages carry only a breadcrumb. Add list schema so machines understand each page is a ranked local list, not a random page.
"Add ItemList (CollectionPage) JSON-LD to each city and neighborhood page, listing each venue as a ListItem with position, name, and url."
"Add an FAQPage JSON-LD block plus a matching visible FAQ to each city page, answering: 'What time is happy hour in {city}?', 'Where's the cheapest happy hour in {city}?', 'Which {city} happy hours run latest?' Pull answers from the venue data."
cache-control: no-cache on static pages. Your Astro output is fully static, so it'll cache beautifully at the edge. Move DNS to Cloudflare (free), turn on proxying and caching, and all four metros get faster at once. Low effort, sitewide win. Not urgent, just easy.robots.txt still has a # domain-swap comment, which usually means the domain changed recently. Just confirm the old domain isn't still serving these same pages. If it is, 301-redirect it to hourhound.app so you're not splitting ranking signals across two URLs.
"Check whether {old-domain} still serves the HourHound pages. If it does, add a 301 redirect from it to the matching hourhound.app URL."
FoodEstablishment schema with addressWebSite + Organization schema and Open GraphOrder matters here, and it's the opposite of what feels natural. Get your pages strong first, then invite Google in. Your sitemap is basically an invitation to come crawl everything, and you don't want to send it while your most valuable pages are near-blank. First impressions with Google are sticky, so make the first crawl a good one.
This is the one that matters most, so it's step one. Do all three of the "do" fixes from your to-do list first: real content on the city pages, the list schema, and the FAQ blocks. Only once those are live do you move to step 2. Submitting your sitemap before the city pages have real content just guarantees Google's first look is a pile of empty pages, and that impression lingers.
Search Console is Google's free dashboard for your site: what's indexed, what you rank for, what's broken. Here's the whole flow, start to finish:
hourhound.app. Google hands you a TXT record to add to your DNS. Paste it in at your domain registrar, wait a few minutes, and hit Verify. Domain properties cover every subdomain plus http and https at once, which is cleanest since you control DNS. If DNS feels like a hassle, pick URL prefix instead and verify by dropping the HTML file Google gives you into your Astro public/ folder.sitemap-index.xml, and click Submit. That points Google at all 2,962 URLs in one shot."Add the Google Search Console HTML verification file to my Astro public/ folder." And later: "write a small script that calls the GSC Indexing API to submit my newest venue URLs automatically."
You can't improve what you can't measure, and you want the record starting the day the traffic does. Pick one and move on:
Whichever you pick: create the account, add hourhound.app, drop the one-line script into your Astro base layout <head> so it loads on every page, redeploy, and confirm it logs a hit.
"Add the Cloudflare Web Analytics (or Plausible) snippet to my Astro base layout head so it loads site-wide, and make sure it isn't blocked by my Content-Security-Policy."
You didn't ask me for a business plan, but you built something with real assets, so here are some ideas. I tagged each option for whether it works now (before you have traffic) or later (once visitors show up), because that ordering is most of the game.
You already paid to build the hard part: a verified, structured happy-hour dataset (times, prices, categories) that's genuinely painful to compile. It has value before you have a single visitor. Offer it as an API or a licensed feed to other apps, tourism sites, or POS and loyalty companies. It's your highest-leverage asset because it doesn't depend on your consumer traffic at all.
"The best happy hours in Denver this week." It's a retention engine and a product at the same time. Start collecting emails today, before the big traffic arrives. Once a city list has subscribers, local bars pay to be the sponsored spot, and you own an audience no algorithm can take away from you.
The classic directory model. Bars pay a small monthly fee to sit pinned at the top of their city or neighborhood, add photos and a menu, and wear a "verified partner" badge. "Claim your listing" is the on-ramp. Easy to sell once you can show a bar even modest local traffic, which is exactly what the SEO fixes above produce.
Add OpenTable or Resy "book a table" links and DoorDash or Uber Eats links on venue pages, and earn a cut per booking or order. Low effort to wire up, but it only pays meaningfully once you have real visitor volume.
Once traffic is real, ad networks (start with AdSense, graduate to Mediavine or Raptive at scale) pay per impression. Passive, but it needs volume and can clutter the experience, so treat it as a late tail, not a foundation.
The data license and the newsletter are your asymmetric bets: real value, low dependence on traffic you don't have yet. Featured listings become the reliable revenue once even a trickle of local search traffic shows up, which is exactly what the fixes above turn on. Ads and affiliates are the passive tail, worth flipping on only once the volume is there. So: build the audience with the fixes, sell the data and start the newsletter now, and layer listings and affiliates on as the traffic compounds.
That's the whole map, Ben. None of it's urgent, all of it's the fun kind of work, and you clearly already enjoy this stuff or HourHound wouldn't look this good. Try the city-pages fix first, it's the one that actually moves the needle, and WhatsApp me anytime you want to nerd out about the rest. Genuinely fun to dig into, thanks for sending it my way.
, Annette 🐾