Home
World 50 Group
Event Travel BookingV4
1 / 7
Discovery · September 2026 from notes with Palmer Ramsay, Member Experience v4 · Palmer's clarifications

Event Travel Booking

How staff flights for World 50 events get booked, invoiced, and recorded — and what we'd like Agentforce to take over.

GOAL
Accrual → actual, automatically
When the travel agent's itinerary lands, an actual invoice is logged in Salesforce with the flight details and PDFs attached, the placeholder is reduced, and the ME Lead is notified.
SPIKE · NOT A PRIMARY GOAL
Non-event travel audit
A peripheral benefit: the same pipe might address the non-event travel report audit problem. It works differently and could be trickier, so it's scoped as a spike.

Click through for today's process, the ask, and a before / after of the Salesforce record. →

Today · How a booking happens

Four steps, and the agent's email at the end of them.

Nothing about the booking itself changes in this project. The sequence below is the process as it runs today.

1
✅
Permission
Associate gets the go-ahead — an email triggered from Salesforce — that they can book travel for the event.
2
✉️
Email the agent
Associate emails the travel agent (Carlisle Travel) with the event's code and the flight request.
3
🛫
Agent books
Agent books the flight on the company card — or the associate's personal card on file.
4
📎
Agent sends the packet
Sabre-generated email to the traveler and the event lead: itinerary, eInvoice, eTicket receipt.
What arrives in step 4
🗓️
Travel Reservation
Itinerary · flights, seats, terminals
🧾
eInvoice
Invoice number, code remark, card, total
🎫
eTicket Receipt
Ticket number, fare, taxes, total
Email today; could be Slack or another channel.
Sample packet · Carlisle Travel invoice 0010175
real example
Traveler
Caroline Lowery Sipe
Reservation
LWYZPL · DL GO9S52
Issued
26 Aug 2026
Outbound
DL 524 · ATL → LGA · Tue Oct 6 · 2:30p – 4:39p · seat 23D
Cost
$512.80
Return
DL 969 · LGA → ATL · Sat Oct 10 · 4:00p – 6:32p · seat 23C
Card
Visa ····2813
Code (remark line)
60530-DF50-MDXX-LSUM-261007DF50LSUM
The packet already carries every field a Salesforce invoice would need: who flew, which flights, the code, the cost, and the card. Today it arrives as PDFs on an email.
Today · Where it lands in Salesforce

Per packet, two manual motions: edit the estimate, create an actual.

The ME Lead creates an Estimated invoice under "Travel Expenses" — e.g. 7 staff × $500. As each packet comes in, the estimate is edited down, the actual goes into the notes, and a new individual invoice is created by hand to log it.

⏱
Invoice Received
Inv-47908
Estimated
CampaignPR50/GA50 September 2026 Summit
AccountTravel Expenses
Campaign BudgetC-42503 · 60530 EE Flights
Invoice Amount$5,000
Date Received—
Attachment
Approval StatusNot Started
Invoicing Notes
Based on 8 staff × $500
– $426.80 (Matt Reiter)
– $416.81 (Said Aarji)
– $326.80 (Amanda Sills)
– $416.81 (Madelyn L. McGrady)
– $564.80 (Lydia Hall)
– $59.00 (Zoe Mintz)
– $503.80 (Palmer Ramsay)
Travel Details
Flights, dates, travelersection exists — empty
Invoice amount history · Inv-479087 edits
5/7
$5,000.00created
6/11
$4,573.20–$426.80
7/2
$4,156.39–$416.81
7/21
$3,412.78–$743.61
8/11
$1,500.00–$1,912.78
8/13
$500.00–$1,000.00
8/18
$0.00–$500.00
The actuals, created by hand one per flight: Inv-48645, -48889, -49116, -49117, -49713 → $2,714.82 against a $7,875 budget. Per campaign, one Estimated invoice slowly reduces while 7–14 individual invoices get created.
Seven placeholder edits plus five hand-created invoices on this event so far — and the flight details themselves never land as fields.
The ask · Leverage Agentforce

When the agent's packet arrives, the record updates itself.

Same booking process. Agentforce reads the Sabre email, finds the placeholder, and moves it from accrual to actual — one traveler at a time, as bookings happen.

📎
Agent packet arrives
Itinerary + eInvoice + eTicket, addressed to the traveler and event lead.
🤖
Agentforce reads it
Pulls traveler, flights, dates, cost, card, and the code from the remark line.
⏱
Salesforce updates
Logs the actual invoice with flight info, cost, and the PDFs attached; reduces the placeholder.
🔔
ME Lead notified
24 hours to change the flight if anything is wrong.
remark · 60530-DF50-MDXX-LSUM-261007DF50LSUM → Campaign Project ID · 261007 - DF50 - LSUM the code in the packet is how the right event is found
1
The placeholder already exists
The ME Lead has entered an invoice under the "Travel Expenses" contract as a placeholder for the event's flights.
e.g. 7 people going, ~$500 per flight → placeholder of $3,500
2
Agent invoice matches or replaces it
With some wiggle room on amount. Creates the actual invoice with flight, departure, dates, cost — and the packet PDFs attached, not just the fields.
Priority: logging the itinerary and packet. Updating the accrual (reduce or delete) is a nice-to-have.
3
ME Lead is notified
Each time an update lands. They then have 24 hours to change flights if anything is wrong.
Updates arrive piece-meal — one per associate, whenever the agent books them. The traveler still gets their itinerary by email as today (calendar-friendly); nothing changes for them.
The record · Before and after

One booking, as it would land.

Left: the placeholder today. Right: the same event after one packet is processed — Caroline's Oct 6 trip, real values from the sample, PDFs on the record.

Before · today
⏱
Invoice Received
Inv-47908
Estimated
AccountTravel Expenses
Invoice Amount$3,500.00
Date Received—
Attachment
Invoicing Notes
Based on 7 staff × $500
– $512.80 (Caroline Sipe)
… typed in by hand, plus a new invoice created by hand per packet
Travel Details
Flights, dates, travelerempty
After · one packet processed by Agentforce
⏱
Invoice Received
Inv-47908
Estimated
Invoice Amount$3,500.00$3,500.00
Remaining accrual7 of 7 flights
⏱
Invoice Received · created by Agentforce
Carlisle Travel · 0010175
Actual
Invoice Amount$512.80
Date Received8/26/2026
Attachments eInvoice.pdf · eTicket.pdf · Itinerary.pdf
Travel Details
TravelerCaroline Lowery Sipe
OutboundDL 524 · ATL → LGA · Tue Oct 6 · 2:30p
ReturnDL 969 · LGA → ATL · Sat Oct 10 · 4:00p
Reservation · cardLWYZPL · Visa ····2813
🔔
ME Lead notified. Caroline's flights and the Carlisle PDFs are on the record — 24 hours to change anything that's wrong.
Estimated / accrual Actual invoice, PDFs attached Notification to ME Lead
Spike · Not a primary goal

Non-event travel has an audit problem too.

A peripheral benefit of the same pipe. It works differently from event travel and could be trickier, so it's included as a spike alongside the main project rather than a deliverable of it.

What we know
  • ·Non-event travel is booked through the same agent and produces the same Sabre packet.
  • ·There is no event campaign or placeholder invoice for it to match against.
  • ·Today, auditing non-event travel against reports is a separate, manual problem.
What the spike answers
  • ?Where should a non-event packet land in Salesforce when there's no campaign to attach to?
  • ?What does the audit report actually need from the packet — and can Agentforce extract it the same way?
  • ?How much of the event-travel build carries over, and what's different enough to need its own work?
Scoped as a spike: time-boxed investigation that produces answers and a recommendation, not a shipped feature.
End state

The booking process stays. The bookkeeping moves to Agentforce.

Steps 1–4 are untouched. Everything after the agent's email is what changes.

🛫
Agent books
Associate → agent, same as today.
📎
Sabre packet
Itinerary, eInvoice, eTicket by email.
🤖
Agentforce
Reads the packet, finds the event by code, logs the actual invoice with PDFs attached, reduces the placeholder.
🔔
ME Lead notified
24 hours to correct.
0
Booking steps unchanged
0
Hand edits on one placeholder today
0h
Window to correct a flight
0
Spike · non-event travel
Accrual to actual, one packet at a time.
Placeholder in, real invoices out, flight details and source PDFs on the record, ME Lead in the loop.
Appendix · Possible approaches

Four ways the packet could get from an inbox to a record.

Speculative — none spiked yet. They differ in where the reading happens and how much depends on the vendor. Notification, the 24-hour window, and PDFs attached to the record apply to all four.

A
Agentforce inside Salesforce
Packet forwarded to a Salesforce inbound address → lands as an email record with the 3 PDFs → Agentforce prompt action extracts the fields → Flow matches the campaign by code, creates / adjusts the invoice, links the PDFs to it as Files → notifies the ME Lead.
ForClosest to the ask as written. Everything stays in Salesforce with its audit trail. Same Agentforce → Slack pattern Kicksaw shipped for the call brief.
Against / unknownWhether the agent can read PDF attachments natively, or needs a text-extraction step first. Licensing and Data Cloud dependencies to confirm.
First thing to prove: hand an Agentforce action one real Sabre eInvoice PDF and get back the eight fields as JSON.
B
Salesforce-native, no AI
Same inbound email → Apex email handler parses the email body and PDF text with fixed rules (Sabre layouts are consistent and text-layer) → Flow does the matching and record writes and re-parents the PDFs from the email to the invoice → standard notification.
ForDeterministic, cheap to run, no new licensing. Sabre output rarely changes format.
Against / unknownRule-based parsing is brittle if Carlisle changes templates or adds a hotel or car to the packet. PDF text extraction in Apex is limited; may still need an outside step.
First thing to prove: can Apex reliably pull the total, the code remark, and both flight lines from the three PDF types.
C
Small service outside Salesforce
A lightweight service watches the shared mailbox (or a Slack channel the agent posts to) → an LLM extracts the fields from the PDFs → writes the invoice through the Salesforce API and uploads the three PDFs as Files on it → posts the notification to Slack.
ForFastest to prototype with what the team already builds. Best-in-class PDF reading. Easy to extend to the non-event travel spike, which has no campaign to match.
Against / unknownOne more system to own. Writes land in Salesforce under an integration user, so the "who changed this" trail is thinner. Needs its own error handling and retry.
First thing to prove: end-to-end on one packet — mailbox → structured fields → Invoice Received record with the PDFs attached.
D
Structured feed from the agent
Ask Carlisle / Tzell for the booking data as data, not a PDF — a daily export, a Sabre feed, or simply a machine-readable line in the email body — so no reading is needed. Flow ingests it directly; the email packet still supplies the PDFs to attach.
ForNo parsing at all; the cleanest long-term shape. The code is already in their remark line, so the habit is half there.
Against / unknownDepends on the vendor's willingness and timeline. Feeds may carry a cost. Solves the fields but not the attachment on its own; still need the packet.
First thing to prove: one conversation with Des at Carlisle about what Sabre can emit and in what format.
Shared dependency across all four: reliable text out of the Sabre packet. Testable now with the three PDFs in hand, before any shape is chosen.