Case Study

The booking workflow assumed hotels were passive. We built a marketplace that made them active.

Company
Cerbex
Group travel · B2B marketplace
My role
Product Lead
Strategy · Design · Build
Timeline
2025
In production
Stack
Python · Next.js
Postgres · Figma · Cursor · Claude Code
Cerbex Hotel Center bookings kanban with Offered, Booked by Agent, and Confirmed by You columns
The Hotel Center bookings view. Three columns show what is waiting, what needs action, and what is done.

01 · Business Context

A two-sided marketplace where only one side had a real interface.

Cerbex connects travel brokers, including tour operators and destination management companies, with hotels for group bookings. A broker may manage a multi-city itinerary, source a hotel for each stop, and collect competing rates before choosing one.

The broker side had been built and refined over time. It handled trip creation, hotel search, requests, and bookings. The hotel side was barely there. Hotels received email notifications, replied in different places, and had no single view of their pipeline, offers, or confirmed bookings.

My brief was to build the hotel product from scratch and modernize the broker side with AI-native tools. I also redesigned the small request page hotels use to submit offers without logging into the full app. It needed to fit the new booking flows. Taken together, the work changed the relationship between the two sides of the marketplace.

Broker Center trip creator with itinerary steps, cities, dates, and hotel budgets
The broker itinerary builder handles multi-city trips, room splits, dates, and budgets for each stop.
Broker Center hotel search with a Lyon map, hotel list, and ratings
Brokers search the map, choose a hotel, and send a request for a group rate.

02 · The Insight

The request-response model treats hotels as passive. An open market inverts that.

Group hotel booking usually starts with a broker choosing hotels they already know, sending a rate request, and waiting for replies. A hotel sits idle until someone contacts it. If a broker does not know the hotel, it never enters the pipeline.

Conversations between the CEO and his clients exposed the weak assumption in that model. Brokers want the right hotel for a group and a price point, rather than only the hotels they already know. Hotels have empty rooms on dates that match groups they have never heard about. The information was there. The market was not.

The marketplace lets hotels see every group coming to their area, rather than only the groups that requested them directly. They can choose which ones to bid on. Brokers get more options, and hotels get a way to find demand instead of waiting for it.

The structural shift

In the old model, the broker decides which hotels get seen. In the market model, a hotel can see groups coming to its city and decide whether to make an offer. That changes who gets to act.

Hotel Center dashboard with bookings by status and open market groups
The dashboard puts the hotel's current pipeline above groups it can still bid on.

03 · Design Decisions

Density is not clutter. For professionals, it's respect.

I kept picturing a reservations manager in the middle of a shift: phone calls, front-desk questions, and too many browser tabs. They do not get a quiet hour to study a dashboard. They need to triage in thirty seconds.

One question shaped the Hotel Center: what decision does this person need to make in the next thirty seconds?

Designing against form-first software

I wanted to avoid "form-first" software, where every useful detail lives behind another click. You open a booking list, find codes and dates, open the detail page, then scroll for the status and price. The software makes data retrieval the manager's job.

The opposite is just as unhelpful: an executive dashboard full of large KPI tiles that gives a reservations manager nothing to act on. A card with check-in, check-out, group size, origin, price per person, and status is dense, but complete. The manager can make a go or no-go decision without opening it.

Kanban as pipeline clarity, not project management

The kanban view came from asking what the manager is trying to learn when they open "Your Bookings." They are not reading a list in date order. They are checking where each group sits in the pipeline. The three columns map to three different responses: Your Offers means wait, Booked by Agent means act, and Confirmed means done.

The "1 Action Required" badge sits on the column header so urgency is visible before the manager scans individual cards. The Confirm button stays on the card. A group waiting for confirmation is time sensitive, and another page would only slow the response down.

Hotel Center bookings kanban with three status columns
Kanban view: the columns do the first pass of triage.
Hotel Center bookings list with status badges and an inline confirm button
List view: the same data in a chronological scan.

A single status vocabulary across every surface

The same status language had to work on dashboard cards, list badges, kanban headers, and the booking detail stepper: Offered, Booked, Confirmed. A manager who learns those labels once should not have to translate them on another screen.

Hotel Center booking details with a progress stepper, group information, and room rates
The booking stepper uses the same labels as the kanban, so the manager does not have to reorient.

The market page as a different interaction philosophy

The open market gives hotels a more active role. The page needed to show enough for a hotel to decide whether to bid on a group it had never heard of. Origin, group size, room split, and dates need to be legible at a glance. When no budget is shown, the UI is honest about the fact that no ceiling was provided.

Hotel Center make-an-offer page with group details and room-rate fields
The offer flow puts group details above the room-rate fields and keeps the booking stage visible.

04 · AI-Native Broker Tooling

Brokers were acting as human converters between one digital artifact and another. That's the job AI should have.

Before the AI Trip Extractor, a client, often a smaller Asian travel agent, sent a trip description in whatever format was convenient: email, PDF, Word document, or pasted text. The broker then opened the itinerary builder and re-entered every destination, date, room split, and budget. A five-city tour with ten room categories took real time, especially when the same tour ran several times a year.

The AI Trip Extractor handles that conversion. A broker uploads a PDF, Word file, Excel sheet, CSV, or plain-text document, and the system extracts the itinerary into the builder. A series of trips on different departure dates can come from one document instead of being created one at a time.

Brokers reported a 10× improvement in trip-creation productivity. The gain came from removing the conversion step, not from making manual entry slightly faster.

The design principle

"Human converter between digital artifacts" is exactly the kind of work AI should absorb. The useful question is not how fast someone can do it, but whether they need to do it at all.

Broker Center AI Trip Extractor with an upload field and Extract button
Upload a document and get a structured itinerary. The 'Try it!' badge was there because this really was new to the workflow.
Broker Center hotel data extractor with raw text input and hotel cards
Paste raw webpage content and get hotel records with contact details ready to add.

05 · The Conceptual Rethink

The broker thinks in requests. The hotel thinks in offers.

The first Hotel Center exposed the booking lifecycle as brokers see it: request, offer, booking, confirmation. That matched the system. It did not match how hotels worked.

A reservations manager does not track groups they rejected. The broker needs to know that a request was sent. The hotel needs to track the groups it engaged with, which means the groups it made an offer on. Putting "requested but no offer made" into the hotel's pipeline added noise from the broker's mental model.

The marketplace made the distinction more important and easier to resolve. Once hotels could bid on any group in their area, the shared question became did we make an offer? A direct request and an open-market group remain separate entities in the backend. In the hotel UI, both become a group the hotel can offer on or has already offered on.

I did not erase the distinction. A broker's direct request still signals a prior relationship or a strong fit. It appears in a dedicated "Requests" section, as a "Requested" label where it matters, and in alerts that match the emails hotels already receive. The information is there without becoming the main way to navigate the product.

Reconciling that model took product, design, and coding work. The backend keeps requests and market groups separate, while the hotel UI presents a single working surface. The hard part was hiding the backend model without losing information the hotel needed.

Key decision

Don't design the hotel UI from the broker's mental model. The same event, a group looking for a hotel, means something different depending on which side of the marketplace you're on.

Hotel Center team management with user accounts, roles, and admin badges
Hotels can give front-desk, reservations, and management staff the access they need while everyone works from the same pipeline.

06 · Building AI-Native

The whole project was built the way I believe product development should work now.

I was product lead, designer, and co-developer across the Python, Postgres, and Next.js stack. I worked from strategy and roadmap decisions through Figma and production code. Cursor and Claude Code handled much of the implementation under my direction and review.

That matters because I could move from a design decision to a working interface and backend integration in the same session. When you are the person who will build the thing, the design is more honest. You avoid elegant ideas that are painful to implement, and you can resolve backend consequences while the decision is still fresh.

The Trip Extractor, the marketplace, and the new request and offer model all needed quick passes between product thinking, design, and code. Keeping that loop short made this scope possible for a team this small.

How this changes product work

The gap between strategy, design, and engineering is a fidelity problem as much as a speed problem. Every handoff translates the idea, and some of the idea gets lost. When one person can hold all three, more of the original intent survives into the product.

07 · Status & Reflection

In production with early hotels. Here's what I'd do differently.

The Hotel Center is live with its dashboard, booking pipeline, market, team management, offer, and confirmation flows. The broker tools are in production too. The hotel product is rolling out to an initial group of hotels, with structured feedback coming next.

I would validate the hotel-side mental model earlier, before designing the full pipeline view. The idea that hotels do not track requests they never answered sounds obvious now, but it only surfaced while working through the full lifecycle. A rough test with one reservations manager would have caught it sooner.

I would also spend more time on the transition between the market and the pipeline. For now, the dashboard keeps the hotel's current bookings and the open-market feed in separate sections. As the market grows, that balance will need to change. The architecture can support it; the UI will need to catch up.

The marketplace is the part I am happiest with. It challenged an assumption the industry takes for granted: brokers choose hotels, and hotels wait. Here, both sides can act. That matters more than any individual feature.

← Back to work

More case studies: XOIP AI Voice Agent & TravelBot AI Guide