LUNA CONTRACTING
LIVE
Point it at the rate sheet. It fills itself in.
Upload the supplier’s PDF, or a photo of it. The loader fills itself in: rooms, seasons, rates, all read off the page, with a list of anything it wants you to check. You check it and press Save. It is on sale.
Scan a contract
villa-aegean-2027.pdf · 3 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.
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.
Half the contract fills itself in
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
It never invents a price. And it tells you every assumption it made.
Upload the PDF or photos and the AI reads it into the same wizard. Where it cannot read a price, the amount is dropped and reported, never guessed. Where the sheet is silent it fills in a labelled default, currency, a contract end date six months out, a star rating, a commission, and flags each one for you to confirm.
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.
Every number re-checked in code before it reaches the screen
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
1.234 could mean two different amounts. Type it as a plain number, for example 1234 or 1.234.
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.
Every guard exists because something went wrong once. Each one is named on screen, in a sentence, before it saves.
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.
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
The things that save an afternoon.
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
Pick a start, an end and the weekdays. Existing dates are never duplicated.
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?
It never invents a price. An unreadable amount is dropped and reported, not guessed, and every number it returns is re-checked in code before it reaches the screen. It writes nothing until you press Save.
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?
Currency, a contract end date six months out, a star rating and a commission, each labelled and flagged for you to confirm. Prices are never assumed.
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