LUNA CONTRACTING
LIVE
From supplier rate sheet to a checked contract.
Use a supplier PDF or photo to prepare the contract fields. Review the extracted details and flagged assumptions, test the rates and approve the contract before opening sales.
Scan a contract
Illustrative contract · 3 example pages
WHAT IT FOUND
3 room types
4 seasons
24 prices
2 supplements
Child bands 2 to 11
BEFORE YOU SAVE
Currency assumed EUR
The sheet did not say. Confirm it.
Contract end date set six months out
Not on the sheet. Change it if the contract runs longer.
One price could not be read
Peak · Suite · half board was dropped, not guessed. Type it in.
Open in the loader
Scan another
The AI reads it and fills in the loader for you to check and save. Nothing is saved until you save it in the loader.
Seasons
Room types
Board
Child rules
Type it, scan it or upload it.
All three land in the same loader, and all three end with a human pressing Save.
Type it into a guided wizard
Every product has one. Five numbered steps on one page for accommodation. Roughly half the contract fills itself in and is marked auto. Type over it to take control.
Scan the supplier’s rate sheet
A PDF or photos, up to eight pages. The AI reads it and pre-fills the same wizard, with a summary of what it found and a Before you save list. It writes nothing to your inventory.
Upload a spreadsheet
Nine templates across the eight families, each with an Instructions tab, a worked example and real drop-downs. Every row is checked and every problem named by tab, row and column.
The sell price appears as you type the cost.
The rate grid is the centrepiece: rooms and boards down the side, seasons across the top. Type the cost and the sell price appears live underneath each cell with your markup or commission already applied.
The reference, the supplier name, the end date and the on-sale window are generated from the property name and the start date, each marked auto. Typing over one takes control of it.
Review the automatically prepared fields
Sell price live under every cost you type
Fill a column down, copy a season across with an uplift
Villa Aegean · rates
Step 3 of 5 · markup 22%
Room · board
Low
Shoulder
Peak
Double · BB
€90,50
Sell €110
€118
Sell €144
€162
Sell €198
Twin · HB
€104
Sell €127
€132
Sell €161
€178
Sell €217
Suite · HB
€168
Sell €205
€204
Sell €249
Peak · Suite · HB has no price
Those dates will sell at the wider season’s price. Fill the gap or remove the season.
Type at least one price in the grid to save.
Save
Review extracted prices and flagged assumptions.
Upload the PDF or photos to prepare the contract in the wizard. Compare the extracted prices with the source and review any assumed currency, end date, star rating or commission. Resolve missing or uncertain values before saving.
Not one of the eight extraction endpoints touches the database. The app’s own words: the AI reads it and fills in the loader for you to check and save.
Check extracted values against the source
Flagged items highlighted in the loader
Nothing saved until you press Save
Review the scan
coach-rates-2027.pdf
SUMMARY
3 routes, 2 vehicles, 12 prices, 6 pick-up points
BEFORE YOU SAVE
Currency assumed GBP
Confirm.
Seat count not on the sheet
Set it, or the route will not save.
Newport · Senior fare could not be read
Dropped, not guessed. Type it in.
Open in the loader
Every row checked before anything goes live.
Download a template, fill it in, upload it back. The importer checks every row and reports each problem by exact tab, row and column. Errors are red and block the load. Warnings are amber and do not. Nothing is written until the file passes.
A spreadsheet always creates a new contract. To change one you have loaded, edit it in the loader.
Nine templates, each with an Instructions tab and a worked example
Hover notes and real drop-downs on every pick-list column
European decimal commas read correctly; ambiguous numbers refused, not guessed
Load from Excel
transfers-template.xlsx · Check file
Found 4 vehicles, 3 seasons, 36 prices
Prices row 14 · Season code
Season code SUM is not on the Seasons tab. Leave blank for all year.
Prices row 22 · Amount
Check whether the source means 1234 or 1.234. Confirm the intended value and the number format before importing.
Vehicles row 3 · Luggage
Blank. Defaults to no limit.
Fix and check again
Load
Load stays off until the red line is fixed.
It catches the mistakes that cost you money quietly.
Use validation messages to find possible mistakes, then compare the result with the supplier agreement before saving.
A season that ends before it starts
Season Peak Summer: the end date (2026-08-31) is before the start date (2027-06-01). Check the year.
A blank August column
August peak (3 room prices). Those dates will sell at the wider season’s price. Fill the gaps or remove the season.
A child age band typed in backwards
A band whose minimum is above its maximum matches nobody, so every child in it is quietly charged the full adult price.
A stop sale the wrong way round
It used to save without complaint and then match no dates at all, so the stop sale silently kept selling.
A discount of 150%
Or a negative one. And a cancellation charge of 150%, or a negative one. Refused.
90,50 read as ninety euros fifty
Not nine thousand and fifty. Where a value is honestly ambiguous, such as 1.234, the importer refuses to guess.
A coach departure with no seat count
It would save as no limit and sell to an unlimited number of people. Refused.
Two departures on the same day
The duplicate used to be dropped in silence, taking its cruise sailing, its note and its sold seats with it. Now it is named.
Check the contract before opening sales
Treat the loaded record as something to compare with the supplier’s agreement. The review below is a suggested working process for your team, whether you type the details, use a spreadsheet or start from a scan.
Keep the source and the decision together
Retain the source contract, its version and the person who checked it. Review the currency, validity dates, selling window, rate basis, cancellation terms and any local charges. Where a value was assumed or a price could not be read, resolve it against the supplier’s agreement before approving the record.
An AI-assisted scan helps prepare the fields; your review decides whether they match what you have agreed. A warning-free import is not, by itself, evidence that every commercial term is correct.
Test the rules that can change the price
Choose a normal stay and a stay crossing a season boundary. Add the occupancies you sell, including a child near an age-band boundary where relevant. Check minimum stays, supplements and any payable-at-property charges.
The Contracting API reference describes accommodation priced for the supplied dates and occupancy, with sell-side breakdowns. Comparing those results with the source contract helps you find a correct-looking total produced by the wrong rule.
Check availability and the selling window
Test a date that should be available and a date that should be refused. Include a closed date or a capacity limit where that product uses one. The API documentation explains that returned availability is a point-in-time result and is checked again when a hold is requested.
Record the expected and actual outcome for each test. This gives the next person enough context to repeat the check after a rate or rule changes.
Approve the record and plan the next review
Keep an approval note with the contract reference, test dates and unresolved items. Agree who can activate the contract and who will review it before expiry. For existing stock, check the documented update method before uploading another file, so you can avoid accidentally creating a second contract.
Continue with pricing and inventory for quote and availability checks, then selling and servicing bookings for the operational handover.
Sources reviewed on 20 October 2026: Luna Contracting’s overview, product scope and API reference. The review process is practical guidance; illustrated contracts, passengers and prices are examples.
The Save button is never just greyed out.
Every wizard computes a plain-English reason and shows it beside the button. Name the property to save. Add at least one room type. Type at least one price in the grid. The flights loader goes furthest with a whole checklist.
A go-live readiness panel on the dashboard finds contracts with no rates, rooms with no rate, overlapping seasons, missing cancellation policies, drafts left unfinished and contracts expiring inside 30 days. Every warning carries a Show me how button.
If anyone in the party has no price loaded, nothing is sold
Warnings name the contract, the room and the date
Show me how asks the help assistant the matching question
Go-live readiness
3 to fix · 4 to check
Hotel Lindos · Twin has no rate
Nothing sells for that room until it has one.
Marina Suites · seasons overlap 1 to 7 July
The most specific season wins, but check which you meant.
Cliff House expires in 30 days
Clone it to next season to keep selling.
Villa Aegean · no cancellation policy
Bookings will show no terms on the voucher.
Show me how
Open the contract
Tools for repeated loading tasks.
Fill a column down, or a row across
On any rate grid.
Copy a season across with an uplift
The first season into every other, plus a percentage you set.
Paste a block from the supplier’s spreadsheet
It lands across the right rooms and seasons and reads the number format correctly.
One markup for a whole sheet
With a warning if the existing rates use mixed settings.
Generate departures across a date range
Choose the start, end and weekdays, then check the generated dates against the existing programme.
Clone to next season
Every season, rate, supplement, offer, band and rule copied into a new draft a year on. Allocations and stop sales deliberately not.
Create the return journey
One button mirrors a coach or train route, sold seats reset to zero, closed dates re-pointed.
Locate all points
Coordinates, countries and airport codes filled in for every place in one run.
Questions people ask
Will the AI get our rates wrong?
Review every extracted rate against the supplier’s source. Resolve unreadable amounts and flagged assumptions before saving, then test representative dates and occupancies before sale. AI-assisted extraction should not be treated as a guarantee of accuracy.
Can we update a contract by uploading a spreadsheet?
A spreadsheet always creates a new contract. To change one you have already loaded, edit it in the loader.
What does the scan assume when the sheet is silent?
Review any assumed currency, contract end date, star rating or commission against the source. Check each price and resolve missing or uncertain values before saving.
What if we make a mistake anyway?
Search it exactly like a customer would, or run a real stay through Price check, before you set it Active. The activity log records every change and who made it.
See it read your own rate sheet.
Luna Contracting is live for Travelgenix customers. Contact your account manager to switch it on, or book a demo if you are new to Travelgenix.
More about Luna Contracting