The Platform

One backend.
Already proven.

The jet site never talks to the booking engine directly — it talks to one Cloudflare Worker that holds every key. That Worker already runs in production today. Adding jets means teaching it the jet catalog, not building a new business.

The Storefront — booking funnel
The Jet Brand Site
Own domain, jet IRIS persona. Where Eric's charter and dealer contacts land to pick a size class, an airport, and a slot. This site, essentially.
▼   clean endpoints   ▼
The Adapter — the smart layer
Cloudflare Worker · photography-assistant
/availability · /book · /customer/* · /chat · /auth/*
Holds every secret. Already in production for the real-estate booking — jets just add a second product catalog.
▼   ARYEO_API_KEY — server-side only   ▼
The Engine — never customer-facing
Aryeo + Stripe
Orders · appointments · availability · customers · galleries · payments. White-labeled; clients never see it.
State
Cloudflare KV
Sessions, profiles, IRIS knowledge — namespaced per brand.
Email
Resend
Branded booking confirmations.
The one rule that makes this work The booking-engine key never leaves the Worker. The site and the iOS app are dumb clients. That's why standing this up is cheap — and why if Aryeo ever becomes a problem, the engine can be swapped out behind the Worker without touching the site.

Build vs. Reuse

What we actually have to build.

Four small things. Everything else is already running in production.

New — small
  • New jet service products in Aryeo (the catalog).
  • New jet keys in the Worker's SERVICE_MAP (prices, durations, IDs).
  • A jet-branded front-end on its own domain (this site).
  • A little jet field-mapping — airport address, cabin size, aircraft data.
Reused — zero new work
  • Availability + booking engine
  • Payments & receipts (Stripe via Aryeo)
  • IRIS assistant + booking tools
  • Customer accounts & auth
  • Galleries & the delivery portal
  • The iOS app's booking path

Under the Hood

The stack, as it exists today.

For the technically curious — nothing here changes for jets.

LayerWhatRole
Front-endAstro 5 + TS on Cloudflare PagesThe booking site. Static, fast, cheap.
AdapterCloudflare WorkerAll logic + secrets. The brain.
EngineAryeo (REST API)Orders, appointments, availability, galleries.
PaymentsStripe via AryeoOne merchant account, checkout links.
StateCloudflare KVSessions, profiles, IRIS knowledge.
AssistantIRIS = ClaudeChat, quoting, staged booking.
EmailResendTransactional confirmations.
AuthEmail OTP → 24h sessionLight, secure, no passwords.

The Assistant

IRIS already knows how to book. She just learns to talk jets.

IRIS is the Claude-powered assistant that already quotes and books on the real-estate side. We don't rebuild her — we extend her. She loads a jet persona, quotes only jet products, and sees the whole schedule so she never double-books a shooter.

  • Knows size-class guidance, FBO access notes, and prep checklists.
  • Flags VVIP / airliner jobs as leads, not instant bookings.
  • Never promises aerial/drone without confirming airport permission.
  • Routes each job to the nearest available shooter.
Jet in flight over clouds

Proven, then pointed at jets

Same chat infrastructure, same booking contract, same iOS decode path that already works. Jets just add the catalog and the voice.

Next: what we sell, and for how much.