Docs/Studio/Templates
All templates

Guest Mini CRM

A lightweight guest directory with stay history, lifetime revenue, and notes.

What this template does

A tiny CRM for the guests you actually host. Profile per guest with stay history, lifetime spend, color-coded flags (VIP, complaint, recurring), and a notes feed your team can append to in real time. One search bar, one list, one profile pane — no segmentation funnel, no per-seat licensing.

Built for the manager who currently keeps a "guests to remember" tab in a private Google Doc and wants that doc to live next to the booking data. Designed to be the second tab in your daily ops setup, not a sales tool.

What ships with it

  • Search across name, email, and phone with a 300ms debounce
  • Recent-guests section pinned to the top (last 30 days)
  • Repeat-booker badge for any guest with two or more stays
  • Color-coded flag chips: VIP (amber), complaint (rose), recurring (indigo)
  • Notes feed with newest-first composer per guest

What you can customize

Studio is a chat. Paste any of these into the chat panel and the template will be modified in place.

  • Add a "send message" button that opens a prefilled SMS or email composer
  • Add a custom flag color and label (e.g. "press" or "long-term") beyond the three defaults
  • Show lifetime nights stayed and average daily rate next to total revenue
  • Add a CSV export of the full guest directory for marketing campaigns
  • Filter the list to only guests with a specific flag — useful for VIP outreach

Data this app uses

GuestsReservations

Guest rows come from `repull.guests.list({ search, listingId })` and are joined with `repull.reservations.list({ guestId })` server-side. The pure `lib/guests.ts` aggregates raw rows into `GuestSummary` (stay count, total revenue, repeat flag, recent flag) and `GuestProfile` (summary plus per-stay rows). Notes and flags persist via `/api/guests/:id/notes` and `/api/guests/:id/flags`.

Sample prompts

Five prompts you can paste into the Studio chat to extend this template. Each one is a single self-contained ask — paste, send, review the diff, ship.

  1. 1

    Add a "guest lifetime value" tile to the profile that includes projected revenue from any active future bookings.

  2. 2

    Add a "favorite listing" field on each profile that picks the listing the guest has stayed at most often.

  3. 3

    Sort the main list by total revenue descending instead of last stay descending.

  4. 4

    Add a "merge duplicates" button that detects two guest rows with the same email and combines their stay history.

  5. 5

    Show the booking platform (Airbnb / Booking.com / direct) icon next to each row in the stay history table.

Starter prompt

Paste this into Studio to scaffold the template from scratch.

Build a guest CRM. List all guests with stay count and total revenue. Click a guest to see their profile, stay history, and notes. Add tags. Add a button to message them.

Live demo

guest-crm.studio.repull.dev

Source code

Fork or browse the template on GitHub.

Build guest mini crm in Studio

Open Studio, paste the starter prompt above, and iterate from the live preview.

Open Studio
AI