Competitor rate & inventory shop
A one-owner shop now runs the same competitor-rate radar a full revenue team would staff.
Pricing well means knowing two things at once: what competitors charge tonight, and how full I already am. A rate-shopping product for the whole portfolio is expensive, and it still would not know my own open rooms. So I built the thing that knows both.
How it works
Two Python scrapers run on an always-on Mac mini. One drives Booking.com with Playwright, shops each market, and pins my hotels into the comp set. The other reads Atomize's daily feed for open rooms and occupancy tonight and tomorrow, and derives on-the-books ADR from booked revenue over booked rooms. Everything lands in a SQLite log.
- Hourly scrape and log via launchd, with a Telegram push every two hours that stays quiet overnight.
- A dashboard joins each competitor rate to my rank versus the field median and my rooms left.
- Weekend intraday runs every 30 minutes, so the board tracks Friday and Saturday repricing.
- Published as a static page behind Cloudflare Access.
It is live. The board refreshes through the day, and a Telegram command (/shop) posts both the rate and inventory tables on demand. Comp sets are seeded per market today, and per-property comp sets are the next fill.
This is the clearest version of the whole bet. One person cannot sit and watch ten markets reprice, but a scheduled agent can, and it turns 'call the market' into a glance. The exceptions I actually act on keep shrinking.