Helping users understand base price

The base price is the foundation of every price PriceLabs sets, and the number users understood least. I redesigned the tool that helps hosts choose it: one market-based recommendation, with the reasoning visible and the yearly impact shown before they commit.


Too many choices, no feedback on what a price would do, and a concept (base price) most users didn’t understand.
Mapped new vs returning user journeys, explored four concepts, led user testing, and designed one flow around a single recommendation.
A market-based recommendation for ~80% of users, with transparent reasoning and instant yearly feedback. A later A/B test on how we explain it lifted acceptance by +4.3 points.
Every price PriceLabs sets starts from the base price, and the tool for choosing it offered three answers instead of one.
PriceLabs is a dynamic pricing and revenue management platform for Airbnb, Vrbo and short-term rental owners. Every nightly price starts from one number: the base price, roughly the average rate a listing should charge across the year. Market factors, demand patterns and customizations are applied on top of it.
It also has to reflect the listing itself: a luxury two-bedroom deserves a higher base price than a basic one. Get it wrong and every night of the year is priced from the wrong starting point.
Three competing price suggestions, up to 3× apart, with no guidance on which to trust.
We were solving for perceived choice and for when users make the decision. The old “Let’s set up your base price” modal showed three options side by side, Recommended ($374), Market based ($1,188) and Custom, next to a map and a bar chart.

I mapped who arrives at this decision and in what state, then designed toward a single recommendation people could question.
The same tool serves very different starting points, so I mapped them before designing screens:
Every path ends the same way, accept and refresh, so the decision always closes with a visible result.

To set the right base price, people first have to understand what it is.
Before any screen, I worked out how to explain the concept on paper: prices rise above the base price on busy dates and fall below it on quiet ones, so the base price is the middle, not the ceiling. The sketches also became the do’s and don’ts list that shipped on the education screen.




Four directions explored, from a market-range slider to category cards.
I explored four directions, from a slider on a market range to category cards (Economy / Midscale / Upscale) with a price-sensitivity control.




Explain the concept, show the reasoning, give instant feedback.



One market-based recommendation for ~80% of users, editable when we’re wrong.








Shipping one number was the start. Getting people to trust it took a second round of design, an experiment and a feedback loop.
After launch, a second problem surfaced: the market-driven help tool and the listing-performance recommendation engine were disconnected. Users could see two different “recommended” prices.

The fix was to merge them into one seamless experience: one primary recommendation, with the other signal shown as a calibration nudge rather than a competing number.
Showing the data behind a recommendation lifted acceptance from 55.5% to 59.8%.
These performance-based recommendations appear after a host has set a base price and the engine has watched how the listing books at that price for a while. Users told us the reason they saw was not enough and not clear, so data science restructured the reasons and I designed how they read.
Even with one recommendation, the explanation was generic. We redesigned it to say why in the listing’s own numbers: a one-line summary of how the listing booked against similar properties, then the details on demand (the analysis window, booked nights vs the market, a confidence level, and how overrides were counted).

We ran it as an A/B test (about 10.9k users in the new version, 10.8k in the control) and measured acceptance, booking rate and churn.
Before the test, the treatment group actually accepted less often than control (49.5% vs 51.8%), which makes the reversal more convincing. The lift for mid-sized managers (+2.0 pts) wasn’t statistically significant.
Alongside it, I designed a thumbs up / down with an optional comment on every recommendation. Each response is saved when the user sends it or dismisses the comment box, so a quick thumbs-down is never lost, and every disagreement becomes data the pricing model can learn from. It also gave the data science team a direct read on whether the algorithm was working.

Based on your listing’s performance, suggested price calibration is ▲ 4% ($148).
To A/B test the new algorithm fairly, the old screens needed the new plumbing.
The new algorithm was itself rolled out behind an A/B test, after more research and improvements. That meant the control group stayed on the older “Let’s set up your base price” modal, and it had to support the new inputs too: pasting an Airbnb URL, verifying it, pulling live data, and failing gracefully when scraping didn’t work. I designed those states inside the old UI so the only difference between the groups was the thing we were testing.




Rated 4.1 out of 5 in-product, with honest pushback on what we took away.
An in-product poll ran for three weeks in April 2026, after the merged recommendation went live.
“This cleans things up nicely. I could never understand the difference between market based and recommended.”Host, 3 listings
“Old one wasn’t bad but this is cool, good work team!”Host, 4 listings
The critical comments were just as useful, and they shaped what came next:
Session recordings and onboarding calls showed hosts struggling at the very first step: picking their own listing from a dropdown, often because the listing’s name differs between Airbnb and their PMS. I raised it as a project with the PM, and the data backed it up.
That led to matching listings through their Airbnb URL or ID instead of names: an “Identify your listing on Airbnb” step in mobile onboarding, and adding an Airbnb ID directly from Manage Listings. Drop-off at the listing-matching step fell significantly once hosts could match by Airbnb ID.
Feedback from Nick on our team was that changing a listing’s Airbnb URL was confusing. I split the change into two visible steps, verify listing then refresh market data, with a status tag for each state, and blocked saving parameters until the refresh had run.







A new algorithm and new inputs (Airbnb ID, cleaning fee, PMS markups) don’t live in one modal. Hosts with many listings manage these in bulk, so the same fields had to reach Manage Listings and the CSV upload: new columns, inline “NA” states with a tooltip on how to fill them, and a confirm step that separates rows that will update from rows that won’t, with the reason.

One recommendation, explained well enough that more people accept it, with a loop that keeps improving it.
The full presentation, with the user journey map and prototype link.