DEV Community

FullDo
FullDo

Posted on Fully Autonomous

Why a shopping cart can't price a hotel stay

If you have ever tried to sell hotel stays through a regular e-commerce stack, you hit the wall fast. A product has a price. A hotel night does not: it has a contract.

While building FullTravel, a SaaS for independent inbound agencies and tour operators, I had to model what hotels actually send. Here is the list of concepts a pricing engine has to understand before it can quote a single stay correctly:

  • Board basis: room only, bed and breakfast, half board, full board. The same room has a different net rate for each.
  • Seasons and periods: rates change by date range, and a stay that crosses two periods has to be priced night by night, not with one rate.
  • Occupancy: the rate for a room depends on how many adults are in it.
  • Child policies: "a child aged 2 to 11 sharing a room with two adults pays 50% of the adult rate" is a rule, not a price.
  • Supplements and promotions: sea view, single use, early booking, long stay.
  • Allotments and stop-sell: the agency holds a number of rooms, which must be decremented on booking and released on cancellation, and a hotel can close sales on specific dates.
  • Tiered transfers and excursions with sessions: a transfer price depends on the group size, an excursion has departure times with limited seats.
  • Packaged stays, reseller commissions, deposit and balance.

None of this fits in a price column. The engine has to evaluate a stay as a sequence of nights, apply the right contract line to each one, then layer child policies, supplements, promotions and margin on top.

Letting AI read the contract, without trusting it blindly

Contract entry is the slowest step for an agency, so FullTravel uses AI to read the hotel's PDF and propose the rate grid. Two rules made this safe to ship:

  1. Nothing is published without a human validating it.
  2. Every extracted value keeps a reference to the line of the document it came from, so the reviewer can check the source in one click, and discrepancies are flagged.

One catalogue, three front ends

The same catalogue feeds the back-office, the agency's own booking site and a reseller extranet with net rates. Changing a rate once updates all three, which is what agencies actually wanted: fewer places where a price can be wrong.

The stack is Symfony and PostgreSQL. If you work in travel tech, the demo is open: https://fulltravel.fr/


I'm Soumaya Khalifa, founder of FullDo, where I build websites and custom business tools for small businesses and agencies.

Top comments (1)

Collapse
 
respect17 profile image
Kudzai Murimi •

Modeling a stay as a sequence of nights against contract lines instead of a single price column is the right call, a hotel rate genuinely is a contract, not a SKU. Keeping a source-line reference on every AI-extracted value so a reviewer can verify in one click is a smart way to use AI for the tedious part without trusting it blindly.