Case study
Bahay Liwanag — engineering a booking operation on GoHighLevel
A boutique three-villa resort with a single job to be done: turn a scattered, conversational booking process into one structured intake path — website, CRM, and automations built as one system. The foundation narrative explains the business need, the system design, and the technical choices behind it.
- Role
- Systems design & implementation, end to end
- Stack
- GoHighLevel · Make · Airtable
- Status
- Live — booking flow operational
- funnel pages
- 6
- form fields
- 8
- custom fields
- 5
- villas
- 3
- required fields
- 2
- on-site payments
- 0
01
Executive Summary
Bahay Liwanag is a built-for-purpose booking operation, not a generic brochure site. The project was designed around one hard requirement: turn a fragmented guest inquiry flow into a disciplined intake system that captures information, creates a clear next step, and keeps the human review decision in the right place.
The live funnel, booking form, and CRM structure all work together to reduce manual re-entry and keep the guest experience honest. The key design decision is simple: gather the inquiry, acknowledge it quickly, record it consistently, and leave the availability review to a human without creating unnecessary friction.
02
Business Problem
Small hospitality operations usually fail not because the business lacks demand, but because the booking process is scattered across forms, messages, calls, and spreadsheets. A guest inquiry arrives in one place, details get copied elsewhere, and follow-up depends on someone remembering who was contacted, what dates were discussed, and what the next step was.
This is especially problematic for a boutique property with multiple room types and a human-led availability review. The project needed to create one intake path that captured the right data once, kept it visible to the team, and preserved the hospitality touch without letting the coordination work consume the whole operation.
03
Goals
The system was designed to meet a few clear business goals:
- Create a single booking entry point that feels simple for the guest and structured for the business.
- Store and surface the right data in the CRM without requiring manual re-entry.
- Acknowledge the inquiry immediately and keep the human review step clear and intentional.
- Keep the availability check human-led while automating the repetitive operational work around it.
04
My Responsibilities
The work covered the full decision path rather than a single surface area. My responsibilities included:
- Defining the guest journey and the operational flow behind it.
- Designing the booking funnel so each page had a clear purpose and a single destination.
- Structuring the GoHighLevel form and custom field schema to match the actual business use case.
- Mapping the handoff between the booking intake and the operational layer, including how the response is logged and reviewed.
- Choosing the stack and tooling based on the operational constraints rather than a generic “automation” preference.
05
Discovery & Planning
The discovery phase focused on the booking lifecycle, not the visual polish. The work started by tracing how a guest inquiry actually moved from first click to final confirmation and where information was lost or duplicated. That review surfaced three core constraints: the process needed to be easy for guests, easy for the operation to manage, and honest about where a human decision was required.
From there, the plan centered on one intake path, one CRM record, and a clear distinction between automation and human review. The system was designed around those responsibilities instead of around a more complex “everything is automated” model that would have been harder to trust and maintain.
This is the starting point for the system design: the booking flow was mapped around real operational needs, not around an idealized guest experience that would later break under review.
Placeholder — screenshot pending: Discovery workbook
Operational evidence: this location will hold the workshop notes, guest journey map, and booking flow diagram once the final evidence asset is captured.
06
System Architecture
The system architecture keeps the guest-facing experience simple while pushing the operational complexity behind the scenes. The design makes the booking funnel public, stores the lead in GoHighLevel, and then moves the inquiry into a workflow and logging layer that supports the human review stage.
This is the foundation that makes the rest of the operating model viable: the public experience is intentionally light, while the internal process is structured enough to keep the business coherent.
Guest
A visitor lands on the site and begins the booking intent
Booking Form
The guest submits structured enquiry details without a payment step
GoHighLevel
The record is captured in the CRM and stored in the right contact schema
Workflow
The inquiry is acknowledged and routed into the operational process
Airtable
The business keeps a working record for review and follow-up
Human Review
The team confirms availability and decides the next action
Booking Confirmation
The guest receives a clear follow-up and a confirmed next step
07
Technical Stack
The stack was chosen to solve a business problem, not to demonstrate tool breadth. Every tool had a clear operational role:
The architecture above is only useful if the tooling supports the same operating model. This stack was selected to keep the public funnel simple, the CRM structured, and the business review process usable.
GoHighLevel
This was the right foundation because it combined the guest-facing funnel, form capture, and CRM in one workspace. That reduced handoff complexity and made the booking flow easier to manage without introducing a separate custom app for a small operation.
Make
Make was chosen to move the lead out of the form and into the rest of the operational system without manual re-entry. It is a good match when the real goal is to create a fast, reliable handoff between a capture layer and the business workflow.
Airtable
Airtable was selected as the operational log because the team needs a readable, reviewable record rather than a buried CRM detail page. It gives the business a place to track, filter, and follow up on bookings in a way that is easier to scan than a contact record alone.
Editorial web pages
The public web pages are intentionally straightforward. They are designed to sell the experience, support the booking journey, and route traffic into one conversion path without overbuilding the front end. This keeps the front-end layer focused on clarity and conversion instead of becoming the business system itself.
The design decision was to keep the system simple: one public intake layer, one CRM source of truth, one operational log, and a clearly defined human review step. Each tool does a specific job instead of trying to win the whole workflow. That keeps the system understandable, maintainable, and easier to trust.

08
Workflow & Automation
The booking flow is intentionally simple for the guest and disciplined behind the scenes. The public intake captures the enquiry, the CRM stores the structured record, and the workflow handles acknowledgement and routing before a human checks availability and confirms the next step.
This is the same operating model introduced in the system architecture above, applied to the day-to-day booking process the business depends on.
Placeholder — screenshot pending: GoHighLevel Workflow Canvas
Operational evidence: insert the workflow canvas once the final GHL evidence is captured. This slot will show the automation trigger, acknowledgement email, and internal notification flow.
Placeholder — screenshot pending: Make Scenario
Operational evidence: insert the Make scenario once the automation is captured. This slot will show the route from GoHighLevel into Airtable, calendar, and notification elements.
Placeholder — screenshot pending: Airtable Reservation Log
Operational evidence: insert the Airtable reservations table once the operational workspace is captured. This is the working log the team uses after the enquiry is submitted.
Placeholder — screenshot pending: Contact Record
Verified in live implementation: insert the contact record once the live CRM record is captured. This slot will show how the form fields land in the contact schema.
The automated pieces are the intake capture, acknowledgement, and movement of the enquiry into the operational log. The intentionally manual step is the availability review itself. That split is deliberate: it keeps the business process honest, prevents double-booking risk across multiple villas, and preserves the human judgement that boutique hospitality depends on.
09
Design Decisions
These are the most important business decisions that shaped the system. Each one reflects a trade-off between simplicity, guest experience, and operational control.
Human review before payment
Why: The guest should not be charged before availability is confirmed, especially when the property is managing multiple villas and limited dates.
Trade-off: This adds a manual step to the flow, but it protects the business from double-booking and keeps the transaction honest.
Structured custom fields instead of free-text submissions
Why: The business needs fields like check-in date, preferred villa, and guest count to make follow-up and review practical.
Trade-off: The form is a bit more structured than a chat-style inquiry, but the result is a cleaner dataset and a much easier handoff to the operational workflow.
Airtable as the operational workspace
Why: The team needed a readable log for statuses, follow-ups, and review rather than a single CRM record alone.
Trade-off: This creates another system in the process, but it gives operations a place to work quickly and scan data without digging through contact details.
GoHighLevel as the CRM and intake layer
Why: The public site, form capture, and CRM lived in the same platform, which reduced friction and simplified the system boundary.
Trade-off: It limits some flexibility compared with a fully custom app, but it fits the size and needs of the project without unnecessary complexity.
10
Challenges
The project faced a few practical constraints that shaped the design. These are not abstract problems; they are real product and operational trade-offs that had to be resolved in the booking model.
- Operational complexity without overbuilding the platform. The business needed a transaction path that handled enquiries, timing, and review without creating a full custom application.
- Human review required before final confirmation. Because the property manages limited villa inventory, an automated booking decision would create unnecessary risk and reduce trust in the process.
- Limited surface area on the form. The guest-facing booking experience needed to be simple, and the public form reflects that by keeping the intake clear without forcing a full payment or trip-planning flow.
- Need for a clean operational record. A CRM contact alone was not enough; the team needed a working reservations log where the enquiry could be followed and reviewed in context.
- Platform constraints within GoHighLevel. The project had to work inside the constraints of the platform while still designing a defensible business process rather than a purely aesthetic funnel.
11
Solution
The implemented solution ties the business journey together in one sequence: the guest reaches the booking form, the enquiry is stored in the CRM, the workflow handles acknowledgement and routing, and the operational team reviews the request before confirming the booking.
This is the same booking model introduced earlier in the system architecture: the customer-facing path stays simple, while the operational layer remains structured and reviewable.
This addresses the original business problem by turning an unstructured, manual booking process into a predictable intake workflow. The result is a clearer guest experience, a better operational record, and a business process that respects the human decision point without making the team do unnecessary admin work.
12
Business Impact
The project improved the business by creating a more structured reservation process without turning the guest experience into a heavy operational interface. The core value was operational clarity: the intake path, CRM record, and follow-up workflow all align around the same booking decision.
Qualitatively, the system reduces manual duplication, makes the booking process easier to review, and gives the operation a clearer internal path from enquiry to confirmation. It also improves maintainability by separating the customer-facing experience from the internal process, and it makes the customer journey easier to follow because the next step is always explicit.
13
Lessons Learned
A few lessons were especially important on this project:
- CRM structure matters. If the form fields are not aligned to the operating model, the business can end up with a clean website and a messy back end. The schema has to support the way the team actually reviews and responds to bookings.
- Workflow design has to respect the business decision. Not everything should be automated. This project showed that the right automation is the repetitive administrative work around the enquiry, while the availability decision should remain human-led.
- UX decisions shape operational success. A simple intake form is not just a frontend choice; it changes how reliable and useful the whole system becomes. Fewer obstacles in front of the guest means more consistent data behind the scenes.
- Operational systems need different thinking from marketing websites. The real work was not just making the site look polished. It was designing a repeatable business flow that could support guest experience and internal clarity at the same time.
- Trade-offs should be explicit. Choosing a platform-first system created simplicity in delivery, but it also created platform constraints. Being clear about those trade-offs is part of engineering maturity.
14
Evidence Gallery
This gallery packages the live-system evidence that supports the narrative. It is intentionally explicit about what is already verified and what still needs a final capture pass before publication. Nothing here is presented as a screenshot or workflow artifact that has not been documented as part of the evidence checklist.
Placeholder asset
Booking Form Settings
Booking form settings
The public booking intake is shaped around a narrow set of fields that match the real guest decision path.
Why it matters: This keeps the form short enough for conversion while still collecting the operational information the business needs.
Live form schema
Placeholder asset
Live Booking Page
Live booking page
This is the public-facing reservation experience used to route a guest into the enquiry flow.
Why it matters: It establishes the actual customer journey and shows how the funnel turns marketing interest into a booking inquiry.
Public funnel
Placeholder asset
GoHighLevel Workflow Canvas
GoHighLevel workflow canvas
The workflow layer is responsible for acknowledgment and routing once the enquiry is submitted.
Why it matters: This is where the business turns the intake event into a coordinated response rather than a lost message.
Automation trigger and response path
Placeholder asset
Make Scenario
Make scenario
The Make path moves the enquiry from the CRM layer into the operational record used by the team.
Why it matters: It reflects the chosen architecture: one intake signal, then a structured handoff into a reviewable operational log.
Bridge to records and notifications
Placeholder asset
Airtable Reservation Log
Airtable reservation log
The reservations table is the operational workspace where the team can review, filter, and follow up on new enquiries.
Why it matters: A single CRM record is not enough for the business; the operation needs a readable working log for the booking pipeline.
Operational review table
Placeholder asset
Contact Record
Contact record
The collected fields land in the contact schema so the business can read and act on the real booking intent.
Why it matters: The quality of the system depends on clean field mapping and consistent data capture from the first enquiry.
CRM source of truth
Placeholder asset
Funnel Map
Funnel map
The funnel explains how the marketing pages guide the guest into a single conversion path.
Why it matters: This is the public architecture that keeps the user journey simple and the internal process easy to reason about.
Public journey architecture
Placeholder asset
Pipeline Snapshot
Pipeline snapshot
The booking intake is surfaced as a simple operational pipeline rather than a vague, unstructured backlog.
Why it matters: This makes the inquiry path legible to the team and keeps momentum between enquiry, review, and response.
Review pipeline
Placeholder asset
Confirmation Email
Confirmation email
The response layer gives the guest a clear acknowledgment and sets expectations without forcing an instant payment flow.
Why it matters: Quick acknowledgment is a practical part of the customer experience and keeps the system feeling responsive.
Guest acknowledgement
Placeholder asset
Booking Form Close-up
Booking form close-up
The form fields are intentionally limited to the details that matter for the actual booking decision.
Why it matters: This is the design boundary that keeps the experience clear while preserving useful operational data.
Field clarity
Placeholder asset
Workflow Decision Branch
Workflow decision branch
The workflow includes a deliberate human-review branch rather than a fully automated completion path.
Why it matters: This protects the operation from incorrect booking assumptions and keeps the review step visible in the system design.
Human review decision
Placeholder asset
Public Process Card
Public process card
The guest-facing process is distilled into a clear action path that is simple to understand and easy to trust.
Why it matters: The business design is clearer when the public-facing story matches the actual operational logic behind the booking flow.
Customer-facing clarity
15
Future Improvements
The current system is intentionally focused on a clear intake path and human review flow. A few realistic improvements would strengthen the operation further, but they are not implied to exist yet.
Implemented
- Single booking intake flow
- Structured CRM field capture
- Operational handoff into the review workflow
- Human-led confirmation step
Planned
- Calendar synchronization to keep reservation timing more visible
- Availability management to support clearer booking decisions
- Automated reminder workflow for follow-up or confirmation stages
Future possibilities
- Reporting dashboard for reservation patterns and lead flow
- Reservation analytics to support inventory decisions and staffing
- Internal operations dashboard for team visibility across new enquiries and confirmed stays