AI drafts. You approve. The pilot writes every draft as DRAFT - PENDING OWNER REVIEW into a spreadsheet, and a person sends approved messages from the booking platform. The examples use Bay Light Day Cruises, Seward, a fictional teaching business. What you type on this page stays in this browser.
The pain it fixes
For the traveler
78%keep planning after they book. Only 18% stop.
4 in 10have changed a booked stay after seeing a better option, and 41% watch the price of a booking they already hold.
The booking never feels final. Doubt keeps working after the payment.
For your business (my read)
Doubt shows up after the booking as changes and cancellations inside the free-cancellation window. A seat freed two days out is hard to resell. Chasing every flexible booking with discounts costs more than it saves.
The fix is not a price cut. It is a booking that feels safe to keep.
What would raise confidence
Asked what would make them more comfortable with AI-assisted booking, travelers chose:
So: confidence first, discount last. The same three wishes make a good post-booking message (my read). Message A, the confidence note, says what to expect and how to review or change the booking, gives one checkable proof point, and names a person who can step in. A discount comes last, if at all, and only on terms the owner writes.
Source: Skift Research + McKinsey, Winning Hearts in an Age of Infinite Travel Choices, Sept 2026 · survey of 1,015 US travelers, data as of June 2026 · US travelers, not Alaska visitors. Confidence factors: Exhibit 9. "4 in 10" is the report's page 26 figure; its summary says "half", so treat it as 4 in 10 to half. Figures last verified 2026-10-10.
Is it for you?
Built for: operators with about 1,500 or more bookings a season on a booking platform with an API (FareHarbor, Peek, Checkfront, Cloudbeds or similar), plus a developer or vendor. A multi-day tour company or a 20-room lodge fits. You also need 2.a (the honest picture) and 2.b (approved facts) done first, because message A is built from them.
Smaller? The post-booking calendar from the session (five messages, one job each) gets most of the benefit with no code. The demo below still teaches the method.
Answer the three questions to see where to start.
Post-booking message rules
Write these down before the first draft. The reference code builds them in.
- Policy choice Nothing sends without a person. Drafts land in an approval queue as PENDING. The reference code has no sending function at all, and a test fails if anyone adds one.
- Policy choice No competitor price matching. Do not match rates and do not chase every cancellable booking. Pick the most exposed bookings by a rule you can read.
- Recommendation Confidence first, discount last. Every treatment booking gets message A. At most one follow-up: B (one add-on) or C (lock-in offer). C exists only if the owner writes its terms.
- Recommendation Approved facts only. Drafts use your fact sheet, your approved add-on list and your written terms. Anything missing stays as [FILL] for a person to supply. Asking the AI to check its own draft is not verification.
- Policy choice Contractual No guest personal data in the pilot. Only booking id, dates, rate type, channel, party size and add-ons. Names, emails, phones and payment data stay in the platform. Check your platform's API terms and the model provider's data terms.
- Contractual Promotions to OTA guests. B and C are promotional, so by default they go only to direct bookings. Check your OTA supplier agreement (for example Viator's) and any hotel-desk agreement before contacting their guests with offers.
- Legal mandate Commercial email and texts. Promotional email needs an honest subject line, your postal address, a working opt-out and, unless the guest agreed to receive it, a clear note that it is an ad. Opt-outs must be honored (CAN-SPAM Act, 15 U.S.C. 7701 to 7713; 16 CFR Part 316). Marketing texts sent with automated tools generally need prior express written consent (TCPA, 47 U.S.C. 227; 47 CFR 64.1200). Ask your platform how its messaging handles this. This is not legal advice.
- Legal mandate Lodging prices. A lodge offer that shows a price must show the total price, including mandatory fees (16 CFR Part 464, in effect since May 12, 2025). The rule covers short-term lodging, not tours.
- Policy choice Safety wording has an owner. Weather plan B, sea state, glacier and wildlife lines are drafted by AI and owned by your captain or operations lead. No promised sightings.
- Recommendation Holdout guests lose nothing. They still get every normal confirmation, safety and weather message. Only the pilot's extra messages are held back.
- Recommendation Stop rule. Pause the pilot if complaints or opt-outs rise, and decide before you start who makes that call.
How it works
- Pull. Each night, export open bookings. The adapter keeps an allow-list of columns, drops everything else and logs the dropped column names, never their values.
- Score. A rule set you can read and change. Higher score means more likely to change or cancel inside the free-cancellation window. The top 10% are eligible.
- Assign. Eligible bookings go at random to treatment or holdout, 50/50 for a pilot. The draw is seeded, stored once and never redone.
- Draft. For treatment bookings only: message A, then at most one follow-up. Templates only (dry run), or a model API improves the wording. Local checks flag new numbers, banned phrases, promises and personal data.
- Approve and send. A person fills each [FILL], edits, approves, and sends from the booking platform.
- Report. Monthly in season: in-window changes and cancellations, treatment versus holdout, flexible and non-refundable separately, with 95% intervals and a "directional" label when the sample is small.
The starting score
| Rule | Points | Why |
|---|---|---|
| Booked more than 60 days before the trip | +2 | More time to find something else |
| Flexible (free-cancellation) rate | +2 | Leaving costs nothing |
| Booked through an online travel agency | +1 | One tap from other options |
| No add-ons on the booking | +1 | Less invested in the day |
| Price-alert flag (only if your platform has one) | +1 | Off by default |
A starting guess to test, not a prediction model. The weights live in rules.json; change them, note who changed what and when Policy choice
Three messages, and nothing else
A · Confidence note
What to expect, the weather plan, how to review or change the booking, one checkable proof point and a named person. Goes to every treatment booking, on any channel.
See the fictional draft
DRAFT - PENDING OWNER REVIEW Subject: Your 4-hour wildlife and glacier cruise on Tuesday, July 14, 2026: what to expect Hello, Thank you for booking the 4-hour wildlife and glacier cruise on Tuesday, July 14, 2026 at 9:00. Here is what to expect, so there are no surprises. What to expect - Heated enclosed cabin and two restrooms on board. - Hot drinks are included. Lunch is not included. - Meeting point: the small-boat harbor, a 12-minute walk from the cruise ship dock. - Weather: The cruise runs in rain. It cancels only for a marine warning, with a full refund. If your plans change - Free cancellation until 48 hours before departure. Inside 48 hours, no refund. - To review or change your booking, reply to this message or call [FILL: contact person] at [FILL: contact phone]. A person on our team will help you. Our track record - [FILL: track record] See you at the harbor, The Bay Light Day Cruises team
B · One add-on
One option from your approved list that fits the day, clearly optional. Partners approve their own lines. Direct bookings only by default.
See the fictional draft
DRAFT - PENDING OWNER REVIEW Subject: One idea for your day in Seward on Tuesday, July 14, 2026 Hello, You are booked on the 4-hour wildlife and glacier cruise on Tuesday, July 14, 2026 at 9:00. Guests often ask what else fits the same day, so here is one option we know well. Mile 12 Kennel summer sled-dog cart ride (partner) - 90 minutes, 15 minutes by car from the harbor, ages 2 and up, runs in rain. - Prices and times come from Mile 12 Kennel directly. - Book with Mile 12 Kennel and mention referral code BAYLIGHT-K. It is optional, and your cruise booking stays the same either way. Please check the age limits for your group. Questions? Reply to this message or call [FILL: contact person] at [FILL: contact phone]. The Bay Light Day Cruises team [FILL: postal address and opt out]
C · Lock-in offer
An option to switch to non-refundable, only on terms the owner writes. Never a competitor price match. Off until you write the terms.
See the fictional draft
DRAFT - PENDING OWNER REVIEW Subject: An option for your Tuesday, July 14, 2026 cruise Hello, You are booked on a flexible rate for the 4-hour wildlife and glacier cruise on Tuesday, July 14, 2026 at 9:00. Nothing changes unless you choose to. If you would like to lock in your booking now, here is our offer: FICTIONAL EXAMPLE TERMS: switch to our non-refundable rate at least 30 days before your trip and we add a printed wildlife guide for each guest. (The owner writes the real terms.) If you do nothing, your current booking stays as it is. Free cancellation until 48 hours before departure. Inside 48 hours, no refund. Questions? Reply to this message or call [FILL: contact person] at [FILL: contact phone]. A person on our team will help you decide. The Bay Light Day Cruises team [FILL: postal address and opt out]
Each [FILL] is a fact the fictional owner has not supplied yet. The pilot never guesses it.
What the demo shows: in the fictional data, the most exposed bookings came through an online travel agency. So the pilot drafted only message A for them, and held B and C back for contractual reasons. For many operators, the confidence note is the whole lever.
Build brief
Give this to a developer, a vendor, or a coding agent (Claude Code, OpenAI Codex or Gemini CLI). It is the Prompt Kit brief with three updates: a 50/50 holdout for the pilot, Wilson intervals in the report, and checks on every draft.
Your build brief
The original brief, as printed in the Prompt Kit
Kept for reference. It holds back 20 percent; for a pilot, use 50/50 (see the sample size below).
Design and build a post-booking retention pilot on [BOOKING PLATFORM]. Nightly: pull open bookings through the platform API (booking id, lead time, rate type, channel, party size, add-ons, price-alert flag if available). No guest names, emails or payment data leave the platform. Score exposure with a transparent rule set I can read and change, for example: +2 lead time over 60 days, +2 flexible rate, +1 OTA channel, +1 no add-ons. For the top 10 percent by score, call a model API to draft one of three approved messages and nothing else: (A) a confidence note stating what to expect and the weather plan B, (B) one relevant add-on from the approved list, (C) a lock-in offer to convert to non-refundable on terms I supply. The model must use only the approved facts file. Write drafts to an approval queue (a Google Sheet or email drafts). Nothing sends without a person. Randomly assign 20 percent of eligible bookings to a holdout that receives nothing, and store the assignment. Report monthly: in-window changes and cancellations, treatment versus holdout, as counts and rates, with flexible and non-refundable bookings shown separately. Do not match competitor prices and do not chase every cancellable booking.
Sample size: how many bookings a clear answer needs
Before you build, check whether your season is big enough to prove anything. This is the same calculation as python pilot.py power: a two-proportion test, alpha 0.05 (two-sided), power 0.8.
| Split treatment/holdout | Holdout | Treatment | Total | vs 50/50 |
|---|---|---|---|---|
| 50/50yours | 2,036 | 2,036 | 4,072 | 1.00x |
Your season: 150 eligible bookings a season.
What the numbers say
- Recommendation Use 50/50 for a pilot. The original brief held back 20%. An 80/20 split needs about 1.5 times as many bookings for the same answer: 6,212 instead of 4,072 at 15% to 12%. The rule of thumb, 1 / (4 x 0.8 x 0.2), says 1.56 times.
- A single operator gets a directional read. With 1,500 bookings and the top 10% eligible, you see about 150 eligible bookings a season, 75 in each arm at 50/50. A confirmatory answer needs about 27 seasons. A directional read is still worth having; it is not evidence to scale on.
- Pooling through ATIA can answer it in one season. About 28 operators running the same rules, the same messages and the same 50/50 split, sharing counts (never guest data), reach the sample size together. That needs a written data-sharing agreement Contractual
Method: normal approximation for two proportions, pooled rate under "no effect", rounded up to whole bookings. The 15% baseline is an example, not a measured Alaska figure: use your own last season. Estimates only.
Read a result
At the end of a month, type the counts from your report. The page shows each rate with a Wilson 95% interval and says how far to trust it.
Type four counts to see the rates.
The demo result comes from the fictional, simulated season in the download. It looks like a big gap, but with 14 and 13 bookings it is most likely noise. Use the sample size above for "confirmatory": below it, the read is directional.
Download the reference pilot
A small Python program that runs the whole method on 300 fictional bookings, with no keys and no internet. It scores, assigns, drafts A, B and C into an approval queue, reports with Wilson intervals, and runs the sample size. It has no sending code.
Unzip it, open a terminal in the folder, and type:
python pilot.py demo
On a Mac, type python3 instead of python. The README walks a non-developer through every step, including your own data and optional model drafts.
Look inside first
- README.md Start here. Plain-language steps, rules and limits.
- sample_output/example-drafts.md One draft of each type, plus a bad draft and the flags the checks raise.
- sample_output/output/approval_queue.csv The approval queue from the demo, every row PENDING.
- sample_output/output/report.md The demo report: treatment versus holdout with intervals.
- rules.json Scoring points, holdout share and seed, message order, banned phrases.
- approved_facts.md The only facts a draft may use (fictional).
- approved_addons.csv Partner add-ons with "fits when" rules (fictional).
- templates/A · B · C A, B and C wording with blanks.
- data/baylight-bookings-mock.csv 300 fictional bookings, no personal data.
- pilot.py The program.
- Prompt-Kit-3x3.html, section 2.c The original brief in the printable kit.
Platform connections (FareHarbor, Peek, Checkfront, Cloudbeds) are empty stubs: their APIs are not verified here. Optional model drafting works with Claude; the OpenAI and Gemini options are not tested against a live API. Effort and cost are estimates.
How you will know it worked
Number 4 · In-window changes and cancellations, against the holdout
Bookings changed or cancelled inside the free-cancellation window, divided by bookings, counted monthly in season. Show flexible and non-refundable bookings separately. Compare treatment with holdout by assigned group, whether or not each draft was sent. Leave operator cancellations (a marine warning) out.
Revenue kept: the value of in-window cancellations in each group, per booking. Cost: staff minutes per approved draft, plus API fees. Guardrails: complaints and opt-outs.
Start counting before the pilot so you have a baseline. Most single operators will get a directional read, not proof Recommendation
Before this rung
2.c is the top rung of Pain 2. Message A is only as good as the facts behind it: 2.a The honest picture gives you the "what to expect" lines, and 2.b Grounded answer assistant gives you approved facts that cite their source.
Before you use it
AI drafts. A person approves. Every draft is marked DRAFT - PENDING OWNER REVIEW and waits in a queue. A person who knows the operation checks every fact, fills every [FILL] and sends approved messages from the booking platform. Local checks and AI self-review are not verification.
- Recommendation Test on the fictional data first, then on a copy of your own export with personal columns removed. Never paste guest names, emails, phone numbers, card numbers, IDs or medical information into any tool.
- Contractual Read your booking platform's API terms, your OTA agreements and your model provider's data terms before connecting anything.
- Policy choice Your cancellation terms, any lock-in offer and the holdout share are business decisions. The AI words them; it does not set them.
- Recommendation Safety-critical lines (weather go/no-go, sea state, glacier, wildlife) are owned by your captain or operations lead.
This page keeps what you type in this browser only. Nothing is sent anywhere.
Facts and figures last verified 2026-10-10.