Tour-operator pipeline automation

Tour Manager

End-to-end automation of hotel-booking confirmation for a tour operator — from the booking in their system to the partner invoice — where a manager only reviews and approves.

1,300+
bookings in production
days → min
per request
~10×
less manual work
Who it's for

Inbound tour operators and destination management companies (DMCs) on the SAMO system — this one runs for a DMC in Montenegro — plus high-volume outbound operators and MICE / group desks.

How it works

01

Intake

Bookings arrive from SAMO and email automatically — no re-keying.

02

Validate & group

Each request is checked against stop-sales, prices and ages, then merged where it makes sense.

03

Ask the hotel

A clean request email is drafted; the manager approves and it sends.

04

Understand the reply

Any hotel reply is matched to its booking and parsed — confirm, reject, alternative or price change.

05

Approve & invoice

The manager approves the outcome; a PDF invoice is generated for the partner.

Features

SAMO intake

Pulls bookings straight from the operator's SAMO system (MSSQL), incrementally, with multi-room claims split per room.

Email integration

Partner and hotel mailboxes over Microsoft Exchange (Graph API) — notifications in, requests and replies tracked.

Validation engine

Stop-sale, child ages, contract net prices, allocation and dates — checked automatically before anything goes out.

Booking grouping

Bookings with the same hotel and dates are merged into a single hotel request.

Deterministic hotel emails

Request emails are built without an LLM — consistent, and free per message.

Reply matching & parsing

A 4-strategy cascade finds which booking a reply belongs to; an LLM reads confirm / reject / alternative / price change.

Availability across 9 OTAs

Google Hotels, SynXis, IHG, One&Only, Hyatt, Phobs, Booking.com, D-EDGE and Iberostar — for substitutes.

Invoicing

Pulls invoice data from SAMO and attaches a PDF to the partner confirmation.

Results in production

522
bookings confirmed
~500h → ~50h
per 1,000 requests
9
OTA systems for alternatives
16+
self-heal checks every 5 min

Examples it runs end-to-end, on its own:

  • Confirm a standard hotel booking end-to-end
  • Flag a stop-sale before a request goes out
  • Read a hotel reply and extract the confirmation number
  • Find an alternative hotel when the first is full
  • Generate the partner invoice as a PDF

What makes it different

Deterministic where it can be

Hotel emails are built without an LLM — zero tokens per message; AI is used only where free text needs understanding.

Self-healing pipeline

A “pipeline doctor” runs 16+ checks every 5 minutes, reviving stuck bookings and chasing lost replies.

Robust reply matching

Tag → booking number → hidden marker → guest surname → LLM fallback — reliable even on forwarded threads.

Deep SAMO integration

Direct read of bookings, stop-lists, contract prices, allocation and invoice data.

Built with

Python 3.12 asyncFastAPICelery + RedisPostgres + MSSQL (SAMO)Microsoft Graph (Exchange)LLM cascade Gemini → Claude → GrokJinja2 + HTMX admin

Want this for your process?

Selfware learns a process and compiles it into code. Tell us about yours.