Selected Work
Property operations · Product design & engineering

CheckInn

Before the door opens.

CheckInn is a reservation and property operations system for independent owners and small teams. It brings available nights, guest details, agreed prices, and the work of preparing a home into one place. I’m building it around the handoffs that make a stay possible, from the first booking to the next arrival.

CheckInn calendar with a multi-property unit-night grid, owner and linked-calendar blocks, and an arrivals inspector
The calendar workspace in the running application. Captured September 13, 2026 with synthetic practice data. Select any screenshot to open it at full size.
01 · Overview

The handoff is part of the stay.

A guest leaves in the morning and another arrives that afternoon. Between those two events, the home needs to be cleaned, inspected, and ready to use. Someone may also need to follow up on a repair or confirm an arrival requirement. Each person sees a different part of the same day.

My work in vacation rentals has made that coordination familiar. Dates are important, but so are the things those dates ask people to do. A calendar can show a stay clearly while leaving the team to work out the rest somewhere else.

CheckInn connects the reservation to the home, its guest party, and the work around arrival and departure. Each workspace presents the part relevant to its user, so someone planning the week and someone preparing a home can work from the same underlying records.

The question behind CheckInn

Can the next person see what is ready, what is still needed, and where their part of the work begins?

01

The whole operating day

Today brings arrivals, departures, same-day turns, and outstanding work together. Each property retains its local dates and time zone, so the portfolio view keeps the timing meaningful.

02

Context while looking closer

The calendar retains the selected unit and dates while the operator filters the view or opens a profile. Returning to the broader view preserves their place.

03

Status in words and symbols

A confirmed stay, a temporary hold, an owner block, and a maintenance block mean different things. Labels and icons accompany color so those distinctions remain readable.

02 · Booking flow

From available nights to a confirmed stay.

The basic unit of availability is one property unit for one night. A hold temporarily reserves those nights while an operator records the guest party and reviews a quote. Confirmation connects that inventory and the accepted terms to a lasting reservation record. The stay then gives the team a shared frame for preparation, arrival, and departure.

  1. 01FindChoose a unit and available nights for the party.
  2. 02HoldReserve those nights temporarily while reviewing the stay.
  3. 03ConfirmCommit the guest party and accepted quote to the reservation.
  4. 04PrepareComplete the work and requirements for arrival.
  5. 05HostRecord arrival, follow the stay, and handle emerging needs.
  6. 06TurnClean and inspect the home for the next arrival.

A hold has an expiry.

The server controls the hold’s lifetime. Confirmation converts the existing inventory claim without releasing the nights between steps. An expired hold requires availability to be checked again.

A quote preserves the agreement.

Acceptance records a specific version of the nights, charges, taxes, discounts, and terms. Changing the stay or party requires a new quote and acceptance.

Confirmation has a clear boundary.

The reservation, accepted prices, amount due, inventory claim, and command receipt commit together. The amount due records an obligation; collecting a payment is a separate operation.

03 · Workspaces

A shared record, shaped around each task.

The calendar supports planning across properties. On a phone, it becomes a list of units and dates suited to a smaller screen. Each workspace follows the same principle: preserve the shared information and present the details needed for the task at hand.

01

Today

Arrivals, departures, same-day turns, and an ordered queue of work needing attention.

02

Calendar

Available, reserved, held, and blocked nights, with the source and details behind each entry.

03

Reservations

The guest party, accepted terms, charges, and a history of changes to the stay.

04

Guests

Guest and party records, with access limited by the operator’s permissions and assigned units.

05

Arrivals

Readiness for each stay, the requirements still outstanding, and the actions currently available.

06

Housekeeping

Cleaner assignments, deadlines, checklists, inspection results, and any rework before completion.

07

Operations

Maintenance and other property work, including repairs that affect whether a home is ready for arrival.

04 · Inside CheckInn

Follow the work through the application.

These screens follow the work from the daily overview to the next property turn. They were captured from the running development application using synthetic practice data. Select a screenshot to inspect it at full size.

See the day’s work in one place.

Today brings arrivals, departures, same-day turns, and readiness into one view. The work queue orders items by urgency and timing, with a direct route to the relevant stay or task.

CheckInn Today workspace showing arrival and departure counts, same-day turns, an ordered work queue, and unit timezones
Daily overview: priorities, readiness, and the handoff to housekeeping or arrivals.

Keep the agreement and its changes together.

The reservation record brings the dates, guest party, charges, amount due, and access status together. A change is previewed before it is committed, and previous versions remain in the history. Cancelling a stay records its effect on inventory and amounts due; any refund requires separate payment processing.

CheckInn sample reservation record showing a confirmed four-night stay, two guests, charges, outstanding balance, and protected access status
Reservation detail: the stay, party, economics, and access context in one record.

See what is holding up an arrival.

The arrival queue pairs each stay with its readiness. Selecting a stay reveals the outstanding requirements and available actions. In this example, housekeeping still needs attention before the guest can be checked in.

CheckInn arrivals queue with Ocean Suite selected, a housekeeping blocker, readiness counts, and contextual arrival actions
Arrival readiness: the selected stay, its blocker, and the next available action.

Follow the turn from assignment through inspection.

The turnover board connects cleaner assignments, ready-by times, and checklist progress. Cleaning, inspection, rework, and completion remain distinct stages. When an inspection fails, the cleaner resolves the rework and the home is inspected again.

CheckInn housekeeping workspace showing turn counts and an assigned turnover queue with cleaner names, deadlines, progress, and rework status
Housekeeping: assignments, deadlines, and progress across the property turn.

Review a price alongside its supporting evidence.

Pricing runs in shadow mode: it produces a recommendation or records why it cannot support one, without publishing a rate. The decision retains its input snapshot and model version so it can be reproduced. The current model uses a simple calculation to exercise this review process; pricing quality still needs evaluation.

CheckInn pricing workspace comparing current and suggested nightly rates with needs-review, approved, declined, overridden, and unavailable states
Pricing review: synthetic scenarios showing recommendations, decisions, and the reasons a suggestion may be withheld.
05 · Connections

A blocked night does not tell the whole story.

A calendar feed can establish that a night is unavailable without supplying the guest, price, or reason. CheckInn records what the source actually provides. The imported block stays labeled with its origin and freshness, so an operator can see how much the connection establishes.

Local stays

A complete local reservation

An operator can create a local stay with a temporary hold, guest party, accepted quote, and confirmation. Changes and cancellations preserve earlier versions and the reasons for the change.

Calendar feeds

Availability with a known source

Calendar import and export are implemented with controlled test feeds. Imported events create labeled inventory blocks. Reconciliation handles changed or removed events while retaining their source history.

Provider connections

Richer connections in rehearsal

The development branch includes provider adapters and a channel administration view exercised against simulated services. Live Airbnb, Vrbo, and other provider connections still depend on access, integration, and provider validation.

External connection model. Direct reservations work locally; the provider and external-service connections shown here remain planned live integrations.

Development boundary The application uses practice data, controlled feeds, and simulated services. Live channel, payment, messaging, access, and HAVEN connections require further integration and deployment work.
CheckInn practice channel administration showing delivery status, confirmed changes, pending decisions, and supported channel capabilities
Channel administration: a simulated connection showing supported capabilities, delivery evidence, and work awaiting a decision.
06 · Engineering

Protect the booking. Preserve the explanation.

I separate the operator’s view of a stay from the checks that authorize a change. The interface explains the action; the API and database validate the current records before committing it. That distinction matters when two people act at once, information changes after a preview, or a response is lost.

Interface and API

Shared contracts connect the workspaces.

Next.js and React provide the interface; NestJS on Fastify handles the API. TypeScript and a client generated from OpenAPI carry the request and response definitions between them. Shared components give status, selection, and recovery a consistent presentation.

Inventory

The database checks overlapping nights.

A PostgreSQL exclusion constraint rejects overlapping active claims for the same unit’s inventory. It covers competing writes as they reach the database. Stay dates include arrival and exclude departure, allowing a departure and the next arrival to share a date.

Changes and history

A preview is checked again at commit.

Moving or cancelling a reservation rechecks permissions, record versions, inventory, and the exact preview. An accepted change appends a new version and updates the inventory in one transaction. Earlier versions preserve what was agreed and how it changed.

Accounting delivery

An uncertain response needs an answer.

CheckInn confirms a local booking independently of HAVEN and queues immutable accounting facts separately. If delivery is uncertain, the adapter reads back the destination’s records. A resend requires complete evidence of absence and recorded operator authorization. This workflow is implemented against a simulated destination; live HAVEN integration remains ahead.

07 · Arrival readiness

Readiness comes from completed requirements.

A vacant home may still need cleaning or a repair. CheckInn derives readiness from the stay’s required checks: housekeeping, inspection, operational blockers, and applicable payment, agreement, and access conditions. The check-in command rechecks those records before accepting the arrival. Missing or outdated information remains visible and blocks the action until resolved.

Housekeeping

Completion includes the inspection.

When inspection is required, an assigned inspector separate from the cleaner must record a passing result. Required checklist items, evidence, and rework also have to be resolved before the turn is complete.

Maintenance

Repairs can block arrival.

Open safety work and maintenance blockers contribute to readiness. Completing one repair removes only its own contribution; other outstanding requirements continue to hold up check-in.

Freshness

Current information governs the action.

Stale, unknown, or disconnected views identify what needs refreshing and disable consequential actions. The operational workflows require an online check of the current records before a change can be recorded.

Recovery

A saved receipt resolves a lost response.

A command receipt records the result of an action. If the response is lost, the client checks that receipt. Retrying the same command with the same key returns the original result without performing the action twice.

Clear assignmentsSeparate inspectionsVisible blockersCurrent statusTraceable changes
08 · Project status

The guest arrives. The team knows where things stand.

The development build brings reservations, calendar availability, guest records, arrivals, housekeeping, and maintenance into connected workflows. Pricing review and external delivery are exercised with controlled inputs and simulated services. Production deployment and live provider connections remain the next stage.

The experience I’m working toward is quite ordinary: someone can look at the day, understand their part in it, and get on with the work. Each reservation belongs to a home, and each home has people looking after it. CheckInn needs to keep those relationships understandable as the day changes around them.