lib/orchestrator/ and the route is POST /api/search/stream.
The pipeline
Step through what happens to one query.Protection settings
These values come fromlib/orchestrator/ and the suppliers’ config files.
What is not retried
A retry only helps when the next attempt could succeed. Omnibeds does not retry:- a timeout (the supplier already had its full time),
- a supplier that is down,
- a 4xx or a malformed answer, which won’t change on retry and would spend quota on a live API,
- an expired session or offer, which the adapter already handled,
- a quota that is used up.
What is not cached
An answer that carries a note is not cached, so the next search shows the full result. RateHawk uses this for hotels whose details are still loading. The cache is also skipped while a demo fault is switched on, so the fault is visible.Which suppliers are asked
The agency turns suppliers on and off in the admin panel. Hotelbeds and RateHawk are also only searched when presenter mode is unlocked; otherwise the request is refused with a plain message. See Confidential suppliers.Merging the same hotel
Suppliers describe the same hotel differently. The screen groups supplier hotels into one card per real hotel, with every supplier’s price on it. The matching rules are inlib/mapping/match.ts.
- Two hotels more than 1.5 km apart are never the same hotel, whatever their names.
- A score of 0.78 or more merges them.
- A score between 0.60 and 0.78 that didn’t merge another way goes to the review queue on the Mapping page, where someone approves or splits it.