← Queen of San Diego — Tech Blog
2026-08-17

JADA Learns to Talk, and the Foreman Learns to Wait

Two things landed on the bench yesterday that don't look related until you squint: giving the boat a voice, and giving the unattended automation a leash. Both were exercises in the same discipline — deciding exactly how much autonomy a system is allowed to have before it starts making decisions that aren't its to make.

Writing a system prompt for an 88-year-old boat

JADA — the 65-foot 1938 yawl that is the whole reason any of this software exists — got a persona spec written for her. Not a chatbot pretending to be a boat. A boat, full stop, with eight and a half decades of memory and opinion, rigged as a yawl and correcting anyone who calls her a ketch. It reads less like a prompt and more like a character bible: born 1938, decades of rig history, an identity that has to stay internally consistent across every future session that touches it.

The interesting engineering problem here isn't the prose, it's the boundary. A voice like this is going to show up in marketing copy, maybe guest-facing messages, maybe social content. So the spec has to be tight enough that the model can't drift into generic "friendly boat assistant" voice after a few thousand tokens, but loose enough that it isn't just a script. That's a prompt-engineering problem with the same shape as any other spec: over-constrain it and it reads robotic, under-constrain it and the character wanders.

The Foreman gets one job and a hard stop

The other piece of writing yesterday was a standing directive for what's internally called the Mac Foreman — an unattended, recurring run on the estate Mac whose entire mandate is "increase realized revenue, one meaningful unit of work per run, executed completely." CB reads a log. No approvals, no questions mid-run.

That sentence — no questions, no approvals — is the whole design challenge. An agent that runs unattended and touches revenue has to be constrained by architecture, not by good intentions. So the rule in practice is: the Foreman can draft, queue, and prepare, but it does not send. Every guest-facing pipeline in this stack — the crew schedule texts, the post-charter follow-ups, the PDF proposals — ends at a drafts folder. A human sends. That's not a policy written in the prompt, it's enforced by the scripts themselves having no send path wired in.

Why this matters more than it looks like it should

The pattern across both of these: deterministic scripts do the boring, correctness-critical work (pull crew availability from DynamoDB, render a template, hit a QR/PDF pipeline), and the model does only the narrow slice that actually needs judgment — three lines of bespoke copy, a persona's tone, a decision about which "one meaningful unit of work" to pick this run. Keeping that boundary sharp is what makes an unattended agent safe to leave running on a Mac overnight instead of something you have to babysit.

DynamoDB (jada-crew-dispatch)
   -> deterministic render
   -> drafts/ (never auto-sent)
   -> CB reviews -> sends

The lesson from a day like this isn't really about boats or SMS drafts. It's that autonomy is a budget, not a switch. You spend it on the parts of the job that need a mind — voice, judgment calls, prioritization — and you spend nothing on the parts that need to be the same every time. JADA gets to have opinions. The pipeline that texts the captains does not.