
A hospitality company was coordinating parking for ~40 holiday apartments by message and memory. We turned it into software: booked, paid, and allocated without a human in the loop.
Rental12 operates short-term rentals across Olbia, Sardinia, plus a gated 19-space parking lot in the city centre. Guests wanted parking; the team was assigning spaces manually, chasing payments, and juggling availability in their heads — peak season made it unsustainable.
We built a booking web app wired into the tools they already run on: accommodation bookings flow in from Lodgify, payments run through Stripe, and their Airtable base stays the single source of truth. This isn't a brochure site — it's an operations system with a guest-facing front door.
From booking email to parked car — no phone calls, no spreadsheets.
One click from the booking email
Every apartment booking confirmation carries a unique parking link. Guests arrive at a form with their name, apartment, and dates already filled in.
Choose a space
Regular or EV charging, checked against live availability for those exact dates — sold-out options grey themselves out.
Priced to the night
Four seasonal rate bands, computed server-side per night — even across season boundaries — with a weekly discount applied automatically.
Pay with Stripe
Hosted checkout in the guest's language. The space is assigned the moment payment confirms — with automatic refunds if a race for the last spot is ever lost.
Arrive and drive in
The confirmation shows the assigned space, directions to the lot, and the gate keypad code — released two days before arrival.
Guest Booking Flow
A mobile-first booking flow linked from the guest's accommodation emails — pre-filled details, license plate capture, and a confirmation page with everything they need.
- ◆Unique per-booking URLs from Lodgify
- ◆English, Italian, French, and German
- ◆"Add plate later" fallback for early bookers
Dynamic Pricing Engine
Nightly pricing across four seasonal bands with cross-season splitting and a 7-nights-for-6 weekly rule — formalised, documented, and covered by unit tests.
- ◆Per-night seasonal computation
- ◆Weekly discount applied automatically
- ◆Pricing rules versioned and test-covered
Payments & Refund Safety
Stripe Checkout with idempotent webhooks: spaces are only assigned after payment, fees are recorded for accounting, and overbooking races auto-refund.
- ◆Spot assigned on payment confirmation
- ◆Automatic refund on booking conflicts
- ◆Stripe fees captured for net revenue
Admin Dashboard
Occupancy and revenue at a glance, a spot-by-day calendar, full booking management, custom booking links, and one-click cancel-and-refund.
- ◆Revenue, occupancy, and arrivals tiles
- ◆Spot × day calendar across booking types
- ◆Custom links for comp or discounted bookings
Lodgify Sync & Reconciliation
Accommodation bookings stream in via webhooks, with a nightly reconciliation sweep that self-heals duplicates and catches anything the webhooks missed.
- ◆Webhook-driven booking ingestion
- ◆Nightly reconciliation cron
- ◆Deduplication that self-heals
Audit Trail & Spot Management
Every change to parking state records who made it — admin or system. Spaces can be disabled globally or blocked for date ranges with conflict warnings.
- ◆Per-write attribution across the team
- ◆Date-range blocks for maintenance
- ◆Conflict detection on reassignment

Gated access, keypad entry

19 spaces in central Olbia
Live and taking real payments since May 2026 — guests book, pay, and park without the team lifting a finger.
Spaces assign themselves at the moment of payment, availability is always current, and the admin dashboard shows occupancy, revenue, and arrivals at a glance. Every change is attributed, every payment reconciled — including Stripe fees — and a nightly sweep keeps the booking data honest.
The pricing engine and payment paths are protected by 165 automated tests, because this system moves real money for a real business every day of the season.