Theodore Roosevelt Presidential Library Labs

TRPL Labs  /  Visitor Experience

Visitor Experience

Lodging Finder

Shows which hotels, cabins, rentals, and campgrounds near a small town are open for a visitor's dates.

Screenshot of Lodging Finder

Try it right here

This loads the live project from its own domain, exactly as a visitor would see it.

What it does

Medora has a short list of places to stay, and they fill. This widget gives every hotel, cabin, vacation rental, and campground nearby its own card — photo, a one-line description, and one button — grouped by whether it is open for the visitor's dates, needs a direct check, or is full. Tabs split Medora, vacation rentals, nearby towns, and Dickinson.

A daily collector checks each source on a rotation that spends lookups where they matter: the next few weeks daily, the rest of the year weekly. Rates are discarded and never shown. Staff get a monitor page with every tracked night against every property, and a log of nights opening up and selling out.

What it can do

  • Open, check-directly, or full status for every night of a stay
  • Dated booking links, so the button opens the right site on the right dates
  • Pluggable sources: hotel search, campground reservations, state parks, Airbnb, Vrbo
  • Staggered re-check schedule with a lighter pace setting
  • Shareable views with ?checkin=, nights, tab, and place
  • Staff monitor grid plus a CSV log of availability changes
  • Shadow-DOM widget that measures the host page's fixed header

Make it your own

Start by forking the repository into your own organization. Everything below assumes you are working in your fork, not this one.

# clone your fork git clone https://github.com/YOUR-ORG/Lodging.git cd Lodging
  1. Fork the repo and replace data/properties.json with your own properties. "public": false hides one.
  2. Choose sources with LODGING_SOURCES and add only the keys they need. Check each booking site's terms and robots rules before turning on a direct source.
  3. Run python collector/collect.py --check to confirm each source, then --limit 3 for a short real run.
  4. Run python collector/photos.py to find a photo address for each property. No images are copied into the repo.
  5. Enable Pages from main, folder /docs, set your CNAME, and give workflows read and write permission.

Stuck on a step? Open an issue on the repository. Questions from people adapting these for their own institution are the most useful feedback we get.