Profitable tours went from 0 to 30. The Ops console prices every Tropicfy tour from its real cost, sets a single payment per guide, and replaces the operation's manual processes. I owned the product, design, and production build — AI-first with Claude, in four weeks.
Nobody knew what a tour cost.
At Tropicfy every tour is run by an independent guide, not staff, and each one names their own rate when a booking comes in. The customer's price came from the same blind spot: set from experience, not from real cost.
First it cost money. Then it cost time.
Without real fixed costs behind the price, the business lost money. When the loss was big enough, the tour was canceled — and a bad review came with it.
The missing system cost time too. Every booking assignment carried a calculation in the middle to decide whether the tour was worth operating.
"How do I price a tour when its cost is a different number for every guide?"
First the cost. Then the price.
The fix started with a sibling guide-facing micro-app I built as a project of its own, to collect, in a structured way, what every guide charges to operate Tropicfy's tours.
The console averages those rates into one fixed payment per tour and modality, and prices each tour from that cost. Finding a guide, reaching them and knowing what to pay now happen in one place.
Set from experience, not cost
Arrives through GYG or the website
Asked what they charge
Calculated by hand, tour by tour
Turns out there's no margin
Canceled, or run anyway for the review
Set from experience, not cost
Arrives through GYG or the website
Asked what they charge
Calculated by hand, tour by tour
Turns out there's no margin
Canceled, or run anyway for the review
Rules that live in the product, not in the training.
A feasibility spike set the scope
Eight problem statements came out of the interviews; half needed bookings into the console. Pulling them from the booking system required one price per tour on every platform, so pricing and booking assignment came first; bookings moved to MVP2.
Only the buy rate is real
Tropicfy holds dollars; some guides are paid in colones. The console uses the central bank's buy rate — the lower of its two rates — so a payment never costs more than the dollars cover.
Contact lives in the guide's row
Reaching a guide meant a Google Sheet and contacts scattered on a phone. WhatsApp, call and copy now sit in the guide's row — three manual steps down to none, name still attached.
Two margins, kept in sync
GetYourGuide keeps 30%, Bokun (website) keeps 2% — one price can't come from one margin. The console holds two, tied together: edit either one and the other adjusts, and all 30 prices recalculate.
The rack only builds the benchmark
Guides declare two rates: what they charge clients, and what they charge an agency. We price from the agency rate — the other one only feeds the market benchmark our price is measured against.
Built AI-first, straight into production.
The prototype was the production codebase from the first commit, built with Claude as the engineer and me making every call. Hardening ran on that same code.
Nine findings. Two worth fixing.
Two rounds of moderated usability testing produced nine findings, ranked by severity — Only the critical and the serious were fixed; the rest were logged.
Round two closed the critical finding and left the second one honest: the interface now holds the comparison, and what's missing is the habit of using it. That's not a thing another round of testing fixes.




Thirty tours priced, and nothing left to calculate by hand.
Four success metrics, each with a counter-metric — written during definition and answered before deploying.
AI made it fast. Design thinking made it right.
Working AI-first didn't change the quality of the thinking — it changed the reach. Research, prototype, testing and production belonged to one person, and what came out is a product running, not a file handed off.