Dynamic Pricing Engine

Demand-responsive pricing rules across rooms, activities, and packages — with group-size tiers, min/max bounds, and real-time booking-flow application.

+18%
— average revenue increase from dynamic rate optimisation
artidal-pricing · rate engine
€189→ €227per night · Shared Dorm · Oct 12-18
base
dynamic rate┄ base rate+20% demand surge detected

The Revenue Left on the Table

Most experience hospitality operators set their prices once per season and leave them untouched. A surf camp in Taghazout publishes a rate card in November, posts it on the website, and runs those rates through March — regardless of whether January is 95% full (and turning away guests at the same price) or February has 40% occupancy (and the empty beds are generating zero revenue). The spreadsheet-based 'pricing strategy' that worked when the camp had 12 beds becomes a revenue leak when it scales to 40 beds across two locations.

Hotels solved this problem decades ago with revenue management systems from companies like IDeaS, Duetto, and Atomize. But those systems are built for room-nights — not for experience packages that bundle accommodation, activities, and services at a composite price where each component has its own supply constraints. When a surf camp raises the price of a 7-night package, it needs to understand whether the constraint is room availability, instructor capacity, or both — and adjust the relevant component rather than bluntly marking up the total.

Artidal's Dynamic Pricing Engine brings yield management to experience hospitality with a rule-based system that understands the composite nature of the product being sold. Pricing rules apply to rooms, activities, packages, and individual package items, with group-size tiers, fixed currency overrides, wholesale versus retail differentiation, and min/max bounds that prevent pricing from exceeding operator-defined thresholds.

Rule-Based Pricing Architecture

The pricing engine operates on a layered rule system. Base rates are set at the room type, activity, or package level. On top of these, operators configure pricing rules that modify the base rate based on conditions: occupancy thresholds (increase price by 15% when occupancy exceeds 80%), advance booking windows (early-bird discount of 10% for bookings made 60+ days ahead), stay duration (7+ nights gets a 5% discount), season (high/shoulder/low multipliers), and day-of-week (weekend surcharges for retreat centres that fill Friday-to-Sunday).

Rules are evaluated in a configurable priority order, and operators choose whether rules stack (multiply) or override. A surf camp might configure: base rate €1,200 for a 7-night package → high-season multiplier of 1.2 (€1,440) → occupancy above 85% adds another 10% (€1,584) → but the max bound is capped at €1,500, so the final price is €1,500. The min bound ensures the price never drops below the cost floor, even when multiple discount rules apply simultaneously.

Group-size tiers add another dimension that's particularly relevant for experience hospitality, where group bookings are common. A retreat centre might offer a per-person rate of €800 for 1-2 guests, €720 for 3-5 guests, €650 for 6-10 guests, and a wholesale rate of €550 for tour operators booking 10+ guests. These tiers apply automatically during the booking flow — the guest sees the price adjust in real time as they change the number of participants.

Fixed Currency Pricing

Dynamic pricing in international markets has a currency complication that domestic operators never encounter. A surf camp in Bali might want to price its packages at €1,200 for European guests, $1,300 for American guests, and AUD 1,900 for Australian guests — not as exchange-rate conversions of a single IDR base price (which would fluctuate daily and confuse returning guests), but as deliberate, market-specific prices set in each currency.

Artidal supports fixed currency prices alongside the dynamic pricing engine. An operator can set explicit prices in EUR, USD, GBP, and AUD, and let the dynamic engine handle everything else by converting from the base currency at the daily exchange rate. When a pricing rule increases the base rate by 15%, the fixed currency prices can be configured to either follow the adjustment proportionally or remain static — depending on whether the operator wants market-specific pricing stability or unified yield management.

This dual approach resolves a persistent tension in multi-currency hospitality: the desire for price consistency in marketing materials (the brochure says €1,200) versus the need for yield optimization based on real-time demand. Operators can anchor their key markets at fixed prices and let the pricing engine optimise for the long tail of currencies.

Wholesale vs Retail Differentiation

Experience hospitality operators frequently work with two distinct sales channels: direct-to-consumer (retail) and through tour operators, travel agents, and OTAs (wholesale). The wholesale channel demands different pricing — typically 15-30% below retail — with different cancellation terms, payment schedules, and commission structures.

The Dynamic Pricing Engine maintains separate rate trees for wholesale and retail channels. A surf camp can set a retail rate of €1,200 and a wholesale rate of €900 for the same 7-night package, with different dynamic pricing rules applied to each channel. The wholesale rate might have narrower min/max bounds (because margins are thinner), no early-bird discounts (the tour operator negotiates annually), and different group-size tiers (since wholesale bookings tend to be larger).

When a booking comes in through the direct booking engine, it receives retail pricing with the full set of consumer-facing dynamic rules. When a tour operator creates a booking through the wholesale portal (or via API), it receives wholesale pricing with channel-specific rules. Both channels share the same availability pool, so overbooking is impossible, and the operator has a unified revenue view across all channels.

Transfer-Specific Tiered Pricing

Airport transfers are a significant ancillary revenue stream for experience hospitality operators, but their pricing is inherently tiered by group size — a private car for 1-2 guests costs differently from a minivan for 3-6 guests or a coach for 7+. Unlike room pricing, where the unit is a room-night, transfer pricing depends on the number of passengers sharing the vehicle.

The pricing engine handles transfer-specific tiered pricing as a distinct pricing model. Operators define vehicle tiers (sedan for 1-3 passengers at €45, minivan for 4-7 at €65, coach for 8-15 at €95), and the booking flow selects the appropriate tier automatically based on the guest count. If a booking changes (guest adds a travel companion), the transfer price recalculates in real time.

This extends to activity-level tiered pricing for any experience with per-group economics: boat trips, private surf lessons, guided hikes, and cooking classes all benefit from pricing that adjusts based on the number of participants. The engine handles the calculation; the guest sees a single, clear price that updates as they modify their booking.

Real-Time Application During Booking Flow

The pricing engine is not a background batch process that updates rates overnight. It evaluates pricing rules in real time during the guest booking flow. When a guest selects a 7-night surf package for 3 people arriving on August 15th, the engine evaluates: base rate for the selected room type → seasonal multiplier for August (high season) → group-size tier for 3 guests → occupancy-based adjustment for the requested dates → early-bird or last-minute rule based on days until arrival → any active promotional discounts — and returns the final price within milliseconds.

This real-time evaluation is visible to the guest. As they change dates (shifting from high season to shoulder season), modify the guest count (triggering a different group tier), or select a different room type (with its own base rate), the price updates instantly. There's no 'request a quote' delay, no need for staff to manually calculate a price, and no risk of an outdated rate card being shown because someone forgot to update the website.

For operators, this means the pricing strategy they configure in the dashboard is the pricing strategy their guests experience. The gap between 'our pricing should work like this' and 'what actually happens on the website' is eliminated. When occupancy hits 85% at the Ericeira location on a Thursday evening, the price for remaining beds adjusts automatically before the Friday morning enquiry rush — without anyone touching a spreadsheet.

How Artidal Differs from Hotel Revenue Management Systems

Traditional revenue management systems — IDeaS, Duetto, Atomize — are powerful tools for hotels managing thousands of room-nights across standardised room categories. But they assume a product model that doesn't match experience hospitality. A hotel RMS optimises the price of a room-night. An experience operator needs to optimise the price of a package that contains accommodation (with room-type-dependent pricing), activities (with instructor-capacity constraints), and services (with vehicle-tier pricing) — where changing one component affects the attractiveness and margin of the whole.

Artidal's pricing engine understands package composition. When a rule increases the accommodation component by 15% because private rooms are nearly full, the total package price reflects that increase — but the activity and service components remain at their own dynamically determined rates. The guest sees a single total price; behind it, each component has been individually optimised. This granularity is what enables operators to maximise revenue without the blunt instrument of raising the entire package price uniformly.

The engine also handles a pricing scenario that hotel RMS platforms simply don't encounter: transfer-specific tiered pricing based on passenger count. When a guest books an airport transfer for 5 people, the engine selects the minivan tier; if they add a sixth person, it recalculates to the coach tier. These vehicle-based tiers, combined with distance-based pricing for multi-stop routes, make transfer pricing as dynamic and optimised as the accommodation pricing — an ancillary revenue stream that most operators leave flat-rated.

— Capabilities

What it does

Layered Pricing Rules

Configurable rules based on occupancy, advance booking window, stay duration, season, and day-of-week — with operator-defined priority order and stack-or-override logic.

Group-Size Tiers

Per-person pricing that adjusts automatically based on the number of guests: 1-2 guests, 3-5, 6-10, and wholesale tiers for tour operators — applied in real time during the booking flow.

Fixed Currency Prices

Set explicit prices in key currencies (EUR, USD, GBP, AUD) independent of exchange-rate fluctuations, while dynamic rules handle the long tail of currencies via daily conversion.

Wholesale vs Retail Rates

Separate rate trees for direct-to-consumer and trade channels, each with independent dynamic rules, min/max bounds, and group-size tiers — sharing one availability pool.

Min/Max Price Bounds

Hard floor and ceiling prices per item that prevent dynamic rules from pricing below cost or above the operator's brand-acceptable maximum — even when multiple rules compound.

Transfer & Activity Tiered Pricing

Vehicle-based or participant-based tiered pricing for transfers, boat trips, and group activities — automatically selecting the correct tier based on passenger or guest count.

Real-Time Booking-Flow Evaluation

Pricing rules evaluated in milliseconds during the guest booking flow, with instant price updates as dates, guest count, room type, or promotional codes change.

— Problems solved

What changes

01
Static Seasonal Rate Cards

Setting prices once per season leaves revenue on the table during high-demand periods and fails to stimulate bookings during slow weeks. Operators miss 15-25% of potential revenue compared to dynamically priced competitors.

02
Manual Price Updates Across Channels

Operators maintaining rates in spreadsheets, on the website, and in OTA extranet portals inevitably create rate parity violations — the website shows one price, Booking.com another, and the tour operator has an outdated rate card.

03
No Group-Size Intelligence

Without automatic group-size tiering, operators either charge a flat per-person rate (losing revenue on small bookings) or negotiate every group rate manually (consuming staff time and introducing inconsistency).

04
Request-a-Quote Friction

When the booking engine can't calculate a price in real time, guests are forced into a 'request a quote' flow that introduces 24-48 hours of delay, during which 60-70% of enquiries go cold.

05
Wholesale Rate Leakage

Without system-enforced channel separation, wholesale rates intended for tour operators leak into direct channels — guests discover the cheaper wholesale price and demand it, eroding direct-channel margins.

— See it in action

Ready to explore
Dynamic Pricing Engine?