Unpack Bahamas

Turning a 12,000-member community into a travel product people can trust

RoleFounder & Product Designer
Team sizeSolo
Duration2 months, 0 → live
FocusProduct strategy, content design, vibe coding and shipping, SEO & GEO
Visit the live site
Unpack Bahamas homepage, shown on a tablet

A market that can't be trusted

I run a Facebook group for vacation rentals in the Bahamas. Around 12,000 members. Owners post their properties, travellers ask questions, and bookings get arranged in the comments.

Being in it every day, I kept seeing the same failures. Listings with no working link. Photos that had clearly come from somewhere else. Contact details that led nowhere. Someone would ask "is this place real?" and nobody — including me — could answer with certainty.

I assumed this was specific to my community. The data says otherwise.

64,000+travel fraud reports filed in the US in 2025
~$274Mlost to vacation rental scams
~50%of US rental scams originate on Facebook
more likely that 18–29 year olds lose money

Source: US Federal Trade Commission; BBB Scam Tracker

The mechanism

The documented pattern is precisely what I had been watching play out in my own comments section.

01A real listing existsA genuine owner posts a genuine property.
02It gets copiedA scammer lifts the photos and description wholesale.
03They pose as the ownerReplying from a new account — often faster and friendlier than the real one.
04Payment moves off-platformVenmo, CashApp or Zelle, then a convincing fake receipt. No recourse.

Every step is plausible on its own — the traveller can't tell step 01 from step 03. So the problem was never my community; it was a structural failure in how people book stays in the Bahamas, one I'd been watching daily with 12,000 people who already trusted me. That's where Unpack Bahamas came from.

Problem and goal

Booking a place to stay in the Bahamas means assembling trust out of fragments: a Facebook post with no link, a review site ranked by commercial priority, a forum thread from 2019, a listing you cannot verify. There is no single place where a traveller can learn where to stay, when to go, and whether what they are looking at is real. The information exists. The confidence does not.

Build the most trusted independent resource for travelling to the Bahamas. One country, covered properly. Every recommendation chosen by a human, every practical question answered in one place, and a clear path from curiosity to a booking the traveller feels safe making.

The 14%

The Bahamas is booming. 12.5 million visitors in 2025 — an all-time record, up 11.4% year on year, more than 70% above pre-pandemic levels. Almost none of that is my user.

Bahamas arrivals, 202512.5M total
86.5%  cruise & sea arrivals
13.5%
Cruise arrivals — 10.6M+14% year over year
Stopover arrivals — 1.82M−1.6% year over year

Stopover visitors are the only people who book a place to stay. It is the one segment that did not grow.

That gap is the opportunity. The boom is a cruise boom, so most content targets day-trippers, not the person renting a house on Eleuthera for nine days who needs to know which beach is worth the drive. That's who Unpack Bahamas is for: the 1.8 million stopover visitors, not the 12.5 million cruisers — especially the ones booking privately, where trust matters most.

Choosing the smaller number was the first real product decision. It cost most of the audience — and bought the ability to be genuinely useful to what was left.

Competitive landscape

I audited four categories of competitor, looking for what each one structurally cannot do.

Curated & verified →
Review
aggregators
Large travel
publishers
Official
tourism board
Reddit &
Facebook groups
Unpack Bahamas

One country, in depth →

The depth already existed inside the Facebook groups. The verification did not. Unpack Bahamas is the same knowledge moved up the trust axis.

01Official tourism board
Strength

Enormous authority and reach. Now partnered with an AI travel platform for itinerary planning.

Structurally cannot

Promotional by mandate. It cannot tell you an island is a poor fit, or that a month is bad value. A source that can only say positive things is a weak source for a real decision.

02Large travel publishers
Strength

Real editorial credibility and brand trust.

Structurally cannot

The Bahamas is one destination among hundreds. Breadth over depth, updated infrequently, never at the level of an individual property.

03Review aggregators
Strength

Massive inventory and review volume.

Structurally cannot

Ranked commercially and weighted toward resorts. No editorial point of view, and almost no help with private rentals.

04Reddit & Facebook groups
Strength

The most honest information available anywhere.

Structurally cannot

The least trustworthy format. Unstructured, unverifiable, and where roughly half of rental scams begin.

The gap: nobody was combining single-country depth, human curation, and verification. Every competitor was too broad, too promotional, or too unstructured. That gap is small enough that no large publisher will bother to fill it — which is exactly why a solo operator can.

Insights

My constraints designed the product more than my taste did

No budget, no photographer, no engineer, no team. Every significant decision downstream came from working within those limits rather than around them.

No budget for photographyAI-generated imagery, atmosphere only
No engineerDesigned and built in code, no Figma
No team, no timeOne country in depth, not a region
No way to verify at scaleEditorial curation, not a directory

What I rejected

Three decisions shaped the product more than any other. In each case the obvious move was available, and cheaper.

How it makes money, and why that shapes what I publish

Unpack Bahamas is a small business, not a portfolio exercise — it earns through affiliate partnerships: TravelPayouts for flights and travel services, GetYourGuide for experiences. Booking.com comes next as traffic grows, which would let licensed photography of bookable stays replace the AI imagery rather than work around its absence.

Affiliate partners
TravelPayouts
GetYourGuide
GetYourGuide tours and activities widget embedded on an Unpack Bahamas island page

The GetYourGuide widget live on an island page, surfacing tours a reader can book through GetYourGuide with one click.

Which sets the rule for what goes on the page: what to recommend is decided first, on its own merits, and the affiliate link only gets attached after.

Content model and architecture

I structured the site around the sequence of questions a traveller actually asks, in order. Most Bahamas content answers these in isolation, on separate sites. Putting them on one ordered path is the product.

Should I go?Cost, expectations, and an honest read on whether the trip is worth it
When?Season, weather, crowding, and where the value actually sits
Which island?Island guides — including which ones are a poor fit for a given trip
Which area?Neighbourhood detail, the level most travel content skips entirely
Which place?A curated stay, chosen by a person, with the reasoning attached

Each level had to work two ways: readable as a page by a person, and extractable as an answer by a machine. That dual requirement drove the format of every template on the site.

Designing without opening Figma

I did not open Figma once on this project — not a statement, a consequence. Working alone with no handoff to anyone, a mockup would have had no audience, and every hour spent making a picture of the product was an hour not spent on the product. So I designed in the browser instead, in code, with real content, from the first day.

Figma Claude
What I gained

Real responsive behaviour, real content instead of placeholder text, and a shorter loop: idea → build → review instead of idea → mockup → build → review. I could test a direction in minutes, not commit to one on a static image.

What I lost

Cheap divergence. Figma lets me kill three directions in twenty minutes; in code, each one costs real time, so I explored fewer. I also lost the artefact — no polished Figma file, which is why this case study leans on diagrams and shipped screens instead.

The honest summary: building in code made me faster to ship and slower to explore. For a solo 0→1 with a hard constraint on time, that was the right trade. On a team, with a handoff, it would not have been.

What it looks like

What that browser-first process above actually produced — swipe through for the pages and details that don't come across in writing.

Building an AI design system

AI-generated interfaces default to competence without identity — safe type, even spacing, the same card as everyone else's site. Prompting harder didn't fix it: every new session started from zero and produced the same generic output. The problem was never the prompt. It was the missing constraint.

Describing it, every time

Rejecting generic output and re-explaining what I wanted, session after session. It rarely held past the conversation it happened in.

Encoding it, once

A brand-guidelines file in the repo: colour tokens, type scale, spacing and component rules. The AI reads it on every build, whether I remember to mention it or not.

brand-guidelines.md contents page listing voice, color, typography, logo, imagery and design tokens
brand-guidelines.md color-token page: grounds, ink, accent and muted tokens with hex values

The build loop

Claude Code for the majority of the build, moving to Cursor toward the end. Netlify for build and hosting. Higgsfield for imagery. Google Analytics, Search Console and Umami for measurement. Alongside it I took Anthropic's official courses on working with Claude, which mostly taught me to specify context and constraints up front instead of correcting output afterwards.

Phase 01Positioning

The country, the audience and the question sequence, settled before a line was written.

Phase 02System, then build

Brand guidelines written first, then templates generated inside them.

Phase 03Content & imagery

Structured generation for guides and journal posts, plus the atmospheric image layer.

Phase 04Launch & instrument

Deploy, then wire up Search Console, Analytics and Umami before chasing traffic.

Roughly two months end to end. Inside every phase, the same loop repeated:

01
BriefMy judgment
What's being built and why — the decision, the audience, the job the page has to do.
02
Generate
AI implements it inside the brand guidelines file, not from the prompt alone.
03
Review against the design systemMy judgment
Tokens, spacing, existing components? Anything invented gets rejected — or deliberately promoted into the system.
04
Test on mobile and desktopMy judgment
Every screen, every time — the most reliable failure mode, never optional.
05
Verify every factMy judgment
Checked against an official source before it ships — never the model's word.
06
Ship
Deployed through Netlify.
07
Measure
Search Console, Analytics and Umami — what the data says becomes the next brief.
↑  back to 01
What I never delegated

Product decisions, information architecture, what to publish and what to refuse to publish, and the final read of anything factual. AI wrote a great deal of what is on the site. It decided none of it.

What I automated

Repeated content types. Rather than improvising each blog post and listing from scratch, I encoded the structure, the research requirements and the tone once, so every piece comes out consistent and research-backed by default — the same principle as the design system, applied to writing.

What I had to learn before any of this worked

GitHub

I had never really used GitHub before this project — no branching, committing or deploying anything myself. Learning it turned out to be less about the tool and more about a habit: check in often, read every diff, and treat a branch as a safe place to be wrong before anything touches what's live. It's the same discipline good product development runs on, and now I work in it directly instead of describing it to someone who does.

Anthropic Academy

I worked through several of Anthropic's courses along the way — the practical ones on building with Claude, and the broader ones on how the models and the code underneath actually work. It changed the unit of work: less asking and correcting, more setting the constraints up front. The brand guidelines file came directly out of that.

Where AI failed me

The failure

Output that is competent and anonymous — the same layout, the same card, the same gradient as every other AI-built site. Reprompting rarely fixed it, because the problem was never the prompt.

What I did about it

Stopped negotiating per prompt and encoded the constraints once, as the brand guidelines file. AI is a very fast executor of a decision and a very poor substitute for making one.

The failure

Generated layouts routinely looked correct on desktop and broke on a phone. AI produces work that looks finished at the size you happen to be looking at it.

What I did about it

Made testing both viewports non-negotiable in the loop. This mattered more than I realised: 76% of my visitors arrive on a phone, so the surface AI kept quietly breaking is the one almost all of my users experience.

The failure

On a travel site, a confidently invented ferry schedule or price is not a bug. It is a liability that costs someone money on a trip.

What I did about it

An absolute rule: anything factual is verified against an official source before it ships. Never the model's word, no matter how plausible.

Results, honestly framed

Month-one numbers from a site with no backlinks, no brand and no history. I also posted no links to it — not to the 12,000-member group, not anywhere — so this is a clean test of one question: can it be found on its own, by search and by AI? A baseline, not an outcome.

2,471search impressions in month one, from zero
58 → 42average search position
4 minaverage session, vs a 2 min 38s cross-industry median

Position 42 is not where traffic lives yet, and the 0.45% click-through rate follows from that position rather than from the content. Session duration is the number I care about most: the people who do arrive actually read.

Google thinks my audience is on desktop. My audience is on mobile.

Search Console and my own analytics tell opposite stories, and the gap between them is the most useful thing I have learned so far.

Google Search Console
Impressions Google serves
25%
75%
Clicks Google sends
55%
45%
Site analytics — all traffic, not just Google
Visitors who actually arrive
76%
24%
Mobile Desktop & laptop

Mobile click-through runs at 0.96% against desktop's 0.27% — roughly 3.6×.

Two caveats worth stating plainly. Month one produced roughly eleven search clicks in total, so 3.6× is a direction, not a stable rate — a couple of clicks either way would move it a lot. And the sources still are not identical: Search Console counts Google organic only, while my analytics counts every arrival, including direct visits and referrals from AI tools. Two weak signals pointing the same way is what made it worth acting on; neither would have been enough alone.

Mobile responsiveness was the single thing AI most reliably got wrong during the build — and my own data says mobile is not a secondary surface here, it is the product.

The tool was wrong in a way I could not see. Only the data would have told me.

Learnings

01AI collapsed execution, so judgment became the bottleneck

When building costs hours instead of weeks, the constraint stops being "can I make this" and becomes "should this exist, for whom, and is it true." The job moved up a level.

02A design system became a control surface

Its purpose stopped being alignment between people and became constraint on a generator. That is a genuinely different thing to design.

03Constraints produced the strategy

No budget chose the imagery approach. No engineer chose the build method. No team chose the scope. The best decisions came from limits, not options.

04The real question is where you refuse to use AI

Generated imagery on a trust product forced me to draw a line. Setting it was worth more to the product than any speed I gained.

05Version control mattered as much as the AI tools

Branches, commits and deploys turn fast generation from a risk into a method. Being able to undo is the precondition for being able to move.

06Trust is built from small refusals

Not from a badge or a promise, but from the image I did not generate, the link I did not place, the listing I did not publish. None are visible to a reader. All of them are the product.

Lets work together

I'm excited to collaborate on innovative projects or simply chat about design and technology. Feel free to reach out if you have an idea in mind or just want to connect!