Skip to content
Scott Carr Web Design
← All work

Case study · AI search · CMS migration

Visit Naples

Naples' independent visitor guide, written by full-time residents. Rebuilt in 2026 on our own platform, with "Ask Visit Naples," an AI assistant that answers from our own listings.

  • AI assistant grounded in our own listings
  • One codebase, two destination guides
  • From Craft to AI-first in under a month
RoleCo-owner, publisher & engineerRegionNaplesNext.jsSupabaseClaude APICloudflare Workersvisitnaplesfl.com ↗
visitnaplesfl.com
Visit Naples homepage

The problem

Visit Naples ran on a Craft CMS multi-site alongside Visit Marco Island, and Craft served it well for years. What changed was how visitors search. They type “waterfront seafood, a house for 8, happy hour downtown.”

Generic AI chat answers those questions with confident guesses, including places that closed years ago. For a publisher whose whole value is trust, that’s a non-starter.

What I built

A platform we own end to end: a pnpm and Turborepo monorepo running Next.js 16 on Cloudflare Workers, with Supabase Postgres underneath. One app serves both Visit Naples and Visit Marco Island and picks the brand from the hostname. A shared admin CMS, a partner portal and Naples Resident live in the same repo.

Side-by-side comparison of the Craft CMS Visit Naples homepage and the new platform
The parity check. Live Craft site on the left, new platform on the right. Every live URL was inventoried, and key pages were compared side by side before cutover.

Ask Visit Naples

The assistant sits in the hero and on every page. The main design choice: search our database first, then let the model pick from what it found.

  • Search runs in Postgres. Full-text search covers our own listings, guides, events, deals and rentals.
  • The model picks listings by ID. IDs are checked against the database, and the result cards render from Postgres, so recommendations point to places in our guide.
  • Different models for different steps. Claude Haiku 5.5 routes the question, Sonnet 5.5 writes the answer, and Opus 5.5 builds day and weekend plans. Past a daily budget, the router’s model takes over writing too, at about a tenth of the cost.
  • Nine search tools. Places, tours, local guides, venues, rentals, events, deals, beach conditions and lookup by name.
  • Monitored. Bot checks, edge rate limits, every answer logged with its cost, an eval suite, and a daily health check.

The data behind it

  • Vacation rentals sync daily from two local agencies’ booking systems, with photos moved to Cloudflare Images.
  • Events stream live from Events Naples, the events platform I run.
  • Opening hours refresh monthly.
  • Listing copy is drafted with Claude, then a separate verification pass checks it.
visitnaplesfl.com/restaurants
Visit Naples restaurants guide page
Visit Naples homepage on a phone
Editorial guides stay human-written. The AI works on top of them, not instead of them.

How it was built

I built it with Claude Code. Through October 20, 2026, the repo had 117 commits, and 101 of them are co-authored with Claude. It has 100 database migrations, and it moved from Craft to the new platform in under a month, from first commit on September 23 to live on October 16, 2026.

Why it matters for clients

Any business with a catalog can have this: inventory, providers, properties, menus. Customers ask in plain English and get answers drawn from your own data.