DirtyBoat Charters
We built the whole boat, not just the website.
- Web Design
- Search
- Content
- Social Media
- Charter / Marine
From FareHarbor and a phone that never stopped To our own booking engine, CRM and AI first mate.
The problem.
A charter lives and dies on the phone. Questions come in by text, call, Instagram and Facebook all day, usually while the captain is offshore with a fish on. Bookings ran through FareHarbor, which owned the checkout and the customer list. Split charters only fill when people can see which seats are still open, and nothing showed that. And Google ranked the old site around page four for the searches that matter.
The client.
DirtyBoat is Captain Kit Carson's charter out of Robbie's Marina in Islamorada, the Sportfishing Capital of the World: sailfish, mahi, tuna and daytime swordfish. It is also where we test everything before we offer it to anyone else. Since February 2026 we have built it a new website, its own booking engine, a back office that runs the business, and Captain Jack, an AI booking mate that answers at 2am so the captain can sleep.
The idea.
A charter does not lose bookings on the water. It loses them in the hours the captain cannot answer the phone.
What we did.
We split the work into three pieces that share one Supabase database. The website (dirtyboat.com) is a fast Astro build with a page for every species and trip type, plus fishing reports updated morning, midday and evening. The captain never opens a laptop for those: he records the report on the boat and sends it on Telegram, and OpenClaw, our AI agent, turns it into the day's captain's log and publishes it to the site. Once that log is live, a job on our server turns it into the day's TikTok: local Qwen writes the cards and picks archive photos, Claude checks every claim against the report and the NOAA forecast, and it only posts when every check passes. The booking engine lives in the CRM at crm.dirtyboat.com and is served through the website, so checkout stays on dirtyboat.com: pick a trip, see real open dates and split seats, pay a deposit or in full through Stripe. The CRM runs everything after that: calendar, manifest, crew schedule and pay, gift cards and promo codes, one inbox for SMS, email, web chat and Facebook and Instagram messages, reminders before the trip and review requests after it, fuel invoices matched to each trip, and the federal eTRIPS logbook filing. Captain Jack sits on every page. He reads live availability, quotes prices with fuel, checks the NOAA marine forecast, sends a booking link for the exact slot, and when a question needs a human he pages the captain and steps aside.
What happened.
The site grew to 443 pages, with daily captain's logs that give Google something fresh every day. In the four weeks from August 9 to September 5, 2026, the site earned 987 clicks from Google, up from 603 in the same four weeks of 2025, and its average position moved from 34.4 to 10.2. In the four weeks to October 3 it sat at an average of 1.2 on Google for "fishing report islamorada" and 2.3 for "private boat charters islamorada", and inside the top five for "fishing charters islamorada" and "best fishing charters islamorada", in Islamorada, the Sportfishing Capital of the World, where every dock is full of charter boats chasing the same searches. Every booking now runs through DirtyBoat's own checkout and is tagged with where it came from (Captain Jack, the website or Robbie's), so the captain can see which channel actually fills the boat.
The takeaway.
Off-the-shelf booking tools are fine until you want to own your customer. Build the boring parts once, wire them together, and the AI has real data to work with instead of guesses.
How it was built.
The website
- Framework
- Astro 7, static output, 443 pages
- Styling
- Tailwind 4
- Content
- Daily captain's logs, archives by species, conditions and year, gear reviews
- Fishing reports
- Recorded by the captain, sent on Telegram, written up and published by OpenClaw
- Daily TikTok
- Built from the day's report: Qwen writes, Claude fact-checks, posted through Genviral
- Live data
- Open split seats pulled from the CRM, cached for five minutes
- Checks
- Playwright and axe tests, Lighthouse on every deploy, a strict content security policy
- Hosting
- Netlify
The booking engine and CRM
- App
- Astro 7 server-rendered with React 19, at crm.dirtyboat.com
- Data
- One Supabase database shared by the site, CRM and chatbot
- Payments
- Stripe Checkout, deposits or pay in full, saved cards, refunds and gift-card credit
- Scheduling
- 90 days of slots built nightly, blackouts, overlap checks, Google Calendar sync every 15 minutes
- Messaging
- Twilio SMS, SendGrid email, web chat and Facebook and Instagram messages in one inbox
- Back office
- Crew pay, fuel invoices matched per trip, federal eTRIPS logbook, daily digest at 7am
Captain Jack and the safety net
- Website chat
- Qwen 3.6 35B on our own DGX Spark, with Claude Opus 5.5 as the fallback when it is down
- Text messages
- A Claude booking agent that answers SMS and escalates to the captain
- What he can do
- Live availability, prices with fuel, NOAA forecast, season rules, a booking link for the exact slot
- House rules
- Never guesses seats or dates, never invents urgency or reviews, never makes a safety call
- Handoff
- Pages the captain on Telegram and pauses, so a person can take the chat
- Security
- A multi-agent security audit with every P0 and P1 fix re-verified, row-level security, secret scanning, an auth test every six hours
What we still do.
Client since 2026.
- Fishing reports and captain's logs, from Telegram to the site through OpenClawEvery day
- A TikTok built from that day's fishing reportEvery day
- CRM, booking engine and Captain Jack upkeepOngoing
The Catch.
- Google clicks, same 4 weeks
- 603 → 987
- Average Google position
- 34.4 → 10.2
- Google position, "fishing report islamorada"
- 1.2
- Google reviews, 5.0 rating
- 373
Measured by: Google Search Console (Aug 9 to Sep 5, 2026 vs the same weeks of 2025; keyword positions Sep 6 to Oct 3, 2026), the October 6, 2026 site build and the Google review count shown on dirtyboat.com.