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.

PDF, sheet or photo

Drop in the rate sheet

LABELLED DEFAULTS

Currency

EUR

End date

+6 months

Never a price. You set those.

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