← Selected work
Study 03 / Consumer softwareLive · web + iOS
SailQuery

A good offer is only useful if you can find it.

A cruise-planning problem became a working consumer product: capture Club Royale offers, compare sailings, and make the next trip easier to choose.

CaptureiPhone, iPad, Apple silicon Mac
ReviewApp or any browser
Core promiseOne reliable dashboard
Real SailQuery mobile dashboard with grouped cruise offers and sailing details.Actual SailQuery analytics screen
SailQuery dashboard and analytics. Archived product screens.
My contribution

Founder, daily product user, product discovery, experience design, and agent-assisted web and mobile development.

Where it stands

A live App Store application and web platform with users.

Visit SailQuery
The problem, firsthand

I wanted to choose a cruise, not reconstruct my offers.

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.

Product discovery

The decision is the sailing, not the offer code.

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.

The product

Capture once. See the choices clearly.

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.

Decisions that matter

Reliability is the consumer feature.

01

Replace the snapshot

Each sync replaces the last. Keeping disappeared offers visible creates false choices.

02

Hold unreadable offers back

A failed capture should not become a confidently wrong sailing. The capture workflow and parser need explicit failure behavior.

03

Explain the platform boundary

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.

04

Fix the empty first run

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.

Beyond the dashboard

The same customer needs context between trips.

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.

Current results

Live on web and iOS.

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.

What I learned

Knowing the customer changes what deserves engineering time.

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.

Next study / 04

GovCon pipeline