from Annette a search crash course,
built around HourHound
Hey Ben, here's the deep dive you asked for

Here's how search actually works, and how to make HourHound win it.

Your site: hourhound.app I looked: 10 July 2026 Age: live about a week What you built: 4 metros, 2,747 venues
01

The quick version

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.

Your foundation
Strong
Static, schema-rich, sitemap already serving. One real gap.
The prize
673k/mo
"happy hour near me" searches, US, low competition.
Can you win it?
Yes
The sites beating you are small local lists, not giants.
02

First, the three letters: SEO, GEO, GBP

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.

SEOSearch Engine Optimization

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.

For you: your city, neighborhood, and venue pages ranking for things like "happy hour denver."
GEOGenerative Engine Optimization

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.

For you: your venue pages already list exact times, prices, and a "verified" stamp. That's exactly what the AIs grab. You're quietly good at this already.
GBPGoogle Business Profile

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.

For you: skip the map-pin stuff. The only piece that matters is helping Google see "HourHound" as a real brand, which your Organization schema already starts.
03

The opportunity map

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.

673,000
"happy hour near me" / "happy hours near me"
Monthly US searches, each. LOW competition  A "near me" query rewards exactly what you have: hundreds of location pages plus real-time 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.

Denver & Front Range Phoenix & Scottsdale Tampa Bay Sarasota

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.

04

Where the demand actually lives

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.

Lowest-friction: finish the states you're in

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.

Biggest raw prize: the heavyweight metros

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.

05

Who ranks today, and why that's good news for you

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.

Denver, page onehappy hour denver

  1. do303.com, a local events site
  2. reddit.com, an r/denverfood thread
  3. denver.eater.com, an editorial list
  4. GoldenBuzz Social, a happy-hour directory
  5. Colorado Bites, a local blog list
  6. cherrycreeknorth.com, a neighborhood site

Scottsdale, page onehappy hour scottsdale

  1. thescottsdaleliving.com, a local guide
  2. kingofhappyhour.com, a happy-hour directory
  3. endsrestaurant.com, a single venue
  4. reddit.com, an r/Scottsdale thread
  5. yelp.com, a generic list
  6. opentable.com, a generic list

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.

06

Your to-do list, with the Claude Code prompt for each

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.

Do first
Your city pages are nearly empty for Google
Open /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.
In Claude Code

"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."

Do
Tell Google (and the AIs) these pages are lists
Your venue pages have lovely 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.
In Claude Code

"Add ItemList (CollectionPage) JSON-LD to each city and neighborhood page, listing each venue as a ListItem with position, name, and url."

Do
Answer the questions people actually type
A short FAQ per city wins long-tail search and is the exact content AI answers quote back word for word. You already have the data to answer these.
In Claude Code

"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."

Nice-to-have
Put a CDN in front of it
Right now it's on a single server with 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.
Just check
A leftover "domain-swap" note in your robots.txt
Your 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.
In Claude Code

"Check whether {old-domain} still serves the HourHound pages. If it does, add a 301 redirect from it to the matching hourhound.app URL."

Stuff you already nailed (genuinely)
  • 2,962 pages statically rendered and a valid sitemap already served
  • Venue pages carry title, description, H1, breadcrumb and FoodEstablishment schema with address
  • Your meta descriptions include the real happy-hour times and prices
  • robots.txt allows every crawler, including the AI bots
  • Homepage has clean WebSite + Organization schema and Open Graph
07

The order to ship it in

Order 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.

1

Ship all three fixes above, before you touch the sitemap

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.

2

Verify in Google Search Console, then submit your sitemap

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:

  1. Go to search.google.com/search-console and sign in with a Google account you'll keep tied to this site long-term.
  2. Click Add property and choose Domain, then enter 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.
  3. Once you're verified, open Sitemaps in the left sidebar, type sitemap-index.xml, and click Submit. That points Google at all 2,962 URLs in one shot.
  4. Then use URL Inspection (the search bar up top) on each of your city landing pages and click Request indexing to push the important ones to the front of the queue.
  5. Give it days to a few weeks. Watch the Pages report (what got indexed) and the Performance report (what you're ranking for) as coverage grows.
In Claude Code

"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."

3

Turn on analytics so you can see visitor one

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:

  • Cloudflare Web Analytics: free, cookieless, no consent banner. The natural pick if you move to Cloudflare from the CDN tip earlier. One script tag and you're done.
  • Plausible: about $9/mo, dead simple, no banner, one script tag. Great if you want clean numbers without the GA4 learning curve.
  • Google Analytics 4: free and the most powerful, but heavier, and you'll need a cookie-consent notice. Best if you want deep funnels down the road.

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.

In Claude Code

"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."

08

How you'd actually make money from this

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.

License the data works now

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.

A per-city newsletter start now

"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.

Featured venue listings needs traffic

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.

Reservation & delivery affiliates needs traffic

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.

Display ads needs 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.

If I were playing this like a trade

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 🐾