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](https://fulltravel.fr/), 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:
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.
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:
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.