DirtyBoat: How a Charter Boat Became a Software Company
The story of how DirtyBoat became a working laboratory for booking software, AI agents, and every web tool I now sell to other captains.
Kit Mobley
Islamorada, FL

The name still gets a reaction at the fuel dock
When people hear DirtyBoat for the first time, they either laugh or squint. Both reactions are correct.
The original DirtyBoat was a 1995 32 foot Blackfin Combi Express that Joe Sabe bought with the intention of renaming. He never got around to it. A few charters in, the name stuck, mostly because clients kept booking the “dirty boat” trip by name over the phone. That is how identity works in a fishing town. Whatever the deckhands and the fuel dock call it becomes the legal name eventually.
DirtyBoat 2.0 is a 42 foot Custom Liberty Express, full tournament rigged, offshore only, slipped at Robbie’s Marina at Mile Marker 77.5. No backcountry. No bridges. No flats. If you want a poling skiff and a bonefish, I know four captains I trust. That is not us.
But this post is not really about the boat. It is about what the boat turned into once I started writing code for it.
The booking engine came out of frustration
For years I ran DirtyBoat charters the way most Keys captains do: phone calls, texts, a spreadsheet, a deposit link somebody talked me into. It worked. It also lost me trips.
Someone would text at 11pm from a rental in Key Largo asking about a Thursday. I would be asleep. By 7am they had booked a different boat. Multiply that by a season and you understand why I built the first custom booking engine.
Version one was ugly. It was a single Astro page with a Stripe checkout hardcoded to my three most common trip lengths. Half day, three quarter, full day. No calendar sync, no upsell, no confirmation email that did not look like a phishing attempt. But it took a $500 deposit while I slept, and that was the whole point.
Version two added a real availability calendar backed by Supabase, so I could block dates from my phone between drifts. Version three added Anthropic’s Claude as a conversational layer, which is where things got interesting.
The Claude agent that answers charter questions
The DirtyBoat AI agent handles the questions I used to answer forty times a week.
“Do you fish for tarpon in March?” Yes, but April is better and here is why. “Can we keep what we catch?” Depends on the species, here is the current FWC size and bag limit, and the mate will handle filleting at the dock. “Is there a bathroom on the boat?” Yes. “Do kids get seasick on your boat?” Sometimes, here is what to bring, and if the forecast is above three feet I will call you the night before to reschedule.
The agent is trained on my actual answers. Not scraped, not generic. I sat down one afternoon at Hungry Tarpon with a coffee and typed out every question I have ever answered on the phone, and the answers I actually give. That corpus is what the agent works from. It knows I do not fish backcountry. It knows the deposit is nonrefundable inside 72 hours except for weather, which I call. It knows Robbie’s parking gets tight after 9am and to tell people to arrive by 7:30.
When it does not know something, it says so and offers to text me. That last part matters more than the rest of it combined.
What breaks on a boat teaches you what breaks in code
I did not plan for DirtyBoat to become a client of my own web business. It happened because every problem I hit on the water turned out to be a problem other captains were hitting too.
Cellular coverage between Islamorada and the Gulf Stream is not great. So the booking engine had to work when the confirmation email might not send for six hours. I built retry logic. Then I sold that same retry logic pattern to Miss Penny Charters in Marathon and Just Cuz Fishing up in Key Largo.
Salt destroys everything. Not just boats. Also cheap laptops, cheap phones, cheap thinking. If a client tells me they want a “simple WordPress site” for their charter, what they are really telling me is they want to pay somebody $50 a month for the rest of their life to keep a plugin ecosystem from collapsing every time WooCommerce ships an update. Astro plus Supabase plus Stripe plus SendGrid costs me under $30 a month to run DirtyBoat’s entire operation. That is not a stack choice. That is a survival choice.
Every trip that goes wrong teaches me something about how to write software that assumes things will go wrong. Engines fail. Weather turns. A client misreads the address and shows up at Whale Harbor instead of Robbie’s. Good software plans for the client showing up at the wrong marina. Bad software assumes everyone reads the confirmation email.
The portfolio grew out of the slip
Robbie’s Marina hired me as webmaster in 2016. That partnership is the reason my client list looks the way it looks now. When you spend enough mornings at the same fuel dock, you end up doing sites for the mechanic (Big Beard Boats), the restaurant (Hungry Tarpon), the neighbor captains, the conservation group I ended up running (S.A.F.E., where I am now Vice President), and eventually the community itself (Local Keys Guide, 53 listings and counting).
FishIntel.ai came out of a conversation on the dock about whether an AI could actually predict a good fishing day from tide, moon, barometric pressure, and water temp. Concept to launch in 24 hours. It launched because I had already built four similar data pipelines for DirtyBoat’s internal use, tracking which trips produced which fish under which conditions.
That is the pattern. I build something for my own boat because I need it. I use it long enough to know if it actually works. Then I sell it, or the pattern behind it, to somebody else who needs the same thing.
Why the two hats stay stitched together
People ask me sometimes if I am going to pick one. Captain or developer. As if the two are competing for the same hours.
They are not competing. They are feeding each other. The charter business gives me a real product to test every piece of software I write. The software business gives me the income cushion to keep charter prices honest and to say no to trips I do not want to run. Neither one alone would be as good as both together.
If you want to book DirtyBoat, that number is (305) 209-5594. If you want me to build you something, it is (954) 682-9551. Text either one. I am usually on the water.
SHARE THIS POST