Carwash Con East (NRCC)Meet the Nautilus team at Booths 753 & 754 in Atlantic City, Oct 6–7.

Book a meeting
Nautilus

900 words|Ali Sareini|Nautilus Engineering

How We Designed Shipyard

We gave an agent a real computer and a real playbook. Then we did a lot of work to keep the quality high.


SHIPYARD HAMMERHEAD CRANE TROLLEY HULL BLOCK LOWERED INTO PLACE ANCHOR DOCK GATE SEA BUILDING DOCK DRAINED FOR CONSTRUCTION KEEL BLOCKS LONGITUDINAL SECTION · NOT TO SCALE
FIG_000Shipyard — building dock

Last summer we launched Shipyard, an AI website builder for car washes. That post was the origin story. This one is about the design decisions behind it.

NAUTILUS MEMBERSHIPS CUSTOMERS LOCATIONS CRM CHECKOUT ATTRIBUTION ISOLATED SANDBOX ONE PER PROJECT PREVIEW CAR WASH FOUNDATION STARTER COMPONENTS CAR WASH PLAYBOOK SKILLS AGENT CONVERSATION PLAIN-ENGLISH REQUESTS
FIG_001Shipyard project — exploded view

Give the agent a real environment

Most AI builders keep the model on a short leash. Change this text, swap this color, pick from these templates. It’s safe, and it’s why the output looks the same everywhere.

We went the other way. Every Shipyard project runs in its own isolated sandbox: a full working environment where the agent can install what it needs, run the project, look at the result, and try again. It can read a customer’s existing site, pull down assets, write code, start a preview, and check its own work.

Our bet was that an agent with a capable environment builds better websites than an agent with a menu.

A · THE MENU THREE CONTROLS, FEW OUTCOMES CHANGE THIS TEXT SWAP THIS COLOR PICK A TEMPLATE A B C OUTPUT A B C SAME LAYOUT EVERY TIME B · THE ENVIRONMENT INSTALL, RUN, LOOK, TRY AGAIN ISOLATED SANDBOX READ SITE PULL ASSETS INSTALL WRITE CODE START PREVIEW CHECK TRY AGAIN RESULT EXIT TAKEN ONLY WHEN THE CHECK PASSES
FIG_002Menu vs environment

An agent with this much room can make mistakes a template never would. We accepted that trade-off and made the environment itself the safety boundary.

Every project gets its own sandbox

Nothing is shared between customers. A mistake in one project can’t touch another. A customer’s brand assets, offers, and code live only in their environment.

PROJECT A ROOF REMOVED FOR CLARITY NOTHING SHARED NO DOORS, PIPES OR OPENINGS PROJECT B SAFETY BOUNDARY ROOM B'S WALLS PROJECT C OFFERS FAULT A MISTAKE IN ONE PROJECT CAN'T TOUCH ANOTHER CODE BRAND ASSETS
FIG_003Sandboxes — isometric cutaway

Isolation is also what makes customization possible. Because every project is a full environment rather than a row in a shared configuration, there’s no ceiling on what can be built. A landing page and a maintenance tracker get the same room to work in.

Customers have already used Shipyard to build:

  • churn prevention apps
  • custom maintenance apps
  • weather alert systems
  • marketing websites and landing pages
  • a long tail we didn’t plan for
01 CHURN PREVENTION 02 MAINTENANCE 03 WEATHER ALERTS 04 MARKETING SITE 05 LONG TAIL AT RISKAT RISKSEND OFFER OKOKDUEOKOKDUEOK ALERT JOIN AND A LONG TAIL WE DIDN’T PLAN FOR EQ EQ EQ EQ EQ SAME SANDBOX · SAME ROOM TO WORK IN TYPICAL SCREENS, SCHEMATIC — NOT TO SCALE
FIG_004Customer builds — specimen sheet

There’s no reason someone using Shipyard couldn’t rebuild Nautilus itself, or build the internal tool their operation has always needed and never had the budget for.

The agent knows what a car wash website should be

A powerful agent with no direction builds a generic site, fast.

Before Nautilus, Amayr and I built car wash websites by hand for years. We know what a location page needs, how to explain a membership versus a single wash, where the “Manage My Membership” link goes, how a campaign page should line up with the offer being measured. That knowledge became structured skills the agent carries into every project: specific, opinionated playbooks for how these sites should work, rather than general style guidance.

PLAYBOOK CAR WASH SITE CAMPAIGN PAGE 01 LOCATION PAGE 02 MEMBERSHIP VS SINGLE WASH 03 MANAGE MY MEMBERSHIP 04 CAMPAIGN MATCHES OFFER MANAGE MY MEMBERSHIP HOURS DIRECTIONS AMENITIES SINGLE WASH ONE-TIME MEMBERSHIP MONTHLY JOIN MANAGE MY MEMBERSHIP JOIN SAME OFFER, MEASURED IN THE HEADER, EVERY PAGE GOES TO SELF-SERVICE OPINIONATED PLAYBOOKS, NOT STYLE GUIDANCE
FIG_005Car wash playbook — annotated site

Then we connected those skills to the rest of Nautilus. The agent knows how to:

  • use our APIs for memberships, customers, and locations
  • embed our forms so leads land in the CRM
  • wire up our e-commerce so a package button opens real checkout
  • place everything correctly so attribution and tracking work from day one

A generic builder produces a brochure, while Shipyard produces a surface that is already plugged into the operation.

A · BROCHURE LOOKS THE SAME, GOES NOWHERE JOIN TRACKING TAG N/C IN THE PAGE HEAD PACKAGE BUTTON N/C LOCATION + N/C MEMBERSHIP DATA LEAD FORM N/C B · SHIPYARD SURFACE ALREADY PLUGGED INTO THE OPERATION JOIN NAUTILUS TERMINAL BLOCK W4 W1 W3 W2 W4 · ATTRIBUTION FROM DAY ONE W1 · CHECKOUT OPENS REAL CHECKOUT W3 · API MEMBERSHIPS, CUSTOMERS, LOCATIONS INTO THE PAGE W2 · CRM LEADS LAND IN THE CRM N/C — NOT CONNECTED SAME PAGE, DRAWN TWICE — ONLY THE WIRING DIFFERS
FIG_006Brochure vs surface — wiring

Where we borrowed

We paid close attention to platforms like Lovable. Two ideas carried over directly: each agent gets its own isolated sandbox, and each project starts from initial components that point the agent in the right direction instead of a blank page.

We made those ideas domain-specific: the starting point is a car wash foundation rather than a general web app, the skills come from our own years of building these sites, and the ecosystem it plugs into is Nautilus.

The system has to survive its own failures

An agent doing real work will hit problems. Sessions run long. Sandboxes get interrupted. A model call fails halfway through a task.

ONE LONG SESSION TIME REQUEST AGENT STEPS MODEL CALL SANDBOX PROGRESS COMMITS WITHOUT ADD THE UNLIMITED CLUB OFFER 1 2 3 4 4 5 6 DONE FAILED HALFWAY RETRY RUNNING INTERRUPTED RESUMED, SAME FILES PICKS UP HERE AUTO-COMMIT 1 2 3 4 1 2 3 4 5 6 DONE START OVER WORK REDONE DASHED LANE: THE SAME REQUEST WITHOUT A DURABLE CONNECTION. DURATIONS NOT TO SCALE.
FIG_007Interrupted session — timing diagram

We designed for that from the start. The connection between the agent and its sandbox is durable: work survives a crash and picks up where it left off. Every change the agent makes is committed automatically to a version control system, so nothing is lost and every version can be previewed, compared, and rolled back.

V1 INITIAL SITE AUTO-COMMIT V2 ADD THE UNLIMITED CLUB OFFER AUTO-COMMIT V3 FOURTH OF JULY LANDING PAGE AUTO-COMMIT V4 FULL-WIDTH PACKAGE SECTION AUTO-COMMIT CURRENT ROLL BACK BACK TO V2 COMPARE V1 → V2 PREVIEW V3, PULLED OUT NOTHING IS LOST
FIG_008Version stack — exploded view

From the customer’s side it looks simple: a conversation that never loses your work. Getting there was one of the harder problems in the whole system.

What we don’t show

We don’t hand the agent a raw sandbox and hope. A lot of setup happens before a customer types their first request. Foundations, guardrails, and quality checks are in place so the first result is good.

T=0 · FIRST REQUEST TIME IN PLACE BEFORE THE FIRST REQUEST FOUNDATIONS DETAIL WITHHELD GUARDRAILS DETAIL WITHHELD QUALITY CHECKS DETAIL WITHHELD READY, NOT RAW SANDBOX FIRST RESULT GOOD, NOT JUST FAST RAW SANDBOX + HOPE NOTHING IN PLACE SHEET INTENTIONALLY INCOMPLETE = IN PLACE
FIG_009Before the first request

There’s more we won’t get into. The skills, the setup, and how the pieces fit together are where most of the work went. They’re why Shipyard’s output looks like it came from a team that has spent years building car wash websites, because the playbooks did.

Why this matters

For customers: Shipyard is a general-purpose builder with deep car wash knowledge and direct access to the Nautilus ecosystem, not a website tool with a chatbot on top. Websites were the first thing it built, and customers are already using it for apps, alerts, and internal tools.

For engineers: the work is agents with real power, environments that make that power safe, systems that stay up under failure, and domain knowledge encoded well enough that a model can use it. If that sounds like your kind of problem, we’re hiring.

Carwash Con East (NRCC)

Meet us at Booths 753 & 754

Book a time with our team and see online sales, member portals and automated marketing running on the POS you already use.

Oct 6, 1–6 PM · Oct 7, 10 AM–1 PM ET

Atlantic City Convention Center, NJ