Representative case study · GoNStay

How a Dhaka travel agency launched an OTA — and why it went B2B first

2026-08-0913 min readBy Black & White Studio
About this study: Written from our work as a platform partner on GoNStay and from conversations with travel agencies in Dhaka. Agency name and staff details are changed, and volumes are rounded or substituted; the sequencing, the trade-offs and the failure modes are faithful to what actually happens. Any figures shown publicly on gonstay.com today are promotional placeholders, not audited performance data, and none of them are used here.

The agency has been running since the mid-2010s out of two rooms in Banani — call it "Meridian Travels". Six people. Air tickets, umrah packages in season, Cox's Bazar and Sylhet hotel bookings year-round, and a growing side business in Indian medical visas. Everything ran on WhatsApp, a shared Google Sheet, and one senior counsellor's memory of which hotel manager answers his phone after 9pm.

By any measure that matters to a bank, it worked. It just didn't scale past the six people, and it couldn't be sold, valued, or handed to anyone else.

The four things that actually forced the decision

  1. The inventory lived in one person's head. The senior counsellor knew which Cox's Bazar property would honour a rate in July and which would quietly re-price on arrival. When he took two weeks off for his brother's wedding, the agency's margin on hotel bookings visibly dropped. Nobody could explain why in numbers, only in anecdotes.
  2. Customers were arriving pre-shopped. Travellers turned up having already compared prices on international OTAs. The agency's only remaining lever was to beat a number it could see on the customer's phone. That's a losing position to negotiate from, and it compressed margins on exactly the bookings that used to be most profitable.
  3. The good local inventory was invisible. Houseboat operators on Tanguar Haor, small hill resorts in Bandarban, ship routes to Saint Martin — none of it is listed anywhere searchable. The agency could sell it, but only to people who already knew to ask. That inventory is the moat, and it was sitting in a WhatsApp thread.
  4. Visa work was drowning the counsellors. Roughly a third of staff time went to visa files, almost all of it status-chasing: "where is my file", "did the appointment get confirmed", "is the police clearance in". No customer could self-serve an answer, so every answer cost a phone call.
6
Staff
6
Booking verticals
~1/3
Staff time on visa status
B2B
First live channel

What they ruled out first

The owner spent about three months looking at options before committing to a platform build.

Why B2B first — the part most OTA plans get wrong

Every OTA has a cold-start problem in both directions at once. Travellers won't come to a site with thin inventory. Properties won't give you inventory or rates when you can't show them bookings. The usual answer is to spend money on ads until one side tips, which is how most regional OTA attempts die.

The agency had something better than an ad budget: it already had a phone book of other travel agents. Small agencies all over Dhaka and the district towns were solving the same problem by calling the same hotels. They were, in effect, a demand channel that needed no marketing spend and no brand trust — they already knew the agency's name.

So the plan inverted. The platform launched to the trade first: agents log in, see negotiated rates, book on behalf of their own customers. Consumer traffic became a later phase rather than the launch.

Three things fall out of that decision, and they're the reason we'd recommend it again:

The cost of the inversion is that you build for a professional user first, and professional users want density, keyboard flow and rate detail — not the airy hero image a consumer site wants. Both surfaces have to exist eventually. Deciding which one gets built first is the actual strategic choice, and most plans make it by accident.

The build, in the order it happened

Phase 1 — inventory model before anything else

Not the homepage. Not the search bar. The data model.

The trap in a multi-vertical OTA is to model a hotel first and then bolt on the others, at which point houseboats become "hotels with a boat flag" and everything downstream — search, filters, cart, cancellation rules — inherits an assumption that's wrong for four of your six verticals. We spent the first stretch on a bookable-unit abstraction that a hotel room, a tour seat, a houseboat cabin, a ship ticket and a visa application could all satisfy, with vertical-specific fields hanging off it.

This is unglamorous and it's the single highest-leverage thing in the whole build. Everything after it is cheap; anything before it is rework.

Phase 2 — the admin back office

Also before the storefront. Rates, inventory, discounts, featured placements and site settings all had to be editable by agency staff without a deploy, because the alternative is a developer in the loop on every seasonal rate change. In a travel business, rates move weekly. A platform that needs an engineer to change a price is a platform that will be abandoned within a season.

Phase 3 — one vertical, end to end, for the agent channel

Hotels only. Search, detail, availability, book, confirm, cancel. No tours, no visas, no houseboats. Roughly a dozen friendly agents got access.

The first two weeks generated a long list of unglamorous corrections — rate display that didn't show the service charge the way agents quote it, a cancellation window that didn't match what the properties actually agreed to, a search that ranked by price when agents wanted to rank by which property answers the phone. All of it cheap to fix at one vertical. All of it would have been six times more expensive to fix after all six verticals shipped.

Phase 4 — the remaining verticals onto the same rails

Tours, houseboats, ship tickets, air tickets, visas. Because the abstraction from phase 1 held, each vertical was mostly content modelling and a vertical-specific detail page rather than a new booking flow.

Visas were the interesting one. The temptation is to build a full document-management system. What actually removes the load is much smaller: a status a customer can look at without phoning. Type, destination, stage, what's needed from you next. That alone takes most of the status-chasing calls off the counsellors.

Phase 5 — the consumer surface, and the SEO groundwork under it

Only once there was inventory worth landing on. Per-route titles and descriptions, canonical URLs, and structured data — TravelAgency, WebSite with a SearchAction, and a SiteNavigationElement list — so that brand searches have a chance of returning sitelinks rather than a bare blue link. Multi-currency, bilingual English and Bengali content, and a media CDN for the property galleries, because the consumer side lives or dies on mobile data.

The consumer-facing home page: one search bar switching between hotels, air tickets, tour packages, visa processing, house boats and ship tickets
Phase 5: one search bar spanning six verticals — built last, on rails laid down in phase 1.

What changed

"We didn't need a website. We needed the business to exist somewhere other than in Rashed's phone."
— composite reflection from the owner

What we'd do differently

1. Sign the property agreements before building the property pages

We built listing pages capable of expressing rate rules the agency hadn't actually negotiated yet. Some of that flexibility turned out to be unnecessary, and some of it was subtly wrong because it encoded an assumption about how a rate would be structured. Contract first, schema second.

2. Ship the agent-facing rate sheet even earlier

For the first stretch, agents still called to confirm a rate they could already see on screen, because the screen didn't show it the way their quote sheet does. A boring, dense, printable rate view — built in the agents' own vocabulary — would have converted them off the phone faster than any feature we shipped that quarter.

3. Decide the promotional-numbers policy on day one

Placeholder stats — review counts, trips planned, destinations covered — get put on a homepage during design and then quietly stay there. They're a liability: they mislead partners, they can't be defended in a due-diligence conversation, and once real numbers arrive nobody can tell which is which. Either mark them clearly as illustrative or leave the space empty until the data is real.

4. Don't let the visa vertical ship with an empty state

A category tab that resolves to "nothing to show" reads as a broken site, not a coming-soon. Either hold the tab back until there's inventory behind it, or make the empty state an explicit invitation to the travel desk. An empty shelf in a shop you've just opened costs more trust than a shelf you haven't built yet.

The transferable lessons

  1. Model the bookable unit before you design a single screen. If houseboats and visas can't satisfy the same abstraction as a hotel room, you don't have a platform — you have four websites sharing a header.
  2. Build the back office before the storefront. Travel rates move weekly. Any pricing change that needs a deploy is a platform that gets abandoned.
  3. Solve the cold start with a channel you already own. If you have a trade network, B2B-first turns the chicken-and-egg problem into a sequencing problem. If you don't, that's worth knowing before you commit to an OTA at all.
  4. One vertical, end to end, before six. The corrections you get from real users on vertical one are the same corrections you'd otherwise pay for six times.
  5. Curation is the only defensible position against a global OTA. You will not out-inventory Booking.com. You can absolutely out-know it on Tanguar Haor.

One practical note for anyone in Bangladesh considering this: travel agency operation is a licensed activity, and the trade body — the Association of Travel Agents of Bangladesh (ATAB) — is the right first stop for the registration and compliance requirements. Sort out which licences the business needs before you write the checkout, because the answer shapes what you're allowed to sell online and who has to be named on the booking.

GoNStay — curated travel booking platform

Hotels, tour packages, houseboats, ship tickets, air tickets and visa processing in one booking flow. Live at gonstay.com, currently running B2B with travel trade partners.

See the GoNStay platform →

Related reading: booking travel in Bangladesh online — what the big OTAs miss — the traveller-facing side of the same story.