Step 12 Base Price

Purpose (Product)

  • Capture the property's pricing strategy with base price and weekend pricing to enable revenue optimization and channel distribution.

  • Offer Smart Pricing service as an optional add-on that automatically adjusts prices based on demand, seasonality, and market conditions.

  • Smart Pricing Mode: When enabled, users can set a price range (min-max) for dynamic pricing. When disabled, users set a single fixed price.

  • Display property details and room cards for context while setting pricing.


UX Flow (What the user sees)

  • Left side shows property title, description, and a 2-column grid of room cards with cover images, room type chips, and photo counts.

  • Right side displays a large price card with current pricing, interactive slider, and Smart Pricing toggle.

  • Single Price Mode (Smart Pricing disabled): Slider shows single value, price display shows "X GBP"

  • Range Mode (Smart Pricing enabled): Slider shows min-max range, price display shows "X GBP - Y GBP"

  • Price updates in real-time as user moves the slider. Smart Pricing toggle includes service cost (£X/month) and "Learn more" link.

![[Desktop 11.png]]


System Flow (How it works)


Data Touched

Properties table:

  • price.basePrice (number, required, min: 1)

  • price.weekendBasePrice (number, required, min: 1)

  • price.currency (string, default: "GBP")

  • price.minPrice (number, optional, Smart Pricing only)

  • price.maxPrice (number, optional, Smart Pricing only)

Property Cart Items:

  • serviceId (Smart Pricing service ID)

  • quantity (number, default: 1)

Validation rules:

  • Base price and weekend base price must be >= 1

  • Smart Pricing requires min/max price range when enabled

  • Currency defaults to GBP


APIs Called

GET /api/services/smart-pricing

  • Method: GET

  • Response: Service object with pricing details

  • Used to display Smart Pricing cost and enable/disable toggle

POST /api/properties/{id}/cart

  • Method: POST

  • Payload: { serviceId: string, quantity: number }

  • Response: Cart item created

  • Used when enabling Smart Pricing

DELETE /api/properties/{id}/cart

  • Method: DELETE

  • Payload: { serviceId: string }

  • Response: 204 No Content

  • Used when disabling Smart Pricing

PATCH /api/properties/{id}

  • Method: PATCH

  • Payload: { price: { basePrice, weekendBasePrice, currency, minPrice?, maxPrice? } }

  • Response: Updated property object

  • Idempotent: Yes

  • Retries: Standard axios retry logic


QA Checklist

Basic functionality:

Smart Pricing modes:

Data persistence:

Error handling: