HomeAboutWorkServicesPluginsBlogContactstart_a_build
Florida Keys· 6 min read

DirtyBoat: The Charter, The Code, The Booking Engine

The story behind DirtyBoat 2.0, why the name stuck, and what I learned building a custom booking engine for my own charter at Robbie's MM 77.5.

KM

Kit Mobley

Islamorada, FL

DirtyBoat: The Charter, The Code, The Booking Engine

The name was supposed to change

The original DirtyBoat was a 1995 32 foot Blackfin Combi Express. Joe Sabe bought it. The name on the transom was a placeholder, the kind of thing you scribble on a registration form when you have not picked the real name yet. Joe figured he would change it after a season.

Then a few charters came back, the name spread by word of mouth at the dock, and that was that. You do not rename a boat that paying customers already know.

I inherited the name when I took over running charters out of Robbie’s. DirtyBoat 2.0 is a 42 foot Custom Liberty Express, full tournament rigged, sitting in slip at Mile Marker 77.5. Offshore only. No backcountry, no bay, no bridges, no flats. If you want a poling skiff for tailing reds, I am not your captain. If you want to run blue water for sails, mahi, tuna, and wahoo, that is what the boat is built for.

Why I built the booking engine myself

Most charter captains in the Keys book through FareHarbor, OpenWater, or a paper calendar taped to the helm. FareHarbor is fine. I use it for affiliate flow on Robbie’s Marina, which has pushed $7.1M+ in online revenue through that network since 2016. It works.

But for DirtyBoat specifically, I wanted something different. I wanted the booking flow to know things FareHarbor does not know. Tide windows. Sargassum reports. Whether the sails are running off Alligator Reef this week. Whether the customer is asking about a half day when the only thing biting in that window is a full day run to the humps.

So I built it. Astro front end, Supabase for state, Stripe for payment, and an Anthropic Claude agent sitting in the middle. The agent reads inbound charter requests, checks the calendar, knows my rules (no backcountry, two anglers minimum on overnights, deposit policy, weather cancellation terms), and either books the trip or routes the conversation to me by text.

The result: I stopped losing trips at 11pm on a Tuesday when somebody from Ohio is planning their week and I am asleep because we left the dock at 5am.

What the agent actually does

People ask me what an AI agent on a charter site does that a form cannot. Fair question.

A form collects data and dumps it in your inbox. You read it at 9pm, you reply at 10pm, and by then the customer has booked with the captain three slips down who answered in twenty minutes. That is the entire problem with charter booking. Speed of reply correlates almost perfectly with conversion.

The agent answers in seconds. It also answers correctly. If someone asks about light tackle tarpon in May, the agent tells them we are offshore only and suggests two captains who run backcountry out of Robbie’s. That referral is worth more than a bad booking. The customer gets the right boat, the other captain gets a trip, and nobody walks away from the dock disappointed that DirtyBoat does not do what they thought it did.

If someone asks about sailfish in February, the agent confirms availability, quotes the trip, sends a Stripe deposit link, and writes the booking to Supabase. I get a text. The customer gets a confirmation. Done.

What the website teaches the developer side

Running my own charter site is the best web dev research I have. Every assumption I would make about a client site, I get to test on myself first, with real money on the line.

A few things I learned that I now bake into every charter client I build for.

The phone number has to be a text number. Charter customers do not call. They text from the parking lot of a Publix in Plantation, Florida, asking if tomorrow is open. If your contact button opens a voice call, you lose the booking. DirtyBoat charter line is (305) 209-5594, and it is set up so taps from mobile go straight to SMS.

The gallery has to load fast on bad cellular. People look at charter sites in the car, on US-1, between Florida City and Key Largo, where coverage drops to one bar. If your hero image is a 4MB JPEG you are invisible to half your buyers. Astro with proper image optimization handles this. WordPress with a stock theme does not.

The address has to be a marina, not a street. Mile Marker 77.5 means something to anyone who has driven the Keys. The street address of Robbie’s means nothing to a customer trying to find the dock at 5am. Every charter site I build now has mile marker plus marina name in the meta description, in the schema, and in the first sentence of the contact section.

Two hats, one workshop

I get asked how I do both. Charter captain in the morning, developer in the afternoon. The honest answer is that the two jobs feed each other.

The boat pays for the development habits I would not otherwise have. Writing code that runs unattended for a week while I am offshore with no signal teaches you to build for failure in a way that comfortable office work does not. If the booking engine breaks at noon on a Saturday and I am 22 miles out on a kite spread, the system needs to either keep working or fail in a way that does not lose the customer.

The development work pays for the boat improvements that make the charter better. Last winter I rebuilt the live well plumbing with money from a Vice Alliance project. The year before, new electronics. The year before that, full tower rigging.

This is also why I do not build websites for clients I would not respect as a customer. I have a slip to pay for. I do not have time to argue with a contractor about whether their site needs a carousel.

If you found this page searching for DirtyBoat

If you came here looking to book a charter, the boat is at Robbie’s Marina, MM 77.5, Islamorada. Booking line: (305) 209-5594. Trips run year round, offshore only, two anglers minimum on full days.

If you came here looking at the web dev side, the booking engine that runs DirtyBoat is the same architecture I build for other charter captains, marinas, and Keys businesses. Astro, Supabase, Stripe, Claude. Text me at (954) 682-9551 or email km@kitmobley.com. I usually reply between trips.

Either way, the name stuck. I am keeping it.