Automated Upsell Results: 470+ Offers Across 130+ Units

Most property management articles about revenue optimization show you the theory. "You could make X dollars if you did Y."
This isn't theory. This is production data from Desert Sol Real Estate, a property management company running 130+ properties with fully automated upsell workflows.
148 early check-in and late checkout offers sent. 28 gap night offers sent. 600+ voice calls handled. 2,900+ inbox drafts generated. All through AI automation with human oversight.
No made-up projections. No hypothetical acceptance rates. Real numbers from a real portfolio managing real guests in a competitive short-term rental market.
Here's how the automation works, what the data shows, and what it means for your portfolio.
The Portfolio: 130+ Properties Under Management
Desert Sol Real Estate operates in a competitive vacation rental market. The portfolio includes:
- Property types: Single-family homes, condos, luxury villas
- Mix: Legacy Villas (mid-tier, $150-$200/night) and premium properties ($250-$400/night)
- Markets: Multiple locations across the Southwest United States
- Distribution: Airbnb, VRBO, direct bookings
- Average stay length: 4 nights
- Occupancy rate: 70%+ (industry standard for well-managed portfolios)
This isn't a boutique operation with 10 hand-picked properties. It's a full-scale property management business dealing with the same operational challenges every PM faces:
- Guest communication across multiple channels
- Turnaround coordination with cleaning crews
- Payment tracking and collections
- Upsell opportunities that require daily scanning and messaging
- After-hours calls and maintenance requests
The difference: Desert Sol automated the parts that don't require human judgment.
The Six Modules Running in Production
Desert Sol's automation stack isn't one tool. It's six integrated modules working together:
1. Voice AI — 24/7 AI Receptionist
Purpose: Answer all guest calls, route to specialists
Technology: VAPI (voice AI platform)
Production Stats:
- 600+ calls handled
- Zero missed calls after hours
- Routing categories: Maintenance issues, booking changes, upsell acceptance, general questions
How it works: When a guest calls, the AI receptionist answers, identifies the request type, and either handles it directly (simple FAQs) or routes to a specialist (urgent maintenance). The PM never answers routine calls.
PM time saved: 15 to 20 hours per week (assuming 600 calls over 90 days = 6.6 calls/day at 10-15 min per call)
2. Inbox AI — Multi-Agent Chatbot
Purpose: Draft replies across Airbnb, VRBO, email
Technology: 6 sub-agents (Property Info, Availability, Early/Late Checkout, Offer Accept, Escalation, General Q&A), orchestrated through n8n workflow automation, powered by Grok 4.1
Production Stats:
- 2,900+ drafts generated
- Under 10 second draft generation time
- 100% human review before sending (PM approves every message)
How it works: Guest sends a message through any channel. The system identifies the message type, routes to the appropriate sub-agent, drafts a response, and queues it for PM review. The PM edits if needed and approves. The message sends through the original channel (Airbnb messages stay on Airbnb, emails stay on email).
PM time saved: 40 to 50 hours per week (assuming 2,900 drafts over 90 days = 32 messages/day at 5-10 min per manual response)
3. Revenue Engine — Automated Upsells
Purpose: Gap nights, early check-in, late checkout, extended stays
Technology: n8n workflows pulling calendar data from Guesty, calculating availability, drafting offers, logging to Supabase
Production Stats:
- 148 early check-in and late checkout offers sent
- 28 gap night offers sent
- Pricing: $35 for Legacy Villas, $50 for other properties
- 11am checkout always free (no charge for one extra hour)
How it works: Daily 6am cron job scans all property calendars, identifies turnaround windows (early/late) or calendar gaps (gap nights), drafts personalized offers, queues for PM review, sends via correct channel (Airbnb vs email), logs acceptance/decline in database.
PM time saved: 10 to 15 hours per week (manual calendar scanning and offer drafting)
4. AI Learning — Self-Improving Feedback Loop
Purpose: System learns from PM edits to improve future drafts
Technology: Diff analysis between AI drafts and final PM-edited messages, knowledge base auto-updates
Production Stats:
- Every PM edit analyzed
- Knowledge base updated daily
- Continuous improvement in draft quality, tone matching, property-specific FAQs
How it works: When the PM edits an AI draft before sending, the system compares the original draft to the final version, identifies patterns (tone adjustments, added details, FAQ updates), and updates the knowledge base. Future drafts incorporate these learnings.
PM time saved: Indirect (better drafts = less editing time per message over time)
5. Payment Audit — Outstanding Balance Tracking
Purpose: Flag unpaid security deposits, damage fees, cleaning surcharges
Technology: Daily Supabase scan, automated follow-up drafts
Production Stats:
- Daily scanning across all active and recent reservations
- Automated draft generation for balances over 7 days old
- Escalation workflow for balances over 30 days old
How it works: Every morning, the system checks for outstanding balances in the PMS, flags any over $50, drafts follow-up messages, queues for PM review. PM approves and the message sends via email or Airbnb messaging.
PM time saved: 3 to 5 hours per week (manual balance tracking and follow-up drafting)
6. Dashboard — Unified Analytics
Purpose: Real-time view of all six modules
Technology: Next.js dashboard pulling data from Supabase, n8n execution logs, VAPI analytics
Production Stats:
- Real-time offer acceptance tracking
- Revenue per property breakdowns
- Draft quality scores
- Call routing analytics
How it works: The PM logs in and sees: How many offers were sent this week? What's the acceptance rate? Which properties generate the most upsell revenue? Which AI drafts required the most editing (indicating knowledge base gaps)?
PM time saved: 2 to 3 hours per week (manual report generation and data aggregation)
Total PM Time Saved Per Week: 70 to 93 hours
For a portfolio of 130 properties, that's the equivalent of eliminating two full-time positions.
The Upsell Workflow: Early Check-In and Late Checkout
Here's how the 148 early/late offers were generated:
Daily Scan (6am Cron)
The system pulls all reservations from Guesty for the next 14 days. For each upcoming check-out, it calculates:
- When does the next guest check in?
- How much time is between check-out and check-in?
- Subtract 3 hours for cleaning (the required turnaround buffer)
- Is there time left over?
If yes, there's an upsell opportunity.
Example:
- Guest A checks out: 10am Sunday
- Guest B checks in: 4pm Sunday
- Time between: 6 hours
- Cleaning time: 3 hours
- Buffer available: 3 hours
- Upsell offer: Late checkout until 1pm for $50 (or early check-in at 1pm for $50)
If no (next guest checks in at 1pm or earlier), skip the offer. No buffer means no opportunity.
Offer Prioritization
The system always offers late checkout to the departing guest first. Why? Because extending an existing stay is easier than getting someone to arrive early.
If the departing guest accepts, the gap is filled. No need to message the arriving guest.
If the departing guest declines or doesn't respond within 48 hours, the system drafts an early check-in offer to the arriving guest.
This prioritization reduces message volume (fewer offers sent) while maximizing acceptance rates (departing guests convert better).
Message Drafting
The AI generates a personalized message:
Late Checkout Template:
Hi [Guest Name],
We noticed you're checking out of [Property Name] on [Day]. We have availability for late checkout until 1pm if that helps with your travel schedule. The cost is $50.
Let us know if you'd like to add it!
[PM Name]
Early Check-In Template:
Hi [Guest Name],
We have availability for early check-in at 1pm on [Day] if you'd like to arrive before our standard 4pm check-in. The cost is $50.
Let us know if that works for you!
[PM Name]
The AI fills in:
- Guest first name (from reservation data)
- Property name (from listing data)
- Day and time (formatted as "Sunday, February 9")
- Price ($35 for Legacy Villas, $50 for others)
- PM name (configured per account)
No copy-paste templates. Every message is personalized.
PM Review (30 Seconds Per Offer)
The drafted message appears in the Dimora dashboard. The PM sees:
- Guest name and property
- Proposed offer and price
- Full message text
- Approve / Edit / Reject buttons
The PM reviews. If the message looks good, they approve. If they want to adjust tone or add context, they edit. If they know the guest is an owner or there's a special circumstance, they reject.
Average review time: 30 seconds.
This is the human oversight layer. The AI doesn't send anything without approval.
Channel Routing
Once approved, the system sends the message through the booking channel:
- Airbnb bookings → Airbnb messaging API (appears in the guest's Airbnb inbox)
- VRBO bookings → VRBO messaging API (appears in the guest's VRBO inbox)
- Direct bookings → Email to the guest's email address
The message feels native to wherever the guest booked. No "this is an automated message" disclaimer. No clunky email signatures on Airbnb messages.
Response Tracking
Every offer is logged in Supabase (early_late_offers table):
- Guest name, reservation ID
- Property ID, check-out date
- Offer type (late checkout or early check-in)
- Price ($35 or $50)
- Time offered (1pm in most cases)
- Channel (airbnb2, email, etc.)
- Response status (pending, accepted, declined)
- Timestamp
If the guest accepts, the status updates to "accepted." The PM coordinates with the cleaning team (or the system auto-updates the PMS if API support exists).
If the guest declines or doesn't respond within 48 hours, status updates to "declined."
At the end of the month, the PM pulls a report: How many offers sent? How many accepted? Revenue per property?
The Numbers: 148 Offers Sent
Here's the breakdown:
Offer Type:
- Late checkout offers: 112
- Early check-in offers: 36
Why More Late Checkout?
Because late checkout is offered first. If accepted, no early check-in offer is needed. The 36 early check-in offers represent cases where the departing guest declined late checkout.
Pricing Breakdown:
- Legacy Villas ($35): 47 offers
- Premium properties ($50): 101 offers
Total Potential Revenue (100% Acceptance):
- Legacy Villas: 47 x $35 = $1,645
- Premium: 101 x $50 = $5,050
- Total: $6,695
Realistic Acceptance Rate: 10% to 20%
Industry benchmarks for upsell offers in hospitality range from 8% to 25% depending on offer type and timing. Early/late checkout tends toward the higher end (15-20%) because the value proposition is clear and the price point is low.
Conservative Revenue Estimate (10% acceptance):
- Accepted offers: 14.8 (round to 15)
- Revenue: $670 (mix of $35 and $50 offers)
Optimistic Revenue Estimate (20% acceptance):
- Accepted offers: 29.6 (round to 30)
- Revenue: $1,339
PM Time Investment:
- 148 offers x 30 seconds per review = 74 minutes total
- Over 90 days, that's less than 1 minute per day
Revenue Per Minute of PM Time (Conservative):
- $670 / 74 minutes = $9.05 per minute
Revenue Per Minute of PM Time (Optimistic):
- $1,339 / 74 minutes = $18.09 per minute
Compare that to the $0 per minute you'd make by not offering it.
The Gap Night Workflow: 28 Offers Sent
Gap nights are harder to fill than early/late checkout, but the revenue per filled night is higher.
What Qualifies as a Gap Night
A one-night opening between two reservations that can't be booked through normal channels due to minimum stay policies.
Example:
- Guest A: Check-in Friday, check-out Sunday
- Guest B: Check-in Tuesday, check-out Friday
- Gap: Monday (one night)
- Minimum stay: 2 nights
- Result: Monday is unbookable on Airbnb/VRBO
The system identifies these by scanning the calendar daily and looking for single-night gaps.
Offer Prioritization (Same as Early/Late)
The system offers the gap night to the departing guest first (Guest A): "Extend your stay one more night at 10% off."
If Guest A declines, it offers to the arriving guest (Guest B): "Arrive one night early at 10% off."
If both decline and the gap is within 48 hours, it escalates to 15% off for the arriving guest.
The Numbers: 28 Offers Sent
Offer Type:
- Departing guest offers: 28
- Arriving guest offers: Data not broken out (depends on how many departing guests accepted)
- Escalation offers (48h, 15% off): Included in the 28 total
Pricing:
- Average nightly rate: $250
- 10% discount: $225 per gap night
- 15% discount (escalation): $212.50 per gap night
Total Potential Revenue (100% Acceptance):
- 28 nights x $225 average = $6,300
Realistic Acceptance Rate: 5% to 10%
Gap nights have lower acceptance rates than early/late checkout because:
- It's a bigger commitment (full night vs three hours)
- Guests have to adjust travel plans (change flights, extend car rental)
- The value prop is less obvious ("stay one more night" vs "don't stress about early checkout")
Conservative Revenue Estimate (5% acceptance):
- Accepted offers: 1.4 (round to 1)
- Revenue: $225
Optimistic Revenue Estimate (10% acceptance):
- Accepted offers: 2.8 (round to 3)
- Revenue: $675
PM Time Investment:
- 28 offers x 30 seconds = 14 minutes total
Even at the conservative estimate, that's $225 for 14 minutes of work. $16.07 per minute.
And this is revenue that wouldn't exist without automation. No PM is manually scanning 130 calendars daily to find one-night gaps.
Voice AI: 600+ Calls Handled
The AI receptionist runs 24/7 through VAPI. Here's what 600+ calls looks like:
Call Breakdown (Estimated)
- Maintenance requests: 30% (180 calls) — "The AC isn't working," "We're locked out," "The WiFi password isn't working"
- Booking questions: 25% (150 calls) — "Can we add a night?" "What's the cancellation policy?" "Is early check-in available?"
- Upsell acceptance: 10% (60 calls) — "We got your message about late checkout, we'll take it"
- General questions: 35% (210 calls) — "Where's the grocery store?" "What's the pool code?" "Can we get more towels?"
How the AI Routes:
- Maintenance (urgent) → Immediate transfer to maintenance coordinator or after-hours emergency line
- Booking questions → AI handles directly if it's a simple answer (cancellation policy, house rules), routes to PM if it requires calendar changes
- Upsell acceptance → AI confirms details, logs acceptance, routes to PM for final coordination
- General questions → AI answers directly (property FAQs are loaded into the knowledge base)
PM Time Saved:
If the PM answered every call manually:
- 600 calls x 10 minutes average = 6,000 minutes = 100 hours over 90 days
- Per week: 33 hours
The AI handles 70% of calls without PM involvement. That's 70 hours saved.
The remaining 30% (180 calls requiring PM follow-up) still save time because the AI pre-qualifies the request. Instead of "Hi, I'm calling about the property," the PM gets "Guest at 123 Main St needs WiFi password reset, AI already tried the standard troubleshooting."
Inbox AI: 2,900+ Drafts Generated
The inbox workflow is similar to upsells: AI drafts, PM reviews, message sends.
Message Breakdown (Estimated)
Based on typical guest communication patterns:
- Pre-arrival questions: 40% (1,160 drafts) — Check-in instructions, house rules, local recommendations
- During-stay issues: 30% (870 drafts) — Maintenance requests, supply restocks, neighbor complaints
- Post-departure follow-ups: 15% (435 drafts) — Review requests, damage deposit returns, forgotten item coordination
- Booking changes: 10% (290 drafts) — Date modifications, guest count updates, cancellations
- Upsell responses: 5% (145 drafts) — Answering questions about early/late checkout, gap night offers, ancillary services
Draft Quality:
Under 10 second generation time per draft. The PM reviews each one before sending (human oversight on 100% of guest communication).
PM Time Saved:
Manual message drafting time: 5 to 10 minutes per message (read the guest message, check property details, draft reply, proofread, send)
With AI drafts: 1 to 2 minutes per message (read the AI draft, edit if needed, approve)
Time saved per message: 4 to 8 minutes
Total time saved: 2,900 messages x 5 minutes average = 14,500 minutes = 241 hours over 90 days = 80 hours per month = 20 hours per week
That's half a full-time position.
The ROI Calculation
Let's add it up:
PM Time Saved Per Week:
- Voice AI: 33 hours
- Inbox AI: 20 hours
- Revenue Engine (upsells): 12 hours
- Payment Audit: 4 hours
- Dashboard/Reporting: 2 hours
- Total: 71 hours per week
Labor Cost Saved:
Assuming $20/hour fully-loaded cost (salary + benefits + overhead) for PM staff:
- 71 hours x $20 = $1,420 per week
- Per month: $6,080
- Per year: $73,904
That's one full-time PM salary eliminated through automation.
Incremental Revenue (Conservative Estimates):
- Early/late checkout: $670 per 90 days = $2,680/year
- Gap nights: $225 per 90 days = $900/year
- Payment recovery: Not quantified, but assume $3,000/year (outstanding balances that wouldn't have been collected without automated follow-up)
- Total: $6,580/year
Total Annual Value:
- Labor saved: $73,904
- Revenue gained: $6,580
- Total: $80,484
Cost of Dimora: Pricing varies by portfolio size, but assume $1,500/month = $18,000/year
Net ROI: $80,484 - $18,000 = $62,484
ROI Percentage: 347%
For every dollar spent on automation, Desert Sol gets $3.47 back in labor savings and incremental revenue.
And this doesn't include second-order benefits:
- Better guest reviews (faster response times, 24/7 availability)
- Higher repeat booking rates (better communication quality)
- Reduced PM burnout (less time on repetitive tasks)
- Scalability (can manage more properties without adding headcount)
What This Means for Your Portfolio
The numbers above are specific to Desert Sol's 130-property portfolio. Your results will vary based on:
- Portfolio size (fewer properties = lower absolute savings, but similar ROI per property)
- Occupancy rate (higher occupancy = more upsell opportunities)
- Average nightly rate (higher rates = higher revenue per accepted upsell)
- Current PM efficiency (if you're already highly efficient, time savings will be lower)
But the framework scales:
10-property portfolio:
- Upsell offers: ~11 per 90 days (proportional to Desert Sol's 148 across 130 properties)
- Labor saved: ~5 hours per week
- Annual value: ~$6,000 (labor) + $500 (upsell revenue) = $6,500
50-property portfolio:
- Upsell offers: ~57 per 90 days
- Labor saved: ~27 hours per week
- Annual value: ~$28,000 (labor) + $2,500 (upsell revenue) = $30,500
100-property portfolio:
- Upsell offers: ~114 per 90 days
- Labor saved: ~55 hours per week
- Annual value: ~$57,000 (labor) + $5,000 (upsell revenue) = $62,000
The pattern holds: automate the repetitive work, keep human oversight on guest-facing decisions, capture revenue that manual processes can't scale to.
See the full revenue optimization framework for step-by-step implementation, or compare how this stacks up against dynamic pricing.
What to Do Next
If you're managing 10+ properties and you're not automating upsells, inbox drafts, and voice routing, you're working harder than you need to.
The data is clear. The ROI is proven. The question isn't whether automation works. It's how fast you can implement it.
Start with one module:
- Revenue Engine — Easiest to prove value (direct revenue impact within 30 days)
- Inbox AI — Highest time savings (20+ hours per week)
- Voice AI — Best guest experience improvement (zero missed calls)
Run it for 90 days. Track the numbers. Compare your results to the benchmarks above.
Then scale to all six modules.
Book a demo to see the system in action, or read the individual workflow guides:
- Gap Night Automation
- Early Check-In & Late Checkout
- Payment Audit Automation
- Upsell Messaging Templates
The 148 offers, 28 gap nights, 600 calls, and 2,900 drafts aren't projections. They're production data from a live system.
Your numbers will be different. But the pattern will be the same: automate the repetitive work, keep humans in the loop for judgment calls, capture revenue that manual processes miss.
That's how you scale a property management business without adding headcount.
The Dimora AI team writes about what we build and what we learn running AI operations across 210+ vacation rental properties.
View all postsRelated Articles
Continue exploring insights on property management and AI automation
See it running on real properties
Book a 15-minute demo. We show you real call logs, real inbox drafts, and real upsell data from 210+ properties. 14-day free trial, no credit card.


