Skip to Content
GuidesDemo: HavenStay

Demo: HavenStay

HavenStay is a hotel booking marketplace built to demonstrate Lamina’s init → design → implement → verify loop. The same prompt produced two builds — one with Lamina, one without — both from scratch by Cursor Composer 2.5 with no human-written app code.

Quick path

  1. Clone the repo and run the with-Lamina demo
  2. Compare behavior against the without-Lamina build
  3. Inspect .lamina/ artifacts for the full contract

The prompt

Both builds used this prompt:

Design and build a complete hotel booking platform called HavenStay from scratch. Create a production-ready product that enables travelers to discover, compare, book, and manage hotel stays, while enabling hotels to manage their properties, rooms, pricing, availability, reservations, and guest interactions. The product should feel polished, cohesive, and ready for real-world use. Design every aspect of the experience, including the end-to-end user journeys, information architecture, navigation, search and discovery, booking lifecycle, account management, payments, cancellations, reviews, notifications, hotel management, trust and safety, customer support, accessibility, edge cases, and system behavior.

With vs without Lamina

With LaminaWithout Lamina
Folderdemo/hotel-booking-with-laminademo/hotel-booking-without-lamina
Workflow/lamina-init/lamina-design → implement → /lamina-verifyCursor Plan mode → implement

Both apps cover traveler search/booking, a hotel partner surface, and an admin role. The gap is product behavior — marketplace integrity, ops depth, and edge cases — not whether a screen exists.

Run the demo

git clone https://github.com/aryaniyaps/lamina.git cd lamina/demo/hotel-booking-with-lamina npm install npm run db:setup npm run dev

Open http://localhost:3000 .

Demo accounts

Password for all: demo1234

EmailRole
traveler@havenstay.demoTraveler
hotel@havenstay.demoHotel operator
admin@havenstay.demoPlatform admin

Verify the demo

With the dev server running:

/lamina-verify guest booking checkout at http://localhost:3000

Behaviors Lamina covered

These are product behavior gaps the with-Lamina build handles and the without-Lamina build missed:

Inventory hold with countdown

15-minute checkout hold with hold-aware availability. A room cannot stay bookable while someone else is paying. Without hold logic, two guests can checkout the same room simultaneously.

Cancellation policy snapshot

Flexible / Moderate / Strict per property, snapshotted immutably at booking time. Without snapshots, cancellation rules can change retroactively.

Admin gate before go-live

Property goes live only after admin approve, reject, or request-changes — not on submit alone. Skipping approval gates lets incomplete listings reach guests.

Partner onboarding wizard

Multi-step setup with readiness checklist tracking what is still missing. Partners get stuck mid-flow without clear progress indicators.

Hotel cancel with reason and refund

Hotel can cancel a reservation with a required reason and automatic full guest refund. Without this path, hotels cannot handle guest-impacting issues.

Full platform admin console

Approvals, users, bookings, payments, trust reports, reviews, support tickets, and audit log. Plan mode produced a single KPI page.

Traveler edge cases

Email-verified booking gate, cancel flow with refund preview, review-window gating, and receipt on trip detail.

Search integrity

Search surfaces only live properties and excludes sold-out inventory for selected dates.

Rich booking lifecycle

States include PENDING_PAYMENT, CHECKED_IN, CANCELLED_BY_TRAVELER, CANCELLED_BY_HOTEL, PAYMENT_FAILED, plus user suspension that blocks booking.

Inspect the artifacts

The bundled with-Lamina demo ships an archived legacy artifact set from before Contract v2. The paths below are what actually exist in the repo — not the current canonical filenames.

ArtifactLegacy path (bundled demo)
Business context.lamina/business-context.md
Personas.lamina/personas.yaml
Machine contract.lamina/runs/havenstay-platform-2026-07-10/run.yaml
Implement brief.lamina/runs/havenstay-platform-2026-07-10/implement.md
Design report.lamina/runs/havenstay-platform-2026-07-10/report.md
Verify report.lamina/runs/havenstay-platform-2026-07-10/verify-report.md
Fix brief.lamina/runs/havenstay-platform-2026-07-10/fix.md
Walkthrough evidence.lamina/runs/havenstay-platform-2026-07-10/walkthrough/ (optional)

New Lamina runs use Contract v2 canonical names — personas.json, run.json, run.md, report.md, and optional walkthrough/ — as documented in Per-run artifacts and Global artifacts.

Advanced: The legacy run.yaml contract includes 18 entities, 23 workflows, 21 scenarios, and 15 invariants. Use it to see what a mature Lamina design looks like, but refer to the run.json schema for the current contract format.

What this proves

These are not UI polish issues. They are product behavior gaps that Lamina’s contract and verification loop catches before they reach users.

Next steps

Last updated on