Command Center

🔒 Topher-only. Internal build strategy + vendor commercials. Pairs with the discovery debrief.

✅ 2026-06-10 update. Jason Smith sent the Boats Group API key. All 5 endpoints tested live, 117 boats / $13.2M listed. The "BUILD ON THIS" verdict is now empirically validated. Live test + wiring plan: UJ Boats API LIVE — 6/10. Next milestone — edge-cached Worker proxy shipped + ready for the design layer: UJ Boats API shipped — 6/10.

The 6 platforms — at a glance

BUILD ON THIS

Boats Group / Boat Wizard

Inventory source of truth

BUILD ON THIS

GoHighLevel (GHL)

CRM + automation layer

EMBED — works now

FareHarbor

Carlton Landing rental booking

GATED / OPTIONAL

Lightspeed DMS

Back-office (accounting/service)

EXIT CAREFULLY

DealerSpike

Current website (replacing)

STAYS STANDALONE

App One

F&I / financing (Phase 2)

🏗️

The recommended architecture

The clean build is a custom Astro site with three live connections, leaving their back-office untouched:

🛥️ Boats Group API ──(nightly/near-real-time JSON feed)──▶ Custom site inventory

📝 Site forms ──(CF Worker → inbound webhook)──▶ GoHighLevel (pipelines, follow-up, reviews)

FareHarbor ◀──(Lightframe embed)── Carlton Landing site ──(Zapier)──▶ GHL (rent-to-buy)

🗄️ Lightspeed DMS = stays back-office (accounting/service). Optional 3PA feed later.

💰 App One = "Apply for financing" CTA → lead in GHL → manual handoff (Phase 2).

Why this wins: inventory comes from the system that's already the source of truth (Boats Group), leads land in a CRM they've already partly adopted (GHL), and we don't ask their maxed-out team to run anything. The website becomes the distribution layer they don't have today — which is the actual pain.

🛥️

Boats Group / Boat Wizard — the inventory source

Clean path · proven

The connection: public REST API at api.boats.com — JSON inventory feed with every field we need (make/model/year/price/status/specs) and photos as CDN URLs (incl. 360° arrays + video). This is the same tool that already feeds their site today; we just point a clean site at it. Multiple marine agencies do exactly this.

Access (paperwork, not engineering): UJ requests an API key through their Boats Group rep, and signs a per-dealer data-feed agreement naming Aspire as authorized website provider (their dealer ID is 28802). Boats Group won't let an agency umbrella multiple dealers — must be UJ's own agreement.

Confirm: exact dealer-filter param, photo hotlink-vs-proxy rights, whether their BoatWizard subscription includes API or it's an add-on, refresh cadence.

🔗

GoHighLevel — the CRM layer they already touched

Circa play

Big signal: their tulsalocalbusiness.com site runs active ghl-wizard v2.2.7 with autologin — a prior agency built real GHL infrastructure (contacts, likely pipelines + automations), not just a form. UJ has already half-adopted GHL.

Wiring a custom site in is trivial: site form → Cloudflare Worker → GHL inbound webhook (keeps the token server-side). GHL API v2 (LeadConnector) reaches contacts, opportunities/pipelines, calendars, conversations, forms. GHL's native MCP server (36 tools → 250+ planned) is the agent-driven path for Circa (ties to CLI-51).

Inventory in GHL: Custom Objects can model a "Vessel" record; a Boats Group → GHL sync is ~1–2 days of custom work (Circa + Strat) — later phase, not Phase 1.

Confirm (critical): who owns the existing GHL sub-account (UJ or the prior agency?), is it still active, and what's in it. That decides revive-vs-start-clean.

FareHarbor — Carlton Landing rentals + the rent-to-buy bridge

No approval needed

Embed works immediately: FareHarbor's Lightframe script + a booking link drops into any Astro page (account uglyjohns-carltonlanding, item 617771) — no partner approval. The full External API is partner-gated (only needed for a custom calendar UI later).

The rent-to-buy bridge (no code): FareHarbor → Zapier → GHL (LeadConnector). Every rental customer lands in GHL tagged carlton-landing-rental → "loved your rental? here's how to own one" drip → UJ boat inventory. This is the cheap, high-conversion add I flagged on the debrief.

Confirm: whether UJ has a FareHarbor rep (unlocks API for real-time availability).

🗄️

Lightspeed DMS — gated, keep as back-office

Optional 3PA

It does have an API — the 3PA (Third-Party Access) program — but it's dealer-paid (~$2K setup + ~$175/mo per location), nightly batch, read-only (inventory, customers, deals, service), no webhooks. The GM's "it's standalone" is financially/procedurally true, not technically absolute.

Verdict: we do NOT need it for Phase 1 — inventory comes from Boats Group, leads go to GHL. Keep Lightspeed as the back-office MVP-keep. Only enroll 3PA if a later phase needs DMS data (e.g., service history, Eric's financial-reporting ask).

Confirm: are they already 3PA-enrolled? How does inventory reach Boat Wizard today (almost certainly manual)?

🚪

DealerSpike — the exit (handle with care)

Contract + DNS

Good news: the domain is registered at GoDaddy and UJ controls it — nameservers are delegated to DealerSpike, but UJ swaps them on launch day; DealerSpike cannot hold the domain hostage. Inventory isn't trapped either (it lives in Boat Wizard).

The traps: 30-day written cancellation notice before renewal; fees are non-refundable; ToS lets them require a signed agreement before releasing data; BBB shows a pattern of billing-after-cancel. CMS pages, leads, and photos have no clean export — capture them (crawl + manual export) before giving notice.

SEO: build a 301 redirect map from the old /default.asp?page=... URLs, and capture the DNS zone (especially MX/email records) before the nameserver swap or email breaks on launch day.

Confirm: contract end date, whether notice has been sent, who has the GoDaddy login.

💰

App One — financing, stays standalone

Phase 2+

App One (Wolters Kluwer) is UJ's indirect-lending portal — routes a credit app to 100+ lenders, the marine equivalent of RouteOne. It exposes only a hosted credit-app link, no public API or embeddable pre-qual widget.

Phase 1: an "Apply for Financing" CTA that captures the lead in GHL first, then hands off. Deeper first-party pre-qual is the bank-gated later phase Topher already flagged — an App-One/IT conversation, not an Aspire build.

📋

What UJ has to go get (the access checklist)

Boats Group API key + data-feed agreement naming Aspire as website provider (dealer ID 28802) — via their Boats Group rep.

GHL sub-account ownership + credentials — confirm whether the existing (tulsalocalbusiness) GHL account is theirs and still active.

DealerSpike contract terms — end date, notice window, GoDaddy login holder.

Lightspeed — confirm 3PA status + how inventory reaches Boat Wizard today.

FareHarbor rep — for optional API access on Carlton Landing.

Tracked in Linear: CLI-127 (integration access) · CLI-128 (page-speed send) · CLI-129 (brand content) · CLI-130 (follow-up meeting). Per-platform raw research in /tmp/uj_int_*.md.