Product architecture
How Havenly works under the hood
A walkthrough of the core flows: how a guest request becomes a confirmed stay, how owners govern their calendar, and how the charitable stay engine routes vetted requests to participating homes.
System map
Public site
Browse · Request
Rules engine
Validate · Route
Records
Property · Booking · Task
Owner portal
Approve · Manage
Operations
Tasks · Turnovers
Admin
Oversight · Reports
Stay request flow
From inquiry to a confirmed, calendar-blocked stay.
- Step 1Guest selects dates
Calendar enforces blocked dates and minimum stay rules.
- Step 2Validation
Rules engine checks availability, capacity, and charitable eligibility.
- Step 3Owner review
Owner sees the request with guest context and message.
- Step 4Decision
Approve or decline; calendar auto-blocks on approval.
- Step 5Operations
Cleaning + inspection tasks auto-generated for staff.
Rules engine
Each request passes through a deterministic rule chain. The first failing rule blocks the request and is surfaced to the user.
| Rule | Purpose | On failure |
|---|---|---|
| availability.notBlocked | No date overlaps with owner blocks or other bookings | Surface conflict in calendar |
| capacity.guestsWithinLimit | Guest count ≤ property capacity | Inline form error |
| window.minNights | Stay length meets owner's minimum | Suggest adjusted dates |
| charitable.eligible | Property opted-in and partner organization verified | Route to admin review |
| owner.responseSLA | Owner notified; auto-decline after 72h | Returned to guest with options |
Charitable stay engine
Partner submits
Vetted organization
Match
Eligible homes only
Owner approves
Independent decision
Stay confirmed
Zero cost · Tracked
Core entities
Property
- · id
- · ownerId
- · location · lat/lng
- · capacity
- · amenities
- · charitableEnabled
- · blockedDates
Booking
- · id
- · propertyId
- · guest
- · checkIn / checkOut
- · status
- · charitable
- · total
Task
- · id
- · propertyId
- · type
- · assigneeId
- · dueDate
- · status
CharitableRequest
- · id
- · propertyId
- · organization
- · cause
- · nights
- · status
User
- · id
- · name · email
- · role
- · avatar
Audit (planned)
- · actor
- · action
- · subject
- · timestamp