2017 to 2018
Guest services
Guest Services Manager, Front Office
Kimpton Hotel Monaco Philadelphia
Inventory, rates, and labor for a 268-room hotel. Where I learned that a pricing decision which ignores operations gets quietly overridden.
268 rooms
I price perishable inventory and build the systems that sell it. Hotels are where I learned it. The math does not care what the unit is.
Capacity that expires unsold behaves the same way everywhere. A room-night, a driver-hour, an ad impression, a consultant's week, a second of compute: each is worth something until a deadline passes, and nothing after. The discipline is constant. Estimate demand, price against elasticity, decide what to sell forward at a discount and what to hold for the buyer who has not arrived yet, and know what being wrong costs in each direction.
The second half is distribution. Every business reaches demand through several routes at once, each with its own take rate, cancellation behavior, and acquisition cost. Deciding which route earns which inventory at which price is the same problem whether the routes are OTAs and direct, or self-serve and sales-led.
This site is not my resume. It holds the two things a resume cannot: the shape of the path, and working proof that I can build the models I argue from. The record itself is below, and the PDF has the detail.
The arc
Each step added a layer of abstraction without discarding the one underneath.
2017 to 2018
Guest services
Kimpton Hotel Monaco Philadelphia
Inventory, rates, and labor for a 268-room hotel. Where I learned that a pricing decision which ignores operations gets quietly overridden.
268 rooms
2018 to 2019
Hospitality analytics
Kimpton Hotels, Miami
First move from executing rates to setting them. Market share analysis and segment strategy across a multi-hotel market.
Multi-hotel market
2019 to 2021
Corporate scale
Playa Hotels & Resorts
Nineteen all-inclusive resorts across three countries, with reporting that reached board-level reviews.
19 resorts
2021 to 2025
Hospitality technology
Sonder
The pivot. Tech-enabled furnished apartments, date and channel level forecasting, a discounting algorithm running across every market, and budgeting rebuilt on a macro growth model.
1,540 units, $50.9M
2025 to now
Enterprise commercial
Sage Hospitality Group
Channel economics and partner negotiation at portfolio scale, plus a four-person analyst team and enterprise AI moved into their reporting workflow.
65+ hotels, team of 4
The transfer
Airlines invented it after deregulation and hotels adopted it later, so the discipline has already crossed industries once. Hotels are simply where I learned it, and where the feedback loop runs fastest. Three things carry over intact.
Room-nights, driver-hours, ad impressions, seat-months, consultant weeks, compute. Every one is fixed capacity against uncertain demand with a deadline attached, and every one is priced by the same three questions: what is demand, how does it respond to price, and what does an unsold unit cost me.
Self-serve, sales-led, marketplace and partner are OTA, direct, wholesale and GDS in different vocabulary. Take rate is commission. Acquisition cost is acquisition cost. Which route deserves which inventory, at which price, after channel-specific cost, is a question I have answered for a living.
A group block, a wholesale allotment, a committed-use discount, an annual prepay: all of them trade margin for certainty, and all of them are priced by the same displacement risk. The first model on this page is that decision, written out.
How I work
The budget and forecasting toolset my portfolio runs on is mine, automated validation included. So are the three models on this page. I would rather hand someone a model they can disagree with than a slide they can only nod at.
A pricing model is a hypothesis about behavior that has to survive contact with an operations team. I have overridden a bad recommendation on property and defended a good one to an owner. That makes me fast at the part most pricing people find hardest: getting the model trusted by the people who live with it.
I put enterprise AI into the recurring reporting of the four-person analyst team I manage, which bought back the hours they spent producing reports rather than interrogating them. I have not trained production ML models and will not claim otherwise. I am moving from directing analysis to writing it.
Selected numbers
Average YoY increase in one-night-stay business across Sonder's global portfolio, totaling $7.99M in 2024
Revenue across ~1,540 units in 21 buildings as Senior Revenue Manager
Projected 2026 savings from the enterprise Expedia renegotiation at Sage, assuming a 20% decline in use of previously mandatory programs
Recovered in outstanding OTA payments via a portfolio-wide virtual card recovery program
Working model 01 of 03
Sell capacity forward at a discount and you trade margin for certainty. The question is how much the certainty is worth, and it turns on two things: how likely that capacity was to sell anyway, and how much of the commitment the buyer actually consumes.
This is the hotel group block. It is also the wholesale allotment, the committed-use discount, the reserved-capacity contract, and the annual prepay. Same arithmetic, different unit. Units below are deliberately generic: a unit is whatever your business sells once.
Every default here is an illustrative figure for a representative business, not any employer's data. Put your own numbers in.
Per unit of capacity
Only incurred when the unit is used
Chance the unit sells anyway if you hold it
Share of the commitment actually consumed
Marginal cost to serve is above the spot price, so the model caps it at the spot price. A unit that costs more to deliver than it sells for is not a discounting question. Lower the cost or raise the spot price for a coherent answer.
Both series in $ per unit, one scale
40.5%
Past this the commitment is worth less than holding the unit for a spot buyer, at $1.16 per unit. It is a floor on what you can give, not a target.
+15.5 pts
Room left between the discount on the table and the point of indifference. Committed contribution is $1.62 per unit against $1.16 held.
+$5,580,000
Versus holding the same capacity for spot demand, across the committed volume.
Compare one unit sold forward against the same unit held back:
committed = spot price x (1 - discount) - cost x utilization paid whether or not it is used
held for spot = sell-through x (spot price - cost) earns only if it sells
Set them equal and solve:
break-even discount = 1 - [ sell-through x (spot - cost) + cost x utilization ] / spot
This is Littlewood's rule in different clothing. The classic two-class yield result, from 1972, says accept the discounted booking when its price clears the full price times the probability that full-fare demand would have taken the seat anyway. Spot sell-through is that probability here. The marginal cost terms turn it into a contribution comparison rather than a revenue one, and utilization is the piece airline seat inventory does not have, because a seat is either flown or not while a committed unit can go unused and still be paid for. Same decision, wider domain.
Two forces, pulling opposite ways. Sell-through is the cost of saying yes: the tighter your capacity, the more a commitment displaces a buyer who would have paid full price, and the less discount you can afford. Utilization is the benefit of saying yes: unconsumed commitment is revenue without cost, so the more breakage you expect, the deeper you can go. At the defaults, 55% sell-through and 70% utilization support a 40.5% discount. Take sell-through to 90% and it collapses to 16%.
What it does not price. A commitment is worth more than this arithmetic says, and the extra is hard to quantify honestly. Demand certainty lets you plan capacity instead of buying option value. It lowers churn and lengthens the relationship. It can be a beachhead into an account that expands well beyond the committed volume. None of that is in here, which means the break-even figure is a floor on what you should be willing to give, not a target to walk in with.
And what it assumes. One price, one period, one customer, take-or-pay. No overage pricing, no tiering, no ramp, no credit risk, and no competitor who quotes against you the following week. Real commitment deals are negotiations, and this is the number you want in your head before one starts, not the answer you bring out of it.
Working model 02 of 03
The argument I have had most often in my career is whether to hold rate or fill the building. Every business selling finite capacity runs its own version of it: discount to fill the seats, the slots, the licenses, the shift, the rack, or hold price and accept what goes unsold. It is answerable. Assume constant elasticity, cap utilization at a realistic ceiling, and the demand curve tells you which of three regimes you are in. They behave completely differently.
The defaults describe a furnished-apartment portfolio on master leases, because that is where my numbers come from. What decides the answer is not the industry, it is the cost shape: high fixed cost per unit, low variable cost per unit sold. Software seats, compute, and airline seats share that shape. Staffed services and anything with real cost of goods do not. At these defaults the flip sits at $41 of variable cost. Below it the model argues for filling, above it for holding rate.
Every default here is an illustrative figure for a representative business, not any employer's data. Put your own numbers in.
Per unit-night unless noted
% change in demand per 1% change in price
Turnover, supplies, payment fees
Lease and furnishing amortization
Occupancy ceiling is below the occupancy you entered, so the ceiling overrides it and every result is computed at the ceiling. Raise the ceiling or lower current occupancy for a coherent answer.
Both series in $ per unit-night, one scale
$143.56
Fill-constrained
Variable cost is low and demand is elastic, so the optimum is the price that just fills the portfolio. Every additional dollar of rate costs more occupancy than it earns. Price to the ceiling and stop.
96% occupancy
RevPAR $137.81 and contribution $110.93 per unit-night, against $108.23 at today's rate of $165.00 and 79% occupancy. Profit after fixed cost: $32.93.
+$2,369,187
Versus holding the current rate, across the portfolio at 365 unit-nights each.
occupancy(P) = min( occ0 × (P / P0)^e , ceiling ) constant-elasticity demand, capped
RevPAR(P) = P × occupancy(P)
contribution(P) = occupancy(P) × (P − variable cost)
profit(P) = contribution(P) − fixed cost fixed cost shifts the level, never the optimum
Where the answer comes from. Setting the derivative of contribution to zero gives an interior optimum of P* = c × e / (1 + e), which depends only on variable cost and elasticity, not on where you are priced today. With these defaults that lands at $98, well below the price that fills the portfolio, so the ceiling binds first and the answer is fill-constrained: price to the ceiling and stop.
Three regimes, and what decides which one you are in. That interior optimum only exists while demand is elastic. Compare it against the price that fills the portfolio and the answer follows. Below the fill price, the ceiling binds first and you are fill-constrained. Above it, the interior optimum wins and you are margin-constrained: take the rate and accept the empty units. Once elasticity passes −1, contribution rises with price without bound and there is no finite optimum at all, which is the model telling you it has run out of road rather than handing you a number.
What moves you between the first two is contribution margin, not elasticity alone. At these defaults, variable cost is $28 against a fill price near $144, so the interior optimum lands at $98 and the ceiling binds. Push variable cost toward $120 and the interior optimum climbs past the fill price, the regime flips, and the model starts arguing for rate instead. Cheap marginal nights argue for filling. Expensive ones argue for margin. That is the whole trade, and it is why both inputs sit on the same panel.
What this omits, deliberately. Constant elasticity is a local approximation. It is wrong in the tails and should not be trusted far from the observed price. There is no seasonality, no day of week, no competitor response, no length-of-stay mix, and no pacing curve, all of which a production model needs. Fixed cost is shown because it decides whether the unit should exist, not what it should charge.
Why it is still the right first question. Elasticity is the parameter that decides the answer, and it is the one most pricing conversations never estimate. A simple model argued honestly beats a sophisticated one nobody trusts.
Working model 03 of 03
Pricing does not end at the rate. The same unit sold through two routes to market produces two different numbers, and channel arguments usually run on take rate alone, which is one line of five. This resolves gross rate, commission, payment and per-booking fees, acquisition cost inflated by cancellations, and ancillary contribution into one comparable figure.
The rows below are hotel channels because that is where my numbers come from, and the mapping is one to one. Brand.com direct is self-serve. The OTAs are the marketplace, and their commission is a take rate. GDS and corporate is sales-led, with a per-transaction fee on top. Wholesale is the reseller who buys at a net rate and sets its own price. An app store, a payment processor, a distributor, an affiliate network, a reseller partner: each one is a row in this table.
Every default here is an illustrative figure for a representative business, not any employer's data. Put your own numbers in.
All cells editable, per room night unless noted
| Channel | Gross ADR | Comm % | Pay fee % | Bkg fee $ | Mktg CPA $ | Cancel % | ALOS | Ancillary $ | Net / night |
|---|---|---|---|---|---|---|---|---|---|
| Brand.com direct | $234.09 | ||||||||
| Booking.com | $211.32 | ||||||||
| Expedia | $199.30 | ||||||||
| GDS / corporate | $209.76 | ||||||||
| Wholesale / FIT | $183.15 |
Bar length is gross ADR plus ancillary
$82.80
The most you can spend to win one confirmed direct booking before it is worth less than Booking.com at $211.32/night. Bid against attempted bookings and the ceiling is $71.21, because you pay for the ones that cancel too.
$81,768
Annual net contribution gained by moving that share to direct, holding rate and occupancy flat.
commission = ADR × comm%
payment fee = (ADR − commission) × payfee% charged on what you actually collect
booking fee/night = fee / ALOS per-reservation charges spread across the stay
effective CPA = CPA / (1 − cancel%) acquisition is spent per booking made, not per booking honored
net = ADR + ancillary − commission − payment fee − booking fee − acquisition
Not modeled, on purpose. Cancellation here only inflates acquisition cost. It does not price displacement, meaning inventory held for a booking that washes, which is where agency-model channels do their real damage and where an honest number depends on compression and how late the cancel lands. Rate parity spillover and loyalty liability are absent too.
Why it still changes decisions. The ranking reorders once payment fees, per-booking charges, and cancellation-adjusted acquisition sit in one column. The break-even figure turns "we should drive more direct" into a budget a marketing team can be measured against.
Record
Summary only. The resume PDF carries the detail.
Apr 2025 to now
Sage Hospitality Group
65+ hotels
May 2024 to Apr 2025
Sonder USA Inc
Global portfolio
Aug 2023 to May 2024
Sonder USA Inc
$50.9M
Dec 2021 to Aug 2023
Sonder USA Inc
$47.8M
Aug 2019 to Dec 2021
Playa Hotels & Resorts
19 resorts
May 2018 to Aug 2019
Kimpton Hotels
Miami
Jul 2017 to May 2018
Kimpton Hotel Monaco Philadelphia
268 rooms
Stack
Price architecture and rate fencing, discount logic and governance, elasticity and willingness to pay, forward commitments and allotments, forecast and budget model design, margin and deal profitability analysis.
SQL, Snowflake, Tableau, advanced Excel, scenario and sensitivity modeling, executive and board-level reporting.
Currently building: Python past validation and automation, toward pandas and statistical testing.
Channel mix and take-rate economics, partner and vendor negotiation, enterprise MSAs, wholesale and aggregator onboarding, acquisition cost and cancellation economics, reconciliation and recovery programs.
Duetto, IDeaS G3, Sonder RMP, Marriott OneYield, Hilton GRO, Hyatt Prio, IHG Concerto, SynXis CRS, CoStar and STR, Demand360 and Agency360, Lighthouse BI, Opera Cloud, Mews, ProfitSword SHARP, Asana.
Claude, ChatGPT and Gemini in daily professional use. Enterprise AI deployed into a live four-person analyst reporting workflow, cutting manual production time. Member of the AHLA HTNG AI Distribution Task Force, tracking how AI is reshaping demand discovery and channel economics.