Dynamic Segmentation

Dynamic Segmentation

Turning Booking Data into Living Customer Segments (Not Static Labels)

One thing I see a lot in hotel revenue management: our “segments” are often just static labels in the PMS.

Corporate. OTA. Wholesale. Walk‑in.

Useful for reporting, not so useful for understanding real guest behaviour.

So I tried something different: let the data tell me what the real segments are.


What I Did in Simple Terms

I pulled booking‑level data with features that actually matter to revenue decisions:

  • Rate paid
  • Willingness‑to‑pay (a score from my model)
  • Booking window (how early they book)
  • Length of stay
  • Whether they booked a member/loyalty rate

Then I used a clustering algorithm (k‑means) to group similar bookings. Instead of me deciding the segments, the algorithm looks for patterns and says:

“Hey, these bookings behave alike. Let’s put them in the same bucket.”

To determine the number of buckets I need, I used the “elbow method” chart: as I increase the number of clusters, the model continues to improve, but after 5 clusters, the improvement flattens out. That “bend” in the line is my sweet spot → 5 segments.

I also projected the data into 2 dimensions (using PCA) just to visualise it. Each dot is a booking; each colour is a cluster. It’s a nice sanity check that the groups are not randomly mixed but form clear bands.


What the 5 Clusters Look Like

Once the model assigned every booking to a cluster, I profiled each group:

  • Cluster 4
  • Cluster 5
  • Clusters 1–3

The beauty here is that segments are defined by behaviour and value, not by channel code.

Article content

Why I Call This “Dynamic Segmentation”

This is not a one‑time exercise.

Because the model runs on booking data, I can refresh it regularly:

  • New bookings come in
  • Patterns shift (e.g., more members, different lead times)
  • I rerun the clustering, and the segments update themselves

That’s why I see this as a foundation for dynamic segmentation:

  • Segments move with the market instead of being frozen in a setup screen.
  • Pricing rules can be tuned by cluster (different floors, fences, and offers for high‑WTP planners vs last‑minute bargain hunters).
  • Marketing can target loyalty, upsell, and packages based on how each cluster actually behaves, not just “OTA vs direct”.

Over time, this can inform demand forecasting and price-sensitivity modeling per cluster—one step closer to a truly data-driven approach.

Article content

Where I Want to Take This Next

This is just version 1.

Article content

Next steps I’m exploring:

  • Adding more features (purpose of stay, day‑of‑week patterns, room type mix)
  • Linking clusters directly to pricing recommendations
  • Tracking how guests move between clusters over time (for example, from OTA‑heavy to member‑heavy)

If you’re working in hotel revenue, I’d be curious:

  • Are you still using fixed segments only?
  • Have you tried clustering or other ML methods for segmentation?
  • What data points would you add to improve this approach?

Happy to share more details or screenshots in the comments if you’re interested. I created this app to be demoed at my upcoming workshop in Ubud in April 2026.


#HotelRevenueManagement #DataScience #CustomerSegmentation #DynamicPricing #HospitalityTech

To view or add a comment, sign in

More articles by Trisna Widia

Others also viewed

Explore content categories