Guest Pre-check-in & Payments Platform
Built Jiminy, a multi-tenant pre-check-in platform combining a guided guest flow (identity, payments, deposits, upsells, signatures) with an operator dashboard for booking readiness, channel rules, property sync, and exception handling.
- Client
- Aardvark Partners
- Role
- Full-stack
- Scope
- Guest flow, dashboard, payments, verification, upsells, PMS sync
- Year
- 2025
- 3,000+
- Monthly active guests
- Multi-tenant
- Org-isolated bookings
- Stripe + Beds24
- Payments and PMS integrations
- ~$100k/yr
- Saved vs ChargeAutomation
Context
Vacation-rental operators needed a single place to handle pre-arrival work — guest verification, payments, security deposits, and upsells — without juggling email threads, payment links, and PMS data across disconnected tools.
-
Multi-tenant SaaS
Org-isolated bookings, users, settings, and properties
-
Guest pre-arrival flow
Identity, payments, deposits, signatures, and upsells
-
Operator command center
Booking readiness, channel rules, and exception triage
Problem
Pre-arrival readiness was scattered across booking records, manual emails, document collection, payment links, and admin intervention, making it hard to tell which guests were cleared and which reservations needed staff attention. On top of that, the existing third-party solution (ChargeAutomation) was costing close to 100k USD a year in commissions and licensing, with no room to tailor flows to the operator's real workflows.
Architecture
Application
-
Guest pre-check-in flow
Multi-step Zod-validated journey from invitation through confirmation, with server actions persisting state across steps.
-
Stripe payments and deposits
Checkout sessions, security deposit holds, captures, releases, voids, and webhook-driven state updates.
-
Beds24 PMS sync
Reservation and property data kept aligned with the booking dashboard.
-
Transactional emails
Resend and React Email powering invites, confirmations, OTP, and document rejection notices.
-
Admin operations
Booking triage, manual sync, document uploads, deposit and payment actions, and configuration health checks.
Platform
-
Tenant isolation
org_id, subdomain routing, and auth metadata scoping every backend call.
-
Channel configuration
Per-channel rules for paid-in-platform bookings, deposits, fees, and split payments.
-
Role-based access
Admin vs standard user surfaces across the dashboard.
Data
-
Supabase data model
Bookings, properties, users, check-in records, settings, and upsells in a shared Postgres schema.
-
Real-time chat store
Separate Supabase setup powering guest and operator messaging.
Tech stack
-
Next.js 15 + React 19
App Router with Server Components by default and Client Components for interactive surfaces.
-
TypeScript
End-to-end typing including Zod-derived schemas across forms and server actions.
-
Tailwind CSS + Radix UI
Utility-first styling with accessibility primitives from Radix.
-
React Hook Form + Zod
Form state and validation across every check-in step.
-
TanStack Query + Table
Client data fetching and dashboard tables.
-
Supabase
Postgres database with row-level security backing tenant isolation.
-
Authentication
Supabase Auth with magic links and OAuth.
-
Stripe
Payments, security deposits, webhooks, and Stripe React SDK.
-
Beds24 API
Reservation and property sync with the property-management system.
-
Resend + React Email
Transactional email templates and delivery.
-
Vercel
Hosting for the Next.js app, server actions, API routes, and webhook handlers.
Product surface
- 01
Guest check-in flow
Guided multi-step flow covering identity, payments, deposits, signatures, and upsells.
- 02
Admin dashboard
Booking readiness, filters, payment, deposit, and verification state with operational actions.
- 03
Payments and deposits
Stripe checkout, security deposit holds, captures, releases, refunds, and voids.
- 04
Verification
ID upload, selfie capture, credit-card image, and document review flows.
- 05
Upsells and channel rules
Property and channel-specific add-ons plus per-channel payment and deposit behavior.
- 06
Guest and operator chat
Real-time messaging tied to the check-in experience.
Outcome
A centralized operating layer for vacation-rental teams: fewer manual follow-ups, clearer booking readiness, configurable payment and deposit workflows, and new revenue surfaces through upsells.
- Built a guided guest flow covering identity, selfie verification, signatures, payments, deposits, and upsells
- Shipped an operator dashboard for booking readiness, channel rules, property sync, and exception handling
- Integrated Stripe, Beds24, and Resend with tenant isolation through org_id and subdomain routing