Case Study · Hospitality

Hotel Outreach Automation

Short answer: We built an end-to-end system that discovers hotels, enriches each property with the data the AI needs, generates a personalized sales message per property, sends it, and handles replies. It runs on n8n, the Claude API, and a custom Playwright scraper. One hour of manual sales work per property collapses into minutes of compute. Hundreds of properties get touched per run.

TL;DR

The problem:
Hand-researching and writing one personalized sales email per hotel takes ~1 hour. Doing it across hundreds of properties is a full-time job nobody wants.
The system:
n8n orchestration + Playwright scraping + Claude API personalization + Smartlead sending + AI-classified reply handling. Five stages, fully automated.
The result:
Roughly two-digit-percent reply rate, multiple meetings booked per campaign cycle, and dozens of operator hours saved per run vs. doing it by hand. Estimates, see FAQ for context.
Build time:
Two weeks to first production send, four to full system.

The problem: sales outreach that does not scale

Booking a meeting with a hotel general manager is not a cold-spam game. You need to know what booking engine they run, who their parent group is, what specific friction their reservations team has, and what makes their property different from the property four blocks away. That research takes about an hour per property when a human does it well.

When the target list is hundreds of hotels, that hour-per-property cost becomes an entire role. The sales team either skips the personalization (and tanks reply rates) or never gets through the list (and the pipeline dries up). According to Gartner's B2B sales research, the personalization step is the single largest time sink in modern outbound, and the bottleneck most often solved with automation.

The system: five stages, fully automated

The pipeline is intentionally generic. Each stage is a discrete n8n workflow that hands its output to the next, with retries and dead-letter handling at every step. Adding a new vertical (real estate, SaaS, etc.) means swapping the discovery and prompt stages, not rebuilding.

Stage 1: Discovery

A custom Playwright scraper crawls public hotel directories and search endpoints, collecting candidate properties that match a target profile (size, location, segment). Output: a deduplicated list of property names, URLs, and basic firmographic data.

Stage 2: Enrichment

For each property, the system pulls structured data the AI will need to personalize: booking engine detected (via a separate Go service that runs a three-stage cascade — HTML signature → link follow → headless browser), parent group, contact email patterns, recent reviews, and a one-paragraph property summary scraped from the hotel's own About page.

Stage 3: Personalization

The enriched record is handed to the Claude API with a structured prompt that includes the property summary, the detected booking-engine pain points, and our offer template. The model produces a 60-90 word email that references something specific about the property, ties it to a measurable friction, and ends with a single low-commitment ask. We use the Anthropic prompt-engineering patterns (clear role, structured examples, explicit do-not-do list) so the output is consistent across hundreds of generations.

Stage 4: Sending

Approved messages go through Smartlead with per-domain warmup, sending windows tuned to the target's time zone, and A/B variants on subject line. Send pace is throttled to keep deliverability healthy across many properties per day.

Stage 5: Reply handling

Inbound replies hit a classifier that buckets them as positive, objection, OOO, or unsubscribe. Positives auto-book into a calendar slot and notify the founder in Slack; objections get a one-shot context-aware follow-up drafted by Claude and queued for human approval.

The tech stack

  • Orchestration: n8n, self-hosted on Hetzner. Picked over Zapier and Make because the pipeline has loops, branching, and custom code nodes that the SaaS tools either cannot do or charge per-execution prohibitively for.
  • AI: Claude API (Sonnet for personalization, Haiku for the reply classifier). The quality/cost tradeoff lands cleanly on Anthropic models for this workload.
  • Discovery: Playwright (Python) for the scraper, with a Go service running the booking-engine detection cascade.
  • Sending: Smartlead with multi-inbox rotation. Replies route back into the n8n pipeline via webhook.
  • Storage: Postgres (Supabase) for property + send + reply records, batched writes from the n8n flow.

The results (conservative estimates)

Specific per-campaign numbers are kept confidential, but the order-of-magnitude improvements are consistent across runs and worth reporting honestly:

~50×
Faster than the manual hour-per-property workflow it replaces.
Double-digit %
Reply rate, vs. low single digits typical for unpersonalized cold outreach in hospitality.
Dozens
Of operator-hours saved per campaign cycle vs. the manual workflow.

Numbers above are conservative ranges aggregated across multiple deployments. Exact figures vary by list size, offer, and target market. See the FAQ for context on how these estimates are reported.

How a build like this rolls out (5 phases)

  1. Discovery (week 1): map the target list, the existing sales motion, and where the hour-per-property cost lives. Decide what to keep human and what to automate.
  2. Architecture (week 1-2): pick the orchestration tool, the model, the sending stack, and the data model. Write a one-page diagram so the entire system fits on one screen.
  3. Build the unsexy parts first (week 2-3): scrapers, enrichment, dedupe, write-backs. The AI step is the easy part if the data going into it is clean.
  4. Tune the AI step (week 3): run the personalization stage against a sample of 20 properties, eyeball every output, iterate the prompt until 18 of 20 are send-worthy without edits.
  5. Ship, monitor, iterate (week 4+): send live, watch deliverability and reply quality dashboards, adjust cadence and prompts from real signal.

Why this pattern generalizes

The architecture (discover → enrich → personalize → send → handle replies) applies to any outbound motion where personalization is the bottleneck. Real estate brokers, B2B SaaS, professional services, recruiters, education — same five stages. The model behind the personalization step and the discovery query are what change.

According to Deloitte's State of AI survey, 79% of organizations report that AI-driven personalization at scale is the single biggest unlock in their sales motion. The hard part is not the AI, it is the plumbing that gets clean data in and clean actions out. That is what this build solves.

Frequently asked questions

How long did the hotel outreach automation take to build?

The first production version shipped in roughly two weeks. The full system, including the enrichment layer, message-personalization step, and reply-handling logic, came together over four weeks of focused build time. Most Code2b client builds ship on a similar 2 to 4 week timeline.

What tools does the automation use?

The orchestration runs on n8n (self-hosted), the personalization layer uses the Claude API, hotel discovery uses a custom Playwright scraper, and contact enrichment pulls from a mix of providers. Sends go through Smartlead. Everything is wired so that adding or swapping a tool is a single integration change, not a rebuild.

Can the same system work for industries other than hospitality?

Yes. The architecture is generic: discover targets, enrich with the data the AI needs to personalize, generate personalized outreach, send, handle replies. We have shipped variants of this pipeline for real estate, B2B SaaS, and professional services. Only the data sources and the AI prompt change per vertical.

How much does a system like this cost to build?

A focused outreach-automation build typically starts around $5,000 for a single-channel pipeline and scales to $20,000+ for a multi-channel, multi-vertical system with custom enrichment. Operating costs (Claude API + sending tools + hosting) usually run a few hundred dollars per month for hundreds of properties processed.

Where did the results numbers come from?

Results below are based on aggregated, conservative ranges across the live deployment of this system. Numbers like reply rate and meetings booked are reported as rough orders of magnitude rather than precise per-campaign figures to protect client confidentiality. Your actual results depend on your offer, list quality, and target market.

Want a system like this for your business?

Book a free 30-minute strategy call. We map the outbound work eating your team's time and scope a system that replaces it.

Book your free strategy call
Aleksandar Janca headshot
Aleksandar Janca
Founder, Code2b