Phase 6 · AI & Automation · STR Co-Host System

Fully Hands-Off Operations
Powered by AI

A complete technical playbook for automating owner reporting, review responses, and booking data sync — with Hospitable handling guest messaging natively and Claude doing the high-judgment work that actually moves the needle.

3n8n Workflows
$22–54/moStack Cost
$0.01–0.05Per Booking (AI)
1–3 hrsSetup Per Client
~15 minWeekly Pulse Check
System Architecture
How every piece connects
🏠
PMS
Hospitable (primary) or OwnerRez. Source of truth for bookings, guests, reviews.
⚙️
n8n
The automation brain. Receives events, routes data, calls Claude.
🤖
Claude API
Writes owner reports and review responses — the high-judgment work.
→ Google Sheets
Booking data auto-updates owner dashboard (Softr, HTML, or Sheet Direct). Zero manual entry.
→ Hospitable
Native messaging sequences handle all 6 guest touchpoints. No n8n pipeline needed.
→ Slack
AI-drafted review responses sent for approval before posting publicly.
→ Owner Email
Monthly narrative report sent automatically on the 1st.
🏔
Phases 1–4 · Website & Portal
Need to set up your website, GitHub Pages, or Softr owner portal first?
← Back to Main Playbook
6A
Step 1 · PMS Selection & Setup
Choosing & Configuring Your PMS
Your Property Management System is the source of truth for all booking data — and with Hospitable, it also handles the full guest messaging sequence natively. That means n8n + Claude focus exclusively on the high-judgment work: review responses and monthly owner reports.
Alternative — Strong Owner Accounting
OwnerRez
Best-in-class owner accounting and financial statements — ideal if your clients need detailed trust accounting and monthly owner reports. Full-entity webhook payloads (Aug 2025+) simplify booking sync. One limitation: the messaging API requires a partnership agreement, so guest messages route via email until approved.
Why Hospitable is our primary recommendation: Hospitable's native automation sequences handle all six guest touchpoints — booking confirmation, pre-arrival, check-in day, mid-stay, checkout reminder, and post-stay review request — without any n8n pipeline. That frees your Claude/n8n stack to focus exclusively on review responses and monthly owner reports: the two workflows where AI genuinely outperforms any template. Ride the platform. Put Claude where it matters most.
1
Hospitable — Account setup & property onboarding
~30–45 min
→ Hospitable.com ↗ → API Docs ↗
a
Sign up at hospitable.com — Hospitable imports existing Airbnb and VRBO listings automatically on connection. No manual property entry from scratch.
b
Complete property profiles: house manual, check-in instructions, WiFi details, parking, local recommendations. This context feeds every guest message Claude writes — the more detail, the better the output.
c
Set up native messaging sequences: Go to Automations and configure Hospitable's built-in message templates for each of the 6 touchpoints (booking confirmation, pre-arrival, check-in day, mid-stay, checkout reminder, post-stay review request). These run directly through Hospitable — no n8n required. Write them in your brand voice; they're the guest-facing front line of your operation.
d
Configure owner payout settings under each property — management fee percentage and payout schedule. This feeds Workflow 4 (monthly owner reports).
Every detail you enter in Hospitable's property profile — amenities, house rules, check-in instructions, local recommendations — becomes context Claude draws on when drafting guest messages. A well-configured Hospitable property profile is the difference between messages that feel generic and messages that feel like they came from someone who genuinely knows and cares about the property. This is your competitive advantage made operational.
2
Hospitable — Generate API credentials & configure webhooks
~15 min
→ API Authentication Docs ↗

Personal Access Token (PAT)

a
Settings → API → Personal Access Tokens → Generate Token
b
Set permissions: read reservations, read/write messages, read reviews, read properties. Copy the token immediately — shown only once.
c
Authentication header for all API calls: Authorization: Bearer YOUR_PAT. Base URL: https://public.api.hospitable.com/v2/

Configure Webhooks

a
Settings → API → Webhooks → Add Webhook. Enter your n8n webhook URL (you'll generate this in Section 6B).
b
Subscribe to: reservation.created, reservation.updated, message.created, review.created
c
Hospitable signs payloads with HMAC-SHA256. Save the signing secret — use it in n8n to verify that requests are genuinely from Hospitable (add an IF node at the top of each workflow to check the signature).
What the API unlocks: The Hospitable webhook events power two things in your n8n stack — reservation.created and reservation.updated keep your Google Sheets booking data current (Workflow 1), and review.created triggers your Claude review response workflow (Workflow 3). Guest messaging runs through Hospitable's native automations — the API is your data layer, not your messaging layer.
3
OwnerRez — Account setup & property onboarding (alternative)
~60–90 min
→ OwnerRez.com ↗ → API Docs ↗
a
Sign up at ownerrez.com using the client's business email. Free trial — no credit card to start.
b
Complete the property setup wizard: property name, address, bedrooms/bathrooms, amenities, check-in/out times, and house rules. Take your time — this data feeds every guest message Claude writes.
c
Connect listing channels: Settings → Channels. Complete the OAuth connection for Airbnb and VRBO. OwnerRez pulls existing bookings automatically.
d
Configure owner accounting: Settings → Owner Statements. Set the management fee percentage, payout schedule, and expense categories. This is what powers owner financial reporting — OwnerRez's strongest advantage over Hospitable.
e
Add the owner contact — their name, email, and payout details — so statements generate automatically each month.
OwnerRez's owner accounting module is the most detailed in the category — if your clients need trust accounting, detailed financial statements, or QuickBooks integration, this is where OwnerRez pulls ahead of Hospitable. The tradeoff is setup time and the messaging API limitation below.
4
OwnerRez — Generate API credentials & configure webhooks (alternative)
~20 min
→ API Authentication Docs ↗ → Webhook Docs ↗

Personal Access Token (for reading data via API)

a
Top-right dropdown → Settings → Advanced Tools → Developer/API Settings → Create Personal Access Token
b
Name it "n8n Automation". Copy the token immediately — shown only once. Starts with pt_.
c
Authentication uses Basic Auth: username = your OwnerRez email, password = the token

OAuth App (required for webhooks)

a
OwnerRez webhooks only work with OAuth apps, not Personal Access Tokens. Go to Developer/API Settings → Create App
b
Name it "n8n Webhook Receiver". Set the Webhook URL to your n8n webhook endpoint (you'll get this in Section 6B)
c
Set a Webhook username and password — these are credentials OwnerRez uses when calling your n8n endpoint to prevent spoofed requests
d
Subscribe to: Booking entity (created, modified, cancelled) and Review entity (posted)
As of August 2025, OwnerRez webhook payloads now include the full entity record inline — you don't need a second API call to fetch booking details. n8n receives everything in one payload, which simplifies all four workflows significantly.
Messaging API limitation: OwnerRez's messaging API (to send guest messages directly through the platform) requires a separate partnership agreement. Email partnerships@ownerrez.com with subject "Messaging API Access." Until approved, route guest messages via email or the platform's native messaging tools — this means Workflow 2 cannot run fully automated with OwnerRez until the partnership is in place.
6B
Step 2 · Automation Engine
Setting Up n8n
n8n is the central nervous system — it receives PMS events, calls Claude for AI-generated content, and routes everything to the right destination. Two hosting options, same end result.
Factorn8n Cloud (Starter)Self-Hosted (DigitalOcean)
Monthly Cost~$20/mo · 2,500 executions~$12/mo (server + extras)
Setup Time5 minutes45–60 min first time
Execution Limits2,500/mo (plenty for most STR operations — a 3-property client uses ~200–400/mo)Unlimited
MaintenanceNone — n8n manages everythingYou handle updates, SSL, uptime
Technical SkillNone requiredComfortable with terminal / Docker
Best ForGetting started, individual client setupsManaging multiple clients from one central instance
n8n's pricing model is uniquely fair: 1 execution = 1 complete workflow run, regardless of how many steps it has. A 15-step guest messaging workflow counts as 1 execution. Unlike Zapier (which charges per step), costs stay predictable as your workflows grow more sophisticated.
A
Path A — n8n Cloud (recommended for most clients)
~5 min
→ n8n.io ↗ → Pricing ↗
a
Go to n8n.io → Get Started → sign up with your business email
b
Choose Starter (~$20/mo). 2,500 executions/month is more than enough to start.
c
Your instance URL will be something like https://yourname.app.n8n.cloud — this becomes your webhook base URL for the PMS setup
d
Log in and explore the canvas. Workflows are built by connecting nodes (boxes) with edges (arrows). Every integration in this playbook uses the visual editor — no code required.
B
Path B — Self-hosted on DigitalOcean
~60 min
→ DigitalOcean.com ↗ → n8n Self-Hosting Docs ↗
a
Create a DigitalOcean account. New accounts get $200 in free credits — roughly 16 months of the basic droplet.
b
Create a Droplet: Ubuntu 24.04 LTS, Basic plan → $12/mo (2 vCPU, 2GB RAM). Choose a datacenter near your clients (New York or San Francisco for US-based).
c
Connect via SSH: ssh root@YOUR_DROPLET_IP
💻 Install Docker
apt update && apt upgrade -y apt install -y docker.io docker-compose systemctl enable docker && systemctl start docker
💻 Create n8n docker-compose.yml
mkdir ~/n8n && cd ~/n8n cat > docker-compose.yml << 'EOF' version: "3" services: n8n: image: n8nio/n8n restart: always ports: - "5678:5678" environment: - N8N_HOST=n8n.yourdomain.com - N8N_PORT=5678 - N8N_PROTOCOL=https - NODE_ENV=production - WEBHOOK_URL=https://n8n.yourdomain.com/ - GENERIC_TIMEZONE=America/New_York volumes: - n8n_data:/home/node/.n8n volumes: n8n_data: EOF
💻 Install Caddy (auto-HTTPS reverse proxy)
apt install -y debian-keyring debian-archive-keyring apt-transport-https curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list apt update && apt install caddy -y cat > /etc/caddy/Caddyfile << 'EOF' n8n.yourdomain.com { reverse_proxy localhost:5678 } EOF systemctl reload caddy
d
Add an A record in Namecheap DNS: host = n8n, value = your Droplet IP
e
Start n8n: cd ~/n8n && docker-compose up -d
f
Visit https://n8n.yourdomain.com — create your admin account on first load
Set a monthly calendar reminder to update n8n: cd ~/n8n && docker-compose pull && docker-compose up -d. This pulls the latest image and restarts with zero downtime.
3
Connect Slack for approval notifications
~20 min
→ Slack API Dashboard ↗ → n8n Slack Node Docs ↗
When Claude drafts a guest message, n8n sends it to a private Slack channel showing the guest name, property, check-in date, and the full message draft — with an Approve button. Tap Approve and it sends immediately. Do nothing for 30 minutes and it auto-sends. You stay in control by default, but the system never stalls waiting for you.

Create a Slack App

a
api.slack.com/apps → Create New App → From Scratch. Name it "STR Automation", select your workspace.
b
OAuth & Permissions → Bot Token Scopes. Add: chat:write, chat:write.public, channels:read
c
Install to Workspace → copy the Bot User OAuth Token (starts with xoxb-)
d
Interactivity & Shortcuts → Enable Interactivity. Set the Request URL to: https://[your-n8n-url]/webhook/slack-interactions

Add to n8n & create the channel

a
In n8n: Credentials → New → Slack API. Paste your Bot Token. Name it "Slack STR Bot".
b
Create a private Slack channel called #str-approvals and invite your bot to it
n8n's built-in Slack node has a "Send and Wait for Response" action that handles the entire approval loop natively — sends the message, pauses the workflow, waits for a button click, then resumes with the result. The interactivity URL above is what connects Slack button clicks back to n8n.
6C
Step 3 · AI Intelligence Layer
Connecting the Claude API
Claude is called directly from n8n via Anthropic's API — no wrappers, no middleware. Full control over every prompt, model, and parameter. Haiku 4.5 for speed-sensitive messaging. Sonnet 4.5 for nuance-heavy reports and review responses.
Claude Haiku 4.5
$1 / $5
Per million input/output tokens. Fast, capable. Use for all 6 guest messages and check-in sequences.
Claude Sonnet 4.5
$3 / $15
Per million tokens. Better nuance. Use for review responses and owner reports where tone matters most.
Per Booking (all msgs)
~$0.02
Estimated total AI cost for all 6 guest messages + review response for one 4-night stay.
Monthly (3 properties)
~$2
Total estimated Claude API spend at average occupancy across 3 properties. Less than a coffee.
1
Create an Anthropic account & generate an API key
~5 min
→ Anthropic Console ↗ → API Pricing ↗
a
console.anthropic.com → sign up with your business email. Add a payment method — pay-as-you-go, no monthly minimum. New accounts get $5 in free credits.
b
API Keys → Create Key. Name it "n8n STR Automation". Copy immediately — shown only once.
c
Set a monthly spend limit under Settings → Limits. $10–20/month is more than enough to start and prevents any surprise billing.
d
In n8n: Credentials → New → Anthropic API. Paste your key. Name it "Anthropic — STR Automation". Test to confirm it works.
2
HTTP Request node template for Claude calls
Reference

n8n has a built-in Anthropic node — use it for most workflows. For fine-grained control, use the HTTP Request node directly with this configuration:

⚙️ n8n HTTP Request — Claude API Config
Method: POST URL: https://api.anthropic.com/v1/messages Auth: Header Auth Name: x-api-key Value: {{ $credentials.anthropicApi.apiKey }} Headers: anthropic-version: 2023-06-01 content-type: application/json Body (JSON): { "model": "claude-haiku-4-5-20251001", "max_tokens": 1024, "system": "{{ $json.systemPrompt }}", "messages": [{ "role": "user", "content": "{{ $json.userMessage }}" }] } // For review responses and owner reports, use Sonnet: // "model": "claude-sonnet-4-6"
W1
Workflow 1 · Fully Automated · No AI Required
Booking Sync → Google Sheets
Every new, modified, or cancelled booking automatically updates the owner's Google Sheet — and therefore their owner portal or shared dashboard. The end of manual monthly data entry. Hospitable fires reservation.created webhooks the moment a booking lands.
🏠
Trigger
PMS Webhook
booking.created
⚙️
n8n
Parse & extract
booking data
🔀
n8n
Branch: created /
modified / cancelled
🔍
n8n
Look up owner's
Sheet & tab
📊
Output
Update Sheet +
recalculate YTD
1
Build the booking sync workflow in n8n
~30 min

Add these nodes in order on the n8n canvas:

1
Webhook node (trigger) — set to POST. Copy the webhook URL and paste into your PMS webhook settings. For Hospitable, add an IF node to verify the HMAC-SHA256 signature header using your signing secret. For OwnerRez, enable Basic Auth using the username/password from your OAuth app.
2
Set node — extract key fields from the payload: guest name, check-in date, check-out date, number of nights, gross revenue, booking status, property ID.
3
Switch node — branch on booking action: created → append new row, modified → find and update existing row, cancelled → update status column to "Cancelled".
4
Google Sheets node — connect with your Google account. Select the owner's spreadsheet and their property tab. On the created branch: append a new row to the RESERVATIONS section. Format revenue as $X,XXX before writing — the portal expects pre-formatted strings.
5
Google Sheets node (second) — update the stats block: recalculate YTD revenue, nights, average rate, and occupancy. Write these back to rows 4–7 in the stats block.
Multi-property clients: Create a "Config" tab in your master Google spreadsheet with columns for PMS property ID, spreadsheet ID, and tab name. The workflow reads this lookup table first to find the right destination for each incoming booking.

Webhook payload reference — Hospitable vs. OwnerRez

📦 Hospitable Payload — reservation.created (Primary)
{ "event": "reservation.created", "data": { "uuid": "res-abc123", "check_in": "2026-03-15", "check_out": "2026-03-19", "nights": 4, "guest": { "name": "Marcus Webb", "email": "..." }, "payout": { "host_payout_amount": 82400 }, // CENTS — divide by 100 "property_id": "prop-xyz789", "status": "confirmed" } // Full reservation data in one payload — no second API call needed }
📦 OwnerRez Payload (Aug 2025+) — full entity inline (Alternative)
{ "action": "entity_update", "entity_type": "booking", "entity": { "arrival": "2026-03-15", // check-in "departure": "2026-03-19", // check-out "adults": 2, "guest": { "name": "Marcus Webb", "email": "..." }, "amount": 924.00, // gross revenue (dollars — no conversion needed) "status": "confirmed" } // No second API call needed — all data is here }
W2
Workflow 2 · Hospitable Native · No n8n Required
Guest Messaging Sequences
Hospitable handles the full 6-message guest journey natively — triggered automatically by reservation events, sent through the booking channel, no external pipeline needed. Your job is to write the templates once, in your brand voice, and let the platform do the rest.
📅
Trigger
Booking created
or scheduled time
🏠
Hospitable
Match reservation
to message sequence
📋
Hospitable
Merge property
& guest variables
✉️
Output
Send via Airbnb,
VRBO, or email

The 6-Message Guest Journey

#MessageTriggerPlatform
1Booking Confirmation & Welcomereservation.created — immediateHospitable Native
2Pre-Arrival Info & LogisticsScheduled: 48 hrs before check-in, 10amHospitable Native
3Check-In Day WelcomeScheduled: morning of check-in, 8amHospitable Native
4Mid-Stay Check-InScheduled: day 2 of stay (3+ night bookings only)Hospitable Native
5Checkout ReminderScheduled: evening before checkout, 7pmHospitable Native
6Post-Stay Review RequestScheduled: 2 hrs after checkout timeHospitable Native
1
Set up automation sequences in Hospitable
~45 min
→ Hospitable Automations ↗
1
In Hospitable, go to Automations → Create Automation. You'll build one automation per message type. Set the trigger condition (e.g. "X hours before check-in") and the target audience (all reservations, or filter by property/channel).
2
Use Hospitable's shortcodes (their variable system) to personalize each message dynamically: {{guest_first_name}}, {{check_in_date}}, {{check_out_time}}, {{property_name}}, and custom fields you've set up in the property profile.
3
Set the delivery channel per automation: Airbnb thread, VRBO message, or email. For multi-channel bookings, Hospitable routes to the correct channel automatically.
4
Enable the conditional send option for the mid-stay check-in (message 4) so it only fires on stays of 3+ nights — prevents awkward day-2 messages on 2-night bookings.
5
Test each automation using Hospitable's preview tool before activating. Send a test to yourself with a real property and fake guest data to confirm timing, variables, and channel routing.
Write these templates in your voice — warm, specific, never corporate. The property profile details you entered in Step 1 (WiFi, parking, check-in instructions, local recommendations) feed directly into the shortcodes. A well-filled profile means messages that feel personal with zero per-message effort.
2
Message writing guidance — what makes each touchpoint work
Reference
1
Booking Confirmation — Welcome them, express genuine excitement, give one thing to look forward to (a view, a trail, a local restaurant). Under 120 words. This sets the tone for the whole stay.
2
Pre-Arrival — Everything they need to arrive smoothly: address, check-in instructions, parking, WiFi. Add one personal local recommendation. 150–200 words. This is the most important message — nail the logistics here so no one is calling you at 10pm.
3
Check-In Day — Short and warm (under 80 words). Let them know you're thinking of them and excited they're arriving. Remind of check-in time. Offer yourself as available.
4
Mid-Stay Check-In — Brief (under 60 words). Don't ask if they're enjoying it — ask if there's anything you can do to make it better. That framing catches real issues while they can still be fixed.
5
Checkout Reminder — Warm reminder of checkout time and any checkout steps (lock box code, trash, etc.). Thank them for choosing the property. Under 80 words.
6
Post-Stay Review Request — Thank them sincerely. Mention that reviews help small property owners enormously. Genuine, never pushy. Under 100 words. This fires 2 hours after checkout — timing matters, they're still in the mindset of the trip.
W3
Workflow 3 · Slack Approval — 1–2★ Never Auto-Send
AI Review Response
When a guest review posts, Claude drafts a response, routes it through Slack for approval, and auto-sends after 30 minutes — except for 1–2 star reviews, which are flagged high-priority and always wait for your manual review.
Trigger
review.created
webhook
🔀
n8n
Branch:
1–2★ vs 3–5★
🤖
Claude Sonnet
Draft response
with full context
💬
Slack
1–2★: manual only
3–5★: 30-min auto
Output
Post response
via PMS API
1
Build the review response workflow
~25 min
1
Webhook trigger — fires on review.created from your PMS
2
IF node — check rating ≤ 2. True → high-priority path (no auto-send). False → standard path (30-min auto-send)
3
Claude node (Sonnet 4.5) — send the review text, rating, guest name, stay dates, and property context. Use the review response system prompt from Section 6D.
4
Slack node (Send and Wait) — high-priority path: set timeout to 0 (manual approval only, never auto-sends). Standard path: 30-minute timeout with auto-send. Label the Slack message clearly with the star rating.
5
HTTP Request node — post the approved response via API. Hospitable: POST to /v2/reservations/{uuid}/reviews/reply. OwnerRez: via reviews endpoint (messaging partnership required — see 6A).
W4
Workflow 4 · Fully Automated · No Approval Needed
Monthly Owner Report
On the 1st of every month, n8n pulls each owner's data, Claude writes a warm narrative performance summary, and it emails the owner automatically. No human involved, no template that looks automated.
🗓️
Trigger
Schedule: 1st
of month, 8am
📊
n8n
Pull prior month's
data from Sheet
🤖
Claude Sonnet
Write narrative
performance report
📧
Output
Email owner +
update portal notice
1
Build the monthly report workflow
~30 min
1
Schedule trigger — 1st of every month at 8:00am in the client's local timezone
2
Google Sheets node — read the owner's MONTHLY_EARNINGS tab and RESERVATIONS tab for the prior month. Also pull the prior 2 months for comparison context.
3
Claude node (Sonnet 4.5) — pass all data plus property context and the owner report system prompt from Section 6D. Claude returns a 200–300 word narrative in plain text.
4
Gmail/Email node — send to the owner's email. Subject: [Property Name] — [Month] Performance Summary. Body: Claude's report with line breaks preserved.
5
Google Sheets node — write a short notice to the NOTICES section of the owner's tab (e.g. "Your March report has been sent — $3,157 net payout on its way!"). This appears in the owner portal automatically — whether they're on Softr, HTML, or Sheet Direct.
This workflow reads from the same Sheet the portal displays — no duplicate data entry anywhere. Workflow 1 keeps the Sheet current; Workflow 4 reads it. The Sheet is the single source of truth for both the portal and the report generator.
6D
The Intelligence Layer · Copy Directly into n8n
Claude System Prompts
These are the two prompts that power your Claude workflows: review responses and monthly owner reports. Guest messaging runs through Hospitable's native sequences — Claude is reserved for the work where nuance, tone, and judgment actually matter. Copy these directly into the Claude node's system prompt field in n8n.
Review Response — System Prompt + User Message Template
Workflow 3
🤖 System Prompt — Review Responses
You are a professional short-term rental property manager writing public responses to guest reviews on behalf of the property owner. These responses appear publicly on Airbnb and VRBO — they are read by future guests as much as by the reviewer. RESPONSE PHILOSOPHY: - Positive reviews (4–5 stars): Thank sincerely, reference something specific they mentioned, invite them back. Warm and brief — under 80 words. - Neutral reviews (3 stars): Thank them, acknowledge valid feedback with grace, note any improvements being made. 80–120 words. - Critical reviews (1–2 stars): More care required. Acknowledge the guest's experience without being defensive. If the criticism is valid, own it briefly. If it is factually incorrect or unfair, address it calmly — future guests will see this and appreciate professionalism. 100–150 words. Never argue. Never be sarcastic. WRITING GUIDELINES: - Always use the guest's name ("Thank you, Marcus!") - Reference specific details from their review — never write a generic response - Use "we" to speak as the management team, not "I" - End with a forward-looking statement — "We hope to welcome you back" (positive) or "We take all feedback seriously" (critical) - Never use: "We're sorry you felt that way" — it sounds dismissive to future readers RESPONSE FORMAT: Return only the response text, ready to post. No labels, no quotation marks.
💬 User Message Template — Review Response
Write a public response to the following guest review. PROPERTY: {{ property_name }} in {{ property_location }} GUEST NAME: {{ guest_name }} STAY DATES: {{ checkin_date }} to {{ checkout_date }} REVIEW RATING: {{ rating }} out of 5 stars REVIEW TEXT: {{ review_text }} ADDITIONAL CONTEXT: - Known issues during this stay: {{ known_issues }} - Improvements made since this stay (if relevant): {{ recent_improvements }} - Manager name for sign-off: {{ manager_name }}
📊
Monthly Owner Report — System Prompt + User Message Template
Workflow 4
🤖 System Prompt — Monthly Owner Report
You are a professional short-term rental property manager writing a monthly performance report to a property owner. This report arrives by email on the 1st of each month and is the owner's primary window into their investment. TONE & APPROACH: - Write as a trusted advisor and expert, not a data summary - Lead with the headline number (net payout) in the very first sentence — owners want to see this immediately - Use plain English. "Your property earned $3,157 after our fee this month" — not "Net to owner: $3,157.00" - Be honest about performance. If occupancy was below target, say so and explain why (seasonality, market conditions, what's being done) - If performance was strong, celebrate it specifically — not generically REPORT STRUCTURE (follow this order): 1. Headline: one sentence with net payout and a brief honest characterization of the month 2. The numbers: 3–4 sentences covering revenue, occupancy, average rate, and management fee — written as narrative prose, not a table 3. Notable stays: mention any interesting bookings (long stays, repeat guests, holidays) in 1–2 sentences. Skip if nothing notable. 4. Comparison: one sentence comparing to last month and prior year if data available 5. Looking ahead: 2–3 sentences on next month's bookings, pricing notes, anything the owner should know 6. Personal close: one warm sentence and a sign-off from the manager RESPONSE FORMAT: Plain text only. No markdown, no headers, no bullet points — just paragraphs as they will appear in an email. Total length: 200–300 words.
💬 User Message Template — Monthly Owner Report
Write a monthly performance report for this property owner. REPORT MONTH: {{ report_month }} {{ report_year }} PROPERTY: {{ property_name }} — {{ property_location }} OWNER NAME: {{ owner_name }} MANAGER NAME: {{ manager_name }} THIS MONTH: - Gross revenue: {{ gross_revenue }} - Management fee ({{ fee_pct }}%): {{ management_fee }} - Net to owner: {{ net_payout }} - Nights booked: {{ nights_booked }} - Occupancy rate: {{ occupancy_pct }}% - Average nightly rate: {{ avg_rate }} - Number of reservations: {{ num_reservations }} - Next payout date: {{ payout_date }} PRIOR MONTH (comparison): - Net to owner: {{ prior_net }} - Nights booked: {{ prior_nights }} - Occupancy: {{ prior_occupancy }}% NEXT 30 DAYS: - Confirmed bookings: {{ upcoming_bookings }} - Upcoming revenue: {{ upcoming_revenue }} - Current occupancy for next month: {{ upcoming_occupancy }}% ADDITIONAL CONTEXT (include only if relevant): - Issues this month: {{ issues_this_month }} - Improvements made: {{ improvements_made }} - Pricing notes: {{ pricing_notes }}
6E
Ongoing Operations
Monitoring & What Still Needs You
The system runs itself, but a brief weekly check keeps it healthy and lets you catch edge cases before they become client issues. Here's exactly what to look at — and the situations where your judgment is irreplaceable.
📋
Weekly 15-minute audit checklist
15 min/week
1
n8n Executions tab — scan for red (failed) executions. Click into failures to read the error. Most common causes: PMS webhook URL changed, Google Sheets auth expired, API rate limit hit. Most resolve with a reconnect or retry.
2
Message Queue tab in Google Sheets — look for any rows stuck in "pending" status older than 24 hours. This means the Slack approval loop stalled. Manually update the status and resend if needed.
3
Spot-check 2–3 auto-sent messages — read the actual text from column H of the queue. Confirm tone and content feel right. This is also how you catch prompt drift or data injection issues early.
4
Anthropic console — check API usage and spend for the week. Should be well under $1 for most operations. A spend spike means a runaway workflow — investigate immediately.
5
Upcoming bookings check — confirm the Message Queue has scheduled messages for all check-ins in the next 7 days. Missing entries mean a booking webhook failed on creation — add manually and investigate.
👤
What always needs a human
Reference

The automation handles the routine exceptionally well. These are the situations where your judgment is genuinely irreplaceable:

🚨
Mid-stay guest complaints & maintenance issues — if a guest reports a broken appliance, safety concern, or is unhappy with the property, this needs a human response immediately. Consider adding an n8n keyword filter (e.g. "broken", "unsafe", "refund", "unacceptable") that routes flagged guest messages directly to your phone via Slack with a high-priority notification instead of the standard queue.
1–2 star reviews — never auto-send. Claude drafts a response but you review every word before it posts publicly. A poorly handled negative review damages trust with future guests more than the original bad stay did.
💰
Security deposit claims & damage disputes — always handled directly between you and the guest with full documentation. n8n can notify you when a claim is opened, but the resolution process is yours.
📈
Pricing strategy — n8n can surface occupancy gaps and flag slow periods, but deciding when to drop rates, run a promotion, or hold firm for a holiday weekend requires your market knowledge and judgment. Tools like PriceLabs can assist, but a human sets the strategy.
🤝
Owner relationship management — the monthly report and portal handle routine communication automatically. But when an owner is considering adding another property, has a concern about performance, or is thinking about exiting, those conversations happen with you. The automation creates the space for those conversations by handling everything else.
🔑
New owner onboarding — adding a new client to the system (PMS setup, n8n workflow configuration, Softr portal, Google Sheet) is a 2-hour setup session that you run. The automation then takes over from the first booking onward.
🔁
Monthly maintenance tasks
~20 min/month
1
Google Sheets API token renewal — n8n's Google Sheets connection uses OAuth, which may require periodic re-authorization. If sheet writes start failing, reconnect the Google credential in n8n → Credentials.
2
Review owner report emails — read one or two of the reports Claude generated. Confirm the narrative matches the actual data and the tone feels like you. Refine the system prompt if anything feels off.
3
Self-hosted only — update n8n Docker image: cd ~/n8n && docker-compose pull && docker-compose up -d. Check the n8n changelog for any breaking changes before updating.
4
Check n8n execution quota (Cloud plan) — log into n8n and check the Executions Insights dashboard. If you're approaching 2,500/month, consider whether you need to optimize workflows or upgrade the plan.
6F
Full Stack Cost Summary
What the Complete AI System Costs
The full AI-enabled stack — website, portal, and automation — runs for a fraction of one booking's management fee. Everything below assumes the Softr portal path and n8n Cloud hosting.
ToolPurposeCostNotes
GitHub PagesWebsite hostingFreeUnlimited sites, custom domain supported
NamecheapDomain registration~$15/yrOne-time annual renewal
FormspreeContact form backendFree50 submissions/mo on free tier
Google SheetsOwner portal data sourceFreeWorks with both Softr and HTML portal
SoftrOwner portal (recommended)$49/moFree to test; custom domain on paid plan
n8n CloudAutomation engine~$20/mo2,500 executions/mo — plenty for most clients
Anthropic APIAI content generation~$2–5/moPay-per-use; ~$0.02 per booking total
SlackApproval notificationsFreeFree plan is sufficient
OwnerRezPMS (recommended)~$40–80/moPricing based on properties; includes channel management
Total (ex. PMS) · Softr + n8n Cloud ~$71–74/mo + $15/yr
Total (ex. PMS) · HTML portal + n8n Cloud ~$22–25/mo + $15/yr
Total (ex. PMS) · Softr + self-hosted n8n ~$63–66/mo + $15/yr
At an 18% management fee, a single $400/night booking generates $72 in revenue — covering the entire monthly software stack in one night. Every additional booking is pure margin. The AI layer pays for itself in the first guest message you don't have to write.

Context Prompt for Future Claude Sessions

When you need help modifying, debugging, or extending this automation stack, paste this into a new Claude conversation to provide full context instantly:

🤖 Context Prompt — AI Stack · Future Claude Sessions
I run an STR co-hosting business with a fully automated AI stack. Here's the full technical context: WEBSITE & PORTAL: - Website: pure HTML/CSS/JS hosted on GitHub Pages at [YOUR GITHUB URL] - Owner portal: [check which applies] [ ] SOFTR: portal at [your-softr-domain]. Google Sheets connected as data source. Owners invited via email invite, set their own passwords. Data filtered by logged-in user email. [ ] HTML PORTAL: owner-portal.html on GitHub Pages. CONFIG object auth, e('user','domain.com') email obfuscation, tab-specific CSV URLs per owner. PMS: - [ ] OwnerRez — Personal Access Token for API reads, OAuth app for webhooks. Full entity payload inline as of Aug 2025. - [ ] Hospitable — PAT auth, Bearer token. Base URL: https://public.api.hospitable.com/v2/. HMAC-SHA256 webhook verification. AUTOMATION: - n8n: [ ] Cloud (~$20/mo) at [your-n8n-url] / [ ] Self-hosted at [your-droplet-url] - Claude API: Anthropic API direct (no wrappers). Haiku 4.5 for guest messages, Sonnet 4.5 for review responses and owner reports. - Slack: #str-approvals channel, "Send and Wait" node with 30-min auto-send timeout. Interactivity webhook at [n8n-url]/webhook/slack-interactions. 4 ACTIVE WORKFLOWS: 1. Booking Sync — PMS webhook → parse → Google Sheets (reservations + YTD stats) 2. Guest Messaging — 6-message sequence via Message Queue tab; Slack approval + 30-min auto-send 3. Review Response — Claude Sonnet draft; 1–2★ manual-only, 3–5★ 30-min auto-send 4. Monthly Owner Report — 1st of month scheduler → Sheet data → Claude narrative → email owner + update portal notice DATA LAYER: - Google Sheets: one spreadsheet per client, one tab per property. Stats block rows 1–9, section markers (RESERVATIONS, MONTHLY_EARNINGS, NOTICES, DOCUMENTS) for portal parsing. Message Queue tab for workflow 2. - All sheet values pre-formatted as strings ($3,850 not 3850, 81% not 0.81). I need help with: [DESCRIBE WHAT YOU NEED]
Private · For Investors & Partners
Investor Overview
This section contains proprietary business model details, unit economics, and growth projections. Access is restricted to invited investors and partners.
🔒
Enter Investor Access Code
You should have received this code directly.
Reach out to info@hillsidestays.net to request access.
Incorrect code. Please try again or contact us for access.
The Opportunity
A high-margin, technology-first STR management business

Hillside Stays operates as a short-term rental co-hosting business in Western North Carolina — one of the fastest-growing STR markets in the Southeast. Our differentiation is structural: where most co-hosts rely on manual labor and generic software, we have built a proprietary AI automation stack that handles guest communications, performance reporting, and review management at near-zero marginal cost per additional property.

The result is a business that scales without proportionally scaling headcount. Each new owner-client we onboard adds revenue with minimal added operational burden — the system serves them automatically from the first booking onward.

Mgmt Fee
18%
of gross booking revenue
Avg Property Rev
~$4,200
gross / mo at 68% occ.
Fee per Property
~$756
management fee / mo
Tech Cost / Property
<$8
all-in software / mo
Portfolio Economics — Illustrative Model
PropertiesGross Mgmt Fees/MoStack Cost/MoGross Margin
3 properties~$2,268~$74~97%
10 properties~$7,560~$95~99%
25 properties~$18,900~$130~99%

Stack cost grows slowly because n8n scales horizontally — additional properties add minimal execution volume at existing subscription tiers. The dominant cost driver is management/labor, which the automation stack systematically reduces. These figures exclude owner payouts, channel fees, and any property-level expenses.

The Technology Moat

Most co-hosting businesses are fundamentally manual labor businesses dressed up as property management. Their operational cost scales linearly with the number of properties they manage. Ours doesn't.

Our AI stack (Claude API + n8n) handles the top five time costs of STR management — guest communications, owner reporting, review responses, booking data sync, and performance monitoring — with no human intervention for the vast majority of interactions. The time we save goes into relationship-building, market analysis, and portfolio growth: the work that actually creates competitive advantage.

TRADITIONAL CO-HOST
Manual messaging, templated responses, monthly reporting done in spreadsheets, ad-hoc review responses. Time per property: 3–5 hrs/week.
HILLSIDE STAYS
AI-drafted messages approved in Slack, automated owner reports, flagged review queue. Time per property: <30 min/week.
Growth Path
PHASE 1 · NOW
3–5 Properties
Prove the model locally. Build owner testimonials. Refine AI prompts.
PHASE 2 · 12 MOS
10–15 Properties
Expand in WNC market. First hire: dedicated property liaison. Automate onboarding flow.
PHASE 3 · 24 MOS
25–40 Properties
Adjacent markets (Asheville metro, broader WNC). License playbook to non-competing markets.
Interested in learning more?
We're selectively exploring partnerships with aligned investors and industry contacts.
→ Get in Touch
Going Live
Add This Page to Your GitHub Site
This playbook lives alongside your main website files on GitHub Pages — accessible at yourname.github.io/ai-automation or via your custom domain.
Step-by-Step Deployment
1
Download this file
Save this page from your browser: File → Save Page As → choose Webpage, HTML Only. Name it exactly: STR_CoHost_AI_Automation_Playbook.html
2
Open your GitHub repository
Go to github.com → your site repository (e.g. hillsidestays/hillsidestays.github.io). This is the same repo where your main website files already live.
3
Upload the file
Click Add file → Upload files. Drag in the HTML file. Also upload the main playbook file (STR_CoHost_Playbook.html) if it's not already there — both files need to be in the same folder for the cross-links to work.
4
Commit the changes
Scroll down on the upload page. Write a commit message like "Add AI automation playbook". Click Commit changes. GitHub Pages auto-deploys — your page will be live within 30–60 seconds.
5
Confirm the live URL
Visit https://yourdomain.com/STR_CoHost_AI_Automation_Playbook.html — or if using GitHub's default domain, https://yourname.github.io/STR_CoHost_AI_Automation_Playbook.html. All cross-links between the two playbooks will work automatically.
6
Share the investor URL
Send investors this URL with the access code in a separate message — never include the code in the same link. The access code is set in the JavaScript below. To change it: in the file, search for INVESTOR_CODE and replace the value with your chosen code. Keep it simple — 6–8 characters, easy to type on mobile.
⚙️ How the access code works
The code is checked entirely in the browser — no server needed. It is intentionally lightweight (not cryptographic) because: • The goal is friction-reduction and exclusivity, not military-grade security • The content is business-sensitive but not personally identifying • Anyone with the URL can view the public sections regardless To update the access code: open the HTML file in any text editor, search for "INVESTOR2026" and replace with your preferred code. Then re-upload to GitHub — takes 2 minutes.