Tripbooks design system / lab 16 / the marketplace

Lab 16 / the biggest unbuilt surface

The only screen that spends money to answer a question.

Every other surface reads from the platform's own book. This one calls suppliers, and a supplier call costs time, costs a rate limit, and returns an answer that starts going stale the moment it arrives. So this screen has three jobs no other screen has: say what it is about to spend, say how old the answer is, and prove that two prices are for the same thing before it invites a comparison.

Underneath it are two doctrines. Items are never typed: anything the marketplace cannot sell comes from the item library, and a manual asset is created once and reused forever. And there are no suppliers on this screen. The agency is buying from Tripbooks. Which wholesaler is behind a rate is Tripbooks' business, it is supplier number one in the books, and no name, rate id or third party identifier appears anywhere a subscriber can read it.

That second rule turned out to improve the design rather than constrain it, and the section on rate options explains why.

CRM · Marketplace · HotelsSM

Marketplace

building QUT-5RD9K3WP v1.3 · Marchetti Group · USD
Hotels Flights Transfers Item library
Where
Kyoto, Japan
318 properties in our own catalogue
When
14 - 21 Sep 2026 · 7 nights
from the quotation
Rooms
12 rooms · 24 adults
Guest nationality
Italy
Rates and taxes differ by nationality. This is not a formality.
Get live rates
Live rates 88 properties214 rate options Some rates could not be retrieved. This list may be incomplete.Retry fetched 4 min ago rates hold for 11 min
PropertyRoomBoard Free cancelFrom, per nightOptions
Park Hyatt KyotoHigashiyama · PRP-1104772
Deluxe King
Breakfast
to 06 Sep
$598.00
3
Attach
Rate optionReferenceFree cancellation PaymentNet / night7 nights × 12
Cheapestprepaid, shortest window
RTE-4471902
to 21 Aug
in full, at booking
$598.00
$50,232.00
Use this
Recommendedfree cancellation past the deposit date
RTE-8821304
to 28 Aug
45 days before arrival
$612.00
$51,408.00
Use this
Most flexiblecancellable eight days out
RTE-9920417
to 06 Sep
on arrival
$641.00
$53,844.00
Use this
Why the middle one The customer's balance is due 01 Sep. The cheapest option stops being refundable on 21 Aug, eleven days before you know whether they have paid. $1,176.00 buys a week of cover.
Rate Proof · decision support, never a price claim
Your rate, per night
$612.00
Free cancellation to 28 Aug, payable 45 days before arrival.
Public retail today, per night
$795.00
Flexible rate, free cancellation to 12 Sep, pay on arrival. Read 6 minutes ago.
You are $183.00 a night below retail, $15,372.00 across the booking, on comparable terms. Both numbers are shown at the same size because the agent is the one who decides.
Cancellation ladder · what the customer document will say
until 28 Aug 2026FIXEDfree cancellation$0.00
29 Aug - 06 SepFIXEDone night per room$7,344.00
07 Sep - 13 SepFIXED50% of the stay$25,704.00
from 14 SepFIXEDno refund$51,408.00
+
Suiran, a Luxury Collection HotelArashiyama · PRP-2280913
Deluxe Riverside
Breakfast
to 21 Aug
$441.00
2
Attach
+
The Ritz-Carlton KyotoNijo · PRP-1839204
Deluxe Garden
Room only
to 30 Aug
$712.00
3
Attach
+
Hotel The Mitsui KyotoNijo · PRP-3092811
Superior Twin
Breakfast
to 02 Sep
$524.00
1
Attach
+
Ace Hotel KyotoKarasuma · PRP-4471028
Medium King
Room only
to 07 Sep
$288.00
2
Attach
1 selected Park Hyatt Kyoto · 12 rooms · 7 nights $51,408.00 net sells at $61,300.00 · 16.1% margin Hold to 28 Aug Attach to quotation
Incompleteness is stated without explaining the plumbing

Something failed to answer, and the strip says so: some rates could not be retrieved, this list may be incomplete, with a retry. The agent learns the one thing that affects their decision, which is that the cheapest rate on screen might not be the cheapest rate available. They do not learn who failed, because who failed is Tripbooks' problem to fix, not the agency's problem to interpret.

02 / the idea the whole screen is built on

One row is a room. Under it are terms, not suppliers.

The same Deluxe King at Park Hyatt Kyoto is available three ways. Most systems show that as three results and leave the agent to work out whether they are looking at one room or three. Here the property and the room are proven identical behind the scenes, so they collapse into one row, and what opens underneath is three rate options that differ only in cancellation and payment terms.

Removing the supplier names made this better, not worse. When the rows were labelled by who supplied them, the eye went to the brand and the decision looked like a choice of wholesaler. Labelled Cheapest, Recommended and Most flexible, the row says what the money actually buys, which is exactly the decision an agent is making.

Design consequenceWhat it means
The row is the decisionAn agent decides which room and on what terms. Where the room came from was never the decision, so it never appears.
Cheapest is not the defaultThe blue mark sits on Recommended, not on the lowest number, and a sentence says why in the customer's own dates: the cheapest option stops being refundable eleven days before the balance is due, and $1,176.00 buys a week of cover.
Options are named by what they cost youCheapest, Recommended, Most flexible, each with its cancellation date and payment timing beside it. A tier name that does not describe a term would be an invented taxonomy, so there are none.
Provenance rides along, invisiblySource, token, rate id and third party identifiers attach to the item and survive into the ledger for reconciliation and dispute. They appear on no screen a subscriber can open and no document a traveller receives.
References are minted by TripbooksA property is PRP-, a rate option is RTE-. Never a wholesaler's own identifier, because a reference that a subscriber could paste into a search engine is a supplier name with extra steps.

03 / the honest comparison

Rate Proof tells the truth in both directions.

On this search Tripbooks is $183.00 a night below retail on comparable terms, which is what happens the overwhelming majority of the time. The design question was never how to present that. It was what the component does on the rare search where retail wins.

It says so, at the same size, with the terms underneath. That case is uncommon enough to cost almost nothing and valuable enough to be the reason the other ninety-five per cent is believed. A comparison that only appears when it flatters us is not a comparison, and an agent will work that out the first time they check.

RuleWhy
Both numbers are equal citizensSame size, same face, side by side, neither emphasised, whichever one wins. The component has no favourable and unfavourable layout, it has one layout.
The terms sit under each priceOurs is refundable to 28 August and payable 45 days out. Retail here is flexible and paid on arrival. Without those two lines the numbers are not comparable at all, and most of the time the terms are where the real difference is.
It states the gap in money, not a percentage$27.00 a night and $2,268.00 across the booking. Percentages hide the size of a decision on a twelve room block.
It never recommendsThe sentence ends with the difference and the fact that the products are not the same. Decision support, never a price claim, and never an instruction.
It is timestamped"Read 6 minutes ago". A retail price with no age on it is a rumour.

04 / the laws this screen adds

Six.

K1No supplier exists on any screen

Not a name, not a rate id, not a third party property code, on the operator side or the customer side. The agency buys from Tripbooks; Tripbooks is supplier number one in the books, and everything behind it is plumbing that appears only in the ledger and the audit trail.

K2Every result set carries its age and its expiry

Fetched four minutes ago, tokens expire in eleven. Drawn with the same clock component as the fulfilment queue, so time behaves the same way everywhere.

K3An incomplete answer says it is incomplete

When something fails to return, the list says it may be incomplete and offers a retry. It never says what failed. The screen would rather admit an incomplete answer than present a confident wrong one, and it can do that without narrating its own supply chain.

K4Prices only stack when the thing is proven identical

The property and the room are matched to a standard before two rates are ever shown as alternatives. Where that proof does not exist they stay on separate rows, because a false comparison is worse than a shorter list.

K5Terms travel with the price, always

Cancellation and payment terms sit beside every figure in every view. A rate without its ladder is not a rate, it is a number.

K6Detaching to a manual price keeps the receipt

If an agent overrides a marketplace rate, the item records what the marketplace quoted alongside what was entered. Undercutting a locked net routes to an approver, and the approvals worklist already knows how to show it.

Ruled, and one consequence to carry

Both rulings are in, and the first one changes a law.

  1. No suppliers, anywhere. The screen is rebuilt. Rate options are named by what they cost you rather than by who supplies them, references are Tripbooks-minted, and the incompleteness warning says a list may be incomplete without saying what failed. This turned out to sharpen the screen: labelled by brand, the row looked like a choice of wholesaler; labelled by terms, it says what the money actually buys.
  2. Law 10 in the system document has to widen. It currently reads "customers never see sourcing". It should read nobody outside Tripbooks sees sourcing, which covers the traveller, the subscriber and every screen either of them can open. I will make that change when I next update the specification.
  3. Rate Proof is unchanged, and now shows the common case. The primary example is the ninety-five per cent one, $183.00 a night below retail on comparable terms. The component has one layout, not a favourable and an unfavourable one, which is what makes the rare loss cheap to show and the usual win worth believing.