How the Family Hotel Finder works
The Family Hotel Finder is a deterministic scoring engine that runs over a curated static database of roughly 1,044 US family hotels โ the top-scoring subset of our full pool of ~3,300 affiliate-linked, family-vetted properties. Every hotel in that pool has a Family Score (our proprietary 1โ5 rating), a real photo stored on our own infrastructure (never a hotlink to Expedia or a hotel CDN), an AI-generated family review summary, and a working Hotels.com booking link with affiliate tracking pre-computed at build time.
The five questions you tap through map directly onto matching signals we've pre-computed for every hotel. Vibes (beach, waterpark, theme park, big city, mountain and lake, national park, warm winter, small town, all-suite space, resort and luxury) match against a tag array we generate for each hotel using amenity data, geography, price tier, and curated city lists. Ages (toddlers, school-age, teens, whole crew) match against the age recommendations our AI extracted from real guest reviews. Budget maps to price tier ($ through $$$$), and instead of hard-filtering out hotels whose price we don't know, we give them a neutral score so useful properties don't disappear from your results. Must-have amenities match against a 16-slug set (pool, indoor pool, waterpark, beach, breakfast, suites, kitchenette, family rooms, free parking, pets, kids activities, kids club, game room, shuttle, restaurant, kids stay free) using the same predicate logic that powers our top-amenity landing pages. Region narrows to one of eight US clusters or leaves the search wide open.
Once you've answered, the engine runs a weighted sum in your browser โ no server call, no wait โ and returns the top three hotels after a one-per-city diversity filter, plus up to nine additional matches in a collapsible list. Because everything runs client-side against pre-computed data, results appear in under 5 milliseconds and the whole flow works offline once the page has loaded. That's the trick: we did the expensive matching work at build time so the parent on a phone at midnight gets an instant answer.
What each screen and result element means
How the vibe selection screen works
The first screen shows ten photo tiles asking "What kind of trip is this?" โ beach, waterpark, theme park, big city, mountain and lake, national park, warm winter, small town, all-suite space, and resort luxury. You can pick up to three because most family trips are a blend (a warm-winter beach trip with a theme-park day, a mountain-lake small-town road-trip stop). Each tile you select earns matching hotels a large points boost, so the more vibes you pick the more you're rewarding hotels that thread the needle across all of them. Vibe tags are pre-computed per hotel using amenity data, price tier, and curated geography lists โ the beach vibe uses both amenity signals and coastal-city lists, waterpark uses actual amenity data, national-park uses lat/lng within 40 miles of ~30 parks. Skip a vibe you don't care about โ there is no "none" option because vibe is the single strongest matching signal.
How the kids' ages selection screen works
Four large cards let you tell the finder who's traveling: Toddlers and under-5s, School-age kids, Teens, or Whole crew (multi-gen trips with grandparents). It's multi-select because most families have kids of multiple ages, and each selected age adds a matching boost when a hotel is explicitly recommended for that age group. Age recommendations come from our AI review analysis pipeline, which reads guest reviews and flags language like "perfect for toddlers", "my teenager loved", "grandparents had their own suite" โ real signals from real guests, not marketing copy. If none of your ages match a hotel it scores zero on this signal but isn't excluded outright, because the vibe and amenity matches still matter.
How the budget tier selection screen works
Four single-select cards represent the four hotel price tiers: $ Budget (under $150 a night), $$ Moderate ($150โ250), $$$ Upscale ($250โ400), and $$$$ Splurge ($400 and up). We use tiers instead of exact dollar amounts because we don't query live pricing โ the finder is a matcher, not a booking engine. Tapping a tier auto-advances to the next screen. Hotels one tier above or below your pick still show up (with a smaller points boost) because "moderate" and "upscale" bleed into each other by neighborhood and season. Hotels two or more tiers above are hard-filtered out so a $ user never sees a $$$$ splurge. If you'd rather see everything, tap the "Skip โ show me everything" text link and budget is ignored entirely.
How the must-haves amenity selection screen works
Sixteen amenity chips let you flag genuine dealbreakers โ pool, indoor pool, waterpark, beach, breakfast, suites, kitchenette, family rooms, free parking, pet-friendly, kids activities, kids club, game room, shuttle, restaurant, kids stay free. The screen microcopy says "Pick only true dealbreakers" for a reason: every additional must-have narrows the pool and makes it more likely we have to relax a constraint to find you three picks. Zero selections is a perfectly valid answer and often produces the best results. Each matching amenity adds a mid-sized points boost, and if a combination turns out to have fewer than three matches we relax must-haves before we touch any other filter, telling you honestly which constraint was loosened.
How the region selection screen works
The last screen shows eight tiles: Anywhere in the US, West Coast, Mountain West, Southwest, Midwest, South, Florida and Southeast, Northeast, and Hawaii. Single-select, and tapping any tile auto-advances straight to the results. Region is a hard filter โ if you pick Mountain West you will never see a Florida hotel, no matter how well it matches your other criteria. "Anywhere" is an explicit, visually-equal first option; there is no hidden geographic default and we don't use browser geolocation. The state-to-region mapping is defined in code so it's stable across sessions and deep-linkable.
What the result card shows
Each of the three hero picks is a full-width card with the hotel's real hero photo (loaded via next/image from our own storage), the hotel name, city and state, Family Score badge with trend indicator, price-tier glyphs ($, $$, $$$, $$$$), a truncated family review summary (~140 characters), two or three "why it matches" chips, and a full-width orange Book Now button that opens the pre-computed Hotels.com affiliate URL in a new tab. Below the primary Book Now button is a secondary text link to our internal hotel review page for the same property, so you can read the full write-up before booking. Photos always come from our own storage โ we never hotlink hotel CDNs โ which is why every card loads even if a hotel's own image server is down.
What the "why it matches" chips mean
The two or three small chips under each pick's card summary are mechanical โ they show the specific signals that made this hotel score high for your selections. "Waterpark โ" means the hotel matched your waterpark vibe or amenity. "Great for toddlers โ" means the AI review analysis flagged this property as a good toddler stay. "$$ moderate โ" means the price tier matched your budget. Because the chips are derived directly from matched criteria โ never generated as free-form prose โ there is zero hallucination risk. If a chip says a hotel matches your ages, an amenity, or a vibe, it's because our pre-computed data actually contained that match.
What the "Why these?" explanation and relaxation note do
Under the three hero picks is a collapsible details section that explains, in one plain-English paragraph, exactly how the picks were scored. If your combination was narrow enough that the finder had to loosen a constraint to give you three picks, that fact is surfaced honestly here โ for example, "No hotels matched every must-have โ these three match the vibe and ages, and we loosened the amenity filter". The relaxation ladder always runs in the same order: amenities from strict-match to loose-match, then drop budget, then drop amenities entirely, then widen region, then finally show the highest Family Score hotels in your region regardless of criteria. You always see three cards, and you always see exactly what was loosened to get you there.
Honest limitations of this tool
The Family Hotel Finder is intentionally not a booking engine. It does not query live pricing or availability, so the budget question uses price tiers ($ through $$$$) as a proxy โ the actual room rate on your dates could land anywhere within the tier, and the hotel we recommend could be sold out for your specific dates. Once you tap Book Now, the real prices and availability show up on Hotels.com and you can adjust from there. We don't take dates, guest counts, or room preferences because those are all questions Hotels.com asks better than we can, and adding them to the finder would slow it down without improving the matches.
The database is US-only in v1. If you're planning a trip to Mexico, the Caribbean, or Europe, the finder will not help โ that's on the roadmap but not shipped. Even within the US, we ship the top ~1,044 hotels (by Family Score) from our pool of ~3,300 affiliate-linked properties as the static dataset the finder searches. That's a hard budget: the static JSON file is capped in size so the page loads fast on a phone with weak reception, and cutting to the top ~1,044 keeps the file small while still covering essentially every family-hotel query a US traveler is likely to run. If the algorithm can't find three matches in your region, it widens to the whole country before giving up โ you'll always see three picks, and you'll always see what was loosened to find them.
Some of the vibe tags are proxies rather than perfect classifiers. Small-town is derived from city hotel-count under 15 and "not a big city", mountain-and-lake is a curated list of ~30 mountain and lake towns, and national-park is a lat/lng-within-40-miles calculation against ~30 park coordinates. These lists are reviewed by hand but aren't exhaustive, and a genuinely great small-town hotel in a town we haven't tagged that way won't score well on the small-town vibe. Amenity data can also lag hotel renovations โ a hotel that added a waterpark last month won't show up under the waterpark vibe until we rebuild the dataset. We rebuild every few weeks, so the lag is bounded but real.




