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