Replace the snapshot
Each sync replaces the last. Keeping disappeared offers visible creates false choices.
A cruise-planning problem became a working consumer product: capture Club Royale offers, compare sailings, and make the next trip easier to choose.


Founder, daily product user, product discovery, experience design, and agent-assisted web and mobile development.
A live App Store application and web platform with users.
I built SailQuery for a problem my family and I experienced as Royal Caribbean cruisers. Offers were scattered across websites, email, and printed mailers, often with many possible sailings to compare. Comparing dates, ships, cabins, and redemption deadlines took work before we could decide which trip fit.
The opportunity was specific: make the offers a person already has easier to use. That meant understanding the community and its decisions, then doing the unglamorous data work needed to make a dependable dashboard.
An offer is the container. A sailing is what someone chooses. SailQuery supports both views, then lets people search, filter, and compare the details that affect an actual trip.
Estimated taxes and fees, itinerary stops, cabin class, free play, and upgrade estimates help turn a list into a decision.
Members sync their Club Royale offers to SailQuery through the app. Capture works on iPhone, iPad, and Apple silicon Mac. A synced dashboard can then be viewed in the app or any web browser.
The mobile client is built with Expo and React Native, paired with a Next.js web product and shared backend. The product includes analytics and Excel export for paid access.



Each sync replaces the last. Keeping disappeared offers visible creates false choices.
A failed capture should not become a confidently wrong sailing. The capture workflow and parser need explicit failure behavior.
Sync requires the app on a supported Apple device. Reviewing a synced dashboard works anywhere with a browser. The product must make that distinction easy to understand.
The October onboarding change gives a new member one clear next step instead of an empty dashboard. An installed app is only the start of activation.
Royal Intel extends the product into monthly Instant Rewards certificate reports, per-level sailing lists, insights, and the Club Royale Journal. These public pages serve the same community before someone installs the app.
That creates a coherent product system: public information helps a cruiser understand the offers, and a personal dashboard helps them choose among their own. The editorial work and the application answer related questions without sharing private member data.
SailQuery is live on the web and in the App Store. It has users and remains in sustainment. The current product offers one free sync, with paid lifetime access for fresh syncs, analytics, and exports.
Being part of this community helped me prioritize the details that make a trip easier to choose. The work moved from collecting offers to making them trustworthy, comparable, and available on the device someone actually uses.