HarbourMaster AI is a Cloudflare-native front-desk app for voice, SMS, email, and web enquiries. It combines conversational intake with approved marina knowledge, deterministic pricing, tenant-scoped records, and a dashboard staff can inspect.
Every enquiry can enter one shared workflow.
Quotes come from deterministic tools, not guesswork.
Transcripts, tool calls, and outcomes remain reviewable.
Every inbound request enters through Hono on Cloudflare Pages, then flows through deterministic tools and D1-backed audit records. Roadmap services are marked directly in the diagram.
Inbound enquiries are captured, normalized, checked against approved tools, and saved for staff review.
Prospective marina teams can leave details for follow-up.
Kimi K2.6 powers the agent reasoning and tool-calling path.
Marinas, slips, rate cards, inquiries, bookings, events, leads, and Agent Memory.
Request caps, payload guardrails, idempotency, and edge-ready config.
Companion Worker supports inbound email and staff-visible follow-up.
Webhook paths support the phone and text message channels.
Important, but not claimed as live until bindings and code prove it.
Stateful sessions per marina and conversation for richer multi-turn calls.
Contracts, call recordings, transcripts, and attachments.
Semantic retrieval upgrade for larger policy and historical corpora.
AI observability, caching, provider fallback, async sync, and retries.
The agent combines Kimi reasoning, staff-approved D1 memory, speech input, and voice output without letting retrieved text override deterministic tools.
Primary reasoning model. MoE architecture activates only relevant expert sub-networks per token, keeping inference cost low at high volume.
Live retrieval layer for marina policies, procedures, amenities, and FAQs. Staff upload PDFs or paste text, then enabled chunks are injected into every channel.
Roadmap speech-to-text layer. The current voice path accepts Twilio Gather speech transcripts and routes them into the same Kimi K2.6 loop.
Text-to-speech for voice responses. ElevenLabs for production-quality voices; Workers AI MeloTTS as a zero-latency fallback.
Agent Memory is the live RAG path for marina operations. Original files are not retained; the app stores extracted Markdown, document metadata, and retrieval chunks in D1, then injects up to four relevant enabled snippets into each Kimi K2.6 request.
Staff add PDF, TXT, Markdown, CSV, or direct policy text from /agent-memory.
Workers AI toMarkdown extracts readable text from PDFs and documents.
Markdown is normalized, capped, chunked, keyword-indexed, and scoped by marina_id.
Web, email, SMS, and voice retrieve policy snippets before the agent replies.
Memory can answer policies, procedures, amenities, and operational FAQs. Pricing still flows through quote_price, and slip availability still flows through check_availability.
Before Kimi K2.6 answers, the Worker retrieves relevant enabled memory chunks. The model still calls these tools via native function-calling for operational state and customer commitments.
Queries D1 for matching slips with date-overlap exclusion and vessel dimension filtering.
Deterministic pricing engine: base × season × DOW × occupancy × events. Never LLM-generated.
Demo placeholder today. R2 PDF storage and DocuSign envelopes are roadmap.
Payment-pending response today. Stripe Checkout is roadmap.
Writes confirmed booking to D1 and keeps external PMS sync as roadmap.
A 6th tool the agent can call at any point to route the conversation to a human. Triggered automatically when confidence drops below threshold, dollar cap is exceeded, or max turns is reached.
9 tables, all scoped by marina_id for strict multi-tenant isolation.
marinas
Tenant root table. One row per marina property.
slips
Physical slip inventory with dimensions and amenities.
rate_cards
Pricing configuration with JSON curve definitions.
agent_configs
Per-marina AI agent personality and guardrails.
agent_memory_documents
Uploaded or pasted staff knowledge converted to Markdown.
agent_memory_chunks
Retrieval chunks automatically injected into Kimi context.
inquiries
Every inbound interaction across all channels.
bookings
Confirmed reservations with PMS sync status.
events
Full audit trail for every action the agent takes.
Every live D1 query and booking/inquiry/event path is scoped by marina_id. Roadmap storage surfaces like R2, Vectorize, Queues, and Durable Objects should keep the same tenant prefix rule when added.
The LLM never generates prices. Every dollar amount comes from this formula, executed deterministically on the Worker.
LLMs are great at conversation but unreliable at arithmetic. A hallucinated price creates legal liability and erodes guest trust. By running pricing as a pure function on the Worker, the agent can confidently quote exact rates that match your published rate card.
Production AI needs more than vibes. These are hard constraints, not suggestions.
The voice path is designed around Twilio webhooks, speech transcripts, tool-backed answers, and staff-visible records.
Guest calls or texts the marina number.
ChannelHono validates the request and applies guardrails.
RuntimeTranscript → reasoning → tool calls → customer-safe response.
AgentInquiry metadata, transcript, events, and outcomes are saved.
RecordTwiML returns the next prompt or spoken answer.
ResponseThe dashboard shows the trace and handoff state.
DashboardEverything that powers HarbourMaster AI, in one table.
| Layer | Technology | Purpose |
|---|---|---|
| Framework | Hono 4 | Lightweight, fast web framework for Workers |
| Build | Vite + @hono/vite-build | SSR bundle for Cloudflare Pages |
| Runtime | Cloudflare Workers | V8 isolates at 300+ global PoPs |
| LLM | Kimi K2.6 (MoE) | Reasoning + native function-calling |
| STT | Twilio SpeechResult live; Whisper roadmap | Transcript input now, raw audio STT later |
| TTS | ElevenLabs / MeloTTS | Natural voice synthesis |
| Database | Cloudflare D1 (SQLite) | Relational data, multi-tenant |
| Agent Memory | D1 chunks + Workers AI Markdown Conversion | PDF/text policy retrieval |
| KV Store | Cloudflare Workers KV | Request caps, payload caps, idempotency, and edge config |
| Object Storage | Cloudflare R2 (roadmap) | Contracts, recordings, attachments |
| Vector DB | Cloudflare Vectorize (roadmap) | Semantic RAG upgrade for larger corpora |
| Sessions | Durable Objects (roadmap) | Stateful multi-turn agent sessions |
| Gateway | Cloudflare AI Gateway (roadmap) | LLM caching, rate limits, fallback |
| Queues | Cloudflare Queues (roadmap) | Async PMS sync, notifications |
| Auth | Google OAuth 2.0 + JWT | SSO for dashboard with session cookies |
| Voice | Twilio webhooks live; Media Streams roadmap | Telephony ingress/egress |
| Cloudflare Email Service + Resend fallback | Native inbound/outbound email path | |
| SMS | Twilio Messaging | Text message channel |
| Payments | Stripe Checkout (roadmap) | Guest payment collection |
| Contracts | DocuSign (roadmap) | E-signature for rental agreements |
| PMS | DockMaster API (roadmap) | Property management sync |
| Alerts | Slack API (roadmap) | Staff notifications & escalations |
| Frontend | Tailwind CSS + Space Grotesk | Utility-first styling, Abyssal Intelligence theme |
| TypeScript | ES2022 target | Type-safe Workers code |
Register your interest and I will follow up directly.