Dynamic Pricing, Booking Pace, Protection Levels & Overbooking
revenue_optimizerYield management for perishable capacity (hotel rooms, seats, tickets, rentals, slots, covers). From products (capacity, sold, days to the date, price, floor/ceiling) and optional bookings (stay/event date, lead time or booking date, status, class, price, segment), price history (date, price, units), fare classes (fare, demand still to come) and show history it returns: booking pace vs comparable past dates and an additive-pickup forecast with range; the price now maximising expected contribution within a band (demand from pickup x price response); price elasticity by log-log regression with confidence interval, refusing flat-price or demand-driven histories, pooled across products; Littlewood / EMSR-a / EMSR-b protection levels and booking limits with the exact optimal levels and expected revenue vs first-come-first-served; overbooking limit (binomial shows) with the chance of turning anyone away, show rates by segment with Beta-Binomial shrinkage, never for critical clinic types. Recommendations only. Decision cards first. Up to 500 products / 20,000 bookings; larger: revenue_optimizer_get_engine.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | Plan date YYYY-MM-DD (default: latest booking date). | |
| bookings | No | product, stay/event date, booking_date or lead_time, status, cancel date, class, price, segment, units. | |
| capacity | No | Capacity for fare classes without a product row. | |
| currency | No | INR | |
| industry | No | hotel | |
| products | No | One row per product and date: product, capacity, sold, days_out or stay/event date, price; optional price_floor, price_ceiling, unit_cost, segment, show_rate, denied_cost, no_show_fee, critical, elasticity, expected_remaining_demand. | |
| denied_cost | No | Cost of turning one customer away (walk / bump / compensation). | |
| fare_classes | No | product, class, fare, mean_demand, sd_demand (demand still to come); capacity on the row or via `capacity` when no product row. | |
| show_history | No | segment, booked, showed. | |
| price_history | No | product, date, price, units sold. | |
| pace_alert_pct | No | ||
| currency_symbol | No | ||
| max_denied_prob | No | ||
| max_overbook_pct | No | ||
| min_price_points | No | ||
| default_elasticity | No | Only an explicit user assumption; flagged as assumed. | |
| count_cancellations | No | Count cancellations as no-shows (for limits set far ahead). | |
| max_products_listed | No | ||
| allow_price_increase | No | Default true; false for clinics. | |
| max_price_change_pct | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| alerts | No | ||
| status | Yes | 1 = ok, 0 = nothing could be planned | |
| message | No | ||
| summary | No | ||
| metadata | Yes | ||
| products | No | ||
| decisions | Yes | Plain-language cards, priority order. Relay these first. | |
| elasticity | No | ||
| protection | No | ||
| show_rates | No | ||
| assumptions | No | ||
| data_quality_report | No |